OSPF協議
OSPF介紹
開放式最短路徑優先(Open Shortest Path First,OSPF)是廣泛使用的一種動態路由協議,屬於無類別鏈路狀態型路由協議, 公有協議;跨層封裝到IP報頭,協議號89; 組播更新:224.0.0.5 224.0.0.6; 觸發更新、週期更新(30min);需要結構化的部署:區域劃分 地址規劃 ;鏈路狀態式路由的距離矢量特徵
一、OSPF協議的數據包
1、數據包結構
OSPF數據包跨層封裝在IPv4的後方,封裝在三層,前面是IPv4報頭,後面是二層的報尾,是FCS校驗盒,五種包都是下面這個格式,格式一樣
各字段對應解釋:
字段 | 解釋 |
---|---|
Version Number | 版本號,現在學的都是版本2,版本1被淘汰了 |
Type | 類型號 1-5,對應五種數據包 |
Packet Length | 數據包長度 |
Router ID | 是OSPF爲每一個進程定義的名字,每個設備唯一的Router ID ,用的是IP地址 |
Area ID | 區域編號 ,交代這個接口處於哪個區域 |
Check-sum | 校驗盒,爲了驗證數據是不是完整的 |
Authen-tication Type | 認證類型,配置時加的認證密碼,空,明文,密文 |
Authen-tication | 具體的密碼 |
Data | 看是個啥包,裝專有參數 |
2、 數據包種類
Hello:用於鄰居、鄰接 發現、建立、保活 hello time 默認10s或30s
DBD:數據庫描述包
LSR:鏈路狀態請求
LSU:鏈路狀態更新
LSack:鏈路狀態確認
二、OSPF狀態機
狀態 | 描述 |
---|---|
Down | 一旦本地發出hello包進入下一個狀態 |
Init | 初始化 收到的hello包若存在本地的RID進入下一個狀態 |
2way | 雙向通訊 鄰居關係建立的標誌 |
條件匹配 | 點到點網絡將直接進入下一個狀態; MA網絡類型將進行DR/BDR選舉,非DR/BDR間將無法進入下一狀態; |
Exstart預啓動 | 使用類似hello的DBD進行主從關係的選舉,RID大爲主優選進入下一狀態 |
Exchange 準交換 | 使用真正的DBD進行數據庫目錄的共享,需要使用ACK確認 |
Loading 加載 | 使用LSR/LSU/LSAck來獲取未知的LSA信息; |
Full轉發 | 鄰接關係建立的標誌 |
LSA:鏈路狀態通告,在不同的網絡條件下將產生不同類別的LSA信息來代表拓撲或者路由條目;
LSDB:鏈路狀態數據庫,裝載和存儲所有各種類別的LSA;
三、OSPF的工作過程
- OSPF協議啓動後,A向本地所有啓動了OSPF協議的直連接口組播224.0.0.5發送hello包;本地hello包中攜帶本地的全網唯一的router-id;
- 之後對端B運行OSPF協議的設備將回復hello包,該hello包中若攜帶了A的routerid,那麼A/B建立爲鄰居關係;生成鄰居表;
- 鄰居關係建立後,鄰居間進行條件匹配,匹配失敗就停留於鄰居關係,僅hello包週期保活;
- 條件匹配成功可以開始建立鄰接關係;
- 鄰接間共享DBD包,將本地和鄰接的DBD包進行對比,查找到本地沒有的LSA信息目錄;
- 之後使用LSR來詢問,對端使用LSU應答具體的LSA信息,之後本地再使用ack確認,可靠,該過程完成後,生成數據庫表;
- 再之後本地基於數據庫表,啓用SPF選路規則,計算到達所有未知網段的最短路徑,然後加其加載到本地的路由表中;收斂完成,hello包週期保活,每30min再週期收發一次DBD來判斷和鄰接間數據庫是否一致;
結構突變
1、 新增網段 直連新增網段的設備,將直接使用LSU包來告知本地所有鄰接,之後鄰接傳鄰接擴散到全網,需要ACK確認
2、 斷開網段 直連斷開網段的設備,將直接使用LSU包來告知本地所有鄰接,之後鄰接傳鄰接擴散到全網,需要ACK確認
3、 無法溝通 dead time 爲hello time 的4倍;當dead time到時時,斷開鄰居關係,刪除通過該鄰接生成的路由協議;
四、OSPF的基礎配置
[r1]ospf 1 router-id 1.1.1.1
啓動時,需要定義進程號;進程號僅具有本地唯一性; 建議同時配置全網唯一的router-id; 生成順序—手工 本地環回接口中最大ip地址數值 本地物理接口中最大數值的ip地址
接下來是宣告路由,ospf協議在宣告的同時需要進行區域劃分,區域劃分規則:
- 星型拓撲結構,區域0爲中心骨幹區域,其他大於0爲非骨幹站點區域;
- 必須擁有ABR–區域邊界路由器
宣告時要先進入區域,之後再該區域內宣告屬於該區域的接口,宣告時必須攜帶反掩碼,OSPF的收斂被稱爲LSA洪泛,也被稱爲LSDB同步;
[r2-ospf-1]area 0
[r2-ospf-1-area-0.0.0.0]network 12.1.1.2 0.0.0.0
[r2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
[r2-ospf-1-area-0.0.0.0]q
[r2-ospf-1]area 1
[r2-ospf-1-area-0.0.0.1]network 23.1.1.1 0.0.0.0
啓動配置完成後,鄰居間收發hello包,建立鄰居關係;生成鄰居表;
[r2]display ospf peer 查看鄰居表
[r2]display ospf peer brief 鄰居表的簡要
鄰居、鄰接關係的發現、建立、保活均依賴hello包進行;
Hello包中鄰居間必須完全一致的參數:任意參數不同,均導致鄰居關係無法建立
hello包中的參數:
1、 子網掩碼——發送hello包接口的源ip地址其掩碼
2、 Hello dead time——OSPF接口網絡類型相關
3、 認證字段——更新安全
4、 區域ID——要求區域間存在ABR
5、末梢區域標記——特殊區域
鄰居關係建立後,鄰居間進行條件匹配,匹配成功者間可以建立爲鄰接關係;鄰接關係間將使用DBD包進行主從關係選舉,之後由主優先使用DBD進行數據庫目錄信息的共享,從而最終基於LSR/LSU/LSAck來獲取未知的LSA信息;當收集到全網的LSA信息後,裝載於本地的LSDB(鏈路狀態數據庫)——數據庫表:
[r2]display ospf lsdb 查看鏈路狀態目錄(數據庫)簡表
[r2]reset ospf process 重啓OSPF進程
Warning: The OSPF process will be reset. Continue? [Y/N]:y
數據庫建立後,本地基於SPF選路規則,計算到達未知網段最短路徑加載於路由表中;
關於DBD包的幾個知識點
1、DBD包中攜帶MTU值,要求鄰居MTU值必須相同,否則將卡在exstart或exchange狀態;默認華爲未開啓MTU檢測
[r1]interface GigabitEthernet 0/0/1
[r1-GigabitEthernet0/0/1]ospf mtu-enable 開啓MTU
2、隱性確認—不使用確認包,而是從設備複製主設備的序列號來確認收到了主的DBD
3、 OSPF標記位 I M MS
-
I爲1本地發出的第一個DBD包;
-
M爲0,表示本地發出的最後一個DBD;
-
MS爲1代表主,爲0代表從;
OSPF路由表裏的三個參數
1、 字母
Cisco
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
字母 | 解釋 |
---|---|
O 同一區域 | 同一區域內,本地通過拓撲計算所得 |
O IA 域間路由 | ABR通過其他區域的拓撲計算所得路由,然後共享到另一個區域;本地區域另一區域 |
O E1/2 域外路由 | 其他協議或其他進程產生後,通過ASBR重發布進入到OSPF協議 |
ON1/2 NSSA域外路由 | 其他協議或其他進程產生後,通過ASBR重發布進入到OSPF協議,同時學習到這條路由的設備處於ospf的一種NSSA的特殊區域中 |
2、 管理距離
Cisco設備定義OSPF管理距離爲110 ,在華爲設備上定義OSPF優先級爲10,管理距離越小越優先
3、 度量(cost)
cost 鏈路開銷值 = 參考帶寬/接口帶寬
華爲設備,環回接口不計算爲一段路徑;默認的參考帶寬爲1000M;優選cost值之和最小路徑;
OSPF協議鄰居成爲鄰接關係的條件
在點到點網絡中,所有的OSPF鄰居將直接建立爲鄰接關係;
在MA網絡中,爲了避免大量的重複的LSA更新—因爲OSPF需要鄰接間進行DBD對比,因爲沒有接口水平分割機制;故必須進行DR/BDR選舉,非DR/BDR間僅建立鄰居關係;——在每一個MA網絡中均需要進行一次選舉;
選舉規則:
1、 優先級 數值大優,默認爲1; 若爲0爲放棄選舉;
2、 優先級一致,比較參選接口所有設備的router-id,數值大優;
[r1-GigabitEthernet0/0/1]ospf dr-priority 2 修改參選接口的優先級
切記:DR選舉非搶佔 ,故在修改優先級後,必須重啓參選設備ospf進程來重新選舉,DR/BDR選舉是在一個網段裏選舉
五、OSPF接口網絡類型
OSPF接口網絡類型是指OSPF協議在不同網絡類型的接口下,其不同的工作方式。
網絡類型 | OSPF接口網絡類型(ospf工作方式) |
---|---|
LoopBack 0 | Cisco – LoopBack類型 ,沒有hello包,以32位主機路由發送;華爲—顯示爲p2p類型,實際爲LoopBack工作方式 |
點到點(串線HDLC/PPP/GRE) | p2p網絡類型,有hello包,hello time10s ,自動建鄰,不選DR/BDR |
BMA 以太網 | Broadcast網絡類型,hello time 10s,自動建鄰 ,選DR/BDR |
NBMA(幀中繼) | nbma類型,hello time 30s,手工建立鄰居,選DR/BDR |
NBMA(MGRE) | p2p. hello time10s,自動建鄰,不選DR/BDR ——在一個網段中只能存在一個鄰居;華爲設備在一個MGRE網段,接口爲點到點工作方式時,僅和最先收到hello的設備建立鄰居關係;Cisco在這種情況將出現鄰居的翻滾; |
注意:在MGRE環境中,接口默認的ospf工作方式爲點到點,這種方式無法實現該NBMA網段的鄰居全連;故只能去修改接口的工作方式;
修改MGRE網段所有接口爲Broadcast工作方式,切記若一部分接口修改爲Broadcast,另一部分接口依然保持爲點到點,由於hello time相同可以建立鄰居關係,但工作機制在DR/BDR選舉處不同,故最終該網段無法正常收斂;同時,必須關注網絡拓撲結構;
- 若該網段爲全連網狀結構,那麼DR選舉將正常進行;
- 若爲部分網狀或中心到站點拓撲,將可能出現DR位置錯誤問題;
- 若網絡拓撲只能爲部分網狀或中心到站點,需要人爲手工干預DR位置 或者將所有接口的工作方式修改爲點到多點工作方式;
手工干預DR位置: 改優先級
進Tunnel 0/0/0
指令 ospf dr-priority 0
六、OSPF的不規則區域
一臺ABR設備若沒有連接到骨幹區域0,那麼默認不得進行區域間路由的共享,兩種不規則區域:
1、 遠離了骨幹的非骨幹區域
2、 不連續骨幹
三個解決方案:
1、在合法與非法ABR上建立tunnel,然後將其宣告到ospf協議中
缺點:
<1> 週期更新、保活,觸發更新對中間穿越區域產生資源佔用
<2> 選路不佳,當ospf學習到兩條相同目標,但不同區域同時過來時,優選骨幹區域;
2、虛鏈路——在合法與非法ABR上建立虛鏈路,由合法ABR爲非法ABR進行授權;使得非法ABR可以進行區域間路由的共享;
優點:因爲並沒有增添新的路徑,故不存在選路不佳的問題;
虛鏈路配置:
[r2-ospf-1]area 1 兩臺ABR共同所在的區域
[r2-ospf-1-area-0.0.0.1]vlink-peer 4.4.4.4 對端ABR的RID
Cisco爲了避免週期信息對中間區域的佔用,取消虛鏈路上的所有周期行爲——不可靠
華爲在虛鏈路上依然保持週期的保活、更新——對中間區域的資源佔用
3、多進程雙向重發布(推薦)
多進程——同一臺設備上,不同的進程可以工作在不同的接口上,建立各自的鄰居關係,生成各自的數據庫(不共享);僅將各自計算所得路由加載於同一張路由表內;一個接口只能被一個進程來宣告;
雙向重發布——ASBR(自治系統邊界路由器、協議邊界路由器),將不同進程或不同協議產生的路由進行雙向共享;
配置:
[r2]ospf 1
[r2-ospf-1]import-route ospf 2
[r2-ospf-1]q
[r2]ospf 2
[r2-ospf-2]import-route ospf 1
七、 OSPF的各種LSA
LSA:鏈路狀態通告,在不同的網絡條件下將產生不同類別的LSA信息來代表拓撲或者路由條目;
LSDB:鏈路狀態數據庫,裝載和存儲所有各種類別的LSA;
[r1]display ospf lsdb 查看數據庫表
[r1]display ospf lsdb router 1.1.1.1 類別名 link-id(在目錄中的編號)
所有類別的LSA,均攜帶以下信息:
字段 | 說明 |
---|---|
Type : Router | 類別名 此處爲1類 |
Ls id : 1.1.1.1 | link-id 在目錄中的編號 |
Adv rtr : 1.1.1.1 | 通告者 — 該LSA的更新源設備的RID |
Ls age : 1359 | 老化時間 1800s週期刷新爲0 觸發更新歸0 最大3609s |
Len : 48 | |
Options : E | |
seq# : 8000000c | 序列號 |
chksum : 0x818c | 校驗碼 |
OSPF的LSA是1800會更新一次更新一次序列號會加一,LSA的新舊比較:
1、會先比較序列號,序列號越大越優,
2、如果序列號相同,會比較校驗值(checksum)越大越優
3、如果校驗值也相同,會比較LSA Age時間,是否等於MAX-age時間(3600)
4、如果age時間不等於max-age時間,會比較他們的差值,如果差值大15分鐘(900秒),小的優
5、如果age時間不等於max-age時間,會比較他們的差值,如果差值小於15分鐘,說明是同一條LSA,忽略其中一條
什麼情況下LSA會更新?
1、1800到期會週期更新
2、觸發更新(接口地址變化(增加,或刪除),修改接口開銷值,刪除接口,或者刪除通告)
各類型LSA的傳播範圍,通告者,攜帶信息
類別名 | 傳播範圍 | 通告者 | 攜帶的信息 |
---|---|---|---|
1類LSA-router | 本區域內 | 本區域內的每臺路由器 | 該區域每臺設備的直連拓撲 |
2類LSA-Network | 本區域內 | 該網段內的DR | 該網段的拓撲 |
3類LSA-summary | 整個OSPF域 | ABR | O IA 域間路由 |
4類LSA-asb | 除ASBR所在區域外的整個ospf域;ASBR所在區域使用 | ABR | ASBR的位置 |
5類LSA-ase | 整個OSPF域 | ASBR | O E 域外路由 |
7類LSA——NSSA外部LSA,由ASBR產生,幾乎和5類相同.
ABR和ASBR的區別
1.ABR爲area border router的縮寫釋義:區域邊界路由器
用於將一個或多個OSPF區域邊界上、將這些區域連接zhi到主幹網絡的路由器
2.ASBR爲Autonomous System Boundary Router的縮寫 釋義:自治系統邊界路由器,ASBR位於OSPF自治系統和非OSPF網絡之間。ASBR可以運行OSPF和另一路由選擇協議(如RIP),把OSPF上的路由發佈到其他路由協議上。發出五類的LSA,用於向自治系統區域通告網絡拓撲
ASBR可以認爲是OSPF域外部的通信量進入OSPF域的網關路由器,也就是說,ASBR路由器是用來把其他路由選擇協議學習到的路由通過路由選擇重分配的方式注入到OSPF域的路由器。一個ASBR路由器可以是位於OSPF域的自治系統內部的任何路由器,他可以是一臺內部路由器或者ABR路由器。
各類型LSA的link-id,通告者
類別名 | link-id | 通告者 |
---|---|---|
1類LSA-router | 通告者的RID | 本區域內的每臺路由器 |
2類LSA-Network | DR接口的ip地址 | 每個MA網段中的DR |
3類LSA-summary | 域間路由的目標網絡號 | ABR,在經過下一臺ABR時,修改爲新的ABR |
4類LSA-asbr | ASBR的RID | ABR,在經過下一臺ABR時,修改爲新的ABR |
5類LSA-ase | 域外路由的目標網絡號 | ASBR 在ospf內部傳遞時不變 |
八、OSPF的LSA優化
OSPF的LSA優化是爲了減少LSA更新量,有兩種優化方式:
- 彙總——減少骨幹區域的LSA數量 – 前提要求網絡存在合理的地址規劃
- 特殊區域——減少各個非骨幹區域的LSA數量
彙總
1、域間路由彙總—ABR將本地直連的A區域1/2類LSA計算所得路由,再通過3類LSA共享到其它本地所直連的B區域時;
[r1]ospf 1
[r1-ospf-1]area 1 明細路由所在區域
[r1-ospf-1-area-0.0.0.1]abr-summary 3.3.2.0 255.255.254.0
2、域外路由彙總—在ASBR上操作,將5類/7類LSA向OSPF發佈時進行彙總;
[r2]ospf 1
[r2-ospf-1]asbr-summary 99.1.0.0 255.255.252.0注
切記:華爲設備默認設備不會在進行彙總配置的設備上,自動生成空接口防環路由;
特殊區域
特殊區域不能是骨幹區域,不能存在虛鏈路;在這個基礎上根據是否存在ASBR,分爲兩種:
1、同時不存在ASBR
(1)末梢區域——該區域拒絕4/5的LSA進入;由該區域連接骨幹區域的ABR設備,向區域內發送一條3類的缺省路由;
[r1]ospf 1
[r1-ospf-1]area 1
[r1-ospf-1-area-0.0.0.1]stub
注:該區域內所有設備均需要定義,否則無法建立鄰居關係;
(2)完全末梢區域——在末梢區域的基礎上進一步拒絕3類的LSA;僅保留一條3類的缺省路由; 先將該區域配置爲末梢區域,然後僅在ABR上定義完全末梢即可;
[r1]ospf 1
[r1-ospf-1]area 1
[r1-ospf-1-area-0.0.0.1]stub no-summary
2、同時存在ASBR
(1)NSSA 非完全末梢區域——拒絕非本區域內部產生4/5LSA,本區域ASBR產生的5類將通過7類LSA傳輸,到達ABR處進入骨幹區域時,由7類轉換回5類;
在cisco設備中爲了避免環路的出現,OSPF協議在NSSA區域配置完成後,不會自動產生缺省路由;而是由管理員在缺省網絡無環的前提下,手工添加;
而在華爲的設備中讓由該區域連接骨幹0的ABR自動下發一下7類缺省;
[r1]ospf 1
[r1-ospf-1]area 1
[r1-ospf-1-area-0.0.0.1]nssa
注:該區域內所有設備均需要定義,否則無法建立鄰居關係;
(2)完全NSSA——完全的非完全末梢區域;在普通NSSA的基礎上,近一步拒絕3類的LSA,由ABR產生一條3類缺省;
先將該區域配置爲普通的NSSA,然後僅在ABR上定義完全NSSA即可
[r1]ospf 1
[r1-ospf-1]area 1
[r1-ospf-1-area-0.0.0.1]nssa no-summary
九、OSPF的擴展配置
1、認證——接口認證
[r3]interface GigabitEthernet 0/0/1 在直連鄰居的接口上配置即可
[r3-GigabitEthernet0/0/1]ospf authentication-mode md5 1 cisco123 密文認證,key編號1,密碼爲cisco123,密碼直接以MD5值傳遞;
2、被動接口——只接受不發送路由協議的信息,其他信息正常通過;華爲成爲沉默接口
只能配置於連接用戶的接口,不得用於連接OSPF鄰居的接口;
[r3]ospf 1
[r3-ospf-1]silent-interface GigabitEthernet 0/0/0
3、修改計時器—OSPF的hello time 爲10或30s;dead time爲hello 的4倍;改小計時器可以加快收斂速度,但將增加對網絡資源佔用;故修改時不宜修改過小,維持原有的倍數關係;
[r3]interface GigabitEthernet 0/0/1
[r3-GigabitEthernet0/0/1]ospf timer hello 5 修改本端的hello time,本端的dead time自動4倍關係匹配;直連鄰居間hello 和dead time必須完全一致,否則無法建立鄰居關係;
4、缺省路由——3類的缺省 5類的缺省 7類缺省
3類缺省 ——> 配置特殊區域後自動生成 ——末梢、完全末梢、完全NSSA
5類缺省——> 本地路由表中通過其他協議或OSPF的其他進程生成了缺省路由條目,有了這個前提之後使用重發布機制將改條目重發布到ospf的協議中來;
[r4]ospf 1
[r4-ospf-1]default-route-advertise 默認導入路由起始度量爲1,類型2;
[r4-ospf-1]default-route-advertise type 1 cost 10 修改類型和起始度量
若本地路由表中沒有缺省條目,也可以讓設備強制向內網發送一條5類缺省
[r4-ospf-1]default-route-advertise always 默認爲類型2,cost值爲1;
[r4-ospf-1]default-route-advertise always type 1 cost 10 修改類型和起源cost;
7類缺省——> 普通的NSSA區域將自動產生7類的LSA;也可在NSSA區域內手動生成出7類缺省
[r4]ospf 1
[r4-ospf-1]area 1
[r4-ospf-1-area-0.0.0.1]nssa default-route-advertise 默認爲類型2 ,起始cost爲1;
優選順序:內部優於外部(三類優於五類和七類),類型1優於類型2;類型一樣就比cost,cost小的優選
十、SFP算法 –OSPF防環機制
SFP算法工作過程——基於本地LSDB(1/2類LSA)生成有向圖——基於有向圖來進行最短路徑樹生成,關注本地LINK-ID的LSA,基於該LSA內提及到點到點或傳輸網絡信息再查看link-id遞歸到下一條信息;基於所有點到點和傳輸網絡信息生成最短路徑樹主幹;然後用樹中每臺設備的末梢網絡信息補充路由表,完成收斂;
SPF算法運作的前提
1、在同一個區域每臺路由具有一致的LSDB
2、每臺路由器以自己爲根計算到達每個目標的最短路徑(最小cost值)
3、必須區域劃分
SPF算法的優勢
1)域間彙總減少路由條目數量
2)彙總路由是在所有明細路由均消失後才刪除,網絡更穩定
3)區域劃分後不同類別的LSA傳播範圍不同,控制更新量
十一、OSPF選路規則
1、區域內的 > 區域間的 >ASE TYPE1 > ASE TYPE2。
2、ASE TYPE1和ASE TYPE1 or NSSA TYPE1 進行比較,比較的是OSPF的內部和外部成本只和,即哪個成本之和小,哪條路徑就好,如果成本一樣,則負載分擔。
3、ASE TYPE2和ASE TYPE2 or NSSA TYPE2 進行比較 先比較二者的外部成本,外部成本小的路徑好,如果外部成本一樣,再比較內部成本,內部成本小的路徑優先,如果一致,則負載分擔