OSPF路由協議
RIP的不足
以跳數評估的路由并非最優路徑

- 如果RTA選擇s0/0傳輸,傳輸需時會大大縮短為3s
最大跳數為16跳,導致網絡尺度小

- RIP協議限制網絡直徑不能超過16跳,并且16跳為不可達。
收斂速度慢
- RIP 定期路由更新
- 更新計時器:定期路由更新的時間間隔,默認為30s
- 失效計時器:失效計時器內未收到更新,路由失效,默認180s
- 清除計時器:清除計時器內未收到更新,路由清除,默認240s

更新發送全部路由表,浪費網絡資源

- 假設RTA和RTB各有1000條路由,每條路由需占用20個字節
- 每次路由更新時,RTA和RTB之間單向需消耗至少160Kb的帶寬資源
OSPF簡介
什么是OSPF
- OSPF英文全稱Open Shortest Path First(開放式最短路徑優先)
- OSPF是IETF開發的一種鏈路狀態路由協議,使用基于帶寬的度量值
- OSPF采用SPF(Shortest Path First,最短路徑優先算法)算法計算路由,從算法上保證了無路由環路
- OSPF通過鄰居關系維護路由,避免了定期更新第帶寬的消耗
- OSPF路由更新效率高,網絡收斂快,適用于大中型網絡
- OSPF報文封裝于IP,協議號89,組播地址224.0.0.5和224.0.0.6
OSPF的基本工作原理
OSPF協議模型
- OSPF基本協議模型

-
LSA(Link-State Advertisement,鏈路狀態通告)
-
LSDB(Link-State Database,鏈路狀態數據庫)
-
OSPF的四張表
OSPF基本概念——Router ID
- 一臺路由器要想運行OSPF協議,則必須存在Router ID(RID)
- RID是一個32比特無符號整數,可以在一個自治系統中唯一的標識一臺路由器。
- RID可以手工配置,也可以自動生成。
- 如果沒有通過命令指定RID,將按照如下順序自動生成一個RID:
- 如果當前設備配置了Loopback接口(虛擬接口),將選取所有Loopback接口上數值最大的IP地址作為RID;
- 如果當前設備沒有配置Loopback接口,將選取它所有已經配置IP地址且鏈路UP的接口上數值最大的IP地址作為RID。
Router ID選舉實例

OSPF基本概念——LS
- 鏈路狀態(LS):路由器周邊的鏈路狀態
- 直連網段狀態:通過接口網段和接口狀態感知
- 描述直連網段:(網段、掩碼、接口開銷)
- 直連拓撲狀態:通過OSPF鄰居和鄰居狀態感知
- 描述直連拓撲:(鄰居RID、連接接口、接口開銷)
- 接口開銷:OSPF參考帶寬/接口帶寬
- OSPF參考帶寬默認為100Mbps
- Loopback接口的開銷默認為1
- 直連網段狀態:通過接口網段和接口狀態感知

OSPF基本概念——LSA
- 鏈路狀態通告(LSA)
- 按一定格式封裝后的鏈路狀態信息
- LSA 1:路由器鏈路狀態通告
- 每臺路由器都會發起自己的LSA1
- LSA 2:傳送網絡鏈路狀態通告
- LSA 1:路由器鏈路狀態通告
- 按一定格式封裝后的鏈路狀態信息

OSPF基本概念——LSDB
- 鏈路狀態數據庫(LSDB)
- 每臺OSPF路由器上都有一個LSDB,用于存儲LSA。
- 同一個 區域中的OSPF路由器的LSDB一致。
- LSA封裝在LSU報文中,在區域內洪泛,最終到達區域內LSDB一致。
- LSA在洪泛過程中保持不變

OSPF基本概念——SPF
- SPF計算
- 以自己LSA 1為根,進行SPF計算。
- 各OSPF路由器單獨進行SPF計算,互不影響

SPF開銷計算
- OSPF路由開銷計算
- 以自己為根,到達目標網段的出接口的開銷的和。

- OSPF的度量值為cost,也叫開銷,是以鏈路的接口帶寬為依據;
- 計算的方法為10的8次方除以帶寬
OSPF基本概念——OSPF網絡類型
- Broadcast廣播多路訪問:以太網接口
- NBMA(Non-Broadcast Multi-Access,非廣播多點訪問網絡):幀中繼接口
- P2MP(Point-to-MultiPoint,點到多點)
- P2P(Point-to-Point,點到點):PPP HDLC接口
OSPF基本概念——OSPF報文類型與封裝
OSPF報文類型 | 作用 |
---|---|
Hello | 建立并維護鄰居關系 |
Database Description(DD) | 數據庫內容的匯總(僅包含LSA頭部) |
Link State Request(LSR) | 請求自己沒有的或者比自己更新的鏈路狀態詳細信息 |
Link State Update(LSU) | 鏈路狀態更新信息(LSA頭部和內容) |
Link State Acknowledge(LSAck) | 對LSU的確認 |
- OSPF報文封裝在IP報文中,協議號為89

OSPF報文的目的地址

建立鄰居關系(點對點)

維持鄰居關系(點對點)

- 鄰居之間通過交換Hello報文(默認30s),確認鄰居是否工作正常
- 如果在一定的時間間隔內(120s),沒有收到鄰居發來的Hello報文,就認為鄰居已經失效,從鄰居表中刪除。
DR/BDR的選舉(廣播多路訪問)

