DR和BDR詳解
為減小多路訪問網路中OSPF流量,OSPF會選擇一個指定路由器(DR)和一個備份指定路由器(BDR)。當多路訪問網路發生變化時,DR負責更新其他所有OSPF路由器。BDR會監控DR 的狀態,並在當前DR發生故障時接替其角色。DR和BDR是由同一網段中所有的路由器根據路由器優先順序、Router ID透過HELLO報文選舉出來的,只有優先順序大於0的路由器才具有選取資格。進行DR/BDR選舉時每臺路由器將自己選出的DR寫入Hello報文中,發給網段上的每臺執行OSPF協議的路由器。當處於同一網段的兩臺路由器同時宣佈自己是DR時,路由器優先順序高者勝出。如果優先順序相等,則Router ID大者勝出。
DR的選舉
1.記錄當前網路中的DR和BDR值,以便之後作比較用。
2.按照如下方式計算BDR。只有那些在列表中的沒有宣稱自己為DR的路由器才能參加BDR選舉。若多於一臺路由器宣稱自己為BDR(例如,當前在它們的Hello包中它們將自己列為BDR,但不是DR),則擁有最高路由器優先順序的路由器被選舉成為BDR。如果路由器的優先順序相等,則擁有最高Router ID的路由器將當選;如果沒有路由器宣稱自己為BDR,則選舉擁有最高路由器優先順序的鄰居路由器為BDR(同樣不考慮那些宣稱自己為DR的路由器),同樣使用Router ID來打破平局。
3.按照如下方法為此網路計算新的DR。若一或多個路由器宣稱自己為DR(也就是說,當前在它們的Hello包中將它們自己列為DR),則擁有最高路由器優先順序的路由器被宣告為DR。如果出現平局,擁有最高Router ID者勝出;如果沒有路由器宣告自己為DR,則新選擇出來的BDR成為DR。
4.如果路由器X現在被選為新的DR或者BDR,或者它不再成為DR或者BDR,重複步驟2和3,然後跳到步驟5。例如,如果路由器X現在是DR,當重複第2步時路由器X將不能再參加BDR的選舉。此外,這也會保證沒有任何路由器會同時宣告自己為BDR和DR。
5.作為選舉的結果,路由器本身可能現在成為了DR或者BDR。路由器的介面狀態將被依此而設定。如果路由器現在成為了BDR,則埠的新狀態為“備份”。否則,介面的新狀態成為DR Other。
6.如果所連線的網路是NBMA網路而路由器本身正好被選舉為DR或者BDR,它必須開始傳送hello包給那些無權成為DR的鄰居。這是透過呼叫每個擁有路由器優先順序0的鄰居訊息“Start”來實現的。
7.如果以上計算導致了DR或者BDR身份的改變,與此埠關聯的鄰接關係需要進行改變。某些鄰接關係需要建立,而其他一些將被打破。為了實現此動作,為所有狀態至少為“2-Way”的鄰居呼叫訊息“AdjOK?”。這將會導致它們重新檢查鄰接狀態。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69943410/viewspace-2659473/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- HCNA Routing&Switching之動態路由協議OSPF DR和BDR路由協議
- 指定路由器(DR/BDR)和非指定路由器(DROTHER)的區別路由器
- HCIP-RS實驗學習NO.3(OSPF的DR/BDR選舉)
- Flannel VxLAN DR 模式模式
- Flannel IPIP DR 模式模式
- 詳解 let 和 var
- require 和 import 詳解UIImport
- exp和imp詳解
- 詳解jdbcTemplate和namedParameterJdbcTemplateJDBC
- xargs 和 exec詳解
- jni和ndk詳解
- ckeckpoint和SCN詳解
- startActivityForResult和setResult詳解
- ROP漏洞詳解和利用
- WebRTC SDP 詳解和剖析Web
- pandas qcut 和cut 詳解
- [譯]KVC 和 KVO詳解
- cookie和session的詳解CookieSession
- HTTP和HTTPS詳解HTTP
- iOS KVC和KVO詳解iOS
- rowspan和colspan用法詳解
- HTTP和HTTPS詳解。HTTP
- IP校驗和詳解
- RabbitMQ的詳解和使用MQ
- 介面和抽象類詳解抽象
- android WebView詳解,常見漏洞詳解和安全原始碼AndroidWebView原始碼
- Vue $dispatch 和 $broadcast 詳解VueAST
- crontab和cron表示式詳解
- Git詳解和Github的使用Github
- Promise和async await詳解PromiseAI
- onSaveInstanceState和onRestoreInstanceState詳解REST
- javascript原型和原型鏈詳解JavaScript原型
- Java PATH和CLASSPATH配置詳解Java
- Blocks深入理解和詳解BloC
- jQuery offset()和position()用法詳解jQuery
- URIEncoding和useBodyEncodingForURI詳解Encoding
- Get和Post請求詳解
- oracle pctfree和pctused詳解Oracle