OSPF的5包7狀態
數據包
Hello:發現、建立鄰居(鄰接)關系、維持、周期保活;存在全網唯一的RID,使用IP地址表示
DBD:本地的數據庫的目錄(摘要),LSDB的目錄(所有LSA的集合)
LSR:基于DBD包中的未知信息進行查詢
LSU:攜帶了真正的LSA信息(鏈路狀態通告),用于答復對端的LSR
LSack:對傳遞LSA信息進行確認,鏈路狀態確認
狀態機
Down:一旦啟動后發出hello包,則立即進入下一狀態
Init(初始化):若收到了攜帶了自己的RID的hello包,則和對方一起進入下一狀態
Two-way(雙向通信):鄰居關系建立(DR/BDR選舉),此時進行條件匹配,若成功,RID大的優先進入下一狀態;若失敗,則保持鄰居關系,hello包10s周期保活即可
Exstart(預啟動):使用類hello的DBD進行主從選舉,RID大的優先進入下一狀態
Exchange(準交換):使用真正的DBD包進行數據庫目錄交換共享
Loading(加載):使用LSR/LSU/LSack來獲取未知的LSA信息
Full(轉發):鄰接關系建立的標志
什么是條件匹配?
1.MA網段進行DR/BDR選舉,P2P網段中沒有DR/BDR
2.點到點網絡直接進入下一狀態;MA網絡將進行DR/BDR選舉(40S),非DR/BDR間不得進入下一狀態
拓撲:
Down:關閉狀態
init:初始化
Hello包:12.1.1.1 以 10s為周期向其他鏈路以組播方式發送hello包,并攜帶了自己的RID
此時,R2收到了R1的hello包,并向R1發送hello(打招呼)
Init完成,雙方成為鄰居關系Two-way:鄰居關系建立(DR/BDR選舉)
Exstart預啟動
發送了四次的DBD是因為,首先R1想要先進入下一狀態,但是R2告訴R1你的RID比我的小(要想進入下一狀態RID要是較大方,此時R2將R1的RID與自己進行了比較),R2向R1發送DBD請求,告訴R1 我才是RID大的
R1第一次發送DBD將自己的master置成Yes
告訴R2,我應該是Master;
注意此時DD-seq是2765
R2給R1回應
我的RID比你大,我才應該是Master,并且將自己的MS置位為Yes
注意此時的DD-seq是465
R1第二次發送DBD
由于R1的RID比R2小,那么R1就將自己的MS置成No
這個DD是為了確認上一步中R2發來的DD的,所以DD-seq是465(與上一步中R2發來的相同)
R2再發送一個DD
將M置位0,告訴R1我沒有DD要發送了
此時的DD-seq是在上一次發送DD-seq的基礎上+1,因為是新發出來的DD,注意這個465發出后,一定會收到一個465用于確認的
R1第三次發送DBD
將M置位為0,表示我也沒有DBD要發送了
注意DD-seq就是466,用于確認上一步中R2發來的DD的
總結整個過程
Exchange準交換:雙方交換DBD
Loading::使用LSR/LSU/LSACK獲取未知的LSA信息 (共享拓撲圖)
R1向R2以單播方式發送LSR的請求
R2給R1 回復LSU的確認包含了LSA,路由信息或拓撲信息
R1 R2之間互相發送LSR LSU
R1 要給R2發送 LSU的確認
至此,7個狀態機制完成,路由與拓撲完成交換。
審核編輯:劉清
-
OSPF
+關注
關注
0文章
80瀏覽量
14893 -
狀態機
+關注
關注
2文章
492瀏覽量
27561 -
DBD
+關注
關注
0文章
3瀏覽量
7016
原文標題:如何使用WireShark詳細分析OSPF狀態運行機制?
文章出處:【微信號:網絡技術干貨圈,微信公眾號:網絡技術干貨圈】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論