小白學TCP/IP(八)路由選擇篇

路由選擇

路由器的結構


路由器從功能上可以劃分爲:路由選擇和分組轉發。
分組轉發結構由三個部分組成:交換結構、一組輸入端口和一組輸出端口。

路由器分組轉發流程


  • 從數據報的首部提取目的主機的 IP 地址 D,得到目的網絡地址 N。
  • 若 N 就是與此路由器直接相連的某個網絡地址,則進行直接交付;
  • 若路由表中有目的地址爲 D 的特定主機路由,則把數據報傳送給表中所指明的下一跳路由器;
  • 若路由表中有到達網絡 N 的路由,則把數據報傳送給路由表中所指明的下一跳路由器;
  • 若路由表中沒有以上情況的,則把數據報傳送給路由表中所指明的默認路由器;
  • 否則報告轉發分組出錯。

路由選擇協議


路由選擇協議都是自適應的,能隨着網絡通信量和拓撲結構的變化而自適應地進行調整。
互聯網可以劃分爲許多較小的自治系統 AS,一個 AS 可以使用一種和別的 AS 不同的路由選擇協議。

可以把路由選擇協議劃分爲兩大類:

  • 自治系統內部的路由選擇:RIP 和 OSPF
  • 自治系統間的路由選擇:BGP

1. 內部網關協議 RIP(距離向量型)

RIP 是一種基於距離向量的路由選擇協議。距離是指跳數,直接相連的路由器跳數爲 1。跳數最多爲 15,超過 15 表示不可達。

RIP 按固定的時間間隔僅和相鄰路由器交換自己的路由表,經過若干次交換之後,所有路由器最終會知道到達本自治系統中任何一個網絡的最短距離和下一跳路由器地址。

距離向量算法:

  1. 對地址爲 X 的相鄰路由器發來的 RIP 報文,先修改報文中的所有項目,把下一跳字段中的地址改爲 X,並把所有的距離字段加 1;
  2. 對修改後的 RIP 報文中的每一個項目,進行以下步驟:
  3. 若原來的路由表中沒有目的網絡 N,則把該項目添加到路由表中;
  4. 否則:若下一跳路由器地址是 X,則把收到的項目替換原來路由表中的項目;否則:若收到的項目中的距離 d 小於路由表中的距離,則進行更新(例如原始路由表項爲 Net2, 5, P,新表項爲 Net2, 4, X,則更新);否則什麼也不做。
  5. 若 3 分鐘還沒有收到相鄰路由器的更新路由表,則把該相鄰路由器標爲不可達,即把距離置爲 16。


RIP 協議實現簡單,開銷小。但是 RIP 能使用的最大距離爲 15,限制了網絡的規模。並且當網絡出現故障時,要經過比較長的時間才能將此消息傳送到所有路由器。

2. 內部網關協議 OSPF(鏈路狀態型)

開放最短路徑優先 OSPF,是爲了克服 RIP 的缺點而開發出來的。

開放表示 OSPF 不受某一家廠商控制,而是公開發表的;最短路徑優先表示使用了 Dijkstra 提出的最短路徑算法 SPF。

OSPF 具有以下特點:

  • 向本自治系統中的所有路由器發送信息,這種方法是洪泛法。
  • 發送的信息就是與相鄰路由器的鏈路狀態,鏈路狀態包括與哪些路由器相連以及鏈路的度量,度量用費用、距離、時延、帶寬等來表示。
  • 只有當鏈路狀態發生變化時,路由器纔會發送信息。


所有路由器都具有全網的拓撲結構圖,並且是一致的。相比於 RIP,OSPF 的更新過程收斂的很快。

3. 外部網關協議 BGP(路徑向量型)

BGP(Border Gateway Protocol,邊界網關協議)

AS 之間的路由選擇很困難,主要是由於:

  • 互聯網規模很大;
  • 各個 AS 內部使用不同的路由選擇協議,無法準確定義路徑的度量;
  • AS 之間的路由選擇必須考慮有關的策略,比如有些 AS 不願意讓其它 AS 經過。

BGP 只能尋找一條比較好的路由,而不是最佳路由。

每個 AS 都必須配置 BGP 發言人,通過在兩個相鄰 BGP 發言人之間建立 TCP 連接來交換路由信息。

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