計算機網絡-4-7-內部網關協議OSPF


內部網關協議OSPF(開放最短路徑優先)

出現的原因:為了克服RIP協議的缺點在1989年開發出來,開放

表明OSPF協議不受任何廠家的限制。最短路徑優先是因為使用了最短路徑算法SPF。

OSPF最主要的特征是使用分布式的鏈路狀態協議(link state protocol),而不是像RIP協議那樣的距離向量協議,和RIP協議相比,OSPF的三個要點和RIP都不一樣:

  • 向本自治系統中的所有路由器發送信息。這里使用的方法是洪范法(flooding),這就是路由器通過所有輸出端口向相鄰的路由器發送信息。而每一個相鄰的路由器又再將此信息發往其所有的相鄰路由器。這樣,最終整個所有的路由器都得到了這個信息的一個副本。更具體的做法后面繼續討論,我們應該注意,RIP協議是僅僅向自己相鄰的幾個路由器發送信息。
  • 發送的信息就是與本路由器相鄰的所有路由器的鏈路狀態,但這只是路由器所知道的部分信息,所謂的鏈路狀態就是說明本路由狀態都和哪些路由相鄰,對於RIP協議,發送的信息是:“到所有網絡的距離和下一跳路由器”。
  • 只有當鏈路狀態發生變化時候,路由器才能向所有路由器采用洪范法發送此信息。而不像RIP那樣,不管網絡拓撲結構是否發生變化,路由器之間都要定期更換路路由表信息。

由於各路由器之間頻繁的交換鏈路狀態信息,因此所有的路由器最終都能建立一個鏈路狀態數據庫(link-state database),這個數據庫的實質是全網的拓撲結構圖,這個拓撲結構在全網就是一致的。因此,每一個路由器知道全網共有多少個路由器,以及那些路由器是相連的,其代價是多少等等。每一個路由器使用鏈路狀態數據庫中的數據,構造出自己的路由表(例如迪傑斯特拉的最短路徑算法)。我們注意到,RIP協議的每一個路由器雖然知道所有網絡的距離以及下一跳以及下一跳路由器,但卻不知道全網的拓撲結構(只有到了下一跳路由器,才能知道再下一跳怎么走)

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

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

OSPF分組使用24字節的固定長度首部(圖4-35),分組的數據部分五種類型分組中的一種。

image

  1. 版本 當前版本是2。
  2. 類型 五種類型分組中的一種。
  3. 分組長度 包括OSPF首部在內的分組長度,以字節為單位。
  4. 路由器標識符 標志發送該分組的路由器的接口的IP地址。
  5. 區域標識符 非組屬於區域的標識符。
  6. 檢驗和 用來測量分組中的差錯。
  7. 鑒別類型 目前只有兩種,0(不用)和1(口令)。
  8. 鑒別 鑒別類型為0時就填入0,為1時則填入8個字符的口令。

除了以上的基本特點,OSPF還有下列一些特點:

  1. OSPF允許管理員給每一條路由指派不同的代價,OSPF對於不同類型的業務計算出不同的路由,這種靈活性時RIP沒有的。
  2. 如果到同一個網絡有多余的相同代價的路徑,那么可以將通信量分配給在這幾條路徑,這種叫做多路徑之間的均衡負載(load balancing)。在代價相同的多條路徑上分配通信量時通信量工程的簡單形式,RIP只能找出到某一個網絡的一條路徑。
  3. 所有在OSPF路由器之間交換的分組(例如:鏈路狀態更新分組)都具有鑒別的功能,因而能保證僅在可信賴的路由器之間交換交換鏈路狀態信息。
  4. OSPF支持可變長的子網划分和無分類編址CIDI。
  5. 由於網絡中的鏈路狀態可能經常發生變化,因此OSPF讓每一個鏈路狀態都帶上一個32位的序號,序號越大狀態越新。OSPF規定,鏈路狀態序號增長的速率不得超過每5秒1次,這樣,全部序號空間在600年內不會產生重復號。

