淺談OSPF DR和BDR的選舉

DR、BDR的概念

淺談OSPF DR和BDR的選舉

多路訪問網絡有兩種類型:廣播型多路訪問網絡(BMA)及非廣播型多路訪問網絡(NBMA)。以太網就是一種典型的廣播型多路訪問網絡(見上圖),連到這個MA網絡的路由器接口都屬於同一個廣播域和邏輯子網。在MA網絡中每臺OSPF路由器需與其他的所有路由器建立OSPF(FULL)的鄰居關係,這意味著網絡中共有n(n-1)/2個鄰接關係,導致每臺路由器不得不為維護這些鄰居關係消耗更多的資源,而且當拓撲出現變更時,網絡中的LSA泛洪可能會造成帶寬的浪費和設備資源損耗。

為減少MA網絡中的LSA泛洪及鄰接關係數量,OSPF會在每一個MA網絡中選舉一個指定路由器 DR(Designated Router)和一個備用指定路由器BDR(Backup Designated Router)。MA網絡中的路由器都只與DR、BDR建立(FULL)的鄰接關係,DRother之間不會建立OSPF(FULL)鄰接關係,而只是停滯在2way狀態。

選舉過程

當一臺OSPF路由器(的接口)激活後並去發現它的鄰居路由器時,它將去檢查網絡中是否已經存在有效的DR和BDR路由器。如果DR和BDR路由器存在的話(網絡中某臺路由器發出的Hello消息中DR字段為其自身的Router ID),這臺路由器將接受己經存在的DR和BDR路由器。

如果BDR路由器不存在,則執行一個選舉過程,選出具有最高DR優先級的路由器作為BDR路由器(已經宣稱自己是DR的路由器不能參與BDR的選舉)。如果存在多臺路由器具有相同的優先級,那麼在數值上具有最高Router ID的路由器將被選中。如果沒有有效的DR路由器存在,那麼BDR路由器將被選舉為DR路由器,然後再執行一個選取過程選取BDR路由器。

每臺路由器的每一個多點訪問接口都有一個路由器的DR優先級(範圍是0-255,默認為1)。

要點總結

(1)如果在—個MA網絡上只有惟—的一臺具有DR選舉資格的路由器,那麼這臺路由器將成為DR,而且在這個網絡上沒有BDR。其他所有的路由器都將只和這臺DR路由器建立鄰接關係。

(2)如果沒有具有DR選舉資格的路由器和一個MA網絡相連(例如所有路由器的接口DR優先級都是0),那麼這個網絡上將沒有DR或者BDR路由器,而且也不建立任何鄰接關係。

(3)DR、BDR的身份是非搶佔的,也就是一旦網絡中DR確立,則即使後來者的優先級比當前DR更高,也無法搶佔DR的身份。當DR失效,BDR成為DR,同時再產生BDR。

(4)DR與BDR、DR與Drother、BDR與Drother之間都是FULL狀態,Drother之間是2way狀態。所有的Drother都只和DR以及BDR建立FULL關係。

(5)OSPF定義了一個Wait計時器,缺省等於Dead時間40s,當一個MA接口激活OSPF時,它會等待Wait計時器定義的時間,這個時間用於蒐集MA網絡中具有DR選舉資格的路由器。這就是為什麼我們在以太網接口上配置OSPF時,鄰居關係的建立總是很慢,而在串行接口上配置OSPF,鄰居關係很快就建立起來了,串行接口不選舉DR、BDR,無需經過WAIT計時器。

(6)DR、BDR是一個接口級別的概念。嚴格的說“這臺路由器是DR” 這句話其實並不嚴謹,例如下圖所示,

淺談OSPF DR和BDR的選舉

在192.168.1.0/24這個MA網絡中,R1的Fa0/2口最終被選舉為DR的話,我們不會說R1就是DR,因為DR是接口級別的角色,只能說R1的Fa0/2口在直連的網絡中是DR。並且R1的Fa0/1連接到另一個MA網絡,那麼在那個MA網絡中,也要選舉DR、BDR,至於R1的Fa0/1能否成為那個網絡的DR,也是要看PK的結果。

關於DR、BDR選舉的深入探討

  1. 如果下圖中兩臺路由器(的接口)同時激活OSPF,則在接口OSPF狀態機的演進過程中,2way狀態後會各自啟動WAIT計時器,用於蒐集MA網絡中具有選舉資格的OSPF路由器,在各自泛洪的Hello報文中,包含著他們自身的接口DR優先級、Router ID等信息。40s後R1成為DR,R2成為BDR。此時大家發送出來的Hello消息中,DR字段填寫的是R1的Router ID,BDR字段填寫的是R2的Router ID。
淺談OSPF DR和BDR的選舉

  1. 此後,如果R3也加入到了MA網絡中,並且它的接口DR優先級比R1更高:R3的接口激活OSPF後,也會啟動一個WAIT計時器,但是它會收到R1發送出來的Hello消息,該Hello消息中DR字段填寫的正是R1自己的Router ID,這意味著“網絡中有人宣稱自己是老大”,因此R3將接受這個事實,它的WAIT計時器迅速超時。這就是所謂的DR的不可搶佔性。
淺談OSPF DR和BDR的選舉

  1. 但是我們考慮另一種情況:假設初始情況下R1、R2處於一個LAN中,R3自己處於另外一個LAN中,大家的接口IP都是同網段的,但是屬於不通的LAN。例如三臺路由器都連接在同一臺交換機上,但是R1、R2屬於一個LAN,R3屬於另一個LAN。那麼三臺路由器的接口激活OSPF後,R1會成為LAN1的DR,而R3會成為LAN2的DR,也就是他們各自發送出來的Hello消息中,都宣稱自己就是DR。現在假設兩個LAN連接了起來,這就會有問題了,因為同一個LAN中,有兩人宣稱自己是老大,這就得重新幹一架,重新DR選舉。
淺談OSPF DR和BDR的選舉

小實驗

淺談OSPF DR和BDR的選舉

R1、R2接口DR優先級設置為0,則R1、R2不建立FULL鄰居關係R1 接口優先級為0,R2為1,則R2成為DR,並且該MA網絡中沒有BDR在上一步的基礎上,R1接口優先級改為100,對網絡沒有影響(DR非搶佔)在上一步的基礎上,R2(此時為DR)重啟OSPF進程,則R1成為DR,R2成為BDR。


分享到:


相關文章: