OSPF 開放式最短路徑優先(Open Shortest Path First)是一種動態路由協議,它屬于鏈路狀態路由協議,具有路由變化收斂速度快、無路由環路、支持變長子網掩碼和匯總、層次區域劃分等優點。
1 OSPF Area
為了適應大型網絡,OSPF在AS內劃分了多個Area,每個OSPF路由器值維護所在區域的完整鏈路狀態信息。劃分區域時,會創建一個稱為Area 0的中心區域,其他區域始終與Area 0相連。
路由器分類 | 說明 |
---|---|
區域內路由器IR | 所連接的網絡屬于同一個區域,IR只運行一個OSPF協議實例。 |
主干路由器BBR | 主干區域中的路由器 |
區域之間的路由器 ABR(匯聚IP) | 連接到多個AS,且必須連到主干區域,為每個鏈接Area分別運行一個OSPF協議實例 |
AS邊界路由器 ASBR | 與其他AS交換路由信息 |
虛擬鏈路
- 主干區域必須是聯通的,所有區域邊界路由器ABR都能通過主干區域到達其他區域邊界路由器
- 如果不滿足上面的條件,主干區域可以配置虛擬鏈路(virtual link)使其變成聯通的
下圖中 R3 和 R4 在主干區域,但是需要通過Area3才能實現聯通。這時,可以在主干區域的R3、R4之間配置一條 virtual link,使得主干區域連續,實際上這條鏈路是通過N1中的物理連接來進行通信
2 Route ID / DR / BDR
Router ID 路由器ID,32位無符號整數,默認用loopback接口中最大的IP作為 Router ID。
Name | Info |
---|---|
DR | Designated Router, 選舉Router ID最大的路由為DR 只有DR能代表該網絡發送網絡的鏈路狀態 |
BDR | Backup Designated Router,選舉Router ID第二大的路由為 BDR DR發生故障的時候,BDR變成DR |
DROTHER | Not DR nor BDR |
R1> show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
192.168.123.2 1 FULL/BDR 00:00:32 192.168.123.2 FastEthernet0/0
192.168.123.3 1 FULL/DR 00:00:31 192.168.123.3 FastEthernet0/0R3> show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
192.168.123.1 1 FULL/DROTHER 00:00:36 192.168.123.1 FastEthernet0/0
192.168.123.2 1 FULL/BDR 00:00:39 192.168.123.2 FastEthernet0/0R2> show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
192.168.123.1 1 FULL/DROTHER 00:00:31 192.168.123.1 FastEthernet0/0
192.168.123.3 1 FULL/DR 00:00:32 192.168.123.3 FastEthernet0/0
3 LSA / OSPF 鄰居表 / LSDB / OSPF路由表
LSA (Link State Advertisement)鏈路狀態通告,用于描述鏈路狀態信息,路由器接口的狀態信息,例如接口開銷、連接的對象。
借用CSDN其他文章中的圖 原文鏈接
- 相鄰路由器之間周期性發送HELLO報文,以便建立和維護鄰居關系
- 建立鄰居關系后,給鄰居路由器發送數據庫描述報文(DBD),也就是將自己鏈路狀態數據庫中的所有鏈路狀態項目的摘要信息發送給鄰居路由器
- 收到數據庫描述報文后,若發現自己缺少其中某些鏈路狀態項目,則會發送鏈路狀態請求報文(LSR)。
- 對方收到鏈路狀態請求報文后,則會將其所缺少的鏈路狀態項目的詳細信息封裝在鏈路狀態更新報文(LSU)中發送回去
- 收到鏈路狀態更新報文后,將這些信息添加到自己的鏈路狀態數據庫中,隨后發回鏈路狀態確認報文(LSACK)
如上,OSPF在傳遞鏈路狀態信息之前,需要建立 OSPF鄰居關系 ,通過hello包文件里,OSPF鄰居表顯示了OSPF路由器之間的鄰居狀態,使用 display ospf peer
查看:
R1 > display ospf peerOSPF Process 1 with Router ID 10.0.1.1Neighbors
Area 0.0.0.0 interface 10.0.12.1(G1/0/0)'s neighbors
Router ID:10.0.12.1 Address: 10.0.12.2 GR State: NormalState: Rull Mode:Nbr is Master Priority:1DR: 10.0.12.1 BDR:10.0.12.2 MTU:0...
LSDB(Link State DataBase, 鏈路狀態數據庫),用于描述AS內部的拓撲結構。
每個路由器負責發現、維護與鄰居的關系,并將已知的鄰居和鏈路費用 LSA報文 描述,通過可靠的泛洪與 AS 內的其他路由器周期性交互,每個 AS 內的路由器收到所有 LSA 并放入自己的 LSDB。
每臺路由器基于 LSDB,使用 SPF(Shortest Path First,最短路徑優先) 算法進行計算,每臺路由器都計算出一棵以自己為根、無環的、擁有最短路徑的樹,這樣路由器就已經知道了到達所有網段的優選路徑。
邊界路由器可以通過距離矢量算法互相傳遞路由,從而實現整個網絡的互聯。
每隔一段時間或鏈路狀態發生變化時,重新生成LSA,路由器通過泛洪將LSA通告出去,實現路由實時更新。