OSPF的五種分組類型

OSPF一共有以下五種分組類型:

  1. 類型1,問候(Hello)分組,用來發現和維持鄰站的可達性。
  2. 類型2,數據庫描述(Database Description)分組,向鄰站給出自己的鏈路狀態數據庫中的所有鏈路狀態項目的摘要信息。
  3. 類型3,鏈路狀態請求(Link State Request)分組,向對方請求發送某些鏈路狀態項目的詳細信息。
  4. 類型4,鏈路狀態更新(Link State Update)分組,用洪范法對全網更新鏈路狀態。這種分組時最復雜的,也是OSPF協議最核心的部分。路由器使用這種分組將其鏈路狀態通知給鄰站。鏈路狀態更新分組共有5種不同的鏈路狀態。
  5. 類型5,鏈路狀態確認(Link State Acknowledgment)分組,對鏈路更新分組的確認。OSPF協議規定,每兩個相鄰的路由器每隔10s要交換一次問候分組,這樣就能確認哪些鄰站是可達的。若有40s沒有收到某個相鄰路由器發送過來的問候分組,則可認為該相鄰路由器時不可達的,應立即修改鏈路狀態數據庫,並重新計算路由表。

當一個路由器剛開始工作的時候,它只能通過問候分組得知它有哪些相鄰的路由器在工作,以及將數據發往相鄰路由器所需要的“代價”。如果所有的路由器都把自己的本地鏈路狀態信息對全網進行廣播,那么個路由器只要將這些鏈路狀態信息綜合起來就可得出鏈路狀態數據庫,但這樣做開銷太大,因此OSPF采用下面的方法。

OSPF讓每一個路由器用數據庫描述分組和相鄰路由器交換本數據庫中已有的鏈路狀態摘要信息,摘要信息主要是指出了那些路由器狀態信息(以及序列號)已經寫入了數據庫,經過與相鄰路由器交換數據庫描述分組后,路由器就使用鏈路狀態請求分組,向對方請求發送自己所缺少的某些鏈路狀態項目的詳細信息。通過一系列的這種分組交換,全網同步的鏈路數據庫就建立了,圖4-36給出了OSPF的基本操作,說明了兩個路由器需要交換的各種類型分組。

image

在網絡運行的過程中,只要一個路由器鏈路狀態發生變化,該路由器就要使用鏈路狀態更新分組,用洪范法發出鏈路狀態更新分組。OSPF使用的是可靠的洪范算法,其要點見圖4-37所示,設路由器R用洪范法發出鏈路狀態更新分組。圖中用一些小的箭頭表示更新分組。第一次先給相鄰的三個路由器。這三個路由器將收到的分組再進行轉發時,要將其上游路由器除外。可靠的洪范算法是在收到更新分組后要發送確認(收到的更新分組只需要發送一次確認)。圖中的空心箭頭表示確認分組。

image

為了確保鏈路狀態數據庫與全網的狀態保持一致, OSPF 還規定每隔一段時間,如 30 分鍾,要刷新一次數據庫中的鏈路狀態。由於一個路由器的鏈路狀態只涉及到與相鄰路由器的連通狀態,因而與整個互聯網的規模並無直接關系。因此當互聯網規模很大時, OSPF 協議要比距離向量協議犯P好得多。由於 OSPF 沒有“壞消息傳播得慢”的問題,據統計,其響應網絡變化的時間小於 100 ms 。若N個路由器連接在一個以太網上,則每個路由器要向其他(N-l)個路由器發送鏈路狀態信息,因而共有 N(N-l)個鏈路狀態要在這個以太網上傳送。 OSPF協議對這種多點接入的局域網采用了指定的路由器(designated router)的方法,使廣播的信息量大大減少。指定的路由器代表該局域網上所有的鏈路向連接到該網絡上的各路由器發送狀態信息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM