IERS-OSPF基本工作原理


IERS-OSPF基本工作原理

一、鄰居建立建立過程

1、Router ID

用於在自治系統中唯一標識一台運行OSPF的路由器,每台運行OSPF的路由器都有一個ROUTER ID

Route ID 是一個32位的無符號的整數,其格式和IP地址是一樣的,Route iD 的選舉規則如下:

1)、手動配置OSPF路由器的Router ID通常建議手配置

2)、如果沒有手動配置Router ID,則路由器使用LoopBack接口中最大的IP地址作為Router ID;

3)、如果沒有配置loopback 接口,則路由器使用物理接口中最大的ip地址作為route id

OSPF的路由器Router ID重新配置后,可以通過重置OSPF進程來更新router id;

2、發現並建立鄰居-hello報文

2.1、hello報文的作用

鄰居發現:自動發現鄰居路由器

鄰居建立:完成Hello報文中的參數協商,建立鄰居關系

鄰居保持:通過keepalive機制,檢測鄰居運行狀態

2.2、OSPF鄰居建立過程

鄰居建立過程如下:

 

 

1)、現在RTA和RTB的router id 分別為1.1.1.1 和2.2.2.2 ,當RTA啟動OSPF后,RTA會發送第一個hello報文,此報文中鄰居列表為空,此時狀態為down,RTB收到RTA的這個hello報文,狀態置為init.

2)、RTB發送發送hellor報文,此報文中鄰居列表為空,RTA收到RTB的hello報文,狀態置為init.

3)、RTB向RTA發送鄰居列表為1.1.1.1的hello報文,RTA在收到的hello報文鄰居列表中發現自己的router id ,狀態置為2-way。

4)、RTA向RTB發送鄰居列表為2.2.2.2的hello報文,RTB在收到的hello報文鄰居列表中發現自己的router id ,狀態置為2-way;

因為鄰居都是未知的,所以hello報文的目的IP地址不是某個特定的單播地址,ospf采用組播的形式發送hello報文(目的地址為224.0.0.5)。

5)、對於不支持組播的網絡,ospf路由如何發現鄰居呢?

ospf支持通過單播的方式建立鄰居關系,對於不支持網絡可以通過手動配置實現鄰居的發現與維護,

ospf路由器之間建立鄰居關系是為了同步鏈路狀態信息,接下來學習OSPF如何實現鏈路狀態數據庫同步。

二、鏈路狀態信息

1、OSPF鏈路狀態信息主要包括

鏈路的類型、接口ip地址及掩碼、鏈路上所連接的鄰居路由器、鏈路的帶寬(開銷)

OSPF有豐富的數據鏈路層能力,數據鏈路層協議類型多種多樣,工作機制也各不相同,為適配多種數據鏈路層協議必須考慮各類鏈路層協議在組網時的應用場景

2、OSPF是如何定義多種網絡的?

p2p網絡:僅兩台路由互連,支持廣播、組播,

廣播型網絡:兩台或兩台以上的路由器通過共享介質互連,支持廣播,組播,廣播型網絡的例子:通過以太網鏈路相連的路由器網絡。是OSPF最常見的網絡類型

NBMA網絡:兩台或兩台以下路由器通過VC互連,不支持廣播、組播,在NBMA網絡上OSPF模擬在廣播網絡上的操作,但是每個路由器的鄰居需要手動配置;NBMA型網絡的例子,通過全互連的幀中繼鏈路相連的路由器網絡

P2MP網絡:多個點到點網絡的集合,支持廣播、組播,沒有一種鏈路層協議默認屬於P2MP類型網絡,也就是說必須是由其他的網絡類型強制更改為P2MP,常見的做法是將非完全連接的幀中繼或ATM必為P2MP網絡。

3、OSPF鏈路狀態信息中的開銷值是如何度量的呢?

某接口COST=參考帶寬/實際帶寬,默認參考帶寬為100M,當計算有小數位時,只取整數位,結果小於1時,COST取1
標記: 優先級 1

更改COST的兩種方式:1、直接在接口下配置;2、修改參考帶寬(所有路由器都需要修改,確保選中一致性)

三、報文類型及作用

1、OSPF協議報文頭部

OSPF使用IP承載其報文,協議號為89

在OSPF packet部分,所有的OSPF報文均使用相同的OSPF報文頭部

version:對於當前所使用的OSPFV2,該字段的值為2.

type:OSPF報文類型

packet length:表示整個OSPF報文的長度,單位是字節。

