(十四)網絡層--OSPF協議

內部網關協議OSPF

前面幾篇文章我們學習了內部網關協議,提到了其中一種協議RIP,今天來看看另外一種協議:OSPF。

OSPF協議的基本特點

OSPF,即Open Shortest Path First,開放最短路徑優先,它最主要的特徵就是使用分佈式的鏈路狀態協議,而不是像RIP那樣的距離向量協議。OSPF的三個要點和RIP協議的都不一樣(和哪些路由器交換信息?交換什麼信息?何時交換?)
(1)向本自治系統中所有路由器發送信息。這裏使用的是洪泛法,即路由器通過所有輸出端口向所有相鄰的路由器發送信息,而每一個相鄰路由器又再將此信息發往其所有的相鄰路由器。(除了剛剛發來消息那個路由器)。這樣,最終整個區域中所有的路由器都得到了這個信息的一個副本。RIP協議僅僅向自己相鄰的幾個路由器發送信息。

(2)發送的信息就是與本路由器相鄰的所有路由器的鏈路狀態,只是路由器所知道的部分信息。鏈路狀態就是說明本路由器都和哪些路由器相鄰,以及該鏈路的度量(用來表示費用、距離、時延、帶寬等等)。RIP協議發送的信息是:到所有網絡的距離和下一跳路由器。

(3)只有當鏈路狀態發生變化時,路由器才向所有路由器用洪泛法發送此信息。RIP協議不管網絡拓撲有無發生變化,路由器之間都要定期交換路由表的信息。

OSPF的鏈路狀態數據庫能較快的進行更新,使各個路由器能及時更新其路由表,OSPF的更新過程收斂的快是其重要優點。

由於各路由器之間頻繁的交換鏈路狀態信息,因此所有的路由器最終都能建立一個鏈路狀態數據庫,這個數據庫實際上就是全網的拓撲結構圖,全網是一致的。每一個路由器都知道全網共有多少個路由器,以及哪些路由器是相連的,其代價是多少。每一個路由器使用鏈路狀態數據庫中的數據,構造出自己的路由表。RIP協議下,每一個路由器雖然知道自己到所有網絡的距離以及下一跳路由器,但卻不知道全網的拓撲結構,只有到了下一跳路由器,才知道再下一跳應當怎樣走。

爲了使OSPF能夠用於規模很大的網絡,OSPF將一個自治系統再劃分爲若干個更小的範圍,叫做區域。如下圖所示:

一個自治區域被劃分爲四個區域,每個區域都有一個32位的區域標識符。當然一個區域也不能太大,一個區域內的路由器最好不超過200個。劃分區域的好處就是把利用洪泛法交換鏈路狀態信息的範圍侷限於每一個區域而不是整個自治系統,這就減少了整個網絡上的通信量。在一個區域內部的路由器只知道本區域的完整拓撲,而不知道其它區域的網絡拓撲。爲了使每一個區域能夠和本區域以外的區域進行通信,OSPF使用層次結構的區域劃分。在上層的區域叫做主幹區域,主幹區域的標識符規定爲0.0.0.0,它的作用是用來連通其它在下層的區域。從其它區域來的信息都由區域邊界路由器進行概括。在上圖中,R3, R4, R7都是區域邊界路由器。在主幹區域內的路由器叫做主幹路由器,如R3, R4, R5, R6, R7。一個主幹路由器可以同時是區域邊界路由器,如R3, R4, R7。在主幹區域內還要有一個路由器專門和本自治系統外的其它自治系統交換路由信息,這樣的路由器叫做自治系統邊界路由器,如R6。

採用分層次劃分區域的方法雖然使交換信息的種類增多了,同時也使OSPF協議更加複雜了,但卻使每一個區域內部交換路由信息的通信量大大減小,因而使OSPF協議能夠用於規模很大的自治系統中。

OSPF不用UDP而是直接用IP數據報傳送(其IP數據報首部的協議字段值爲89)。OSPF構成的數據報很短,這樣做可減少路由信息的通信量,也不必將長的數據報分片傳送(分片傳送的數據報只要丟失一個,就無法組裝成原來的數據報,這導致整個數據報就必須重傳)。

