1 OSPF路由協議概念及工作原理

1.概述
OSPF路由協議是一種典型的鏈路狀態(Link-state)的路由協議,一般用于同一個路由域內 。在這里,路由域是指一個自治系統(Autonomous System),即AS,它是指一組通過統一的路由政策或路由協議互相交換路由信息的網絡 。在這個AS中,所有的OSPF路由器都維護一個相同的描述這個AS結構的數據庫,該數據庫中存放的是路由域中相應鏈路的狀態信息,OSPF路由器正是通過這個數據庫計算出其OSPF路由表的 。
作為一種鏈路狀態的路由協議,OSPF將鏈路狀態廣播數據包LSA(Link State Advertisement)傳送給在某一區域內的所有路由器,這一點與距離矢量路由協議不同 。運行距離矢量路由協議的路由器是將部分或全部的路由表傳遞給與其相鄰的路由器 。
2.數據包格式
在OSPF路由協議的數據包中,其數據包頭長為24個字節,包含如下8個字段:
* Version number-定義所采用的OSPF路由協議的版本 。
* Type-定義OSPF數據包類型 。OSPF數據包共有五種:
* Hello-用于建立和維護相鄰的兩個OSPF路由器的關系,該數據包是周期性地發送的 。
* Database Description-用于描述整個數據庫,該數據包僅在OSPF初始化時發送 。
* Link state request-用于向相鄰的OSPF路由器請求部分或全部的數據,這種數據包是在當路由器發現其數據已經過期時才發送的 。
* Link state update-這是對link state請求數據包的響應,即通常所說的LSA數據包 。
* Link state acknowledgment-是對LSA數據包的響應 。
* Packet length-定義整個數據包的長度 。
* Router ID-用于描述數據包的源地址,以IP地址來表示 。
* Area ID-用于區分OSPF數據包屬于的區域號,所有的OSPF數據包都屬于一個特定的OSPF區域 。
* Checksum-校驗位,用于標記數據包在傳遞時有無誤碼 。
* Authentication type-定義OSPF驗證類型 。
* Authentication-包含OSPF驗證信息,長為8個字節 。
3.OSPF基本算法
3.1 SPF算法及最短路徑樹
SPF算法是OSPF路由協議的基礎 。SPF算法有時也被稱為Dijkstra算法,這是因為最短路徑優先算法SPF是Dijkstra發明的 。SPF算法將每一個路由器作為根(ROOT)來計算其到每一個目的地路由器的距離,每一個路由器根據一個統一的數據庫會計算出路由域的拓撲結構圖,該結構圖類似于一棵樹,在SPF算法中,被稱為最短路徑樹 。在OSPF路由協議中,最短路徑樹的樹干長度,即OSPF路由器至每一個目的地路由器的距離,稱為OSPF的Cost,其算法為:Cost = 100×106/鏈路帶寬
在這里,鏈路帶寬以bps來表示 。也就是說,OSPF的Cost 與鏈路的帶寬成反比,帶寬越高,Cost越小,表示OSPF到目的地的距離越近 。舉例來說,FDDI或快速以太網的Cost為1,2M串行鏈路的Cost為48,10M以太網的Cost為10等 。
【1 OSPF路由協議概念及工作原理】3.2 鏈路狀態算法
作為一種典型的鏈路狀態的路由協議,OSPF還得遵循鏈路狀態路由協議的統一算法 。鏈路狀態的算法非常簡單,在這里將鏈路狀態算法概括為以下四個步驟:
當路由器初始化或當網絡結構發生變化(例如增減路由器,鏈路狀態發生變化等)時,路由器會產生鏈路狀態廣播數據包LSA(Link-State Advertisement),該數據包里包含路由器上所有相連鏈路,也即為所有端口的狀態信息 。
所有路由器會通過一種被稱為刷新(Flooding)的方法來交換鏈路狀態數據 。Flooding是指路由器將其LSA數據包傳送給所有與其相鄰的OSPF路由器,相鄰路由器根據其接收到的鏈路狀態信息更新自己的數據庫,并將該鏈路狀態信息轉送給與其相鄰的路由器,直至穩定的一個過程 。當網絡重新穩定下來,也可以說OSPF路由協議收斂下來時,所有的路由器會根據其各自的鏈路狀態信息數據庫計算出各自的路由表 。該路由表中包含路由器到每一個可到達目的地的Cost以及到達該目的地所要轉發的下一個路由器(next-hop) 。

推薦閱讀