假裝網絡工程師2——初識OSPF

一、背景介紹

OSPF作爲IGP中最常用的2種協議之一(另一種ISIS後續介紹),有很多可以深挖的地方,所以作爲重點會詳細介紹,閒言少敘,言歸正傳。

二、什麼是OSPF

ospf全稱open shortest path first,是一種鏈路狀態協議,即每一個接口向它同area的直連接口發送報文,最終以自己爲根計算出一個無環的樹,而這個樹就是去往area各個角落的路由,計算出的路由保存在本地的lsadb中,同area內每一臺路由器上的lsdb都相同。

三、OSPF的工作位置

根據TCP/IP協議的四層模型來劃分,OSPF工作在第四層的傳輸層,協議號爲89,而ttl值爲1說明hello報文只和直連接口通過224.0.0.5的多播地址進行通信。
假裝網絡工程師2——初識OSPF
報文直接通過ospf封裝後交給ip層,通過前面也瞭解到,ip層本身不具備可靠性鏈接的功能,而他又不是通過TCP這種可靠性鏈接進行傳送,這就要求在通訊的機制中要保證可靠性。
假裝網絡工程師2——初識OSPF

四、OSPF建立連接的過程

上面說了ospf是將報文封裝後直接交給網絡層,而網絡層本身不具備可靠性傳輸的機制,爲了保證傳輸的可靠性,就需要ospf機制本身具備校驗。
ospf建立連接分爲5步,對應的報頭編號爲別爲1~5爲了便於記憶通過相親的例子來進行說明,步驟如下:
1. A路由器加入ospf進程的端口向它直連B路由器的端口發起hello報文,此時好比相親的雙方初相識打個招呼一樣。
假裝網絡工程師2——初識OSPF
2. 既然是相親,主動發起的人就要主動一些,所以此時路由器A會向路由器B發出dbd(database describe)報文,其中包含了路由器A的lsa摘要信息,就好比相親者會介紹自己的基本信息一樣。需要注意的是:這一步如果是在多點接入和以太網環境下就確立了DR和BDR角色。
3. 此時B路由器會向A路由器發出lsr報文,索要更多的信息,就像女方覺得男嘉賓還不錯,想多瞭解一些情況一樣。
4. A路由器再次發出lsu報文,包含A路由器信息的lsa報文也在lsu報文中,該報文的報頭編號爲4。
假裝網絡工程師2——初識OSPF
5. 路由器B接收到路由器A的報文後會給A發送一條lsack信息,表示報文已接受到,正是這一步保證了ospf傳輸的可靠性。
假裝網絡工程師2——初識OSPF
至此,ospf的鄰接關係就以建立完成,所有接口最後會進入全毗鄰狀態(full),上圖中las的type類型會在後續進行說明,此處還需要說明的幾處是:
1. ospf是一種端口敏感性協議,準確地講ospf進程使起在接口而不是路由器本身上。
2. 所謂全毗鄰(full)狀態,他不是形容2個路由器之間的狀態,而是站在一臺路由器本身看對端與我的狀態。
3. 鄰居與鄰接是兩種不同的狀態。舉例來說,鄰居就像你家對門的路人甲,雖然跟你是對門,但你們彼此不相識,ospf中的2-way就是一種鄰居狀態;而鄰接是指對方不僅住在你在對門,而且你們彼此相識,full就是鄰接狀態。

五、OSPF的選舉

前文說過,ospf工作在多路訪問(MA)環境下會有dr、bdr的角色產生,角色選取的優先順序如下:
1. 物理接口優先級
所有物理接口的默認優先級爲1,數值越大優先級越高,優先級範圍爲0~255,0表示不參與選舉。
2. route id,dr和bdr選取的依據,首先看route id,這是一個點分十進制的數值,可以手動指定,值越大,優先級越高,每一個ospf進程可以有不同的route id,指定時推薦的做法是在相應的ospf進程下指定doute id。
需要說明的是:ospf爲了保證其穩定性,工作在非搶佔模式,即當選舉出dr後,後期就算有route id值更大的路由器加入,dr角色也不會轉移,除非擁有dr角色的路由器下線或者對應ospf進程重啓,纔會重新選舉。多路訪問(MA)包括支持廣播多路訪問的以太網(BMA)和不支持廣播多路訪問的幀中繼(NBMA)。

六、實驗

實驗拓撲如下圖所示,最終要求1.1.1./24能夠ping通2.2.2.2/24地址:
假裝網絡工程師2——初識OSPF
R1路由器上配置:

[R1]int g0/0/0  
[R1-GigabitEthernet0/0/0]ip add 12.0.0.1 24  
[R1-GigabitEthernet0/0/0]int lo0  
[R1-LoopBack0]ip add 1.1.1.1 24  
[R1-LoopBack0]q  
[R1]ospf 1 router-id 1.1.1.1  
[R1-ospf-1]area 0   
[R1-ospf-1-area-0.0.0.0]network 12.0.0.1 0.0.0.0  
[R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0   

R2路由器上配置:

[R2-GigabitEthernet0/0/0]ip add 12.0.0.2 24  
[R2-GigabitEthernet0/0/0]int lo0  
[R2-LoopBack0]ip add 2.2.2.2 24  
[R2-LoopBack0]q  
[R2]ospf 1 router-id 2.2.2.2  
[R2-ospf-1-area-0.0.0.0]network 12.0.0.2 0.0.0.0  
[R2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0  

配置完成後發現儘管R2的router id爲2.2.2.2但是dr的角色應然實在12.0.0.1接口上,應證了ospf工作在非搶佔模式下。
假裝網絡工程師2——初識OSPF
在用戶視圖下重置R1上的ospf進程,再次檢查,12.0.0.2接口則變爲dr角色。

<R1>reset ospf 1 process  
[R1]dis ospf brief   

假裝網絡工程師2——初識OSPF
更多ospf的信息,可以從ospf的三張表中獲取:

[R1]display ospf peer   //鄰居表  
[R1]display ospf routing   //路由表  
[R1]display ospf lsdb  //lsdb表  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章