在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报文,生成邻

OSPF的DR和BDR选举基于hello报文,路由器接口维护DR、BDR和DRother三个集合。选举过程包括:DR从DR集合中选出,BDR从BDR或DRother集合中选出。若所有集合为空,则从DRother集合选举BDR并提升为DR。在选举开始前,DR/BDR字段为0,等待超时后才进行选举。

1167

被折叠的 条评论
为什么被折叠?



