OSPF接口狀態機及DR和BDR選舉
OSPF協議:《TCP/IP協議卷一》《OSPF和IS-IS詳解》
研究OSPF這本書好,建議讀,
比卷一還好;
經過上課入門,課後探討,多 動手實驗;自學重要
經過什麼方式以什麼方式記得更牢?
一、隔一段時間常常複習
二、當個講師把理論知識好好沉澱
華爲面試一次5000塊錢
什麼狀況下一邊down一邊Init狀態?
Init狀態:初始化狀態:收到hello報文而且檢測經過了
經過ACL能夠過濾IP包,一端拒絕全部的接收報文可是能夠發送;
對端維護本段狀態是Init;本段維護對端狀態是down狀態
選舉主從的目的是爲了保證DD報文的可靠性
LSACK能夠一次確認多個LSA
************************************************************************
OSPF接口狀態機
RFC-開發的一個標準化文檔
RFC2328
+----+ UnloopInd +--------+
|Down|<--------------|Loopback|
+----+ +--------+
|
|InterfaceUp
+-------+ | +--------------+
|Waiting|<-+-------------->|Point-to-point|
+-------+ +--------------+
|
WaitTimer|BackupSeen
|
|
| NeighborChange
+------+ +-+<---------------- +-------+
|Backup|<----------|?|----------------->|DROther|
+------+---------->+-+<-----+ +-------+
Neighbor | |
Change | |Neighbor
| |Change
| +--+
+---->|DR|
+--+
一、DOWN->LOOPBACK (LOOPBACK接口)
若是一個接口是邏輯口,宣告進OSPF之後,接口 UP會從DOWN變成LOOPBACK狀態,
二、DOWN->POINT-TO-POINT(串口、(點到點、點到多點))
若是一個接口是串口,宣告進OSPF之後
三、DOWN->Waiting->(DR\BDR\DRother) (廣播網、非廣播網)
若是一個接口是
DR:指定路由器(waiting時間超時,從Waiting過渡到DR)
BDR: 備份的指定路由器(BackupSeen)
DRother:不是一個指定路由器(沒有選舉權,不參與選舉)
Waiting有時間限制,在廣播網中,時間是40s
接口狀態機和鄰居狀態機沒有關係
OSPF算是最複雜 的 IGP協議
如今有3臺路由器,3臺路由器裏面會有幾個DR?
會有2個DR:
DR指的是接口的狀態
在一個廣播域(網段 )裏面只存在一個DR和一個BDR,而Dother能夠有多個,如今是有兩個網段,有兩個DR,主要的做用是爲了減小LSA的泛洪。
43:25
DR和BDR
廣播網裏面有5臺設備,1路由器一樣的LSA須要通告4次,每個鄰接都要通告一次;一樣的LSA須要屢次去發送,這樣意味着發送的LSA是重複的,重複的LSA會帶來性能和帶寬的浪費,怎麼避免這個問題?讓LSA只發送一次其餘的設備都能收到?
這個方案就是在網絡裏面去選幾臺指定設備-DR;你們都和指定設備DR創建鄰接關係,其餘的設備之間是不創建鄰接關係的,由指定設備收集全部的LSA,而後再通告給你們。LSA只發送一次,發給DR,再由DR轉發給你們;DR負責收集全部設備的LSA,再由DR統一發送,這樣就能夠避免LSA的屢次發送。能夠減小性能的利用率和帶寬佔用率。
同時,在OSPF裏面,爲了網絡可靠性的保證,除了有一個DR,還有一個BDR,BDR至關於DR的備份。DR掛了之後,BDR會升級爲DR,會從新選舉,選舉BDR;DR是必須的,BDR是能夠沒有的。在一個廣播網裏面只能有一個DR和一個BDR。
全部的設備都會和DR和BDR創建鄰接關係,全部的DRother設備之間只能創建鄰居關係。若是DR失效,BDR設備會升級爲DR,而後從新從DRother中選舉BDR。
DR和BDR之間也是鄰接關係。
如何選舉DR和BDR?
一、先比較優先級,在HELLO報文裏面有一個字段DR Prority 8個比特,默認狀況下優先級爲1,優先級大的稱爲DR設備
二、若是優先級同樣,比較router-id,大的一段稱爲DR
//看hello報文
DR選舉出來,能被搶佔嗎?
一旦DR和BDR選舉以後,不能被搶佔:接口優先級爲0表示這臺設備不能參與選舉,沒有選舉權,會立刻進入DRother狀態,1是DR,2是DRother,1和2創建完成之後,3優先級調整爲10,3狀態仍是BDR,3仍是不能搶佔,爲了保證OSPF網絡的穩定性,由於DR的設備有很關鍵的做用,它會通告一種LSA(2類LSA):若是DR設備容易被搶佔,2類LSA就會由新的DR設備從新發,從新發的話就會影響OSPF網絡的整個區域從新執行一次SPF算法,引發不穩定,DR一旦選舉出來之後,是不能被搶佔的。
若是重啓的話,3會變成DR
DR規則:
1.在選舉期內,優先級高的成爲DR,其次的成爲BDR;
2.在選舉期內,若是優先級同樣,Router-ID高的成爲DR,其次的成爲
BDR;
3.在選舉期外,不存在搶佔性;
4.DR失效之後,BDR升級成爲DR,從新選舉BDR;
5.clear ip ospf process(重啓OSPF進程)能夠重選;
6.DR正常時,BDR只接收全部信息,轉發LSA和同步LSDB的任務由DR完 成,當DR故障時,BDR自動成爲DR,完成原DR的工做,並選舉新的 BDR
實際的選舉步驟是先選舉BDR,由BDR升級爲DR,再去選一個新的BDR,優先級爲0表示沒有選舉權。
DR和BDR選舉以後,3是後加入的,3是如何知道網絡裏面是否已經存在DR和BDR?
廣播網裏面,正常狀況下是40s的選舉期,選舉期內會等待,HELLO報文裏面有DR address和BDR address 接口的IP地址;若是網絡中存在絡DR和BDR,在發送的HELLO報文裏面會通告DR和BDR接口的IP地址。
若是DR是攜帶IP地址的,BDR爲空,說明網絡裏面存在DR不存在BDR;若是DR和BDR都爲空,說明網絡裏面不存在DR和BDR
在校園網中,router-id本身選舉,容易衝突,必定要手動合理去規劃router-id
DR和BDR是在哪一個階段去選舉的?
DR和BDR是接口狀態機,和鄰居狀態機沒什麼關係,是在2WAY狀態,進入鄰居狀態之後再進行DR和BDR的選舉。
(1)有效時間內,接口的waiting-time尚未超時,已經進入2WAY狀態,鄰居狀態之後, Backupseen觸發,能夠交互hello報文進行DR和BDR的選舉;
(2)有效時間以外進入2WAY狀態,一旦有效狀態以外過渡到2WAY,說明網絡之中已經存在DR了。
先宣告1的接口進入OSPF,40s以後再宣告3的接口進OSPF,已知1的優先級爲1,3的優先級爲10;1和3之間誰是DR,誰是BDR?
1是DR,3是BDR,1已經超時,
說明有效時間已經超時了,超時之後在有效時間範圍以內都沒有選舉出來DR,1會認爲本身是DR;1再去發送hello報文給3,hello報文裏面已經填充了DR設備的接口的IP地址,3收到1的HELLO報文,從這HELLO報文中能夠得知,網絡中已經存在DR設備,而BDR是空的,因爲DR和BDR是不能被搶佔的,3只能成爲BDR;
改一下,20s以後把3宣告進OSPF,在有效時間範圍內交互HELLO報文,DR和BDR字段都是空的,能夠進行正常的選舉,3的優先級大於1的優先級,3就會變成DR,1就會變成BDR。
2WAY狀態會去選舉DR和BDR,2沒有選舉權,1和3是有效優先級;
(1)若是網絡裏面沒有DR和BDR,先選舉BDR;先選舉BDR,BDR升級爲DR,BDR位置空出來,從新選舉BDR
(2)若是網絡裏面存在DR,不存在BDR,直接選舉一個BDR
(3)若是網絡裏面沒有DR,存在BDR,由BDR升級爲DR,空閒出BDR的位置再去選舉一個BDR。
(4)既有DR又有BDR,不用選
網絡裏面如今沒有DR和BDR,先選舉BDR,3成爲BDR;BDR升級爲DR,BDR位置空出來,從新選舉BDR
爲何這樣選?由於RFC規定,在有效時間範圍以內,須要先選舉BDR再去選舉DR,不能一步到位。
若是3臺設備優先級都爲0,則直接變爲Dother,都處於2WAY狀態
總結:區分開接口狀態機和鄰居狀態機;接口狀態機:接口狀態UP之後,若是是廣播網或者是非廣播網,接口狀態會從DOWN->Waiting;waiting的時間會等於一個dead的時間,廣播網是40s;等待一個DR和BDR的選舉,鄰居狀態機變爲2WAY之後纔開始選舉的過程,若是在waiting的時間範圍以內都沒有選舉出來誰是DR,會認爲本身是DR,2WAY等待DR選舉出來之後會過渡到exstart.
若是加一臺設備,在40s選舉期間,那臺設備會變爲DR,新加入者收到HELLO報文,發現DR和BDR都爲空,則本身爲DR
爲何通告DR和BDR填充IP地址而不是router-id?
***************************************************************
什麼緣由會影響OSPF鄰接的創建?
一、MTU不匹配(exstart-exstart或者exstart-exchange)
二、DR P=0,DR的優先級都爲0 (2WAY)
三、鏈路請求列表和重傳列表不爲空(loading)
**************************************************************
【DR和BDR的選舉實驗】1:49
2:0
***************************************************************
在一個廣播域裏面(VLAN劃分廣播域),只能存在一個DR和一個BDR,其餘設備都是DOTHER。
在一個廣播域裏面如何存在兩個DRother?一山不容二虎的過渡狀態
確定存在一山二虎的狀況的,好比說,弄到不一樣的 VLAN裏面好比R1在VLAN1,R4在VLAN4裏面,不通的,不通不能交互HELLO報文,接口UP40秒之後 ,沒有選舉出DR會認爲本身是DR;兩端都認爲本身是DR之後,再把端口劃到同一個VLAN,交互包,這時,同一個廣播域裏面存在兩個老大,就會火拼看誰勝出,經過優先級和router-id來選的;
或者,經過修改hello時間來演示;ip ospf hello-interval 雙方都不接收對方發送的hello報文。
****************************************************************
在發送hello報文的時候DR和BDR字段填充的是DR和BDR接口的IP地址,爲何這麼作而不是填充router-id?
在廣播網中選舉DR/BDR是爲了減小LSA泛洪,鄰居狀態進入2WAY狀態之後,開始選舉DR/BDR,在網絡裏面須要存在DR,能夠沒有BDR;選舉出來之後,全部的其餘設備DRother都須要和DR去交互LSA,發送DD報文。
這種交互方式是通告單播去執行的,不是經過組播,如今只須要將LSA交互給DR,由DR分發給你們,須要以單播的方式交互給DR,須要知道目標的IP地址,這就是爲何 填充的是IP地址而不是router-id;(如今處於2WAY狀態沒有交互LSA,目的是爲了去交互LSA)
router-id是一個虛擬地址,能夠隨便配置
**********************************************************
組播組地址224.0.0.6 ALLDRouters全部指定路由器
只有DR和BDR纔會去監聽組播組地址,其餘設備DRother是不會監聽的;DRother會向這個組播組地址去通告報文,而它的目的就是將報文通告給DR和BDR
有兩種狀況:
1.創建鄰接關係:DBD LSR LSU(創建鄰接之初-下載地圖)
2.後續按期維護LSA狀態(LSU去維護一個 LSA狀態;經過LSU-通告實時路況);後續DRother每隔1800s向這個組播組地址224.0.0.6去通告一個LSU,維護LSA狀態;
LSA老化時間3600s,發一次LSA老化時間歸0;出問題以後,3600s以後沒收到LSU,會將LSA從LSDB中刪除掉
224.0.0.6只有DR/BDR纔會監聽;224.0.0.5全部的設備都會監聽。
全部的 DRother往224.0.0.6發LSU報文,發的是LSU,通告的本身LSDB裏的LSA信息;DR/BDR收到這個LSU之後,首先更新本身的LSDB,後續,會將最新的LSA向224.0.0.5發送出去,全部的DRother會收到,作更新。
這樣能夠保證LSA只發送 一次,正常狀況下DR往224.0.0.5發送。
DRother之間創建的是 鄰居關係;DR與DRother之間創建的鄰接 關係
【實驗驗證】224.0.0.5/224.0.0.6組播組地址2:40
BDR須要監聽224.0.0.6去維護LSDB
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">面試
附件列表