router ID:表示生成此報文的路由器的router ID。

area ID:表示此報文需要被通告的到的區域。

checksum :校驗字段,其校驗的范圍是整個OSPF報文包括OSPF報文頭部

auth type:為0時表示不認證,為1時表示簡單的明文密碼認證;為2時表示加密MD5認證

authentication:認證所需的信息,該字段的內容隨autype的值不同而不同。

OSPF的報文頭部定義了OSPF路由器之間的通信標准與規則

2、OSPF報文類型

type=1為hello報文,用來建立和維護鄰居關系,鄰居關系建立之前,路由器之間需要進行參數協商

type=2為數據庫描述報文(DD),用來向鄰居路由器描述本地鏈路狀態數據庫。使得鄰居路由器識別出數據庫中的LSA是否完整。

type=3為鏈路狀態請求報文(LSR),路由器根據鄰居的DD報文,判斷本地數據庫是否完整,如不完整,路由器把這些LSA記錄進鏈路狀態請求列表中,然后發送一個LSR給鄰居路由器

type=4為鏈路狀態更新報文LSU,用於響應鄰居路由器發來的LSR,根據LSR中的請求列表,發送對應LSA給鄰居路由器,真正實現LSA的泛洪與同步

type=5為鏈路狀態確認報文(LSACK),用來對收到的LSA進行確認,保證同步過程的可靠性。

3、DD報文和LSACK中包含LSA頭部信息:包括 LS type ls id advertising router ls sequence ls checksum; LSU報文中包含完整的LSA信息, LSR 包含LS type ls id advertising router

四、LSDB同步過程

五種報文可以高效地完成LSA的同步 ,那么實際的報文交互過程是什么樣的呢?

同步狀態圖

 

 

各個狀態含義:

exstart:鄰居狀態變成此狀態后,路由器開始向鄰居發送DD報文。master和slave關系是在此狀態形成的,初始DD序列號也是在此狀態下確定的,在此狀態下發送的DD報文不包含鏈路狀態描述。

exchange:在此狀態下,路由器與鄰居之間相互發送包含鏈路狀態信息摘要的DD報文。

loading:在此狀態下,路由器與鄰居之間相互發送LSR報文,LSU報文,LSAck報文

full:lsdb同步過程完成。路由器與鄰居之間形成了完全的鄰接關系。

LSDB同步過程如下:

1、RTA和RTB的router ID 分別為1.1.1.1 和2.2.2.2並且二者已經建立 了鄰居關系,當RTA的鄰居狀態變為exstart后,RTA會發送第一個DD報文,此報文中,DD序列號被隨機設置為X,I-bit設置為1,表示這是第一個DD報文,M-bit設置為1,表示后續還有DD報文要發送,MS-bit設置為1,表示RYA宣告自己為master。

2、當RTB的鄰居狀態變為exstart后,rtb會發送第一個dd報文,此報文中,dd序列號被隨機的設置為Y(i-bit=1,m-bit=1,ms-bit=1,含義同上)。由於rtb的router ID較大,所在rtb將成為真正的master,收到此報文后,rta會產生一個negotiation-done事件,並將鄰居狀態從exstart變為exchange。

3、當RTA的鄰居狀態變為exchange后rta會發送一個新的dd報文,此報文中包含了LSDB的摘要信息,序列號設置為RTB在步驟2中使用的序列號Y, I-bit=0,表示這不是第一個DD報文,M-bit=0,表示這是最后一個包含LSDB摘要信息的DD報文,MS-bit=0,表示RTA宣告自己為SLAVE,收到此報文后,RTB會產生一個negotiation-done事件,並將鄰居狀態從exstart變為exchange。

4、當RTB的鄰居狀態變為exchange后RTB會發送一個新的DD報文,此報文包含了LSDB的摘要信息,DD序列號設置為Y+1,MS-bit=1,表示RTB宣告自己為master

5、雖然RTA不需要發送新的包含LSDB摘要信息的DD報文,但是作為slave,RTA需要對master發送的第一個DD報文進行確認,所以RTA向RTB發送一個新的DD報文,序列號為Y+1,該報文內容為空,發送完此報文后,RTA產生一個exchange-Done事件,將鄰居狀態變為loading。RTB收到此報文后,會將鄰居狀態變為full。(假設RTB的LSDB是最新最全的,不需要向RTB請求更新)

五、LSA頭部

LSA是OSPF鏈路狀態信息的載體

LS type,link state id 、advertising router的組合共同標識一條LSA


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM