OSPF協議概述
OSPF 是 Open Shortest Path First(即「開放最短路由優先協議」)的縮寫。它是 IETF 組織開發的一個基於鏈路狀態的自治系統內部路由協議。在IP 網絡上,它通過收集和傳遞自治系統的鏈路狀態來動態地發現並傳播路由。
- 適應範圍—— OSPF 支持各種規模的網絡,最多可支持幾百台路由器。
- 快速收斂—— 如果網絡的拓撲結構發生變化,OSPF 立即發送更新報文,使這一變化在自治系統中同步。
- 無自環—— 由於 OSPF 通過收集到的鏈路狀態用最小生成樹算法計算路由,故從算法本身保證了不會生成自環路由。
- 區域劃分—— OSPF 協議允許自治系統的網絡被劃分成區域來管理,區域間傳送的路由信息被進一步抽象,從而減少了占用網絡的帶寬。
- 等值路由—— OSPF 支持到同一目的地址的最多三條等值路由。
- 路由分級—— OSPF 使用 4 類不同的路由,按優先順序來說分別是:區域內路由、區域間路由、第一類外部路由、第二類外部路由。
- 支持驗證—— 它支持基於接口的報文驗證以保證路由計算的安全性。
鏈路狀態
上圖中 RTA 通過 PPP 協議與另一台路由器RTB直接相連,通過一個X.25 網絡與 RTC 和 RTD 相連,並且 RTA 連接著一個區域網。RTA 通過如下的一條 LSA(鏈路狀態廣播)來描述周邊網絡的拓撲結構。
連接數目 = 3 ;本路由器一共有三個連接
/* 對X.25網絡的描述*/
連接標識 = 30.0.0.3 ;本網段中某台路由器的IP位址.
連接數據 = 30.0.0.1 ;RTA連接到本網段的接口的IP位址
連接類型 = 2 ;連接的類型是一個轉換網段(網段中還有其它路由器)
連接花費 = 1 ;從30.0.0.1接口發送報文的花費值
/* 對Ethernet的描述*/
連接標識 = 10.0.0.0 ;本網段的地址
連接數據 = 0xff000000 ;本網段的掩碼
連接類型 = 3 ;連接的類型是一個末端網段(網段中沒有其它路由器)
連接花費 = 2 ;從10.0.0.1接口發送報文的花費值
/* 對ppp的描述*/
連接標識= 20.0.0.2 ;鄰接點RTB的路由器標識(router id)
連接數據= 20.0.0.2 ;鄰接點RTB的IP位址
連接類型= 1;連接的類型是另一台路由器
連接花費= 8;從20.0.0.1接口發送報文的花費值
計算路由
上圖中描述了通過 OSPF 協議計算路由的過程。
(一)由四台路由器組成的網絡,連線旁邊的數字表示從一台路由器到另一台路由器所需要的花費。為簡化問題,我們假定兩台路由器相互之間發送報文所需花費是相同的。
(二)每台路由器都根據自己周圍的網絡拓撲結構生成一條 LSA(鏈路狀態廣播),並通過相互之間發送協議報文將這條 LSA 發送給網絡中其它的所有路由器。這樣每台路由器都收到了其它路由器的 LSA,所有的 LSA 放在一起稱作 LSDB(鏈路狀態資料庫)。顯然,4 台路由器的 LSDB 都是相同的。
(三)由於一條 LSA 是對一台路由器周圍網絡拓撲結構的描述,那麼LSDB 則是對整個網絡的拓撲結構的描述。路由器很容易將 LSDB 轉換成一張帶權的有向圖,這張圖便是對整個網絡拓撲結構的真實反映。顯然,4 台路由器得到的是一張完全相同的圖。
(四)接下來每台路由器在圖中以自己為根節點,使用相應的算法計算出一棵最小生成樹,由這棵樹得到了到網絡中各個節點的路由表。顯然,4 台路由器各自得到的路由表是不同的。
這樣每台路由器都計算出了到其它路由器的路由。
區域劃分
OSPF 協議允許自治系統的網絡被劃分成區域來管理,區域間傳送的路由信息被進一步抽象,從而減少了占用網絡的帶寬。
本圖中在 AS100 內運行 OSPF 協議,自治系統被劃分為三個不同的區域,分別用不同的區域號(AREA ID)來標識。其中區域號為 0 的區域被稱作「骨幹區域」。
注意:
如果自治系統被劃分成一個以上的區域,則必須有一個區域是骨幹區域,並且保證其它區域與骨幹區域直接相連或邏輯上相連,且骨幹區域自身也必須是連通的。
OSPF 協議配置
本例中 RTA 在兩個接口上配置 OSPF 協議,乙太網配置為區域 1,串口 S0 配置成區域 0。
命令 含義
router ospf enable 啟動 OSPF 協議
ip ospf enable area 0 指定本接口運行的區域號
調試和監控
用以上兩條命令監控和調試 OSPF 協議。
show ip ospf 命令可以查看當前路由器配置 OSPF 的情況:路由器的標識(router id),區域狀態,接口狀態,引入的外部路由情況等。
debug ip ospf packet 可以監控 OSPF 協議收發報文的情況,並列印出報文內容。
小結