RIP及距離向量算法


>>>預備知識

網絡層提供兩種服務:

  • 虛電路服務
  • 數據報服務

 

虛電路服務與數據報服務的對比
對比的方面 虛電路服務 數據報服務
思路 可靠通信由網絡保證 可靠通信由終系統保證
連接的建立 必須有 不需要
終點地址 僅在連接建立階段使用,每個分組使用短的虛電路號 每個分組都有終點的完整地址
分組的轉發 屬於同一條虛電路的分組均按照同一路由進行轉發 每個分組獨立選擇路由進行轉發
當結點出故障 所有通過出故障的結點的虛電路均不能工作 出故障的結點可能會丟失分組,一些路由可能發生變化
分組的順序 按發送順序 不按發送順序
端到端的差錯處理和流量控制 可由網絡負責,也可由終系統負責 由終系統負責

 

因數據報服務在分組轉發時,每個分組獨立選擇路由進行轉發,從而引出路由選擇協議

路由選擇協議的核心是路由算法

 

理想路由算法特點:

  • 算法必須是正確的和完整的
  • 算法在計算上應簡單
  • 算法應能適應通信量和網絡拓撲結的變化,要有自適應性
  • 算法應具有穩定性
  • 算法應是公平的
  • 算法應是最佳的

 

路由算法依據自適應性來划分為:

  • 靜態路由選擇策略(非自適應路由選擇)
  • 動態路由選擇策略(自適應路由選擇)

由於互聯網的規模非常大,以及各單位的保密需求,互聯網采用分層次的路由選擇協議。為此,將互聯網分為許多較小的自治系統(AS),AS是在單一技術管理下的一組路由器。一個AS對其他AS表現出的是一個單一的和一致的路由選擇策略

路由選擇協議分類:

一)內部網關協議IGP

  •   RIP
  •   OSPF

自治系統內部的路由選擇叫做域內路由選擇

二)外部網關協議EGP

  •   BGP-4(BGP)

自治系統之間的路由選擇叫做域間路由選擇 

 


 

RIP

中文名:路由信息協議

RIP是一種分布式基於距離向量的路由選擇協議

距離的定義:也稱“跳數(hop count)”,從一路由器到直接連接的網絡的距離定義為 1。從一路由器到非直接連接的路由器的距離定義為所經過的路由器數加 1。

RIP允許一條路徑最多包含 15 個路由器,即“距離”等於 16 時不可達。

RIP選擇一條具有最少路由器的路由(最短路由),哪怕還存在另一條高速但路由器較多的路由。

特點:每一個路由器都要不斷地和其他路由器交換路由信息。

  1. 僅和相鄰路由器交換信息
  2. 路由器交換的信息是當前本路由器所知道的所有信息,即當前的路由表
  3. 按固定時間間隔交換路由信息

路由器剛開始工作時,路由表是空的,但經過若干次的更新后,所有的路由器最終都會知道到達本自治系統中任何一個網絡的最短距離和下一跳路由器的地址。以上過程,叫 “收斂”,收斂是在AS中所有結點都得到正確的路由選擇信息的過程。

路由表中最主要的信息:到某個網絡的距離(最短距離),經過的下一跳地址。

為了找出最短距離,由此引出 距離向量算法——

 

距離向量算法

此算法的基礎是Bellman-Ford算法,這種算法的要點是:

  設 X 是結點 A 到 B 的最短路徑上的一個結點。若把路徑 A到B 拆成兩段路徑 A到X 和 X到B,則每段路徑 A到X 和 X到B 也都分別是結點 A到X 和結點 X到B 的最短路徑。

對每一個相鄰路由器發送過來的RIP報文,進行以下步驟:

1)對地址為 X 的相鄰路由器發來的RIP報文,先修改此報文的所有項目:把“下一跳”字段中的地址都改為 X ,並把所有的“距離”字段值加 1   #假設從位於 X 的相鄰路由器發來RIP報文的某一項目是:“Net2,3,Y”,意思是“我經過路由器Y到網絡Net2的距離是3”,那么本路由器可推斷出“我經過路由器X到網絡Net2的距離是3+1=4”,於是將收到的RIP報文的這一項目修改為:“Net2,4,X”,作為下一步和路由表中原有項目進行比較時使用(比較后確定是否更新)每一個項目都有三個關鍵數據,即:到目的的網絡 N ,距離 d ,下一跳路由器 X 。

2)對修改后的RIP報文中的每個項目,執行以下步驟:

if (原來的路由表中沒有目的網絡N):

  把該項目添加到路由表中  #本路由表中沒有到目的網絡Net2的路由,那么路由表中就要加入新的項目“Net2,4,X”  

在路由表中有目的網絡N,查看下一跳路由器地址:elif(下一跳路由器地址是 X):

  把收到的項目替換原路由表中的項目  #不管原來路由表中項目時“Net2,3,X”還是“Net2,5,X”,都要更新為“Net2,4,X”

在路由表中有目的網絡N,但下一跳路由器不是X,比較距離d與路由表中的距離:elif(收到的項目中的距離 d 小於路由表中的距離):

  更新  #若路由表中已有項目“Net2,5,P”,就更新為“Net2,4,X”

else:

  無動作  #若距離更大了,顯然不應更新;若距離不變,也不更新

3)若三分鍾還沒收到相鄰路由器的更新路由表,則把此相鄰路由器記為不可到達的路由器,即“距離”為 16。

4)return

 

【例】:

已知路由器R6有表a所示的路由表。現收到相鄰路由器R4發來的路由更新信息,如表b所示。試更新路由器R6的路由表。

表 a
目的網絡 距離 下一跳路由器
Net2 3 R4
Net3 4 R5
…… …… ……

 

表 b
目的網絡 距離 下一跳路由器
Net1 3 R1
Net2 4 R2
Net3 1 直接交付

解:先將收到的RIP報文改為表c:

表 c
目的網絡 距離 下一跳路由
Net1 3+1=4 R4
Net2 4+1=5 R4
Net3 1+1=2 R4

將表c與表a比較:

row1:沒有Net1,添加到表a中

row2:有Net2,且下一跳路由器相同,更新

row3:有Net3,但下一跳路由器是不同,比較距離得到,新的距離小於路由表中距離,更新

綜上所述:

更新后R6的路由表如表d 所示:

表 d
目的網絡 距離 下一跳
Net1 4 R4
Net2 5 R4
Net3 2 R4
…… …… ……

 

 

RIP協議讓AS中所有路由器都和自己相鄰路由器定期交換路由信息,並不斷更新路由表,使得每個路由器到每個目的網絡的路由都是最短的(跳數最少)。


免責聲明!

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



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