OSPF鄰居建立過程詳解
目錄
OSPF的五種包:
1、Hello包 ——只在狀態init、狀態exstart傳送
功能:用於建立和維持鄰居關係 (每10s相互發送Hello包,若40s內沒有傳送,則鄰居關係刪除)
重要欄位:路由器的router-id
路由器介面的area-id (必須一致)
路由器介面的IP地址和掩碼
路由器介面的認證,hello時間間隔,死亡時間間隔(必須一致)
neighbor欄位
STUB標識(末節標識)(必須一致)
2、DBD包(database description)——只在狀態exchange傳送
只在以下狀態傳送:exchange
功能:用於對OSPF的網路拓撲進行描述
3、LSR包(Link State Request)——只在狀態loading傳送
功能:用於請求對方的路由資訊
4、LSU包(Link State Update)——只在狀態loading傳送
功能:用於儲存和傳遞路由資訊
5、LSACK包(Link State Acknowledgment)——只在狀態loading傳送
功能:用於對LSU等包進行可靠確認
OSPF建立鄰居過程的7個狀態機:
down ——>init——>two-way——>exstart——>exchange——>loading——>full
1.down //雙方還沒有進行任何互動
2.init //此狀態只互動hello包,沒有同步任何路由資訊
3.two-way //達到狀態two-way,建立鄰居關係
4.exstart // 進行主從關係選舉,為了確定誰在exchange狀態先發送DBD包
5.exchange //通過互動DBD包,建立各自的拓撲表
6.loading //請求對方路由資訊,此狀態互動LSR包、LSU包、LSACK包
7.full //建立鄰接關係 達到LSDB的同步
對OSPF建立鄰居過程分析
OSPF建立過程可以簡單分為以下三個過程
①建立鄰居關係
②建立各自拓撲表
③建立鄰接關係
①建立鄰居關係:down ——>init ——>two-way ----->
分析:在狀態init,路由器會互相傳送hello包,hello包重要欄位如下:
路由器的router-id
路由器介面的area-id(必須一致)
路由器介面的IP地址和掩碼
路由器介面的認證,hello時間間隔,死亡時間間隔(必須一致)
neighbor欄位
STUB標識(末節標識)(必須一致)
只有兩路由器的介面aera-id欄位、介面的認證,hello時間間隔,
死亡時間間隔、STUB標識一致,路由器才會到狀態two-way,建立鄰居關係
②建立各自拓撲表:exstart ——>exchange ----->
分析:在狀態exstart通過傳送hello包進行主從關係選舉(master/slave),
為了確定誰在exchange狀態先發送DBD包
主從關係選舉是通過比較兩臺路由器的Router ID大小,
Router ID大的為master路由器,由master路由器先互動DBD包
主從關係選舉後,進入狀態exchange ,在此狀態通過互動DBD包,建立各自的拓撲表
③建立鄰接關係:loading ——>full
分析:建立各自的拓撲表後,進入狀態loading,請求對方路由資訊,
如圖左邊路由器,傳送LSR包請求172.16.6.0/24的路由資訊
右邊路由器收到LSR包後,會回覆LSU包,來告知172.16.6.0/24的路由資訊
左邊路由器收到LSU包後,會回覆LSACK包,用於對LSU包進行可靠確認
互動完路由資訊,達到full狀態,路由器之間建立鄰接關係 達到LSDB的同步