OSPF:使用SPF演算法的路由傳播 (轉)

amyz發表於2007-10-17
OSPF:使用SPF演算法的路由傳播 (轉)[@more@] 

OSPF:使用SPF演算法的傳播:namespace prefix = o ns = "urn:schemas--com::office" />

一、引言

RIP使用向量距離演算法在閘道器和主機中傳播路由資訊,其最大的優點就

是簡單。RIP透過限制從源地址到目的地址路徑上的跳數,有效防止了路由選擇迴圈的無限延續,從而保證了的穩定性。然而隨著Inte規模的不斷擴大,RIP協議的缺點就更加嚴重。首先就是RIP限制了網路的規模,它能使用的最大距離為15(16為不可達);其次路由器之間的完整路由資訊開銷太大。最後,“壞訊息傳播得慢”,使許多過程的收斂時間過長。

  開放最短路徑優先OSPF(Open Shortest Path First)使用鏈路狀態演算法來傳播選路資訊,它使用SPF演算法(Dijkstra演算法)。其要點如下:

1、所有的路由器都維持一個鏈路狀態,只有可達鄰站的鏈路狀態信

息才存入鏈路狀態資料庫,這個資料庫實際上就是整個互連網的拓撲結構圖。而使用RIP協議的路由器只各自知道到所有目的網路的下一站路由器,但卻不知道全網的拓撲結構。

  2、OSPF讓每一個鏈路狀態都帶上一個32bit的序號(增長的速率不得超過每5秒1次),序號越大狀態越新。每一個路由器用鏈路狀態資料庫中的資料,算出自己的路由表。

3、要網路拓撲發生任何變化,鏈路狀態資料庫就能很快地進行更新,使各

個路由器能夠重新計算出新的路由表。

  4、OSPF依靠各路由器之間的頻繁交換資訊來建立鏈路狀態資料庫,並維持這資料庫在全網範圍內的一致性(鏈路狀態資料庫的同步)。

5、OSPF不象RIP使用運輸層的資料包UDP進行傳送,而是直接用IP

