一:名詞解釋
DR:designated router 指定路由器。
BDR:backup designated router 備份指定路由器。
二:DR/BDR出現的緣由
在廣播網和NBMA網路中,任意兩臺路由器之間都要交換路由資訊.如果網路中有n臺路由器,則需要建立n(n-1)/2個鄰接關係.這使得任何一臺路由器的路由變化都會導致多次傳遞,浪費了頻寬資源.為解決這一問題,OSPF協議定義了指定路由器DR(Designated Router),所有路由器都只將資訊傳送給DR,由DR將網路鏈路狀態傳送出去.如果DR由於某種故障而失效,則網路中的路由器必須重新選舉DR,再與新的DR同步.這需要較長的時間,在這段時間內,路由的計算是不正確的.為了能夠縮短這個過程,OSPF提出了BDR(Backup Designated Router,備份指定路由器)的概念.
BDR實際上是對DR的一個備份,在選舉DR的同時也選舉出BDR,BDR也和本網路內的所有路由器建立鄰接關係並交換路由資訊.當DR失效後,BDR會立即成為DR.由於不需要重新選舉,並且鄰接關係事先已建立,所以這個過程是非常短暫的.當然這時還需要再重新選舉出一個新的BDR,雖然一樣需要較長的時間,但並不會影響路由的計算.DR和BDR之外的路由器(稱為DR Other)之間將不再建立鄰接關係,也不再交換任何路由資訊.這樣就減少了廣播網和NBMA網路上各路由器之間鄰接關係的數量.
如下圖所示,用實線代表乙太網物理連線,虛線代表建立的鄰接關係.可以看到,採用DR/BDR機制後,5臺路由器之間只需要建立7個鄰接關係就可以了.
在一個LAN 連線中,OSPF將選舉出一個路由器做為DR,再選舉一個做為BDR,所有其他的和DR以及BDR相連的路由器形成完全鄰接狀態而且只傳輸LSA(鏈路狀態通告)給DR和BDR。
換句話說,在一個OSPF的網路中,所有的路由器將被分為兩類:指定路由器(DR/BDR)和非指定路由器(DROTHER)。所有的非指定路由器都要和指定路由器建立鄰居關係,並且把自己的LAS傳送給DR,而其他的OSPF路由器將不會相互之間建立鄰居關係。也就是說,OSPF網路中,DR和BDR的LSDB(鏈路狀態資料庫)將會包含有整個網路的完整拓撲。|
DR從鄰居處轉發更新到另外一個鄰居那裡。DR的主要功能就是在一個LAN內的所有路由器擁有相同的資料庫,而且把完整的資料庫資訊傳送給新加入的路由器。路由器之間還會和LAN內的其他路由器(非DR/BDR,即DROTHERs)維持一種部分鄰居關係(two-way adjacency)。OSPF 的鄰接一旦形成以後,會交換LSA來同步LSDB,LSA將進行可靠的洪泛。
三: DR/BDR的選舉
當選舉DR/BDR的時候要比較hello包中的優先順序priority(設定命令route(config-if)#ip ospf cost{priority} 0~255),優先順序最高的為DR,次高的為BDR。不作修改預設埠上的優先順序都為1,在優先順序相同的情況下比較Router ID,RID最高者為DR,次高者為BDR,當你把相應埠優先順序設為0時,OSPF路由器將不能再成為DR/BDR,只能為DROTHER。
在使用預設優先順序的OSPF的DR選舉中,所有的路由器之間會交換自己的ROUTER-ID來確定DR。ROUTER-ID可以手工指定。如果沒有手工指定ROUTER-ID的話,那麼路由器會先看自己有沒有環回介面(Loopback),如果有環回介面,則使用環回介面上的IP地址作為自己的ROUTER-ID。如果沒有環回介面的話,則會去比較自己所有物理介面上的IP地址,並從中選擇最大的一個IP地址作為自己的ROUTER-ID來參與DR的選舉。
那麼,DR和BDR的選舉就可以用以下的方式來決定:
1 如果有手工指定的ROUTER-ID,則使用該ROUTER-ID參與選舉;
2 如果沒有手工指定的ROUTER-ID,則看自己有沒有Loopback介面,有則使用Loopback介面上的IP作為ROUTER-ID參與選舉;
3 如果沒有Loopback介面,則比較所有的物理介面,並使用其中最大的IP作為ROUTER-ID參與選舉;
4 所有的OSPF路由器交換自己的ROUTER-ID,具有所有ROUTER-ID中最大一個的路由器將作為DR,具有次大ROUTER-ID的路由器則成為BDR。