RIP路由協議及工作原理

 本文出自 “王達博客” 博客,轉載請與作者聯繫!

作者已授權本博客轉載

本文摘自筆者編著的《網管員必讀——網絡基礎》(第2版)一書。

9.11.1 RIP路由協議及工作原理

RIP(Routing information Protocol,路由信息協議)是應用較早、使用較普遍的內部網關協議(Interior Gateway Protocol,IGP),適用於小型同類網絡的一個自治系統(AS)內的路由信息的傳遞。RIP協議是基於距離矢量算法(Distance Vector Algorithms,DVA)的。它使用“跳數”,即metric來衡量到達目標地址的路由距離。文檔見RFC1058、RFC1723。它是一個用於路由器和主機間交換路由信息的距離向量協議,目前最新的版本爲v4,也就是RIPv4。

至於上面所說到的“內部網關協議”,我們可以這樣理解。由於歷史的原因,當前的 INTERNET 網被組成一系列的自治系統,各自治系統通過一個核心路由器連到主幹網上。而一個自治系統往往對應一個組織實體(比如一個公司或大學)內部的網絡與路由器集合。每個自治系統都有自己的路由技術,對不同的自治系統路由技術是不相同的。用於自治系統間接口上的路由協議稱爲“外部網關協議”,簡稱EGP(Exterior Gateway Protocol);而用於自治系統內部的路由協議稱爲“內部網關協議”,簡稱IGP。內部網關與外部網關協議不同,外部路由協議只有一個,而內部路由器協議則是一族。各內部路由器協議的區別在於距離制式(distance metric, 即距離度量標準)不同,和路由刷新算法不同。RIP協議是最廣泛使用的IGP類協議之一,著名的路徑刷新程序Routed便是根據RIP實現的。RIP協議被設計用於使用同種技術的中型網絡,因此適應於大多數的校園網和使用速率變化不是很大的連續線的地區性網絡。對於更復雜的環境,一般不使用RIP協議。

1. RIP工作原理

RIP協議是基於Bellham-Ford(距離向量)算法,此算法1969年被用於計算機路由選擇,正式協議首先是由Xerox於1970年開發的,當時是作爲Xerox的“Networking Services(NXS)”協議族的一部分。由於RIP實現簡單,迅速成爲使用範圍最廣泛的路由協議。

路由器的關鍵作用是用於網絡的互連,每個路由器與兩個以上的實際網絡相連,負責在這些網絡之間轉發數據報。在討論 IP 進行選路和對報文進行轉發時,我們總是假設路由器包含了正確的路由,而且路由器可以利用 ICMP 重定向機制來要求與之相連的主機更改路由。但在實際情況下,IP 進行選路之前必須先通過某種方法獲取正確的路由表。在小型的、變化緩慢的互連網絡中,管理者可以用手工方式來建立和更改路由表。而在大型的、迅速變化的環境下,人工更新的辦法慢得不能接受。這就需要自動更新路由表的方法,即所謂的動態路由協議,RIP協議是其中最簡單的一種。

在路由實現時,RIP作爲一個系統長駐進程(daemon)而存在於路由器中,負責從網絡系統的其它路由器接收路由信息,從而對本地IP層路由表作動態的維護,保證IP層發送報文時選擇正確的路由。同時負責廣播本路由器的路由信息,通知相鄰路由器作相應的修改。RIP協議處於UDP協議的上層,RIP所接收的路由信息都封裝在UDP協議的數據報中,RIP在520號UDP端口上接收來自遠程路由器的路由修改信息,並對本地的路由表做相應的修改,同時通知其它路由器。通過這種方式,達到全局路由的有效。

RIP路由協議用“更新(UNPDATES)”和“請求(REQUESTS)”這兩種分組來傳輸信息的。每個具有RIP協議功能的路由器每隔30秒用UDP520端口給與之直接相連的機器廣播更新信息。更新信息反映了該路由器所有的路由選擇信息數據庫。路由選擇信息數據庫的每個條目由“局域網上能達到的IP地址”和“與該網絡的距離”兩部分組成。請求信息用於尋找網絡上能發出RIP報文的其他設備。

RIP用“路程段數”(即“跳數”)作爲網絡距離的尺度。每個路由器在給相鄰路由器發出路由信息時,都會給每個路徑加上內部距離。在如圖9-31中,路由器3直接和網絡C相連。當它向路由器2通告網絡142.10.0.0的路徑時,它把跳數增加1。與之相似,路由器2把跳數增加到“2”,且通告路徑給路由器1,則路由器2和路由器1與路由器3所在網絡142.10.0.0的距離分別是1跳、2跳。

圖9-31  RIP工作原理示例

然而在實際的網絡路由選擇上並不總是由跳數決定的,還要結合實際的路徑連接性能綜合考慮。在如9-32所示網絡中,從路由器1到網絡3,RIP協議將更傾向於跳數爲2的路由器1->路由器2->路由器3的1.5Mbps鏈路,而不是選擇跳數爲1的56Kbps,直接的路由器1->路由器3路徑,因爲跳數爲1的56Kbps串行鏈路比跳數爲2的1.5Mbps串行鏈路慢得多。

 
圖9-32   路由選擇不僅限於“跳數”考慮的示例

2. 路由器的收斂機制

任何距離向量路由選擇協議(如RIP)都有一個問題,路由器不知道網絡的全局情況,路由器必須依靠相鄰路由器來獲取網絡的可達信息。由於路由選擇更新信息在網絡上傳播慢,距離向量路由選擇算法有一個慢收斂問題,這個問題將導致不一致性產生。RIP協議使用以下機制減少因網絡上的不一致帶來的路由選擇環路的可能性。

l              記數到無窮大機制