- 采用DR/BDR建立鄰接關系,可以降低需要維護的鄰接關系的數量
除了被選舉出來的DR/BDR,其他的路由器都稱為DROther,只需要和DR/BDR建立鄰居關系即可,不需要再依次相互建立鄰接關系,所有的LSA將由DR收取,統一進行洪泛,BDR作為DR的備份路由,當DR出故障了的時候,直接替代DR成為新的DR。
DR/BDR的選舉原則
-
首先比較Hello報文中攜帶的優先級
- 優先級最高的被選舉為DR,優先級次高的被選舉為BDR
- 優先級為0的不參與選舉
-
優先級一致的情況下,比較Router ID
- Router ID越大越優先
-
保持穩定原則
- 當DR/BDR已經選舉完畢,就算一臺具有更高優先級的路由器變為有效,也不會替換該網段中已經選舉的DR/BDR成為新的DR/BDR
DR/BDR的選舉示例一

- RTE后來加入網絡,雖然它的Router ID比原來的DR和BDR都要高,但是出于穩定性考慮,只能成為DRother路由器
DR/BDR選舉示例二

- 當DR失效時,BDR立刻成為新的DR
- DRother路由進行競爭,Router ID高的成為新的BDR
鄰居關系無法建立原因總結
參數 | 配置要點 |
---|---|
router id | 每臺OSPF路由器的router id必須唯一 |
area id | 同一網段的所有接口應當配置在同一區域內 |
Interface network-type | 同一網絡接口的類型要相同,及hello時間與hellodown時間雙方要一致 |
network mask | 除了點到點網絡之外,同一網段的所有端口應當配置相同的掩碼 |
authentication type | 同一區域的驗證類型必須一致 |
authentication data | 同一網段的驗證碼必須一致 |
extern option | 配置stub區域或者NSSA時,區域內所有的路由器都要指定stub特性或者NSSA特性 |
peer | NBMA網絡上的鄰居需要手動指定 |
OSPF基本概念——鄰居狀態變換(鄰居關系)

OSPF基本概念——鄰居狀態變換(鄰接關系)

DOWN、Init、two-way(鄰居)

ExStart和Exchange(鄰接)

Loading和Full(鄰接)

包含在各種報文中的LSA信息

LSA報文頭部

字段名 | 長度(字節) | 作用說明 |
---|---|---|
LS age | 2字節 | LSA 生存時間(秒),最長3600秒,超過就作廢。控制 LSA 生命周期。 |
Options | 1字節 | 支持的OSPF功能選項,比如是否支持NSSA、E位(E1/E2)、DC位等。 |
LS type | 1字節 | LSA 類型(例如1類Router-LSA,2類Network-LSA) |
Link State ID | 4字節 | LSA的“名字”,類型不同含義不同,例如: Router-LSA:本路由器的Router ID; Network-LSA:DR的接口IP。 |
Advertising Router | 4 字節 | 發出該 LSA 的路由器 ID,誰發的誰填它。 |
LS Sequence Number | 4 字節 | 序號,新LSA比舊的號大。 用于更新判斷。初始值為 0x80000001 ,每次變化加1。 |
LS Checksum | 2字節 | CRC校驗,用于驗證 LSA 內容是否損壞。 |
Length | 2 字節 | 包括頭部在內的 LSA 總長度(字節)。一般為20字節 |
Loading和Full(續)

- OSPF協議包具備超時重傳機制
- OSPF協議具備序列號,對重復包不做處理
泛洪新LSA

當有新的LSA生成或者收到時,這條心的LSA應當被泛洪
泛洪新的LSA時,只需要使用LS Update報文和LS Ack報文:
1.當RTA有新的LSA要泛洪時,RTA向RTB發送一個LS Update報文,在這個報文里包含這條LSA
2.當收到新的LSA以后,RTB向RTA泛洪一個LS Ack報文進行確認。
當在兩個處于完全鄰接狀態(鄰居狀態為Full)的路由器之間泛洪新的LSA時,鄰居狀態不受影響
廣播網絡中LSDB更新

- 在廣播和NBMA網絡中,鏈路狀態發送變化時,主要是通過DR路由器發送更新報文
OSPF LSA洪范與老化
- OSPF LSA老化
- LSA不老化的缺點:當網絡長時間中斷,故障網絡中的設備發起的LSA長時間無效,但仍然存儲在LSDB中,浪費設備內存。
- OSPF LSA采用遞增老化
- LSA自發起時開始計時,到達最大老化時間后,從LSDB中清除。
- OSPF最大老化時間3600秒,LSA頭部的老化時間字段用于計時。

- OSPF LSA老化與全網刷新
- 正常OSPF網絡的路由維護
- SA老化時間到達最大老化時間的一半(30分鐘),發起路由器隨機等待一段時間后重新發起該LSA,然后洪泛,刷新所有路由器LSDB。
- 新發起的LSA序列號加1,老化時間為0。
- LSA在整個洪泛過程中,除老化時間外,其余各字段都保持不變。
- 正常OSPF網絡的路由維護

泛洪新LSA(續)

OSPF區域劃分
OSPF協議分區域管理及路由器角色

OSPF區域號
- OSPF路由域:運行OSPF路由協議的網絡
- OSPF區域:OSPF是一種支持劃分多區域的協議
- Area ID:32位,用數字或IP地址表示

OSPF協議區域LSA發布
