OSPF路由器不能成為DR/BDR唯一的方法:DR優(yōu)先級=0
很多小伙伴學習完OSPF中的DR/BDR選取規(guī)則以后,感覺很簡單,不過在做實驗的時候,會發(fā)現(xiàn)有的時候選取的DR/BDR并不是自己預期的,又會感覺很迷惑:難道是自己學習的選取規(guī)則有問題嗎?
其實不是的,DR/BDR的選取,還有一個重要的知識點:DR/BDR是不可搶占的!不過在學習新知識點之前,我們先來復習一下DR/BDR的選擇規(guī)則!
DR/BDR的選舉規(guī)則
我們都知道DR/BDR是一個路由器接口的屬性,它只能表示某個路由器在某個網(wǎng)段上是什么角色,并不能代表整個路由器,所以DR/BDR的選取是針對某個網(wǎng)段的。
例如在下面的多點接入拓撲中,有四臺路由器在同一個網(wǎng)段10.1.1.0/24里,在這個網(wǎng)段上會選取DR、BDR。

四臺路由器在初始的情況下,都會認為自己是DR/BDR, 在它們發(fā)送的報文中,也會把DR和BDR的標記置位。
當一臺路由器收到比自己DR優(yōu)先級更大的報文時,就會停止申明自己的DR/BDR,轉為聲明DR優(yōu)先級更大的路由器為DR/BDR。
根據(jù)DR優(yōu)先級選取
如果一臺路由器收到的報文,DR優(yōu)先級是相同的,就會比較Router ID,如果對方的Router ID比自己更大,也會聲明對方是DR/BDR。
根據(jù)Router ID選取
上面就是DR/BDR的選擇規(guī)則:
- 先比較DR優(yōu)先級,最大的路由器會被選取為DR/BDR;
- 如果DR優(yōu)先級相同,則會根據(jù)Router ID來選取DR/BDR;
DR/BDR選取的不可搶占性
如果事情都按照DR/BDR的選取規(guī)則來,則小伙伴就不會有疑問了,整個世界也就清靜了。不過在我們查看DR和BDR的角色時,經(jīng)常會看到成為DR/BDR的路由器并不是我們期望的。例如下圖,有3個路由器,初始情況下,R3的DR優(yōu)先級為30,值最大的,所以它會被選擇為這個網(wǎng)段上的DR;R2的優(yōu)先級次之,它會選擇為這個網(wǎng)段上的BDR。
DR/BDR
此時如果在網(wǎng)絡上,再添加一臺路由器R2,DR優(yōu)先級是50,這時會有什么反應呢?會不會R2成為新的DR,R3變成BDR呢?
新增一臺路由器R2
事實上這時時候,網(wǎng)絡上什么都不會變化,R3仍然作為DR存在,R1作為BDR存在!如果此時查看路由器的狀態(tài),你就會覺得DR/BDR的選擇規(guī)則是錯誤的!
網(wǎng)絡沒有變化
其實上面所說的DR/BDR的選擇規(guī)則并沒有錯誤,出現(xiàn)這種情況的原因是DR/BDR的選取還需要遵循另外一個規(guī)則:DR/BDR的選取是終身的,不會被搶占!
意思就是說,在一個網(wǎng)段上,選取出DR/BDR以后,那在它Fail之前,就會一直是DR/BDR,不會被后來的高優(yōu)先級的路由器取代!
為什么要這么做呢?OSPF的這種做法其實是符合實際網(wǎng)絡的使用要求:穩(wěn)定壓倒一切。
切換DR/BDR時,需要重新通告LSA,網(wǎng)絡會有短暫的流量不通,這在實際工作中,是不允許的。如果有高優(yōu)先級的路由器加入網(wǎng)絡,就切換DR/BDR,會有可能造成網(wǎng)絡的震蕩。比如新加入的OSPF路由器不穩(wěn)定,一會UP,一會Down,那整個網(wǎng)絡就沒有辦法使用了。
所以OSPF在設計的時候,就考慮到了這一點,DR/BDR選取以后,就不會發(fā)生改變了!
我們在實驗室遇到這種情況,不用擔心,直接把所有路由器的OSPF進程清除,讓它們重新選取就可以了!但在實際網(wǎng)絡中,是不能隨便清除OSPF進程的!
并且很多時候,我們遇到DR/BDR不是我們期望路由器的情況,是我們的敲命令的動作慢了。初始情況下,一臺路由器會等待40秒(默認)的時間,才會選取DR/BDR。如果高DR優(yōu)先級的路由器在40秒以后才加入網(wǎng)絡,就沒有機會成為DR/BDR了!
DR優(yōu)先級為0的路由器,不參與DR/BDR的選取
經(jīng)過上面的描述,小伙伴應該能夠明白了,即使路由器的DR優(yōu)先級最大,也不一定能成為DR/BDR。而想讓一臺OSPF路由器永遠的成某個為網(wǎng)段的DR/BDR,通過修改DR優(yōu)先級和Router ID是行不通的。其實想讓路由器永遠成為DR,有且只有一種方法:將其它OSPF路由器的DR優(yōu)先級設置為0。
當路由器的DR優(yōu)先級被設置為0以后,它就不會參與這個網(wǎng)段上DR/BDR的選取了,它的角色永遠就是DR Other。
DR優(yōu)先級設置為0
當然這種做法的風險就是如果DR路由器Fail以后,整個網(wǎng)絡就癱瘓了,沒有辦法轉發(fā)報文。因為DR Other只能和DR交換路由信息,DR Other之間是不交換路由信息的。
總結
經(jīng)過上面的描述,各位小伙伴應該對DR/BDR的選取機制和不可搶占的原因了解了吧?我在做一下簡單的總結:
- 在同一個網(wǎng)段上,會選擇DR優(yōu)先級最高的路由器作為DR;
- 如果DR優(yōu)先級相同,則會選取Router ID最大的路由器作為BDR;
- DR/BDR選取以后,就不能被搶占,永久生效,直到路由器Fail。