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協定使用以下機制減少因網絡上的不一緻帶來的路由選擇環路的可能性。
記數到無窮大機制
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,這條路徑才從路由表中删除。
水準分割法
水準分割規則如下:路由器不向路徑到來的方向回傳此路徑。當打開路由器接口後,路由器記錄路徑是從哪個接口來的,并且不向此接口回傳此路徑。
Cisco可以對每個接口關閉水準分割功能。這個特點在“non broadcast mutilple access”(NBMA,非廣播多路通路)環境下十分有用。在如圖9-34所示網絡中,路由器2通過幀中繼連接配接路由器1和路由器3,兩個PVC都在路由器2的同一個實體接口(S0)中止。如果在路由器2的水準分割功能未被關閉,那麼路由器3将收不到路由器1的路由選擇資訊(反之亦然)。用“no ip split-horizon”接口子指令可關閉水準分割功能。
圖9-34 水準分割法原理示例
破壞逆轉的水準分割法
水準分割是路由器用來防止把一個接口得來的路徑又從此接口傳回導緻的問題的方案。水準分割方案忽略在更新過程中從一個路由器擷取的路徑又傳回該路由器。有破壞逆轉的水準分割方法是在更新資訊中包括這些回傳路徑,但這種處理方法會把這些回傳路徑的跳數設為16(無窮)。通過把跳數設為無窮,并把這條路徑告訴源路由器,有可能立刻解決路由選擇環路。否則,不正确的路徑将在路由表中駐留到逾時為止。破壞逆轉的缺點是它增加了路由更新的的資料大小。
保持定時器法
保持定時器法可防止路由器在路徑從路由表中删除後一定的時間内(通常為180秒)接受新的路由資訊。它的思想是保證每個路由器都收到了路徑不可達資訊,而且沒有路由器發出無效路徑資訊。例如在圖6-32所示網絡中,由于路由更新資訊被延遲,路由器2向路由器3發出錯誤資訊。但使用保持計數器法後,這種情況将不會發生,因為路由器3将在180秒内不接受通向網絡A的新的路徑資訊,到那時路由器2将存儲正确的路由資訊。
觸發更新法
有破壞逆轉的水準分割将任何兩個路由器構成的環路打破,但三個或更多個路由器構成的環路仍會發生,直到無窮(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:跳數字段。表示從主機到目的地獲得資料報過程中的整個成本。
本文轉自 meiyanaa 51CTO部落格,原文連結:http://blog.51cto.com/justim/222537,如需轉載請自行聯系原作者