1      DR的选举机制

MA网络上要同时选举DR/BDR,DR与BDR,DR与DRother、BDR与Drother形成FULL,Drother之间形成2-way。

MA网络可以没有BDR,但是必须有DR

DR的选举是依靠hello报文,交互hello报文完成DR/BDR的选举(有说法在2-way状态后才进行选举,路由器是进入2-way状态后才开始进行DR/BDR选举,因为这个状态下每台路由器的邻居ID都包含所有其他的路由器,这体现公平性,实际实验中华为设备并没有)。

2      DR的选举算法

三个集合:

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

BDR集合:通过hello报文学习到的所有BDR路由器;

DRother集合:没有被选举的DR/BDR的路由器(要求优先级不为0)

2.1    DR的选举规则

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

否则 DR集合为空,将当前BDR提升为DR;

如果BDR集合也为空,则先从DRother集合中选出BDR,再将其提升为DR。

2.2    BDR的选举规则

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

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

2.3    DR/BDR的选举过程

说明:生成邻居表并在接口维持三个集合:

DR集合{},BDR集合{},DRother集合{},这里DRother指非DR非BDR且有资格成为DR/BDR的路由器。

判断状态:OSPF接口开启后,在hello报文中的DR/BDR字段都为0,此时DR/BDR未知,同时wait timer启动,时长4倍hello间隔,如果收到的hello报文里的DR/BDR字段为非空,则wait timer计时器停止,接受当前DR/BDR;如果wait计时超时后仍未学习到DR/BDR,则开始DR/BDR选举。

选举状态

先从DRother集合选BDR,再把BDR提升为DR,然后再选择BDR。

每台路由器根据自己收到的邻居hello报文得知DRother集合,然后独立选择DR/BDR,其他路由器也同理。相同算法算出来的DR/BDR相同。

3      DR的选举实验

单台路由器启动,证明华为不是在2-way后才进行DR/BDR选举

单台路由器启动,在4倍hello后直接选举出了DR。

                          image.png                   

 image.png