一:名詞解釋數據庫
DR:designated router 指定路由器。網絡
BDR:backup designated router 備份指定路由器。oop
二:DR/BDR出現的原因router
在廣播網和NBMA網絡中,任意兩臺路由器之間都要交換路由信息.若是網絡中有n臺路由器,則須要創建n(n-1)/2個鄰接關係.這使得任何一臺路由器的路由變化都會致使屢次傳遞,浪費了帶寬資源.爲解決這一問題,OSPF協議定義了指定路由器DR(Designated Router),全部路由器都只將信息發送給DR,由DR將網絡鏈路狀態發送出去.若是DR因爲某種故障而失效,則網絡中的路由器必須從新選舉DR,再與新的DR同步.這須要較長的時間,在這段時間內,路由的計算是不正確的.爲了可以縮短這個過程,OSPF提出了BDR(Backup Designated Router,備份指定路由器)的概念.blog
BDR其實是對DR的一個備份,在選舉DR的同時也選舉出BDR,BDR也和本網絡內的全部路由器創建鄰接關係並交換路由信息.當DR失效後,BDR會當即成爲DR.因爲不須要從新選舉,而且鄰接關係事先已創建,因此這個過程是很是短暫的.固然這時還須要再從新選舉出一個新的BDR,雖然同樣須要較長的時間,但並不會影響路由的計算.DR和BDR以外的路由器(稱爲DR Other)之間將再也不創建鄰接關係,也再也不交換任何路由信息.這樣就減小了廣播網和NBMA網絡上各路由器之間鄰接關係的數量.接口
以下圖所示,用實線表明以太網物理鏈接,虛線表明創建的鄰接關係.能夠看到,採用DR/BDR機制後,5臺路由器之間只須要創建7個鄰接關係就能夠了.ip
在一個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。