OSPF路由協議


一、什么是OSPF

  • OSPF(Open Shortest Path First,開放最短路徑優先)是IETF 開發的基於鏈路狀態的自治系統內部路由協議
  • OSPF僅傳播對端設備不具備的路由信息,網絡收斂迅速,並有效避免了網絡資源浪費
  • OSPF直接工作於IP層之上,IP協議號為89
  • OSPF以組播地址發送協議包

二、與RIP的區別

RIP:運行距離矢量路由協議,周期性的泛洪自己的路由表,通過路由的交互,每台路由器都從相鄰(直連)的路由器學習到路由,並且加載進自己的路由表中,而對於這個網絡中的所有路由器而言,他們並不清楚網絡的拓撲,他們只是簡單的知道要去往某個目的應該從哪里走,距離有多遠。

OSPF:運行鏈路狀態路由協議,路由器之間交互的是LSA(Link State Advertisement鏈路狀態通告:用來描述網絡鏈路狀況如鄰居、開銷等),而非路由信息。路由器將網絡中泛洪的LSA 搜集到自己的LSDB(Link State DataBase鏈路狀態數據庫)中,這有助於OSPF 理解整張網絡拓撲,並在此基礎上通過SPF 最短路徑算法計算出以自己為根的、到達網絡各個角落的、無環的樹,最終,路由器將計算出來的路由裝載進路由表中。

泛洪(Flooding)是交換機和網橋使用的一種數據流傳遞技術,將從某個接口收到的數據流向除該接口之外的所有接口發送出去。

三、OSPF特性

  • OSPF 鏈路狀態協議(開放式最短路徑優先),無類路由協議,支持VLSM(可變長子網掩碼),CIDR(無類別域間路由),支持安全認證
  • 采用SPF 算法(Dijkstra迪傑斯特拉算法)計算最佳路徑,快速響應網絡變化網絡變化時觸發更新
  • 以較低頻率(每隔30 分鍾)發送定期更新,被稱為鏈路狀態刷新
  • 與距離矢量相比,鏈路狀態協議掌握更多的網絡信息

四、OSPF三張表

1.鄰居表(Neighbor table):列出了所有和本路由器直接相連的OSPF鄰居,經歷了一系列的消息交互、關系狀態最終建立。

2. 拓撲表(Topology table):含有鏈路狀態數據庫(LSDB),列舉了所有自己產生及鄰居那得到的LSA(Flooding/泛洪),在同一個OSPF區域中的路由器,都有完全一致的OSPF Database,即OSPF數據庫。一個OSPF區域,就對應着一個OSPF Database。

3. 路由表(Routing table):在OSPF的數據庫中,通過SPF算法,計算得到了最優路由,也稱為Forwarding Database。

五、OSPF Packets (OSPF 五種報文)

因為是基於IP 開發的,所以協議號為89,同時也是意味着其也是不可靠的。

根據OSPF數據包type 字段數值的不同,OSPF 數據包類型分為5 種,不同的type,其后面的內容也不同。

路由表的形成與這5 種數據包的交互息息相關。

  • type=1:Hello 數據包
  • type=2:數據庫描述包--DD 或者DBD(只出現在Exstart/Exchange 階段)
  • type=3:鏈路狀態請求包---LSR (只出現在Loading 階段)
  • type=4:鏈路狀態更新包---LSU
  • type=5:鏈路狀態確認包---LSAck

 

 

 六、OSPF 七種狀態

1.Down(停止):各路由器未與任何鄰居交換信息,開始從運行OSPF 的接口以組播地址224.0.0.5發送Hello 包。

2. Init(初始):各路由器收到第一個Hello 數據包后,把該路由器添加到自己的鄰居Neighbor 列表中。

3. Two-Way (雙向狀態屬於鄰居關系):收到的Hello 包中有自己的Router ID,將該路由器加入自己鄰居列表中,進入2-Way 狀態。在這個過程中同時選舉出DR 和BDR。若不形成鄰接關系則一直停留在該狀態。

4. Exstart(准啟動):DROther與DR/BDR 發送DBD 包確定Master/Slave 關系,RID 大的的成為Master(不一定是DR)。

5. Exchange(交換):Master 與Slave 之間相互單播發送一個或多個DBD 數據庫描述數據包(Slave沿用Master 的序列號先發送),進行DBD 的同步。DBD 有序號,由Master 決定DBD的序號。相互收到DBD 后,通過序列號進行隱式確認已收到DBD。Exchange 狀態結束的最后一個DBD 包是Slave 發送的。

