ospf學習-----鄰居建立以及報文

OSPF協議鄰居建立以及報文

一、OSPF報文有五種報文形式

       1、 Hello報文:週期性發送,用來發現和維持OSPF鄰居關係。(DR\BDR使用組播地址224.0.0.5向鄰居發送報文,其他路由器向DR和BDR使用224.0.0.6發送報文。P2p和廣播hello時間是10S,NBMA和P2MP是30秒。)

       2、DD報文(Database Description packet):描述了本地LSDB的摘要信息,用於兩臺路由器進行數據庫同步。(即LSA的HEAD信息)

       3、 LSR報文(Link State Request packet):向對方請求所需的LSA。只有在雙方成功交換DD報文後纔會向對方發出LSR報文

       4、LSU報文(Link State Update packet):向對方發送其所需要的LSA

       5、LSAck報文(Link State Acknowledgment packet):用來對收到的LSA進行確認。(由於可靠的Tcp傳輸,所以需要lsack確認。內容是LSA的head,)

通過LSA形成LSDB,OSPF設備將LSDB轉換成一張有向帶權圖,同一個區域內的LSDB相同,每臺設備根據SPF算法計算出依自己爲根的最短路徑樹。

二、OSPF鄰居的八種狀態

       1、Down 沒有從鄰居處收到hello數據包。

       2、Attempt 用於NBMA網絡的連接,並表明沒有新的信息從這個鄰居處收到。

       3、 Init 從另外的路由器收到hello報文,但是在此hello報文中沒有看到自己的router ID。

       4、2way 從鄰居處接收到的hello報文的鄰居字段中包含有自己的router ID。這個狀態下選舉DR和BDR。

       5、ExStart 建立主/從關係並決定初始的DD序號以便準備交換DD報文。帶有最高router ID的路由器將成爲主路由器。

       6、Exchange 路由器通過發送DD報文向鄰居描述它自己的完整的鏈路狀態數據庫,同時,路由器也可以發送LSR報文來請求更新的LSA。

       7、 Loading 路由器將發送LSR給鄰居請求在Exchange狀態下發現的新的LSA,並接收對請求的LSA的響應報文(LSU)。

       8、Full 鄰居路由器的LSDB中所有的LSA都有了,本路由器和鄰居路由器形成鄰接關係(adjacency)。

其中,Down、2way、Full狀態是穩定狀態。其狀態圖,如下:



三、OSPF鄰居的建立


在R1啓動OSPF,配置如下:

#
interface Ethernet0/0/0
 ip address 192.168.1.1 255.255.255.252
#

interface LoopBack0

 ip address 1.1.1.1 255.255.255.255
#
ospf 1 router-id 1.1.1.1
 area 0.0.0.0
  network 192.168.1.0 0.0.0.3
#

在R1端口抓包:

R1端口啓動ospf後,發送組播hello報文,SIP爲192.168.1.1 DIP是224.0.0.5,TTL時間是1秒。



OSPF頭部格式:

 Version:值爲2時,是OSPFv2版本;值爲3時,是OSPFv3,即是IPv6版本。

 Network MAsk:表示路由器發包接口所處IP子網的網絡掩碼(IP前綴長度)。

 Hello Interval:表示生成hello的ospf路由器會每隔多長時間發送一次Hello消息,單位爲秒。

 Dead Interval:若在此時間段內沒有收到hello報文,就會宣佈該路由器失效,此時間是hello的四倍。

 Designated Router:指定路由器和備份路由器,即DR與BDR。

在R2啓動OSPF,配置如下:

#
interface Ethernet0/0/0
 ip address 192.168.1.2 255.255.255.252
#

interface LoopBack0
 ip address 2.2.2.2 255.255.255.255
#
ospf 1 router-id 2.2.2.2
 area 0.0.0.0
  network 192.168.1.0 0.0.0.3
#

在R2端口抓包:

R2端口啓動ospf,發送組播hello報文,SIP爲192.168.1.2 DIP是224.0.0.5,TTL時間是1秒。



R1收到R2的hello報文後,並在鄰居字段看到自己的router id,進入two-way狀態。



R2收到R1 的hello報文,並看到自己的router id,狀態進入two-way。

需要在抓包:


R1向外宣告自己是DR,同時R2嚮往宣告自己是DR,選舉優先級大的、router-id大的。

R1向外宣告,R1側抓包如下:


R2向外宣告,R2側抓包如下:


通過以上選擇,R2爲DR,R1爲BDR。


通過DR和BDR選舉後,ospf 狀態進入exchange狀態。

以下是在R1側 抓包分析:

R2先收到R1的DB報文,


R1收到R2發送的DB報文


R2先收到R1的DB報文,然後進行LSA請求,同時收到R1的響應,LS update報文。


R1通過R2的DB報文,進行LSA請求。


R2收到R1發送的LSA update後,發送LSACK確認;同時,R1收到R2發送的LSA update後,也發送LSACk確認。



當R1和R2的LSA同步後,進入鄰居狀態。每hello時間發送hello報文,每臺設備依自己爲根根據LSDB運行SPF計算最小生成樹。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章