我的编程空间,编程开发者的网络收藏夹
学习永远不晚

OSPF的DR以及BDR选举规则 以及在实际环境中最高RouterID非DR的原因探究

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

OSPF的DR以及BDR选举规则 以及在实际环境中最高RouterID非DR的原因探究

作为一个典型的分析记录,分享给需要者。

一、OSPF协议描述

OSPF(Open ShortestPath First)开放最短路径优先协议为IETF开发的一种开放式的动态路由协议,该协议根据当前链路状态进行SPF算法,通过将大型网络进行逻辑层级划分,提升网络收敛速度以及可以有效避免环路产生。

OSPF数据包通信地址为组播地址:224.0.0.5和224.0.0.6。

二、OSPF-Packet类型

OSPF数据包类型主要分为Hello数据包、DBD数据包、LSR数据包、LSU数据包、LSAck数据包。

1、Hello数据包:充当OSPF-Router之间保活角色;

2、DBD数据包:OSPF-Database描述信息;

3、LSR数据包:链路状态请求;

4、LSU数据包:链路状态更新;

5、LSAck数据包:链路状态请求确认;

三、OSPF-NET类型

OSPF网络类型主要分为P-to-P(Point-to-Point)点到点网络、MA(multi-access)/Broadcast多路访问/广播网络、NBMA(Non-broadcastmulti-access)非广播多路访问网络、P-to-MP(Point-to-Multipoint)点到多点网络、以及Virtual-links(虚链路)网络。

1、P-to-P:使用串行链路连接单独一对路由器的点到点网络;

2、MA/Broadcast:包括以太网等多址访问的网络;

3、NBMA:可以连接两台以上路由器,但是没有广播数据包的能力;

4、P-to-MP:一种点到点链路的集合;

5、Virtual-links:没有编号的点到点网络。

四、OSPF-Router类型

OSPF路由器类型分为DR(Designated Router)指定路由器、BDR(Backup Designated Router)备用指定路由器、DR-other其他类路由器。特别说明的一点是OSPF-Router类型并非按照路由器来进行划分,而是按照相同区域中的接口来进行划分,因此DR、BDR以及DR-other只是OSPF接口的属性。

1、DR:与BDR和DR-other形成邻接关系,收集并分发LSA信息给同一MA网络中的BDR和DR-other路由器,用以减少同一区域内LSA数量,避免不必要的泛洪扩散;

2、BDR:与DR和DR-other形成邻接关系,与DR和DR-other交互LSA信息,当DR失效后能够在第一时间取代DR位置;

3、DR-other:与DR和BDR形成邻接关系,将自身的链路状态数据库传送至DR和BDR的链路状态数据库中,并保证本地数据库与DR和BDR的链路状态数据库实时同步。

五、OSPF的DR以及BDR选举规则

在初始状态下,一个路由器的活动接口设置DR和BDR为0.0.0.0,这意味着没有DR和BDR被选举出来。同时设置WaitTimer,其值为RouterDeadInterval,其作用是如果在这段数时间里还没有收到有关DR和BDR的宣告,那么它就宣告自己为DR或BDR。经过Hello协议交换过程后,每一个路由器获得了希望成为DR和BDR的那些路由器的信息,按照下列步骤选举DR和BDR:

1、在路由器同一个或多个路由器建立双向的通信以后,就检查每个邻居Hello包里的优先级、DR和BDR域。列出所有符合DR和BDR选举的路由器(他们的优先级要大于0,接口状态要大于双向通信),列出所有的DR,列出所有的BDR;

2、从这些合格的路由器中建立一个没有宣称自己为DR的子集(因为宣称为DR的路由器不能选举成为BDR);

3、如果在这个子集里有一个或多个邻居(包括它自己的接口)在BDR域宣称自己为BDR,则选举具有最高优先级的路由器,如果优先级相同,则选择具有最高Router ID的那个路由器为BDR;

4、如果在这个子集里没有路由器宣称自己为BDR,则在它的邻居里选择具有最高优先级的路由器为BDR,如果优先级相同,则选择具有最大Router ID的路由器为BDR;

5、在宣称自己为DR的路由器列表中,如果有一个或多个路由器宣称自己为DR,则选择具有最高优先级的路由器为DR,如果优先级相同,则选择具有最大Router ID的路由器为DR;

6、如果没有路由器宣称为DR,则将最新选举的BDR作为DR;

7、如果是第一选举某个路由器为DR/BDR或没有DR/BDR被选举,则要重复2到6步,然后是第8步。

8、将选举出来的路由器的端口状态作相应的改变,DR的端口状态为DR,BDR的端口状态为BDR,否则的话为DR other。

在多路访问网络中,DR和BDR与该网络内所有其它的路由器建立邻接关系,这些邻接关系也是该网络内全部的邻接关系。

 由于DR和BDR的引入,简化了网络的逻辑拓扑结构,将一个网状网络转变成一个星型网络,使协议包的扩散,计算变的简单,并有效防止了邻接关系震荡的发生。

在实际过程中一个路由器是先选出BDR的,但此时的BDR不会被写入接口数据库,而是会立刻将此BDR提升到了DR的地位并写入数据库,然后会再看看是否有人声称他自己是BDR,如果没有人声称的话,他会再次进行BDR的选举,并写入接口数据库中向外发通告。

当一个路由器新接入一个多路访问网络的时候,他会先等待waittime计时器到期,然后将按DR/BDR选举原则进行选举,而其之所以要先等待waittime计时器到期是因为它刚刚接入此网络,不知道此网络的状况,因此他需要收集hello包进行分析。如果其收集到的hello包有证据表明此网络已经稳定,即DR/BDR选举已完成,此时就算再接入一台具有更高Router-id的路由器时也并不会再次触发选举。

六、在同一MA-NET中最高RouterID非DR的原因探究

在实际运行中常常遇见在同一广播网络中具有最高Router-id的路由器并未被选举为DR。

造成此类现象的根本原因是:在一个MA网络上,最先初始化启动的两台具有DR选举资格的路由器将成为DR和BDR路由器。

两台具有选举资格的路由器各自的OSPF进程的启动时间间隔只要不超过Wait Timer时间,那么路由器将相互监听Hello包中的DR和BDR字段中的信息,并且服从优先级原则,在一定程度上体现出了公平原则;但是如果前后启动的时间超过Wait Timer时间,那么首先启动的路由器极有可能成为DR,不管其Router-id是否更高。

综上所述在实际的MA网络环境中,即使是40秒内同时起进程的情况也少见,更多的情况是是率先启动OSPF进程的路由器就很有可能成为DR,第二个启动的就很有可能成为BDR,考虑到路由器故障或者重启等情况,实际的运行效果是“活”得最久的路由器将成为DR,在一定程度上提升了网络的稳定性。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

OSPF的DR以及BDR选举规则 以及在实际环境中最高RouterID非DR的原因探究

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

目录