在OSPF的DRBDR选举的过程中,DR的选举依靠的是hello报文,在two-way之后,交互hello报文完成DR/BDR的选举。

那么在每台路由器根据收到的所有hello报文,会构建自己接口的数据结构,并按照一下算法,计算出DR/BDR:

1、路由器接口数据结构中维持三个集合,分别是:

(1)DR集合:通过hello报文学习到的所有的DR路由器

(2)BDR集合:通过hello学习到的所有BDR路由器

(3)DRother集合:没有被选举为DR/BDR的路由器,但优先级不为0,因为一旦优先级为0,则代表该路由器不参与选举。

2、当选举DR和BDR的算法工作时,在DR集合中选择最好的路由器,使其成为DR。在BDR集合中选择最好的路由器,使其成为BDR。

首先,DR的选举:

在DR的集合中应用以下规则:

如果DR集合为非空,则从中选择最好的路由器成为DR;

如果DR集合为空,则把当前BDR提升为DR;而如果BDR集合为空,则要先从DRother集合中选出BDR,再将其提升为DR。

BDR的选举:

与DR类似,如果BDR集合为非空,则从中选择最好的路由器为BDR;

如果BDR集合为空,则从DRother集合中选择最好的路由器成为BDR路由器。

由此可见,无论是DR还是BDR,除非他们本身在接口结构中的集合就包含所谓的DR、BDR,否则都要从下游的集合中以选举的机制,来确认DR、BDR,那么如何确保他们原本集合中就存在对应的DR呢?接下来我们来说一下关于DR/BDR的选举过程。

DR/BDR的选举过程:

OSPF路由器在DR/BDR未选举出来之前,hello报文中关于DR和BDR的字段全为0,即0.0.0.0。选举完成后,DR和BDR的字段记录一直的DR和BDR的routerid。

路由器接口根据侦听到的hello报文,生成邻居表并在接口维持三个集合:

DR集合{}

BDR集合{}

Dother集合{}

具体过程如下:

(1)当OSPF接口开启后,在HELLO报文中设置DR/BDR字段为全0,此时DR/BDR未知。同时,Waittimer启动,时长为4倍的Hello间隔。

(2)如果收到的Hello报文中DR及BDR字段为非空,则Wait计时器停止,接收当前DR/BDR的选择。

(3)如果在Wait计时器超时后,仍未学习到DR/BDR,则开始DR/BDR的选举。

(4)如果BDR集合为空,则从DRother集合选举BDR;如果DR集合为空,则从BDR集合选举DR。

(5)根据上述算法,如果再没有DR/BDR的网络上,Wait计时器超时后,网络上的每台路由器都会先从DRother集合选择BDR,再把BDR提升为DR;再重新从DRother集合选择BDR。至此,选举结束,开始建立邻接。

转自:https://www.douban.com/note/704095004/

OSPF中DR和BDR到底是谁先选举出来的?的更多相关文章

  1. OSPF的DR与BDR

    一.实验拓扑 二.实验编址 三.实验步骤: 1.设置路由器的端口IP等信息 2.搭建ospf网络 重启(退出系统模式):reset ospf process 查看: 查看完整的邻居信息: 可以看到DR ...

  2. OSPF的特征、术语、包类型、邻居关系的建立、RID的选择、DR和BDR的选举、度量值的计算、默认路由、验证

    链路状态路由协议OSPF的特征.术语.包类型.邻居关系的建立.RID的选择.DR和BDR的选举.度量值的计算.默认路由.验证等. 文章目录 [*1*].链路状态路由协议概述 工作过程 优缺点 [*2* ...

  3. HCNA Routing&Switching之动态路由协议OSPF DR和BDR

    前文我们了解了OSPF建立邻居关系的条件,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15032907.html:今天我们来聊一聊OSPF中的DR和BDR: ...

  4. DR、BDR、SBR、ASBR等名词的解释和原理

    DR是指定路由器的意思是为了解决LSA在一个area里浪费很大的带宽而设计的 BDR是备份指定路由器,就是DR的一个备用.DR和BDR只在广播网和NBMA网络中有,而P2P和P2MP中是没有的. AB ...

  5. 什么是LSA,在OSPF中LSA是什么

    什么是LSA:链路状态通告,它存在于LSU(链路状态更新包) Type 1 LSA:路由器LSA       每个OSPF路由器都会产生路由器LSA,描述了对应设备的物理接口所连接的链路和接口,并指明 ...

  6. OSPF中 hello报文的 内容

    邻居关系通过hello报文来建立.Hello报文中包含如下一些内容: 1.始发路由器的router-id 2.始发路由器接口的area-id 3.始发路由器接口的地址掩码 4.始发路由器接口的auth ...

  7. Spring Boot 中的静态资源到底要放在哪里?

    当我们使用 SpringMVC 框架时,静态资源会被拦截,需要添加额外配置,之前老有小伙伴在微信上问松哥Spring Boot 中的静态资源加载问题:"松哥,我的HTML页面好像没有样式?& ...

  8. CNN中,1X1卷积核到底有什么作用呢?

    CNN中,1X1卷积核到底有什么作用呢? https://www.jianshu.com/p/ba51f8c6e348 Question: 从NIN 到Googlenet mrsa net 都是用了这 ...

  9. CSS中背景图片的background-position中的left top到底是相对于谁的?

    在学习的时候遇到了如下问题: CSS中背景图片的background-position中的left top到底是相对于谁的,content-box?padding-box?border-box? ba ...

随机推荐

  1. 简单gui

    import java.awt.Button; import java.awt.Frame; import java.awt.event.WindowAdapter; import java.awt. ...

  2. VisualStudio下std::string的内存布局

    主要成员 union _Bxty { // storage for small buffer or pointer to larger one _Elem _Buf[_BUF_SIZE]; _Elem ...

  3. 慎用margin系列1---CSS的margin塌陷(collapse) 问题与对策

      对于以下简单代码: 如果您认为应该是这样的话: 那就错了.结果是这样的: 因为CSS中存在一个margin collapse,即边界塌陷或者说边界重叠.对于上下两个并列的div块而言,上面div的 ...

  4. sparkSQL获取DataFrame的几种方式

    sparkSQL获取DataFrame的几种方式 1. on a specific DataFrame. import org.apache.spark.sql.Column df("col ...

  5. 逻辑回归原理,推导,sklearn应用

    目录 逻辑回归原理,推导,及sklearn中的使用 1 从线性回归过渡到逻辑回归 2 逻辑回归的损失函数 2.1 逻辑回归损失函数的推导 2.2 梯度下降法 2.3 正则化 3 用逻辑回归进行多分类 ...

  6. Spring Boot实现通用的接口参数校验

    Spring Boot实现通用的接口参数校验 Harries Blog™ 2018-05-10 2418 阅读 http ACE Spring App API https AOP apache IDE ...

  7. 将Eclipse项目转换成AndroidStudio项目过程中遇到的问题以及解决方法

    将Eclipse项目转换成AndroidStudio项目也不是第一次了,昨天转的时候遇到几个问题: 首先将项目导入androidstudio,导完后报错: 问题一: Error:java.util.c ...

  8. 2018-10-19-C#-GUID-ToString-

    title author date CreateTime categories C# GUID ToString lindexi 2018-10-19 9:4:44 +0800 2018-4-1 10 ...

  9. cd 切换

    切换

  10. handsontable 随记

    handsontable 怎么样获取合并之后的cell信息,如下 handsontable .getPlugin('mergeCells').mergedCellsCollection 看了他的源代码 ...