6. Loading (加載):將收到的信息同LSDB 中的信息進行比較。如果DBD 中有更新的鏈路狀態條目,則向對方發送一個LSR,用於請求新的LSA,對方回復相應的LSU,當所有LSR都得到LSU 答復后向對方回應LSAck進行顯示確認。

7. Full (完全狀態,屬於鄰接關系):相鄰的路由器在Loading 完成同步后進入Full 狀態,開始正常轉發數據。此時區域內的每個鏈路應該都有相同的數據鏈路狀態數據庫。后續只有Hello包、LSU 包、LSAck包。

 七、OSPF協議工作過程概述

 

OSPF協議工作過程主要有四個階段:

尋找鄰居----建立鄰接關系----鏈路狀態信息傳遞----計算路由

 


1)尋找鄰居(OSPF協議工作過程第1步)

 


2)建立鄰接關系-基於廣播型網絡(OSPF協議工作過程第2步)


3)傳遞信息(OSPF協議工作過程第3步)

 

  • 以上是RTB獲得RTA LSA的過程,RTA也通過相同的過程獲得RTB的LSA
  • 在RTB與RTA的LSA信息同步后,RTA在RTB鄰居表內的狀態變遷為Full狀態

 

 

 

 

 

  • OSPF協議包具備超時重傳機制
  • OSPF協議包具備序列號,對重復包不做處理
  • LSA更新攜帶掩碼,支持VLSM(變長子網掩碼)

4)路由計算(OSPF協議工作過程第4步)

 

路由計算步驟:

  1. 評估一台路由器到另一台路由器所需要的開銷(cost),cost值與接口帶寬密切相關。
    開銷=100/帶寬(Mps),取整,默認最小是1
  2. 同步到ospf區域的每台路由器的LSDB
  3. 使用SPF計算出路由

 

八、LSA的洪泛

建立鄰接關系后,當網絡中出現了網絡變化,其他路由器只發送更新報文LSU給指定路由器和備用路由器,再由指定路由器發給洪泛全網。

九、Router-ID

  • Router-ID 用於在OSPF 區域中唯一地表示一台OSPF 路由器,全OSPF 域內禁止出現兩台路由器擁有相同的Router-ID。
  • Router-ID 的設定可以通過手工配置,也可通過協議自動選取。實際網絡部署中考慮到協議的穩定,建議手工配置。一般以loopback0作為routerID
  • 在路由器運行了OSPF 並由系統自動選定Router-ID 之后,如果該Router-ID 對應的接口down 掉,或出現一個更大的IP,OSPF 仍然保持原Router-ID(即Router-ID 值是非搶占的,穩定第一),即使此時reset ospf process 重啟OSPF 進程,Router-ID 也不會發生改變;除非重新手工配置Router-ID(命令router-id xxx),並且重啟OSPF 進程方可。
  • 如果該Router-ID 對應的接口IP 地址消失,例如undo ip address,則reset ospf process (重啟OSPF進程)后,RouterID 也會發生改變。

十、DR和BDR選舉

 

指定路由器(DR) 、備用指定路由器(BDR)

 

  • Hello包攜帶路由器優先級,優先級為0的路由器不具備選舉資格
  • 優先級相同(默認1),則比較Router ID的優先
  • 先選舉BDR,再選舉DR
  • DR和BDR一旦選定,即使OSPF區域內新增優先級更高的路由器,DR和BDR也不重新選舉,只有當DR和BDR都失效后,才參與選舉

十一、DR 選舉規則

DR 和BDR 是由同一網段中所有的路由器根據路由器優先級、Router ID 通過Hello 報文選舉出來的,只有優先級大於0 的路由器才具有選取資格,優先級為0 不參與選舉。

進行DR/BDR 選舉時每台路由器將自己選出的DR 寫入Hello 報文中,發給網段上的每台運行OSPF 協議的路由器。當處於同一網段的多台路由器同時宣布自己是DR 時,接口優先級最高者勝出;如果優先級相等(默認為1),Router-ID 最高者勝出。

DR 具有非搶占性,也就是說如果該MA 網絡(多路訪問網絡,MA的網絡一般分為兩種:廣播式多路訪問網絡和非廣播式多路訪問網絡。)中,已經選舉完成、並且選舉出了一個DR,那么后續即使有新的、更高優先級的設備加入,也不會影響DR 的選舉,除非DR 掛掉。

十二、OSPF報文類型

 


免責聲明!

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



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