OSPF协议DR,BDR的选举

首先明确几点:

1.一开始时所有的路由器都会宣称自己是DR,BDR,在HELLO包DR,BDR写的都是自己的接口ip地址。

2.DR的选举资格:在Hello包中的DR ID写的是自己的ID,BDR的选举资格:在Hello包中的BDR ID写的是自己的ID且在DR ID字段写的不是自己的ID,具体选举还要看接口优先级和最高Router-id

3.DR是路由器接口的特性,而不是路由器的特性。也就说DR,BDR的选举是在网段选举的。

4.DR,BDR选举完成后,新的路由器接入,为了保证网络的稳定,不会对选举造成影响。

然后选举的过程:

1.通过邻居发送的HELLO包,列出所有具有DR,BDR选取资格的路由器列表,这时,所有路由器都宣称自己是DR,又是BDR。

2.然后从选举资格的列表中,创建一个没有宣告为DR路由器的路由器的子集。但是一开始时,这个列表是空的。(创建为DR的路由不能被选举成BDR)。如果是空的话那怎么选举BDR呢?则到第四步。

3.如果子集有一台或多台具有选举资格的路由器宣告自己是BDR,则具有最高优先级的邻居路由器被宣告为BDR。优先级相同,则具有最高ID的邻居路由器被宣告为BDR,

4.如果子集为空,则具有最高优先级的邻居路由器被宣告为BDR。优先级相同,则具有最高ID的邻居路由器被宣告为BDR,

4.BDR选出后,其他路由器(除了BDR本身)的BDR字段就不是自己了,这时就可以进入第二步所创建的子集。然后进行选举DR。选举DR的流程和选举BDR的流程一样。

5.此时子集中有BDR,所以BDR直接选举为DR。

6.这个时候再重新选举BDR。

所以DR,BDR的选举是先 选举BDR,再选举DR,再选举BDR!

但是有时候会出现DR,BDR down 掉的情况,此时DR或者BDR都无法发送HELLO包宣称自己身份,所以要进行重新选举。但是DR和BDR的重新选举有点不一样。

如果在第二步创建的子集里没有路由器宣告自己是BDR路由器,那证明BDR已DOWN,这时要进行BDR的重新选举。

如果没有路由器宣称自己是DR,则证明DR已DOWN,这时新选举的BDR就会直接成为DR,然后再选举BDR。

 

以上感悟是在TCP/IP协议卷 二卷 OSPF部分 得出,如有不对,欢迎讨论。