天天看點

一張圖看懂OSPF鄰接關系建立及封包類型

對于很多學習網絡的同學來說,可能對于如何在路由器上配置OSPF比較熟悉了,但是OSPF鄰接關系是如何建立起來的呢?本文将介紹OSPF鄰接關系從初始狀态到最後完成建立的全過程,通過學習這一部分,可以深入了解OSPF協定的全過程,對于網絡排錯也有很大幫助。

一、OSPF建立過程圖

OSPF從開始到鄰接關系建立,全過程如圖所示。(該圖說明了在BMA網絡【廣播網絡】下OSPF鄰接狀态大的建立過程,其他模式與此略有不同)

一張圖看懂OSPF鄰接關系建立及封包類型

二、OSPF鄰接關系建立描述

OSPF鄰接關系建立,說起來很複雜,但是其實很簡單。總得來看,就是發現OSPF鄰居,并且互相交換所知的網絡資訊的過程。

**首先,OSPF要互相發現對方。**該過程是通過發送Hello包實作的,運作OSPF的路由器一旦上線,就會想運作OSPF協定的端口上發送OSPF Hello包。該包含有一個32位的鄰居字段,描述了自己所有已知的OSPF鄰居。(注意,這裡是鄰居而不是鄰接)換句話說,隻要收到了一其他運作OSPF的路由器發送的Hello包,就會把該路由器的Router ID記錄到Hello包中。這樣,當一個OSPF路由器收到其他人發送的含有自己Router ID的Hello包時,就說明對方已經發現自己了,是以也就可以進行下一步。這時,我們說兩個OSPF路由器建立了鄰居關系。

其次,OSPF要互換自己所知道的網絡的資訊。 OSPF作為動态路由協定,之是以可以動态生成路由,就是因為運作OSPF協定的路由器之間互相交換了自己說知道的網絡拓撲資訊,也是以知道了整個網絡的拓撲結構。在OSPF中,描述自己所知道的網絡資訊的封包時DD封包,是以隻需要互相發送DD封包,就可以先告訴對方自己所知道的網絡資訊。但是要注意,DD封包中沒有詳細的網絡資訊。

此外,在DD封包互相交換之前,建立鄰居的OSPF路由器之間還要發送一個空的DD封包,以便協商主從。

最後,OSPF路由器要發送詳細的網絡資訊,以便達到網絡拓撲結構認識的統一。該過程的實作是依托于LSR、LSU和LSACK封包實作的。LSR封包用于請求對方路由器的某一個網絡的資訊;LSU用于在收到LSR封包後向對方路由器回送某一個網絡的資訊;LSACK用于在收到LSU後向對方回複表示自己已經收到該資訊。

三、OSPF封包類型總結

綜上所述,OSPF一共有5種封包。

1、Hello封包。

用于發現OSPF鄰居。

2、DD封包。

DD是Database Description的簡寫,用于描述LSDB。

3、LSR封包。

LSR是Link state Request的簡寫,用于向OSPF鄰居請求LSU。

4、LSU封包。

LSU是Link State Update的簡寫,用于向對方發送描述網絡的資訊。

5、LSACK封包。

LSACK是Link State Ackowladgement的簡寫,用于回複LSU封包。