1. 程式人生 > >計算機網路知識點——8.網路層之RIP協議

計算機網路知識點——8.網路層之RIP協議

距離向量演算法:

距離向量演算法(Distance vector algorithm)是一種最短路徑演算法。基本思想如下:

每個節點週期性的傳送它自己的距離向量估計(distance vector estimate)給鄰居。

主要使用在RIP協議。

每隔一段時間,路由器會向所有鄰居結點發送它到每個目的結點的距離表,同時它也接收每個鄰居結點發來的距離表。這樣以此類推,經過一段時間後便可將網路中各路由器所獲得的距離向量資訊在各路由器上統一起來,這樣各路由器只需要檢視這個距離矢量表就可以為不同來源分組找到一條最佳的路由。下面這個例子看完便能理解了。

RIP協議:

路由資訊協議(Routing Information Protocol,RIP)是一種採用距離向量演算法的路由協議。

到目的網路的距離以跳為單位。最大距離為15,距離16表示無窮大,即目的網路不可一條有限的路徑長度不得超過15。正是這一規定限制了RIP的使用範圍,使RIP侷限於小型的區域網絡中。

初始時每個RIP路由器只有到直連網的路由,他們的距離為1。

每30sRIP路由器把它的整個路由表傳送給鄰居。具體實現時每個鄰居會錯開發送,30s的時間也會隨機變化一點。

當收到鄰居發來的路由表(update packet),路由器將更新它的路由表<目的網路,開銷,下一跳>:

(1)收到的路由的距離全部加1(即一跳的距離)。

(2)利用上述路由修改路由表:

  • 把路由表中不存在的路由加入路由表
  • 如果比路由表中的路由的距離更小,則更新該路由的距離為新距離,把下一跳改為鄰居
  • 如果路由存在,就要重置失效定時器。

RIP路由表的每一項都有TTL(Time-To-Live),用失效定時器(invalid timer)計時,超時則讓該路由失效。

例:路由器A~G執行RIP協議,每跳的距離為1。B和C是鄰居。如果B和C此時的路由表如下所示:

當路由器B接收到來自C的路由表之後對路由表進行自己的更新, 請寫出更新之後B的路由表(注意:網路下標從小到大):

N14介面
N37
N62
N74
N95
N101
(我也不清楚N3為啥為7,我覺得是3呀……)

RIP協議的問題:

慢收斂問題(slow convergence):


慢收斂是RIP相對於OSPF而言的,就是RIP依靠定時器進行30秒一次的週期更新路由器的路由表,但當網路拓撲結構發生變化時,它收斂於新拓撲的速度慢
,就有可能導致路又環的產生,使錯誤的資料重複傳送。

例:如果路由器B離路由器A的距離是10跳: Router A--10 hops--Router B。當一個網路接入路由器A,路由器B要建立該網路的路由最長需要多少秒?
解析:330,距離是10跳指10個路由器,答案就是330。 

計數到無窮問題(count to infinity):


例:兩個RIP路由器連線了三個網路: N1--R1--N2--R2--N3。在R1因N1失效而把N1的路由的距離改為16(無窮大)之後,下面哪個事件會觸發計數到無窮現象?
A. R1 sends its routing table to R2.
B. R2 sends its routing table to R1.
C. N2 fails.

D. N3 fails.

答案:B,當R2傳送給R1時,R1會更新自己距目的地址為2+1=3,然後發回R2,R2改為3+1=4,之間往復迴圈知直到兩者均為16才將之丟棄。

RIP不適用於路徑劇烈變化網路環境中,也不適用於大型的網路環境中。RIP在小型網路中仍在大量使用,現在大型網路多采用OSPF。

RIP協議的技術:

  1. 水平分割技術(split horizon):從一個介面學來的路由不會從該介面發回去。
  2. 毒性反轉技術(poison reverse):當一條路由變為無效之後,路由器並不立即將它從路由表中刪除,而是將其距離改為16之後廣播為鄰居,使鄰居所擁有的該路由立即失效,而不是等待TTL到期後刪除,以迅速消除路由環路,這種方法稱為毒性反轉,距離為16的路由稱為毒化路由(poisoned route)。
  3. 抑制技術(hold down):距離被改為無窮大的路由在一段短時間(180s)內其距離不允許被修改。
  4. 觸發更新(triggered update):一旦出現路由變化將立即把增加或更新的路由發給鄰居。原有的30s發一次完整的路由表依然不變。

RIP協議的定時器:

  1. 更新定時器(update timer)控制一個路由器如何定期把路由表傳送給鄰居。預設時間為30s。
  2. 一個路由的失效定時器(Invalid timer)到期時它將被標記為無效路由(距離改為16)。每次更新該路由時其失效定時器都會被複位。預設值為180s。
  3. 一個路由的清除定時器(flush timer)到期時將從路由表中刪除。預設值為240s。
  4. 抑制定時器(hold-down timer)是在路由的距離變為無窮大(包括收到毒化路由)時啟動並在其到期之前不允許修改該路由的距離。預設值為180s。


RIPv1的資料包格式:


RIPv1資料包用UDP資料報封裝(埠號為520),並且採用廣播方式傳送給鄰居。RIPv1只能釋出有類網,因此,對於存在非鄰接子網的情況,很可能發生錯誤。

  • 如果請求分組填寫了網路地址, 則用距離進行響應。如果請求的網路地址為0.0.0.0,則用整個路由表進行響應。
  • 30秒和觸發更新都是傳送響應分組。
  • 如果專案超過25項,則可以傳送多個響應分組 。

RIPv2的資料包格式:


RIPv2支援無類網。RIPv2資料包可以採用廣播方式或多播方式(244.0.0.9,所有RIPv2路由器)傳送給鄰居。

RIPv2可以把第一個路由項用於身份認證。

  • RIP協議的特點:
  • RIP協議簡單、容易實現
  • 網路的直徑不能超過16跳
  • 不允許把一個大網路分成多個區
  • 開銷缺乏靈活性
  • 存在慢收斂問題和計數到無窮問題
  • 每30s傳送完整路由表會消耗大量的頻寬
  • 實際執行的RIP協議具有以下特徵:
  1.    可以儲存多達六個等距離的路由在路由表中,預設為4個
  2.    直連網的開銷為0
  3.    傳送的路由表會把所有距離加1

關於RIP,可參考這篇部落格,很詳細:點選開啟連結