15-OSPF工作原理


一、開放式最短路徑優先OSPF

OSPF(Open Shortest Pah First)協議是IEEE定義的一種基於鏈路狀態的內部網關路由協議.應用在自治系統內部,一種鏈路狀態路由協議,使用最短路徑優先算法計算路由

OSPF數據報文封裝在IP報文內部,協議號為89,使用單播或組播發送(在廣播型網絡中,所有路由器都以224.0.0.5的地址發送hello包,用來維持鄰居關系,非DR/BDR路由都以224.0.0.6的地址發送lsa更新,而只有DR/BDR路由監聽這個地址,反過來,DR路由使用224.0.0.5來發送更新到非DR路由

OSPF特點:適合范圍廣,快速收斂,無自環、區域划分、支持驗證(支持兩種認證:區域認證和接口認證)、組播發送  

Rip是一種基於距離矢量算法的路由協議,存在着收斂慢,容易產生路由環路,可擴展性差等問題

二、OSPF原理

1、OSPF原理

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

2、OSPF五種報文類型(報文封裝在IP報文中,協議號為89)

  Hello報文: //鄰居發現:Hello報文用來發現和維持OSPF鄰居關系  ,周期發送10s ,失效時間40s

  DD(Database Description)報文 //描述本地LSDB(Link State DatabASe)的摘要信息,用於兩台設備進行數據庫同步

  LSR(LSA Request)報文 //用於向對方請求所需的LSA。設備只有在OSPF鄰居雙方成功交換DD報文后才會向對方發出LSR報文

  LSU(LSA Update)報文 //用於向對方發送其所需要的LSA

  LSACK (Link State Acknowledgment)報文 //用來對收到的LSA進行確認

3、Hello包 Message Type

  • Hello報文type1
  • 數據庫描述數據包type2
  • 鏈路狀態請求報文type3
  • 鏈路狀態更新報文type4
  • 鏈路狀態確認報文type5

4、OSPF建立鄰居過程分析

 ①建立鄰居關系:down ——>init ——>two-way ----->

 在狀態init,路由器會互相發送hello包,hello包重要字段如下:

  • 始發路由器的router-id
  • 始發路由器接口的area-id
  • 始發路由器接口的地址掩碼
  • 始發路由器接口的authentication type和authentication message
  • 始發路由器接口的hello-interval
  • 始發路由器接口的router dead-interval
  • 路由器優先級
  • 指定DR和BDR
  • 標識可選性能的5個標志位
  • 始發路由器的所有有效neighbor router-id(始發路由器接收到了它們的hello報文)

 

開啟ospf進程,默認會選擇接口IP地址當Router ID 需要手動修改 [R1]ospf router-id 1.1.1.1 修改之后需要重新系統ospf進程<R1>reset ospf process 

初始發送Hello包Options E置1 表示支持外部路由功能,允許外部路由進入

以兩台路由器之間建立鄰居關系為例

1、R1發送hello報文(組播或者單播,鏈路層類型來定),neighbor字段為空 組播地址:224.0.0.5

2、R2收到hello報文,為R1建立一個鄰居數據結構,並把R1的鄰居狀態置為init,然后向R1發送hello報文,neighbor字段中包含R1的rougerID,表示自己收到了R1的hello報文。

3、R1收到R2的hello報文之后,為R2建立一個鄰居數據結構,並把鄰居狀態置為2way,然后向R2發送hello報文,報文的neighbor字段中包含R2的routerID。

4、R2收到R1的hello報文后,把R1的鄰居狀態置為2way

  至此,鄰居關系就建立起來了,鄰居路由器之間會按時發送hello報文進行保活,如果hello報文超時,那么該路由器就會宣告這里鄰居失效。

  所有路由器之間都達到2way狀態后,它們會根據網絡類型判斷是否需要選舉DR和BDR,如果需要的話就開始選舉DR和BDR

  DR/BDR選舉作用:作用:DR可以減少廣播型網絡中的鄰接關系的數量,減少鄰接數目,減小鏈路消耗 

  MA網絡(多路訪問網絡):

  (1)BMA(支持廣播的多路訪問網絡)----LAN
  (2)NBMA(不支持廣播的多路訪問網絡)----幀中繼

  1)、DR(designated router)即指定路由,其負責在MA網絡建立和維護鄰接關系並負責LSA的同步。

 

  2)、DR與其他所有的路由器形成鄰接關系並交換鏈路狀態信息,其他路由器之間不直接交換鏈路狀態信息,這樣就大大減少了MA網絡中的鄰接關系數據 及交換鏈路狀態信息消耗的資源。

 

  3)、DR一旦出現故障,其與其他路由器之間的鄰接關系將全部失效,鏈路狀態數據庫也無法同步,此時就需要重新選舉DR、再與非DR路由器建立鄰接關系,完成LSA的同步,為了規避單點故障風險,通過選舉備份指定路由器BDR,在DR失效時快速接管DR的工作

 

           選舉規則

           1)比較優先級,越大越優(默認為1,最大255,0表示不參加選舉)

           2)比較Router-ID,越大越優

 ②建立各自拓撲表:exstart ——>exchange ----->

  在狀態exstart通過發送hello包進行主從關系選舉(master/slave)

  •  為了確定誰在exchange狀態先發送DBD包
  •  主從關系選舉是通過比較兩台路由器的Router ID大小,
  •  Router ID大的為master路由器,由master路由器先交互DBD包 ,同時Slave 以Masters序列號為起始位發送DBD包,3個標記都為0

  主從關系選舉后,進入狀態exchange ,在此狀態通過交互DBD包,建立各自的拓撲

  在DBD包中有3個標記位用來管理鄰接關系的建立過程:

  • I位    或稱為初始位(initial bit) 用於ex-start協商主從關系的初始化協商的DBD包,該位置1

  • M位    或稱為后繼位(More bit) 如果這不是OSPFrouter發送的最后一個DBD,該位置1 說明后續還有DD報文待發送

  • MS位   或稱為主/從位(Master/slave bit) 如果始發路由器是Master,則該位置1

 

 缺省情況第一個DD報文3個標記位全部置1

    ③建立鄰接關系: loading ——>full

   建立各自的拓撲表后,進入狀態loading,請求對方路由信息,

  • 如圖左邊路由器,發送LSR包請求172.16.6.0/24的路由信息
  • 右邊路由器收到LSR包后,會回復LSU包,來告知172.16.6.0/24的路由信息
  • 左邊路由器收到LSU包后,會回復LSACK包,用於對LSU包進行可靠確認
  • 交互完路由信息,達到full狀態,路由器之間建立鄰接關系  達到LSDB的同步

Router ID

數據庫同步

路由器使用DD報文來進行主從路由器的選舉和數據庫摘要信息的交互

DD報文包含LSA的頭部信息,用來描述LSDB的摘要信息

建立完全鄰接關系

 

LSR用於向對方請求所需的LSA

LSU用於向對方發送其所需要的LSA

LSACK用於向對方發送收到LSA的確認

5、OSPF配置

6、OSPF支持的網絡類型

缺省情況下,OSPF認為以太網的網絡類型是廣播類型

PPP、HDLC的網絡類型是點到點類型

 

 缺省情況下,OSPF認為幀中繼,ATM的網絡類型是NBMA

7、OPSF區域

  • 每個區域都維護一個獨立的LSDB
  • Area 0 是骨干區域,其他區域都必須與此區域相連

ABR:區域邊界路由器

ASBR:AS區域邊界路由器

8、OSPF開銷

 

 OSPF的開銷計算公式為帶寬參考值/帶寬

可以通過bandwidth-reference命令來設置帶寬參考值

OSPF基於接口帶寬計算開銷,計算公式為:接口開銷=帶寬參考值-帶寬,帶寬參考值可配置,缺省為100Mbit/s


免責聲明!

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



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