RIP(Routing information Protocol,路由信息協議)是應用較早、使用較廣泛的內部網關協議(Interior Gateway Protocol,IGP),適用於小型同類網絡的一個自治系統(AS)內的路由信息的傳遞。RIP協議是基於距離矢量算法(Distance Vector Algorithms,DVA)的。它使用「跳數」,即metric來衡量到達目標地址的路由距離。文檔見RFC105八、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:跳數字段。表示從主機到目的地得到數據報過程當中的整個成本。
|