OSPF:開放式最短路徑優先協定(Open Shortest Path First)
版本:V1/V2/V3(V3使用的是IPv6)
屬於無類別鏈路狀態路由協定–基於拓撲資訊進行收斂
組波更新:224.0.0.5
觸發更新 僅對變化量進行更新
週期更新 基於時間週期進行更新—更新量大
若一個協定希望實現增量更新— 僅觸發無週期;hello機制(週期保活) ACK確認機制
ospf跨層封裝在IPv4報頭,協定號為89;
存在5種不同型別的封包
型別 | 作用 | |
---|---|---|
Hello包 | 鄰居、鄰接的發現、建立、週期保活;hello time10s或30s;dead time為hello time 四倍 | 鄰居、鄰接的發現、建立、週期保活;hello time10s或30s;dead time為hello time 四倍 |
DBD包 | 資料庫描述包 (資料庫目錄) | LSA更新時的主從選舉;LSA互動 |
LSR包 | 鏈路狀態請求 | 請求自身缺少的LSA資訊 |
LSU包 | 鏈路狀態更新(攜帶具體的LSA資訊) | LSA更新資訊(迴應對方的LSR的請求) |
LSack包 | 鏈路狀態確認包 | LSA更新的確認回覆 |
LSA(鏈路狀態通告):路由或者拓撲資訊(在不同條件下產生不同型別的拓撲或路由資訊)
(Database Description)資料庫描述包
關於DBD的一些問題:
1、 介面MTU,在cisco體系中,鄰居間介面的MTU值預設被檢測,華為預設不檢測;
OSPF協定要求直連線口上鄰居間的MTU值必須完成一致;
[r1]interface GigabitEthernet 0/0/1
[r1-GigabitEthernet0/0/1]ospf mtu-enable 開啟華為MTU檢測
2、 關於DBD的標記位
I 為1標識本地發出的第一個DBD包 M 為1標識不是原生的最後一個DBD包
MS 為1代表主 為0 代表從
3、 使用序列號進行隱性確認 DBD的隱性確認,基於序號進行的,從使用主的序號來對主進行確認
鄰接關係建立後,鄰居間使用真正DBD來獲取對端鄰接的LSDB目錄,之後使用LSR/LSU/LSack來獲取本地未知的LSA資訊;生成LSDB—資料庫表;
鏈路狀態請求封包
鏈路狀態更新封包
鏈路狀態確認封包
被確認的LSA是根據在LSAck包中是否包含包含他的頭部蘭確認的。所以一個LSAck的組成只有OSPF包頭和LSA頭部。
(標準7個,還存在第八個)
Down:一旦本地發出Hello包,進入下一狀態機
Init初始化:接收到的Hello包中若存在本地RID,那麼進入下一狀態
2way雙向通訊:鄰居關係建立的標誌
條件:
1、點到點網路型別直接進入下一狀態
2、MA網路,將進行DR/BDR選舉(40s),非DR/BDR間不得進入下一狀態
**Exstart預啟動:**使用未攜帶目錄資訊的DBD包,進行主從關係選舉,RID數值大為主,優先進入下一狀態。
Exchange準交換:使用真正的DBD包進行資料庫目錄的互動,需要ack進行確認。
**Loading載入:**通過對端的資料庫目錄比對本地,就本地未知的LSA資訊,使用LSR來進行請求,對端使用LSU進行應答,最終需要ack進行確認。
**FUll轉發:**鄰接關係建立的標誌。
啟動OSPF協定後,本地基於所有啟用介面使用組播224.0.0.5進行週期的hello收發;接收到的hello包若存在原生的RID,那麼建立鄰居,生成鄰居表。
表中所有鄰居存在條件,條件匹配失敗將停留在鄰居關係,僅hello週期保活即可。;條件匹配成功後,需要進一步建立為鄰接關係鄰接關係間,需要使用DBD包來進行資料庫目錄共用,使用LSR/LSU/LSACK來獲取本地未知的LSA資訊,補全原生的LSDB(鏈路狀態資料庫—所有LSA的集合)–生成資料表;
資料庫同步完成後,本地其餘SFP演演算法,基於資料庫生成有向圖,合成最短路徑樹,最終將所有未知網段的路由載入於原生的路由表中;–收斂完成,hello包週期保活,每30min再週期比對一次資料庫目錄;
網路結構突變:
1、 新增網段 – 直連新增網段的裝置,使用更新包告知本地所有鄰接,之後擴散到全網,需要ACK確認;
2、 斷開網段-直連斷開網段的裝置,使用更新包告知本地所有鄰接,之後擴散到全網,需要ACK確認;
3、 無法溝通 — dead time到時間時,斷開鄰居,刪除鄰居;且通過該鄰接獲取的LSA將不再被使用;
OSPF協定在不同網路型別的介面工作方式不同。
網路型別 | OSPF工作方式 |
---|---|
loopback | 華為雖然標記為點到點,實際為環回的特殊工作,無hello包收發,直接學習32位元主機路由 |
點到點 | 10s hello time;直接鄰接關係,不進行DR選舉;(串線上的PPP/HDLC;普通GRE) |
BMA(乙太網) | broadcast;10s hello time;進行DR/BDR選舉,最終建立鄰接關係 |
NBMA(MGRE) | 預設為點到點的工作方式,該方式只能建立一個鄰居;故在NMBA環境下將無法和所有節點建立關係; |
NBMA拓撲結構:
1、 星型—中心到站點
2、 部分網狀結構,除去星型
3、 全連網狀結構
NBMA不能和所有節點建立鄰接關係解決方法:修改介面型別為broadcast
[r1]interface Tunnel 0/0/0
[r1-Tunnel0/0/0]ospf network-type broadcast 該網段所有介面修改為broadcast;
注:
1.若一端為點到點,另一端為broadcast,由於hello time均為10s,將建立鄰居關係,但無法正常工作;因此一旦修改任何一個的ospf型別,就必須保障該網段所有節點型別一致;
2.在星型和部分網狀結構中,若使用broadcast工作方式,必須考慮dr的位置;建議直接固定放置於中心站點; 若為全連網狀結構,可以不用dr位置;
鄰居關係成為鄰接關係的條件:
在MA網路中,由於節點數量不限制,故倆倆間均為鄰居,若不加管制將出現大量的重複更新;距離向量協定(RIP/EIGRP)均存在水平分割機制來解決;但OSPF協定無法使用介面水平分割(從此口進不從此口出),因此ospf選擇了DR/BDR選舉方式來解決,在MA網段中存在一個DR和一個DBR,其他裝置非DR/BDR,非DR/BDR之間不建立鄰接關係,僅維持鄰居關係,避免重複更新。
選舉規則:
1、 比較介面優先順序,0-255預設為1;數值大優 為0標識不參選
2、 若介面優先順序一致,比較參選裝置的RID,數值大優;
[r1]interface GigabitEthernet 0/0/0
[r1-GigabitEthernet0/0/0]ospf dr-priority ?
INTEGER<0-255> Router priority value
[r1]ospf 1 router-id 1.1.1.1
1.啟動時需要定義程序號,僅具有本地意義;
2.同時建議設定RID,ipv4地址編寫規則;必須全網唯一;
3.手工---》環回最大數值-》物理介面最大數值
[r1-ospf-1]
宣告:
1、啟用—被選中介面可以收發ospf 的封包
2、傳遞介面資訊—被選中介面的資訊將被共用給原生的其他鄰接 3、區域劃分
[r1-ospf-1]area 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.1 0.0.0.255
區域劃分規則:
1、 星型結構拓撲 – 區域0 為骨幹,大於0為非骨幹;非骨幹必須連線骨幹區域;
2、 區域間必須存在ARB—區域邊界路由器
啟動設定完成後,鄰居間收發hello包建立鄰居關係,生成鄰居表:
Hello包中的內容
[外連圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-sAWzwWax-1601902102827)(file:///C:/Users/Lenovo/AppData/Local/Temp/msohtmlclip1/01/clip_image002.png)]
鄰居間hello包中必須完全一致的引數;否則無法建立鄰居關係;
1、hello、dead time 2、區域ID (ABR) 3、認證 4、末梢區域標記(特殊區域)
5、在華為裝置的hello包中,還存在本地介面ip地址的的子網掩碼,鄰居間介面掩碼不一致將無法建立鄰居關係
[r2]display ospf peer 檢視鄰居關係
[r2]display ospf peer brief 摘要表格
鄰居關係建立後,鄰居間基於條件決定是否建立鄰接關係;鄰接關係間將使用DBD包來溝通;
優先順序為10;cost的參考頻寬為100M; COST=參考頻寬/介面頻寬
Ospf選擇cost值之和最小的路徑為最短路徑;若介面頻寬大於參考頻寬,cost值為1,將可能導致選路不佳,建議修改參考頻寬,修改時全網裝置必須修改為一致;
[r1]ospf 1
[r1-ospf-1]bandwidth-reference ?
INTEGER<1-2147483648> The reference bandwidth (Mbits/s)
[r1-ospf-1]bandwidth-reference 1000
1.遠離骨幹的非骨幹區域
2.不連續骨幹區域
注:一臺ABR裝置若未連線到骨幹區域,將被定義為非法ABR,不得進行區域間資訊共用;
解決方案:
1、 Tunnel 在非法ABR與合法ABR間建立一條隧道,之後將該隧道鏈路宣告於OSPF協定中;
在OSPF協定,若接收到去往相同目標的多條路由;先優選從骨幹區域傳遞過來的路由;
若所有路由器均基於骨幹區域,或均基於非骨幹區域傳遞,進行cost值對比;
缺點:
選路不佳
週期性的資訊對中間穿越的區域存在資源佔用
2、 OSPF的虛鏈路
合法的ABR對非法ABR進行授權,使得非法ABR可以進行區域間路由資訊共用;
優點:由於沒有新增鏈路,故不存在選路的問題;正常選路
缺點:
cisco為了避免週期資訊對中間區域的影響,在虛鏈路上關閉了週期行為—失去可靠性
華為選擇保持週期行為 —繼續對中間區域資源佔用
[r2]ospf 1
[r2-ospf-1]area 1 兩臺ABR共同存在的區域
[r2-ospf-1-area-0.0.0.1]vlink-peer 4.4.4.4 對端ABR裝置的RID;
[r2-ospf-1]display ospf vlink
3、 多程序雙向重發布(推薦)
一臺裝置執行所有路由協定程序,不同程序存在獨立的資料庫,相互間不進行共用;
僅將計算所得路由載入於同一張路由表中;
將不規則部分的區域宣告到其他的ospf程序中,之後使用重發布機制進行路由共用;
避免了週期資訊和選路問題;
[r2]ospf 1
[r2-ospf-1]import-route ospf 2
[r2-ospf-1]q
[r2]ospf 2
[r2-ospf-2]import-route ospf 1