資料包傳送,並且資料包很短。(圖1

IP資料包首部(20位元組)

OSPF報文首部(24位元組)

型別1至5的OSPF報文

圖1  OSPF使用IP資料包傳送

由於一個路由器的鏈路狀態只涉及到與相鄰路由器的連通狀態,因而與整個互連網的規模無關。

二、基本概念

1、鏈路狀態:所謂一個路由器的“鏈路狀態”就是該路由器都和哪些網

絡或路由器相鄰,以及將資料發往這些網路或路由器所需的費用。

  2、自治:一般簡稱為AS。一個自治系統是一個互連網路,其最重要的特點是它有權自主地決定在本系統內應採用何種路由選擇協議。

3、內部閘道器協議IGP:即在一個自治系統內部使用的路由選擇協議。

4、區域:OSPF允許進一步地將互連網劃分成一些區域。每個區域都包含一

組相鄰的網路及所連線的主機,每個閘道器都必須被放置在其中的一個區域中。每一區域內的拓撲結構對區域外是不可見的。由於保持了區域拓撲的獨立性,因此路由選擇交換資訊量比AS未被分隔時小。帶有多個介面的路由器可加入到多個區域,這些所謂的區域邊界路由器為每個區域維護一個單獨的拓撲資料庫。

5、鏈路狀態資料庫:是與路由器相關的網路的整體結構圖,它包含從同一

區域中所有路由器接收的LSA(鏈路狀態通告:包含有關鏈路介面、所用計量標準及其他變數資訊)。

6、OSPF主幹:負責在兩個區域之間傳送路由選擇資訊,它由區域邊界路由

器、跨區域網路及與其連線的路由器組成。執行OSPF的AS邊界路由器透過外部閘道器協議或資訊瞭解外部路由。

  7、指定的路由器:如果某個網路上接有N個閘道器,則它們可形成N(N-1)/2個可能的鄰接。每當某個閘道器傳送一個報文時,它會向所有N-1個鄰接閘道器傳送該報文,因而共傳送(N-1)²個鏈路狀態。當指定一個閘道器作為指定路由器後,每個閘道器都變得與指定路由器有鄰接關係,而與其它閘道器不存在鄰接關係,與特定網路相連的N個閘道器之間僅有N-1個鄰接,傳送的資訊量大為減少。指定路由器的另一項任務是為該網路傳送鏈路狀態通告,傳送鏈路狀態更新資料。

  8、後備指定路由器:當多重接入網路上的閘道器沒有選出指定路由器的時候,後備指定路由器成為指定路由器,再在餘下的閘道器中選出新的後備指定路由器。此時N個閘道器之間可能有2N-3個鄰接關係。

三、OSPF分組格式

版本號(1)

型別(1)

資料分組長度(2)

路由器ID(4)

區域ID(4)

校驗和(2)

鑑別型別(2)

鑑別(8)

資料(可變)

圖2  OSPF分組格式

各欄位含義如下(圖2):

版本號欄位:給出了OSPF的版本。

型別欄位:OSPF共有五種報文型別:

型別1:Hello報文,用來發現和維持鄰站的可達性;

型別2:Database Description報文,向鄰站給出自己的鏈路狀態資料庫中的所有鏈路狀態專案的摘要資訊;

型別3:Link State Request報文,向對方請求傳送某些鏈路狀態專案的詳細資訊;

型別4:Link State Update報文,用洪泛法向全網更新鏈路狀態;

型別5:Link State Acknowledgment報文,對鏈路更新報文的確認。

資料分組長度欄位:OSPF分組的長度,包括分組首部。

路由器ID欄位:標識資料分組的源地。

區域ID欄位:標識分組所屬的區域。

校驗和欄位:檢驗分組內容。

鑑別型別欄位:所有OSPF協議路由器間的資料交換都需要被鑑別,保證只有可信賴的路由器才能傳送路由資訊。

鑑別欄位:包括鑑別資訊。

資料:型別1至型別5的OSPF報文。

四、鏈路狀態資料庫的建立和更新

  每個路由器定期傳送一個鏈路狀態通告LSA,以提供有關路由器的鄰接資訊,或通知其他路由器某個路由器的狀態改變了。透過把已經建立的鄰接路由器與連線狀態相比較,可以檢測出失效路由器,並適時修改網路的鏈路狀態資料庫,每一路由器以其為根據計算一個最短路徑樹,該最短路徑樹提供一個路由選擇表。OSPF規定,每兩個相鄰路由器每隔10秒要交換一次Hello報文,以確知哪些鄰站是可達的。只有可達鄰站的鏈路狀態資訊才存入鏈路狀態資料庫,並由此算出路由表來。若有40秒沒有收到某個相鄰路由器發來的Hello報文,則可認為該相鄰路由器不可達,應立即修改鏈路狀態資料庫,並重新計算路由表。 

當一個路由器剛開始工作時,它只能透過Hello報文得知它有哪些相鄰的路由器在工作,以及將資料發往相鄰路由器所需的費用。OSPF讓每一個路由器用Database Description報文和相鄰路由器交換本資料庫中已有的鏈路狀態摘要資訊(指出有哪些路由器的鏈路狀態資訊已寫入資料庫)。之後路由器使用Link State Request報文向對方請求傳送自己所缺的某些鏈路狀態專案的詳細資訊。透過一系列的這種報文交換,全網的鏈路狀態資料庫就建立起來了。

在網路執行的過程中,只要一個路由器的鏈路狀態發生變化,該路由器就要使用Link State Update報文,用洪泛法向全網更新鏈路狀態。當一個重複的報文到達時,閘道器丟棄該報文,而不傳送它的副本。為了確保鏈路狀態資料庫與全網的狀態保持一致,OSPF還規定每隔一段時間,如30分鐘要重新整理一次資料庫中的鏈路狀態。

五、OSPF的圖論模型

  OSPF利用網路拓撲的圖論模型來計算最短路徑。OSPF拓撲圖中的每個節點或者對應一個閘道器,或者對應一個網路。如果網中兩實體存在物理連線,則OSPF圖在代表實體的兩個節點之間有一對有向邊,每個邊都有一個“權”。OSPF根據沿著花費最小的路徑轉發資料包的原則建立選路表。

六、OSPF的有限狀態機模型

  有兩個原因使Hello對多重接入網路特別重要。首先,網路並不檢查或報告閘道器的崩潰或重啟,為了互相保留對方的狀態資訊,與多重接入網路相連線的兩個閘道器必須交換分組。第二,與某個多重接入網路相連線的任意兩個閘道器之間都能夠直接通訊,因此OSPF必須防止這些閘道器形成過多的鄰接。

OSPF標準使用了一個有限狀態機來規範使用Hello的閘道器如何與相鄰閘道器互動作用。

一般來說,所有相鄰閘道器最初都處於DOWN狀態,表示並未準備通訊。當一個閘道器接收到相鄰閘道器發出的Hello分組後,它將相鄰閘道器從DOWN狀態變遷到INIT狀態。在此之後,相鄰閘道器或者進入2-WAY狀態,或者進入EXSTART狀態。其中2-WAY狀態表示通訊已經建立,但相鄰閘道器與該閘道器之間沒有鄰接關係,EXSTART狀態表示不但已經建立通訊,而且兩個閘道器之間存在經過雙方協商同意的鄰接關係。

當協商結束時,閘道器開始交換鏈路狀態資料庫中的資訊,以確保它們有完全相同的底層互連網拓撲圖。兩個相鄰閘道器中的一個成為“主閘道器”,它查詢另一個閘道器資料庫中的資訊。非主閘道器返回資料庫描述分組,以通知主閘道器最近接收到的該拓撲圖中每條鏈路的資訊。在建立鄰接關係時,交換資訊尤其重要,因為在網路斷連期間,某個閘道器中的資訊可能變為過時的資訊。每個拓撲資訊分組中包含一個序號,因此閘道器能夠知道相鄰閘道器資料庫中的描述資訊是否比該閘道器自身資料庫中的資訊更新。在交換完成且所有拓撲資訊都已裝載後,閘道器進入FULL狀態。在FULL狀態中,兩個閘道器定期交換分組,以保持連線。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-977191/,如需轉載,請註明出處,否則將追究法律責任。

相關文章