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

四臺路由器在初始的情況下,都會認(rèn)為自己是DR/BDR, 在它們發(fā)送的報(bào)文中,也會把DR和BDR的標(biāo)記置位。
當(dāng)一臺路由器收到比自己DR優(yōu)先級更大的報(bào)文時(shí),就會停止申明自己的DR/BDR,轉(zhuǎn)為聲明DR優(yōu)先級更大的路由器為DR/BDR。

根據(jù)DR優(yōu)先級選取
如果一臺路由器收到的報(bào)文,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ī)則來,則小伙伴就不會有疑問了,整個(gè)世界也就清靜了。不過在我們查看DR和BDR的角色時(shí),經(jīng)常會看到成為DR/BDR的路由器并不是我們期望的。例如下圖,有3個(gè)路由器,初始情況下,R3的DR優(yōu)先級為30,值最大的,所以它會被選擇為這個(gè)網(wǎng)段上的DR;R2的優(yōu)先級次之,它會選擇為這個(gè)網(wǎng)段上的BDR。

DR/BDR
此時(shí)如果在網(wǎng)絡(luò)上,再添加一臺路由器R2,DR優(yōu)先級是50,這時(shí)會有什么反應(yīng)呢?會不會R2成為新的DR,R3變成BDR呢?

新增一臺路由器R2
事實(shí)上這時(shí)時(shí)候,網(wǎng)絡(luò)上什么都不會變化,R3仍然作為DR存在,R1作為BDR存在!如果此時(shí)查看路由器的狀態(tài),你就會覺得DR/BDR的選擇規(guī)則是錯(cuò)誤的!

網(wǎng)絡(luò)沒有變化
其實(shí)上面所說的DR/BDR的選擇規(guī)則并沒有錯(cuò)誤,出現(xiàn)這種情況的原因是DR/BDR的選取還需要遵循另外一個(gè)規(guī)則:DR/BDR的選取是終身的,不會被搶占!
意思就是說,在一個(gè)網(wǎng)段上,選取出DR/BDR以后,那在它Fail之前,就會一直是DR/BDR,不會被后來的高優(yōu)先級的路由器取代!
為什么要這么做呢?OSPF的這種做法其實(shí)是符合實(shí)際網(wǎng)絡(luò)的使用要求:穩(wěn)定壓倒一切。
切換DR/BDR時(shí),需要重新通告LSA,網(wǎng)絡(luò)會有短暫的流量不通,這在實(shí)際工作中,是不允許的。如果有高優(yōu)先級的路由器加入網(wǎng)絡(luò),就切換DR/BDR,會有可能造成網(wǎng)絡(luò)的震蕩。比如新加入的OSPF路由器不穩(wěn)定,一會UP,一會Down,那整個(gè)網(wǎng)絡(luò)就沒有辦法使用了。
所以O(shè)SPF在設(shè)計(jì)的時(shí)候,就考慮到了這一點(diǎn),DR/BDR選取以后,就不會發(fā)生改變了!
我們在實(shí)驗(yàn)室遇到這種情況,不用擔(dān)心,直接把所有路由器的OSPF進(jìn)程清除,讓它們重新選取就可以了!但在實(shí)際網(wǎng)絡(luò)中,是不能隨便清除OSPF進(jìn)程的!
并且很多時(shí)候,我們遇到DR/BDR不是我們期望路由器的情況,是我們的敲命令的動作慢了。初始情況下,一臺路由器會等待40秒(默認(rèn))的時(shí)間,才會選取DR/BDR。如果高DR優(yōu)先級的路由器在40秒以后才加入網(wǎng)絡(luò),就沒有機(jī)會成為DR/BDR了!
DR優(yōu)先級為0的路由器,不參與DR/BDR的選取
經(jīng)過上面的描述,小伙伴應(yīng)該能夠明白了,即使路由器的DR優(yōu)先級最大,也不一定能成為DR/BDR。而想讓一臺OSPF路由器永遠(yuǎn)的成某個(gè)為網(wǎng)段的DR/BDR,通過修改DR優(yōu)先級和Router ID是行不通的。其實(shí)想讓路由器永遠(yuǎn)成為DR,有且只有一種方法:將其它OSPF路由器的DR優(yōu)先級設(shè)置為0。
當(dāng)路由器的DR優(yōu)先級被設(shè)置為0以后,它就不會參與這個(gè)網(wǎng)段上DR/BDR的選取了,它的角色永遠(yuǎn)就是DR Other。

DR優(yōu)先級設(shè)置為0
當(dāng)然這種做法的風(fēng)險(xiǎn)就是如果DR路由器Fail以后,整個(gè)網(wǎng)絡(luò)就癱瘓了,沒有辦法轉(zhuǎn)發(fā)報(bào)文。因?yàn)镈R Other只能和DR交換路由信息,DR Other之間是不交換路由信息的。
總結(jié)
經(jīng)過上面的描述,各位小伙伴應(yīng)該對DR/BDR的選取機(jī)制和不可搶占的原因了解了吧?我在做一下簡單的總結(jié):
- 在同一個(gè)網(wǎng)段上,會選擇DR優(yōu)先級最高的路由器作為DR;
- 如果DR優(yōu)先級相同,則會選取Router ID最大的路由器作為BDR;
- DR/BDR選取以后,就不能被搶占,永久生效,直到路由器Fail。






















