DR选举的那些事

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/jingxinguofeng/article/details/101203389

DR选举的那些事

  1. DR的作用是,一是用于数据库同步,二是代表网络的虚节点产生2类的LSA。
  2. 在wait时间后,开始选举DR,优先级高的路由器成为DR,否则RouteID高得成为DR。
  3. DR不能被抢占,一旦选举结束,即使有更高的优先级的路由器接到网络中来,也不能抢占成为DR,同样也不会抢占成为BDR。这是为了保证网络稳定,避免震荡。(这里有特殊情况后面细说)
  4. DR选举完成后,如果当前DR失效,则BDR成为DR,并重新选举BDR。
  5. MA网络中可以没有BDR,但不能没有DR。

一、选举DR/BDR过程

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

  • DR集合:通过Hello学习到的所有DR路由器集合{ }
  • BDR集合:通过Helli学习到的所有BDR路由器集合{ }
  • DRother集合:非DR和BDR但有资格成为成为DR和BDR的路由器集合{}
  • 注意选举DR和BDR是在 每个路由器本地选举的(候选人为优先级非0的同一个广播域的其他和自己2way状态的路由器)
  • 选举在不同的环境中和路由器接口宣告顺序时间有关,选举结果会有所不同。
  • 运行OSPF的路由器--接口up并宣告进OSPF时,Wait timer 启动,时长为4倍的hello间隔。

下面站在 其中一个路由器的角度 来描述DR选举结果 

如果收到hello报文中DR以及BDR字段为空,则将和自己是2way状态的邻居放到DRother集合里等待选举结束选举DR、BDR。如果wait时间结束收到Hello报文中DR以及BDR字段仍然为空,则进行本地选举,在DRother集合中比较(优先级。route ID)先选出一个 BDR,然后 如果仍然没有收到邻居Hello报文中DR字段,就会将BDR推举成DR发布选举结果 ,接着在选举BDR,在第二个hello发布BDR选举结果。

如果收到Hello报文中DR以及BDR字段为非空,则Wait计时器停止,接受当前DR/BDR的选举结果。(但如果收到的是自己本身的DR,则不立即停止,继续监听Hello继续选举)。

还有一种特殊情况下的DR、BDR造成抢占的情况 如下图:

 

此图中是一个广播域,两边都配置好 OSPF 宣告完毕以后等待两边都各自选举出来 DR、BDR以后再把中间的交换机链接上 ,此时网络中有两个DR、BDR,但是经过第一次的hello交互以后, 两个DR会进行PK,会在两个DR里边选举 优先级或者route id大的 为DR。

  • A在选举wait时间内 收到 网络hello中 DR为非A的 都会直接 停止选举接受网络中通告的DR。    

  • A在选举wait时间内 收到 网络hello中 DR为A的,会继续选举 

  • 如果A已经是DR 又收到了别的路由发来的hello中有非自己的DR字段 这两个DR会进行比较 大的获胜。

猜你喜欢

转载自blog.csdn.net/jingxinguofeng/article/details/101203389