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協議。
- 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 路由選擇不僅限於“跳數”考慮的示例
- 路由器的收斂機制
任何距離向量路由選擇協議(如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)時為止。觸發式更新法可加速收斂時間,它的工作原理是當某個路徑的跳數改變了,路由器立即發出更新資訊,不管路由器是否到達常規資訊更新時間都發出更新資訊。
- 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:跳數字段。表示從主機到目的地獲得資料報過程中的整個成本。