RIP協議允許最大跳數爲15。大於15的目的地被認爲是不可達。這個數字在限制了網絡大小的同時也防止了一個叫做“記數到無窮大”的問題。

記數到無窮大機制的工作原理如下(如圖9-33所示):

圖9-33  路由器收斂機制示例
(1)現假設路由器1斷開了與網絡A相連,則路由器1丟失了與網絡A相連的以太網接口後產生一個觸發更新送往路由器2和路由器3。這個更新信息同時告訴路由器2和路由器3,路由器1不再有到達網絡A的路徑。假設這個更新信息傳輸到路由器2被推遲了(CPU忙、鏈路擁塞等),但到達了路由器3,所以路由器3會立即從路由表中去掉到網絡A的路徑。

(2)路由器2由於未收到路由器1的觸發更新信息,併發出它的常規路由選擇更新信息,通告網絡A以2跳的距離可達。路由器3收到這個更新信息,認爲出現了一條通過路由器2的到達網絡A的新路徑。於是路由器3告訴路由器1,它能以3跳的距離到達網絡A。

(3)在收到路由器3的更新新後,就把這個信息加上一跳後向路由器2和路由器3同時發出更新信息,告訴他們路由器1可以以3跳的距離到達網絡A。

(4)路由器2在收到路由器1的消息後,比較發現與原來到達網絡A的路徑不符,更新成可以以4,跳的距離到達網絡A。這個消息再次會發往路由器3,以此循環,直到跳數達到超過RIP協議允許的最大值(在RIP中定義爲16)。一旦一個路由器達到這個值,它將聲明這條路徑不可用,並從路由表中刪除此路徑。

由於記數到無窮大問題,路由選擇信息將從一個路由器傳到另一個路由器,每次段數加1。路由選擇環路問題將無限制地進行下去,除非達到某個限制。這個限制就是RIP的最大跳數。當路徑的跳數超過15,這條路徑才從路由表中刪除。

l              水平分割法

水平分割規則如下:路由器不向路徑到來的方向回傳此路徑。當打開路由器接口後,路由器記錄路徑是從哪個接口來的,並且不向此接口回傳此路徑。

Cisco可以對每個接口關閉水平分割功能。這個特點在“non broadcast mutilple access”(NBMA,非廣播多路訪問)環境下十分有用。在如圖9-34所示網絡中,路由器2通過幀中繼連接路由器1和路由器3,兩個PVC都在路由器2的同一個物理接口(S0)中止。如果在路由器2的水平分割功能未被關閉,那麼路由器3將收不到路由器1的路由選擇信息(反之亦然)。用“no ip split-horizon”接口子命令可關閉水平分割功能。

圖9-34  水平分割法原理示例

l              破壞逆轉的水平分割法

水平分割是路由器用來防止把一個接口得來的路徑又從此接口傳回導致的問題的方案。水平分割方案忽略在更新過程中從一個路由器獲取的路徑又傳回該路由器。有破壞逆轉的水平分割方法是在更新信息中包括這些回傳路徑,但這種處理方法會把這些回傳路徑的跳數設爲16(無窮)。通過把跳數設爲無窮,並把這條路徑告訴源路由器,有可能立刻解決路由選擇環路。否則,不正確的路徑將在路由表中駐留到超時爲止。破壞逆轉的缺點是它增加了路由更新的的數據大小。

l              保持定時器法

保持定時器法可防止路由器在路徑從路由表中刪除後一定的時間內(通常爲180秒)接受新的路由信息。它的思想是保證每個路由器都收到了路徑不可達信息,而且沒有路由器發出無效路徑信息。例如在圖6-32所示網絡中,由於路由更新信息被延遲,路由器2向路由器3發出錯誤信息。但使用保持計數器法後,這種情況將不會發生,因爲路由器3將在180秒內不接受通向網絡A的新的路徑信息,到那時路由器2將存儲正確的路由信息。

l              觸發更新法

有破壞逆轉的水平分割將任何兩個路由器構成的環路打破,但三個或更多個路由器構成的環路仍會發生,直到無窮(16)時爲止。觸發式更新法可加速收斂時間,它的工作原理是當某個路徑的跳數改變了,路由器立即發出更新信息,不管路由器是否到達常規信息更新時間都發出更新信息。

3. RIP報文格式

如圖9-35所示爲RIP信息格式。各字段解釋如下:

Command:命令字段,8位,用來指定數據報用途。命令有五種:Request(請求)、Response(響應)、Traceon(啓用跟蹤標記,自v2版本後已經淘汰)、Traceoff(關閉跟蹤標記,自v2版本後已經淘汰)和 Reserved(保留)。

Version:RIP版本號字段,16位。

Address Family Identifier:地址族標識符字段,24位。它指出該入口的協議地址類型。由於 RIP2版本可能使用幾種不同協議傳送路由選擇信息,所以要使用到該字段。IP協議地址的Address Family Identifier爲2。

圖9-35  RIP協議信息格式

Route Tag:路由標記字段,32位,僅在v2版本以上需要,第一版本不用,爲0。用於路由器指定屬性,必須通過路由器保存和重新廣告。路由標誌是分離內部和外部 RIP 路由線路的一種常用方法(路由選擇域內的網絡傳送線路),該方法在 EGP或IGP都有應用。

IP Address:目標IP地址字段,IPv4地址爲32位。

Subnet Mask:子網掩碼字段,IPv4子網掩碼地址爲32位。它應用於IP地址,生成非主機地址部分。如果爲0,說明該入口不包括子網掩碼。也僅在v2版本以上需要,在RIPv1中不需要,爲0。

Next Hop:下一跳字段。指出下一跳IP地址,由路由入口指定的通向目的地的數據包需要轉發到該地址。

Metric:跳數字段。表示從主機到目的地獲得數據報過程中的整個成本。

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