跳至內容

路由資訊協定

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

路由資訊協定(英語:Routing Information Protocol,縮寫:RIP)是一種內聯網關協定(IGP),為最早出現的距離向量路由協定。屬於網絡層,其主要應用於規模較小的、可靠性要求較低的網絡,可以通過不斷的交換資訊讓路由器動態的適應網絡連接的變化,這些資訊包括每個路由器可以到達哪些網絡,這些網絡有多遠等。

雖然RIP仍然經常被使用,但是由於收斂速度較慢和支援的廣播網絡規模有限等缺點,許多人認為它將會而且正在被諸如OSPFIS-IS這樣的路由協定所取代。當然,我們也注意到EIGRP的存在,它屬於與RIP相同的基本協定類別,但更能適應不同網絡環境。

歷史

RIP所使用的路由演算法Bellman-Ford演算法.這種演算法最早被用於一個電腦網絡是在1969年,當時是作為ARPANET的初始路由演算法。

RIP是由「閘道器資訊協定」(Xerox Parc的用於互聯網工作的PARC通用封包協定簇的一部分)發展過來的,可以說閘道器資訊協定是RIP的最早的版本。後來的一個版本才被命名為「路由資訊協定」,是Xerox網絡服務協定簇的一部分。

運作原理

每隔30秒會與相鄰的路由器交換子訊息,以動態的建立路由表

RIP封包格式

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| command (1)   | version (1)   |      must be zero (2)         |
+---------------+---------------+-------------------------------+
| address family identifier (2) |      must be zero (2)         |
+-------------------------------+-------------------------------+
|                         IP address (4)                        |
+---------------------------------------------------------------+
|                        must be zero (4)                       |
+---------------------------------------------------------------+
|                        must be zero (4)                       |
+---------------------------------------------------------------+
|                          metric (4)                           |
+---------------------------------------------------------------+

RIP規定度量值取0~15之間的整數,大於或等於16的跳數被定義為無窮大。

版本

目前RIP共有三個版本,RIPv1、RIPv2、RIPng。

RIPv1

RIPv1使用分類路由,定義在《RFC 1058》中。在它的路由更新(Routing Updates)中並不帶有子網絡的資訊,因此它無法支援可變長度子網絡遮罩。這個限制造成在RIPv1的網絡中,在同級網絡下無法使用不同的子網絡遮罩。換句話說,在同一個網絡下所有的子網絡數目都是相同的。另外,RIPv1的協定報文中沒有驗證欄位,所以RIPv1不支援驗證。

RIPv1是一個基於UDP的路由協定,並且RIPv1的封包不能超過512位元組(RIP報文頭部佔用4個位元組,而每個路由條目佔用20個八位組位元組。因此,RIP訊息最大為4+(25*20)=504個位元組,再加上8個位元組的UDP頭部,所以RIP數據報的大小(不含IP包的頭部)最大可達512個位元組。)。

RIPv2

RIPv2在RIPv1的基礎上改進如下幾點:

  • 支援外部路由標記(Route Tag),可以在路由策略中根據Tag對路由進行靈活的控制。實際上不同RIP行程間相互引入路由也可以使用Tag。 
  • 報文中攜帶遮罩資訊,支援路由聚合和CIDR。
  • 支援指定下一跳,在廣播網上可以選擇到目的網段最佳下一跳地址。
  • 支援以組播方式傳送更新報文,只有執行RIPv2的裝置才能收到協定報文,減少資源消耗。
  • 支援對協定報文進行驗證,增強安全性。

RIPng

RIPng(Routing Information Protocol next generation)在RFC 2080中被定義,主要是針對IPv6做一些延伸的規範。與RIPv2相比下其最主要的差異是:

  • RIPv2 支援RIP更新認證, RIPng 則不支援,因為IPv6路由器理應會使用IPsec來進行身份驗證;
  • RIPv2 容許給路由器附上任何標籤, RIPng 則不容許;
  • RIPv2 在每個路由表項中都儲存下一跳的資訊,RIPng 是對一組路由表項指定下一跳資訊;
  • RIPv2 使用UDP埠520和多播地址224.0.0.9通訊,RIPng 則使用UDP埠521和多播地址FF02::9通訊

RIP協定定時器

RIP在更新和維護路由資訊時主要使用以下4個定時器:

  1. 更新定時器:當此逾時器逾時時,立即傳送路由更新報文,預設每30s傳送一次。
  2. 老化定時器:RIP裝置如果在老化時間內沒有收到鄰居發來的路由更新報文,則認為該路由不可達。當學到一條路由並添加到RIP路由表中時,老化定時器啟動,如果老化定時器逾時,裝置仍沒有收到鄰居發來的更新報文,則把該路由的度量值置為16,並啟動垃圾收集定時器。
  3. 垃圾收集定時器:如果在垃圾收集時間內仍沒有收到原來不可達到路由的更新,該路由將被從RIP路由表徹底刪除。
  4. 抑制定時器:當RIP裝置收到對端的路由更新,其度量值為16。則對應路由進入抑制狀態,並啟動抑制定時器,預設值為180s。這時,為了防止路由震盪,在抑制定時器逾時之前,即使再收到對端路由度量值小於16的更新,也不接受。當抑制逾時器逾時後,就重新接受對端傳送的路由更新報文。

防止網絡環路

由於路由器可能收到它自己傳送的路由資訊而造成網絡環路,為了提高RIP協定效能而使用以下措施:

  • 水平分割:水平分割指的是RIP從某個介面學到的路由,不會從該介面再發回給鄰居裝置。在幀中繼和X.25等NBMA網絡中,水平分割功能預設為禁止狀態。
  • 毒性逆轉:毒性逆轉指的是RIP從某個介面學到路由後,將該路由的開銷設置為16(即指明該路由不可達),並從原介面發回鄰居裝置。
  • 滯留計時器(Hold-down timer):一但抑制計時器被觸發後,那麼將會引起該路由進入長達180秒(即6個路由更新周期)的抑制狀態階段。在抑制計時器超時前,路由器不再接收關於這條路由的更新資訊。
  • 觸發更新:觸發更新是指路由資訊發生變化時,立即向鄰居裝置傳送觸發更新報文,通知變化的路由資訊。(觸發更新不會觸發接收路由器重設自己的更新定時器)

相似協定

一個比RIP更強大,且同樣基於距離向量路由協定的協定,是思科專有的IGRP思科在其現時發行的軟件中已再沒有對IGRP提供支援,而且由EIGRP──一隻徹底地重新設計的路由通訊協定所取代。不過它與IGRP的關係就只有命名上的相似,亦純粹是因為EIGRP依然是基於距離向量路由協定的緣故。

參見

  • 王, 王達. 第11章 RIP路由配置与管理. 华为路由器学习指南. 人民郵電出版社. 2017. 
  • RFC 1058, "Routing Information Protocol"
  • RFC 2453, "RIP Version 2"
  • RFC 2080, "RIPng for IPv6"