什么是OSPF
OSPF(OPen Shortest Path First)開放最短路徑優(yōu)先,由IETF開發(fā)的基于鏈路狀態(tài)的自治系統(tǒng)內(nèi)部路由協(xié)議(IGP)采用Dijkstra的最短路徑優(yōu)先算法來計算和選擇路由。
該協(xié)議關注網(wǎng)絡中鏈路或者接口的狀態(tài)、帶寬、利用率、延時等。使用SPF算法計算和選擇路由,OSPF 將協(xié)議包直接封裝在 IP 包中,協(xié)議號 89。并且OSPF以組播形式發(fā)送協(xié)議報文,減少鏈路帶寬資源浪費。
OSPF的工作流程概述
工作流程主要有四個階段:
尋找鄰居
、建立鄰接關系
、鏈路狀態(tài)信息傳遞
、計算路由
尋找鄰居
在網(wǎng)絡中尋找可能與自己交換鏈路狀態(tài)信息的周邊路由器,可以交換鏈路狀態(tài)信息的路由器互為鄰居(Neighbor)
建立鄰接關系
鄰接關系(Adjacency)可以抽象的想象成一條虛擬的鏈路,用于鄰居路由器之間傳遞鏈路狀態(tài)信息,且只有建立了鄰接關系才能傳遞
鏈路狀態(tài)信息傳遞
OSPF路由器將建立描述網(wǎng)絡鏈路狀態(tài)的LSA(Link State Advertisement - 鏈路狀態(tài)公告),建立鄰接關系的OSPF路由器之間將交互LSA,最終形成包含整個網(wǎng)絡完整鏈路狀態(tài)信息的LSDB(Link State DataBase)鏈路狀態(tài)數(shù)據(jù)庫
計算路由
獲取完整的LSDB過后,OSPF區(qū)域內(nèi)的每個路由器將會對著區(qū)域的網(wǎng)絡結(jié)構(gòu)有相同的認識,如何根據(jù)LSDB的信息,運用SPF算法計算出路由,且避環(huán)路的產(chǎn)生。
如何建立鄰居關系
OSPF進程啟動后,以224.0.0.5進行組播發(fā)送Hello包,用以尋找鄰居, Hello包里面包含了:
始發(fā)路由器的Router-id
始發(fā)路由器接口的區(qū)域ID(Area ID)
始發(fā)路由器接口的子網(wǎng)掩碼
選定的DR路由器
路由器的優(yōu)先級
等信息
其中建立鄰居關系的前提是:雙方接口UP``雙方接口IP地址在同一網(wǎng)段``雙方接口在同一區(qū)域
一臺路由器可以有很多鄰居,也可以同時成為幾臺或者其他的路由器鄰居,所有的信息都會存在鄰居表內(nèi)。 通過互收Hello包,將狀態(tài)轉(zhuǎn)換為Init狀態(tài)
,之后兩邊Hello包內(nèi)協(xié)商某些參數(shù)后,才能確定為鄰居,狀態(tài)修改為2-Way
當雙方鏈路狀態(tài)信息交互成功后,鄰居狀態(tài)修改為Full
,就表明鄰居之間鏈路狀態(tài)信息已經(jīng)同步
Init:
初始化[收到了對方的Hello報文,但Hello報文中的鄰居字段沒有本機的Router-ID]
2-Way:
鄰居關系[雙方互相發(fā)現(xiàn),收到了對方的Hello報文,并且報文中包含了乙方路由的Router-ID,并且確認了DR/BDR的角色關系]
BR與BDR選舉
在未選舉BR與BDR的狀態(tài)下,鏈路中的鄰接關系將變得非常巨大,消耗巨大的網(wǎng)絡資源,可以由上圖公式可算得網(wǎng)絡內(nèi)鄰接關系的數(shù)量,為了解決這個問題,在OSPF引入了DR與BDR的概念。
本意是在網(wǎng)絡中選舉一臺DR(Designated Router)指定路由器
負責描述用LSA描述該網(wǎng)絡類型以及網(wǎng)絡內(nèi)其他路由器,同時,他們也負責鏈路狀態(tài)信息交互過程。 同樣在選舉DR的同時也在選舉BDR(Backup Designated Riyter)指定備份路由器
簡單的說就是DR的備份,DR掛了就由他頂上,提升了可靠性
選舉規(guī)則
首先優(yōu)先級數(shù)字大的優(yōu)先選擇,默認優(yōu)先級都是1
再接著是Router-id大的優(yōu)先
Router-id
用來表述路由器的身份,產(chǎn)生的方法,有兩種手動配置一個可存在/不可存在的IPv4的地址格式作為Router-ID,自動選舉在所有環(huán)回口中選舉IP地址最大的作為Route-ID,在所有物理接口中選舉IP地址最大的作為Router-ID,建議是用手動方式配置一個環(huán)回口的IP地址作為Router-ID
鏈路狀態(tài)信息傳遞
通過在路由器之間發(fā)送LSA(Link State Advertisement)鏈路狀態(tài)公告
來交換鏈路狀態(tài)信息,通過獲取對方LSA,來同步乙方OSPF區(qū)域內(nèi)的鏈路狀態(tài)信息。
為避免網(wǎng)絡資源浪費,OSPF 路由器采取路由增量更新的機制發(fā)布 LSA,即只發(fā)布鄰居缺失的鏈路狀態(tài)給鄰居
路由計算
路由計算
- 首先評估一臺路由器到另一臺路由器所需的開銷(Cost)
- 同步區(qū)域內(nèi)的所有路由器的LSDB
- 使用SPF算法計算出路由
數(shù)據(jù)庫同步的工作流程
- 向鄰接路由器發(fā)送DD報文,通告本地LSDB中所有LSA的摘要信息
- 收到DD后,與本地LSDB對比,向?qū)Ψ桨l(fā)送LSR報文,請求發(fā)送本機所需的LSA的完整信息
- 收到LSR后,把對方所需的LSA的完整信息打包為一條LSU報文,發(fā)送至對方
- 收到LSU后,向?qū)Ψ交貜蚅SAck報文,進行確認
OSPF三張表
路由表
記錄了由SPF算法計算過后的路由
鄰居表
記錄鄰居關系和狀態(tài)
拓撲表
鏈路狀態(tài)數(shù)據(jù)庫
OSPF報文類型
-
Hello報文 :
用于發(fā)現(xiàn)和建立鄰居關系,維護鄰居狀態(tài)
-
DD報文 :
用于描述本地LSDB中所有的LSA摘要
-
LSR報文 :
用于鏈路狀態(tài)請求,自身所要更新的鏈路狀態(tài)詳細信息
-
LSU報文 :
用于鏈路狀態(tài)更新
-
LSACK報文 :
用于鏈路狀態(tài)確認報文
OSPF多區(qū)域概念
分區(qū)域管理是為了環(huán)節(jié)單區(qū)域管理中,節(jié)點壓力過大的問題,將一個大區(qū)域劃分為多個小區(qū)域(Area)來管理,劃分之后的系統(tǒng)內(nèi)通信將劃為三種:區(qū)域內(nèi)通信
、區(qū)域間通信
、區(qū)域外部通信
區(qū)域內(nèi)通信
—在同一個區(qū)域內(nèi)的路由器之間的通信 路由角色可以叫IR
,區(qū)域內(nèi)部路由器 用于內(nèi)部通信,所有接口都在同一個區(qū)域內(nèi)
區(qū)域間通信
不同區(qū)域的路由器之間的通信 路由器角色可以叫ABR
,區(qū)域間路由器 用于區(qū)域之間通信
區(qū)域內(nèi)部通信
OSPF 域內(nèi)路由器與另一個自治系統(tǒng)內(nèi)的路由器之間的通信 路由器角色可以叫ASBR
,自治系統(tǒng)邊界路由器 用于連接外部自治系統(tǒng)的路由器
OSPF區(qū)域類型
-
骨干區(qū)域 :
每個OSPF網(wǎng)絡中只能有一個骨干區(qū)域,一般都是
Area 0
,骨干區(qū)域主要用于連接其他非骨干區(qū)域,且每個非骨干區(qū)域必須要與骨干區(qū)域相連接 -
非骨干區(qū)域 :
-
所有的非骨干區(qū)域必須和骨干區(qū)域相連接
OSPF的開銷計算
參考帶寬:
- 計算開銷的基準帶寬值
- 默認參考帶寬為100M
- 建議把網(wǎng)絡中最高的鏈路帶寬設置為參考帶寬。
- 參考帶寬僅本地有效
計算方法:
- 鏈路帶寬大于等于參考帶寬 Cost = 1
- 鏈路帶寬小于參考帶寬Cost = 參考帶寬/鏈路帶寬MB
OSPF的優(yōu)點
- OSPF 區(qū)域內(nèi)的路由器對整個網(wǎng)絡的拓撲結(jié)構(gòu)有相同的認識,在此基礎上計算的路由不可能產(chǎn)生環(huán)路
- 當網(wǎng)絡結(jié)構(gòu)變更時,所有路由器能迅速獲得變更后的網(wǎng)絡拓撲結(jié)構(gòu),網(wǎng)絡收斂速度快
- 由于引入了Router ID的概念,OSPF區(qū)域內(nèi)的每臺路由器的行為都能很好地被跟蹤
- 使用 SPF 算法計算路由,路由選擇與網(wǎng)絡能力直接掛鉤,選路更合理
- OSPF 采用多種手段保證信息傳遞的可靠性、準確性,確保每臺路由器網(wǎng)絡信息同步,同時,避免了不必要的網(wǎng)絡資源浪費
OSPF基礎配置
[系統(tǒng)]ospf [ID] router-id [Router-ID] #設置Router-id
router-id [Router-ID] #在系統(tǒng)視圖下設置Router-ID 會被應用到所有的協(xié)議[全局],其中在協(xié)議內(nèi)配置的Router-ID高
[進程]area [ID] #進入?yún)^(qū)域ID,區(qū)域的編號格式也是IPv4地址格式
[區(qū)域]network [network] [反網(wǎng)掩碼]#宣告網(wǎng)絡,反網(wǎng)掩碼也叫掩碼通配符
[進程]silent-interface [interface] #靜默接口
ospf network-type [broadcast | nbma | p2mp unicast | p2p | peer-address-check ] #手動修改網(wǎng)絡類型
[進程]ospf-router-advertise [always | permit-calculate-other | cost [Cost] | route-policy [name] | type [Type] | summary cost [cost]] #配置OSPF引入缺省路由,always,如果本機沒有配置默認路由,使用此參數(shù)可以參數(shù)一個描述默認路由的一個LSA發(fā)布出去,Cost為改默認路由的度量值,type為LSA的類型。
[接口]ospf timer hello [seconds] #修改Hello Time 計時器時間
[接口]ospf time dead [seconds] #修改鄰居失效時間
[接口]ospf dr-priority [priority] #修改啟用OSPF的接口的路由器優(yōu)先級
[接口]ospf cost [cost] #修改開銷值
bandwitdth-reference [value] #修改OSPF的參考帶寬
display ospf interface #顯示ospf接口信息
display ospf peer #顯示鄰居關系FULL為鄰接關系,2-Way為鄰居關系
display ospf lsdb #查看LSDB數(shù)據(jù)庫
display ospf routing #查看OSPF路由
display ospf lsdb #插件本地LSDB匯總情況
display ospf verbose #查看OSPF進程詳細信息
display ospf statistics #顯示OSPF統(tǒng)計信息
display ospf interface #查看OSPF接口信息
display ospf routing #查看OSPF路由信息
dispaly ospf statistics error #顯示ospf錯誤信息[排錯常用]
-
交換機
+關注
關注
21文章
2640瀏覽量
99646 -
路由器
+關注
關注
22文章
3732瀏覽量
113788 -
OSPF
+關注
關注
0文章
80瀏覽量
14887
發(fā)布評論請先 登錄
相關推薦
評論