OSPF分組使用24字節的固定長度首部,分組的數據部分有五種類型,先來看下OSPF首部各字段的意義:

  • 版本
    當前的版本號是2

  • 類型
    是五種分組類型中的一種

  • 分組長度
    包括OSPF首部在內的分組長度,以字節爲單位

  • 路由器標識符
    標誌發送該分組的路由器的接口的IP地址

  • 區域標識符
    分組屬於的區域的標識符

  • 檢驗和
    用來檢驗分組中的差錯

  • 鑑別類型
    目前只有兩種,0(不用)和1(口令)

  • 鑑別
    鑑別類型爲0時就填入0,鑑別類型爲1則填入8個字符的口令

除了以上基本特點外,OSPF還具有下列的一些特點:
(1)OSPF允許管理員給每條路由指派不同的代價。例如,高帶寬的衛星鏈路對於非實時的業務可設置爲較低的代價,但對於時延敏感的業務可設置爲較高的代價。因此,OSPF對於不同類型的業務可計算出不同的路由。商用的網絡在使用OSPF時,通常根據鏈路帶寬來計算鏈路的代價

(2)如果到同一個目的網絡有多條相同代價的路徑,那麼可以將通信量分配給這幾條路徑,這叫做多路徑間的負載平衡

(3)所有在OSPF路由器之間交換的分組,都具有鑑別的功能,因而保證了僅可在可信賴的路由器之間交換鏈路狀態信息

(4)OSPF支持可變長度的子網劃分和無分類的編址CIDR(超網)

(5)由於網絡中的鏈路狀態可能經常發生變化,因此OSPF讓每一個鏈路狀態都帶上一個32位的序號,序號越大就越新。OSPF規定,鏈路狀態序號增長的速率不得超過每5秒鐘1次

OSPF的五種分組類型

OSPF共有以下五種分組類型
(1)類型1,問候分組,用來發現和維持鄰站的可達性

(2)類型2,數據庫描述分組,向鄰站給出自己的鏈路狀態數據庫中的所有鏈路狀態項目的摘要信息

(3)類型3,鏈路狀態請求分組,向對方請求發送某些鏈路狀態項目的詳細信息

(4)類型4,鏈路狀態更新分組,用洪泛法對全網更新鏈路狀態。路由器使用這種分組將其鏈路狀態通知給鄰站。

(5)類型5,鏈路狀態確認分組,對鏈路更新分組的確認。

OSPF規定,每兩個相鄰的路由器,每隔10s要交換一次問候分組,這樣就能確知哪些鄰站是可達的。對相鄰路由器來說,可達是最基本的要求,因爲只有可達鄰站的鏈路狀態信息才存入鏈路狀態數據庫。在正常情況下,網絡中傳送的絕大多數OSPF分組都是問候分組。若有40s沒有收到某個相鄰路由器發來的問候分組,則可認爲該相鄰路由器是不可達的,應立即修改鏈路狀態數據庫,並重新計算路由表。

其它的四種分組都是用來進行鏈路狀態數據庫的同步。當一個路由器剛開始工作時,它只能通過問候分組得知它有哪些相鄰的路由器在工作,以及將數據發往相鄰路由器所需的代價。OSPF讓每一個路由器用數據庫描述分組和相鄰路由器交換本數據庫中已有的鏈路狀態摘要信息。摘要信息主要就是指出有哪些路由器的鏈路狀態信息已經寫入了數據庫。經過與相鄰路由器交換數據庫描述分組後,路由器就使用鏈路狀態請求分組,向對方請求發送自己所缺少的某些鏈路狀態項目的詳細信息。通過一系列的這種分組交換,全網同步的鏈路數據庫就建立了。下圖給出了OSPF的基本操作,說明了兩個路由器需要交換的各種類型的分組。

爲了確保鏈路狀態數據庫與全網的狀態保持一致,OSPF規定每隔一段時間,要刷新一次數據庫中的鏈路狀態。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章