一、ospf簡介
OSPF是基于鏈路狀態的內部網關協議,與距離矢量協議不同,鏈路狀態協議通告的是鏈路狀態而不是路由表。OSPF是用于自治系統(AS)內部的路由決策,特點有,收斂速度快,安全性好,避免環路。
目前ipv4主要用OSPFV2版本,而ipv6則是OSPFv3版本。
二、OSPF工作流程
1、建立鄰居
- 路由器通過周期性的發送hello報文,來發現并維護鄰居關系。
- 如果兩臺路由器的參數相匹配,比如區域id,版本,認證方式等,就會建立鄰居關系。
- 鄰居關系建立后就會進行條件匹配(在BMA或NBMA網絡中通過優先級比較和RID對比來選舉DR和BDR),如果條件匹配成功則進入后續狀態,匹配失敗則停留在鄰居階段,僅僅依靠hello報文保活
2、鏈路狀態信息同步
- DR/BDR選舉,在以太網中,為了減少鏈路狀態信息的交換次數,設置了選舉指定路由器和備份指定路由器。選舉依據優先級和router id ,高優先級的路由器當選。優先級一樣,則router id 大的當選。
- 鏈路狀態通告,當鄰居關系建立成功后,路由器會向鄰居發送LSA,其中包含了路由器的鏈路狀態信息,如接口的ip,子網掩碼,鄰居等,LSA會在ospf區域類傳播,確保所有的路由器都能獲取到相同的鏈路狀態信息,
- 數據庫同步,收到LSA的路由器會和自己的LSDB中的進行對比,若收到的LSA是新的或者是更優的,就將其添加到LSDB中,并傳播該LSA給鄰居。
3、路由計算
- 利用最短路徑優先算法,計算到達各個目的網絡的最短路徑,路由器將路徑信息轉換成路由條目,添加到路由表中。路由表中包含網絡地址,下一跳地址,出接口信息,路由器將依據路由表轉發數據包。
4、路由更新
基于組播進行更新(224.0.0.5 /224.0.0.6)
支持觸發更新,每30分鐘進行一次周期更新
三、OSPF區域
為了適應大型網絡,OSPF在AS內劃分了多個區域,每個路由器只用維護自己所在區域的鏈路狀態信息
區域劃分的優點為:
盡量減少路由條目,使得拓撲的變化只影響本區域內部
區域劃分的規則:
- 星型結構
- 骨干區域為0區;大于0的為非骨干區域
- 所有非骨干區域必須連接在骨干區域上
- 兩個區域相連時必須存在ABR(域間路由器)
Router-ID : 路由器標識符,用于在一個ospf域中唯一的標識一臺路由
四OSPF數據包類型
1.HELLO包
-
發現和維護鄰接關系:用于鄰居節點的發現,建立初始連接,并周期性發送以維持鄰接狀態。
-
協商參數一致性:檢查凝聚節點的參數(如區域id,hello時間,認證方式等)是否匹配。
2.DBD包(數據庫描述包)
- 同步鏈路狀態數據庫:在鄰接關系建立初期,主從路由器通過交換DBD包,描述本地LSDB中的鏈路狀態摘要。
- 主從關系協商:確定數據同步的主從角色(router Id大的一方為主路由器)
3.鏈路狀態請求包(LSR)
- 請求特定的LSA信息:當路由器發現本地LSDB中缺少或存在過時的LAS時,向鄰居發送LSR 包,請求完整的LSA數據。
4.鏈路狀態更新包(LSU)
- 發送完整的LSA數據,響應LSR請求,或主動泛洪最新的LSA信息,確保全網LSDB一致。
5.鏈路狀態確認包(LSACK)
- 確認LSA可靠傳輸:接收方收到LSU后,向發送方返回lsack包,確保lsa已正確接收,避免數據丟失。
五、OSPF狀態機
Down狀態
- 初始狀態:路由器未在接口上收到來自任何鄰居的hello數據包,或鄰居通信中斷
- 周期性發送hello數據包,(默認10秒或30秒),嘗試發現鄰居。
- 當收到合法的hello包時,若hello包中未含自身router id 時,則進入init狀態。
Init狀態
-
路由器收到鄰居的hello包,但尚未被鄰居識別。
-
驗證hello包中的參數一致性
-
區域id是否匹配(是否在同一個區域)
-
認證方式和密鑰是否一致
-
hello時間和dead時間是否匹配
-
當鄰居的hello包中發現自身router Id:確認雙向通信建立,進入Two-Way狀態
Two-Way狀態
-
雙向通信完成:雙方hello包中均含對方router id,鄰居關系初步建立。
核心功能: -
DR/BDR選舉(僅在廣播型網絡和NBMA網絡中):
接口優先級(默認為1,0-255)和router id決定選舉結果.
優先級就高的為DR,次高為BDR;優先級相同時,router Id大的為DR -
廣播網絡中需要同步LSDB的節點(如DR和BDR,DR和DROther)進入Exstart狀態
-
點到點網絡或不需要同步的場景(如p2p,loopback接口)直接進入exstart狀態,無須選舉DR與BDR
Exstart狀態
- 主從關系協商階段:兩臺路由器準備交換DBD包,需要先確認主路由器和從路由器
- router Id較大的一方成為主路由器,負責控制dbd包的發送順序。
- 主從關系協商完成:雙方達成一致,進入exchange狀態。
Exchange狀態
- LSDB摘要同步階段:主路由器通過交換dbd包,傳遞本地lsdb中的lsa頭部信息(如lsa類型,鏈路狀態id,通告路由器等)
- 主路由器發送攜帶lsa頭部列表的dbd包,序號遞增;從路由器接收后返回dbd包,并確認序號。
- 接收方對比本地lsdb,標記缺失或過時的lsa
- 雙方完成lsdb摘要對比,進入loading狀態。
Loading狀態
-請求缺失的lsa的完整數據:路由器根據exchange階段發現的缺失lsa,向鄰居發送鏈路狀態請求包(LSR),獲取對應的lsa
- 所有的LSA獲取并確認,進入FULL狀態。
FULL狀態
- 鄰接關系完全建立:雙方LSDB完全一致,可基于LSD運行Dijkstra算法計算最短路徑樹,生成路由表
- 若超過dead時間未收到hello包,或者lsdb同步失敗,可能退回到Down狀態,重新建立鄰接。
Attempt狀態(僅用于NBMA網絡)
- 非廣播多路訪問網絡(NBMA)特有:用于描述對靜態配置鄰居的輪詢狀態(如幀中繼,atm網絡)
- 當鄰居配置為靜態鄰居,且未收到其hello包時,路由器定期向該鄰居單播發送hello包,嘗試建立連接。
- 若持續未響應,維持Attempt狀態;若收到響應,則進入Two-Way狀態
狀態機轉變
在ar5上查看狀態機:
- 收到了AR7發送的hello包,鄰居狀態由down轉換成init狀態
- 再次收到hello包,且包含自己的router id,轉變成two-way狀態
- 發送DD報文進入Exstart狀態
- 交互DD報文并發送LSR請求LSU,并進入Exchange狀態
- 交互完畢進入Loading狀態
- 最后是full狀態
六、基礎配置
[R1]ospf 1 router-id 1.1.1.1 確定ospf進程的同時配置RID
[R1-ospf-1]area 0 創建0區/進入0區
[R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
[R1-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255
反掩碼:掩碼反過來
[R1]display ospf peer 查看詳細鄰居關系
[R1]display ospf lsdb 查看數據庫表的目錄
[R1]display ospf lsdb router 2.2.2.2 打開具體的數據庫目錄內容
[R2]display ip routing-table protocol ospf 查看由OSPF生成的路由表
實驗拓撲
配置命令
AR3
[Huawei]ospf 1 router-id 3.3.3.3
[Huawei-ospf-1]area 1
[Huawei-ospf-1-area-0.0.0.1]network 192.168.1.0 0.0.0.255
AR1
[Huawei]ospf 1 router-id 1.1.1.1
[Huawei-ospf-1]area 1
[Huawei-ospf-1-area-0.0.0.1]network 192.168.1.0 0.0.0.255
[Huawei-ospf-1]area 0
[Huawei-ospf-1-area-0.0.0.0]network 192.168.2.0 0.0.0.255
[R1]display ospf peer 查看詳細鄰居關系
[R1]display ospf lsdb 查看數據庫表的目錄
[R1]display ospf lsdb router 2.2.2.2
display ip routing-table protocol ospf 查看由OSPF生成的路由表
AR2
[Huawei]ospf 1 router-id 2.2.2.2[Huawei-ospf-1]area 0[Huawei-ospf-1-area-0.0.0.0]network 192.168.2.0 0.0.0.255[Huawei-ospf-1]area 2[Huawei-ospf-1-area-0.0.0.2]network 192.168.3.0 0.0.0.255
AR4
[Huawei]ospf 1 router-id 4.4.4.4[Huawei-ospf-1-area-0.0.0.2]network 192.168.3.0 0.0.0.255
七、拓展配置
選舉DR/BDR時修改接口優先級
[R1-GigabitEthernet0/0/0]ospf dr-priority 3 更改參選接口的優先級為3<R1>reset ospf process 重啟ospf進程
在鄰居間接口上做認證
[R1-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
手工匯總
在ABR(域間路由器)上將A區域的路由共享到B區域時,方可進行手工匯總的配置。
[R2-ospf-1-area-0.0.0.0]abr-summary 1.0.0.0 255.0.0.0
沉默接口
沉默接口—僅接收不發送路由協議信息,只能用于連接用戶PC的接口去使用。
[R1-ospf-1]silent-interface g 0/0/1 設置沉默接口
加快收斂
鄰居間直連接口的hello time 和dead time 時間若不一致 將不能建立鄰居關系 ;同時修改時也不建議修改的過小 / 不建議修改時間
[R1-GigabitEthernet0/0/0]ospf timer hello 10
修改hello time 時間為10s
[R1-GigabitEthernet0/0/0]ospf timer dead 40
修改 dead time 時間為40s
缺省路由
在連接外網的邊界路由器上,配置一條缺省路由信息后,該設備將向內網發送信息,是的內部所有ospf設備,生成缺省路由,下一跳全部指向邊界路由起方向,但是邊界路由器通往外網的路由條目仍需網絡管理員手工邊寫。
[R3-ospf-1]default-route-advertise always