RIP協議

內部網關協議

RIP(Routing Information Protocol,路由信息協議)是一種內部網關協議(IGP),是一種動態路由選擇協議,用於自治系統AS)內的路由信息的傳遞。RIP協議基於距離矢量演演算法(DistanceVectorAlgorithms),使用“跳數”(即metric)來衡量到達目標地址的路由距離。

這種協議的路由器只關心自己周圍的世界,只與自己相鄰的路由器交換信息,範圍限制在15跳(15度)之內,再遠,它就不關心了。RIP應用於OSI網路七層模型的網路層。各廠家定義的管理距離(AD,即優先順序)如下:華為定義的優先順序是100,思科定義的優先順序是120。

基本概況


RIP協議採用距離向量演演算法,在實際使用中已經較少適用。在默認情況下,RIP使用一種非常簡單的度量制度:距離就是通往目的站點所需經過的鏈路數,取值為0~16,數值16表示路徑無限長。RIP進程使用UDP的520埠來發送和接收RIP分組。RIP分組每隔30s以廣播的形式發送一次,為了防止出現“廣播風暴”,其後續的分組將做隨機延時后發送。在RIP中,如果一個路由在180s內未被刷,則相應的距離就被設定成無窮大,並從路由表中刪除該表項。RIP分組分為兩種:請求分組和響應分組。

歷史演化


RIP-1被提出較早,其中有許多缺陷。為了改善RIP-1的不足,在RFC1388中提出了改進的RIP-2,並在RFC1723和RFC2453中進行了修訂。RIP-2定義了一套有效的改進方案,新的RIP-2支持子網路由選擇,支持CIDR,支持組播,並提供了驗證機制。
隨著OSPF和IS-IS的出現,許多人認為RIP已經過時了。但事實上RIP也有它自己的優點。對於小型網路,RIP就所佔帶寬而言開銷小,易於配置、管理和實現,並且RIP還在大量使用中。但RIP也有明顯的不足,即當有多個網路時會出現環路問題。為了解決環路問題,IETF提出了分割範圍方法,即路由器不可以通過它得知路由的介面去宣告路由。分割範圍解決了兩個路由器之間的路由環路問題,但不能防止3個或多個路由器形成路由環路。觸發更新是解決環路問題的另一方法,它要求路由器在鏈路發生變化時立即傳輸它的路由表。這加速了網路的聚合,但容易產生廣播泛濫。總之,環路問題的解決需要消耗一定的時間和帶寬。若採用RIP協議,其網路內部所經過的鏈路數不能超過15,這使得RIP協議不適於大型網路。

報文格式


071531
命令字(1位元組)版本(1位元組)必須為0(2位元組)
地址類型標識符(2位元組)必須為0(2位元組)
IP地址
必須為0
必須為0
Metric值(1—16)
(最多可以有24個另外的路由,與前20位元組具有相同的格式)
“命令字”欄位為1時表示RIP請求,為2時表示RIP應答。地址類型標誌符在實際應用中總是為2,即地址類型為IP地址。“IP地址”欄位表明目的網路地址,“Metric”欄位表明了到達目的網路所需要的“跳數”。

結構


使用R I P報文中列出的項, RIP主機可以彼此之間交流路由信息。這些信息存儲在路由表中,路由表為每一個知道的、可達的目的地保留一項。每個目的地表項是到達那個目的地的最低開銷路由。
注意每個目的地的表項數可以隨路由生產商的不同而變化。生產商可能選擇遵守規範,也可以對標準進行他們認為合適的“強化”。所以,用戶很可能會發現某個特殊商標的路由器為每一個網路中的目的地存儲至多4條相同費用的路由。
每個路由表項包括以下各域:
目的IP地址域
距離-向量度量域
下一跳IP地址域
路由變化標誌域
路由計時器域
注意雖然RFC 1058是一個開放式標準,能支持大量互連網路地址結構,然而它是由IETF設計用於Internet中自治系統內的協議。如此,使用這種形式RIP的自然是網路互聯協議。
1. 目的IP地址域
任何路由表中所包含的最重要信息是到所知目的地的I P地址。一旦一台RIP路由器收到一個數據報文,就會查找路由表中的目的I P地址以決定從哪裡轉發那個報文。
2. 度量標準域
路由表中的度量域指出報文從起始點到特定目的地的總耗費。路由表中的度量是從路由器到特定目的地之間網路鏈路的耗費總和。
3. 下一跳IP地址域
下一跳IP地址域包括至目的地的網路路徑上下一個路由器介面的IP地址。如果目的IP地址所在的網路與路由器不直接相連時,路由器表中才出現此項。
4. 路由變化標誌域
路由變化標誌域用於指出至目的I P地址的路由是否在最近發生了變化。這個域是重要的,因為R I P為每一個目的I P地址只記錄一條路由。
5. 路由計時器域
有兩個計時器與每條路由相聯繫,一個是超時計時器,一個是路由刷新計時器。這些計時器一同工作來維護路由表中存儲的每條路由的有效性。路由表維護過程在1 2 . 2 . 2節中詳細描述。

補充內容


RIP(RoutinginformationProtocol)是應用較早、使用較普遍的內部網關協議(InteriorGatewayProtocol,簡稱IGP),適用於小型同類網路,是典型的距離向量(distance-vector)協議。文檔見RFC1058、RFC1723。
RIP通過廣播UDP報文來交換路由信息,每30秒發送一次路由信息更新。RIP提供跳躍計數(hopcount)作為尺度來衡量路由距離,跳躍計數是一個包到達目標所必須經過的路由器的數目。如果到相同目標有二個不等速或不同帶寬的路由器,但跳躍計數相同,則RIP認為兩個路由是等距離的。RIP最多支持的跳數為15,即在源和目的網間所要經過的最多路由器的數目為15,跳數16表示不可達。

基本配置


RIP協議
RIP協議
*先把IP跟loopback口配置好。
做好實驗前的配置后我們來配置路由器R1、拿他當範例:
R1#configure terminal //進入配置模式
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#router rip //啟動RIP協議
R1(config-router)#version 1 //配置RIP版本1
R1(config-router)#network 1.0.0.0 //通告網路、意思就是告訴別人自己所連接的網路
R1(config-router)#network 192.168.12.0
R1(config-router)#exit
R1(config)#
然後把其他路由器也都按R1的配置進行操作。配置RIP1版本、然後通告自己所連接的網路。
註:1.Cisco的RIP版本2支持驗證、密鑰管理、路由匯總、無類域間路由(CIDR)和變長子網掩碼(VLSMs)

基本舉例


router rip version 2 network 192.200.10.0 network 192.20.10.0!相關調試命令:show ip protocol
show ip route在全局設置(#)模式下:1.啟動RIP路由router rip2.設置參與RIP路由的子網network子網地址3.允許在非廣播型網路中進行RIP路由廣播neighbor相鄰路由器相鄰埠的IP地址4.設置RIP的版本RIP路由協議有2個版本,在與其它廠商路由器相連時,注意版本要一致,預設狀態下,Cisco路由器接收RIP版本1和2的路由信息,但只發送版本1的路由信息,設置RIP的版本vesion1或2。另外,還可以控制特定埠發送或接收特定版本的路由信息。1.只在特定埠發版本1或2的信息,在埠設置模式下rip send version1或22.同時發送版本1和2的信息ip rip send receive1or23.在特定埠接受版本1或2的路由信息ip rip receive1or24.同時接受版本 1和2的路由信息ipripreceive1or2選擇路由協議幾點建議:1.在大型網路中,建議使用ospf,eigrp.2.如果網路中含有變長了網掩碼(VISM)不能使用igrp,rip版本1,可以使用rip版本2,ospf,eigrp或靜態路由。3.如果使用路由安全設置可以使用RIP版本1或OSPF。4.選用ospf,eigrp在系統穩定后所佔帶寬比RIP,IGRP少得多,IGRP比RIP所佔帶寬也少。5.綜合使用動態路由,靜態路由,預設路由,以保證路由的冗餘。6.在撥號線路上盡量使用靜態路由,以節省費用。7.在小型網路上數據量不大的情況下,且不需要高可性,廣域網線路為X.25SVC時,建議用靜態路由。

局限性


1)、協議中規定,一條有效的路由信息的度量(metric)不能超過15,這就使得該協議不能應用於很大型的網路,應該說正是由於設計者考慮到該協議只適合於小型網路所以才進行了這一限制。對於metric為16的目標網路來說,即認為其不可到達。
2)、該路由協議應用到實際中時,很容易出現“計數到無窮大”的現象,這使得路由收斂很慢,在網路拓撲結構變化以後需要很長時間路由信息才能穩定下來。
3)、該協議以跳數,即報文經過的路由器個數為衡量標準,並以此來選擇路由,這一措施欠合理性,因為沒有考慮網路延時、可靠性、線路負荷等因素對傳輸質量和速度的影響。

特性


(1)路由信息更新特性:
路由器最初啟動時只包含了其直連網路的路由信息,並且其直連網路的metric值為1,然後它向周圍的其他路由器發出完整路由表的RIP請求(該請求報文的“IP地址”欄位為0.0.0.0)。路由器根據接收到的RIP應答來更新其路由表,具體方法是添加新的路由表項,並將其metric值加1。如果接收到與已有表項的目的地址相同的路由信息,則分下面三種情況分別對待:第一種情況,已有表項的來源埠與新表項的來源埠相同,那麼無條件根據最新的路由信息更新其路由表;第二種情況,已有表項與新表項來源於不同的埠,那麼比較它們的metric值,將metric值較小的一個最為自己的路由表項;第三種情況,新舊錶項的metric值相等,普遍的處理方法是保留舊的表項。
路由器每30秒發送一次自己的路由表(以RIP應答的方式廣播出去)。針對某一條路由信息,如果180秒以後都沒有接收到新的關於它的路由信息,那麼將其標記為失效,即metric值標記為16。在另外的120秒以後,如果仍然沒有更新信息,該條失效信息被刪除。
(2)RIP版本1對RIP報文中“版本”欄位的處理:
0:忽略該報文。
1:版本1報文,檢查報文中“必須為0”的欄位,若不符合規定,忽略該報文。
>1:不檢查報文中“必須為0”的欄位,僅處理RFC 1058中規定的有意義的欄位。因此,運行RIP版本1的機器能夠接收處理RIP版本2的報文,但會丟失其中的RIP版本2新規定的那些信息。
(3)RIP版本1對地址的處理
RIP版本1不能識別子網網路地址,因為在其傳送的路由更新報文中不包含子網掩碼,因此RIP路由信息要麼是主機地址,用於點對點鏈路的路由;要麼是A、B、C類網路地址,用於乙太網等的路由;另外,還可以是0.0.0.0,即預設路由信息。
(4)計數到無窮大(Counting to Infinity)
前面在RIP的局限性一部分提到了可能出現的計數到無窮大的現象,下面就來分析一下該現象的產生原因與過程。考察下面的簡單網路:
c(目的網路)----router A------router B
在正常情況下,對於目標網路,A路由器的metric值為1,B路由器的metric值為2。當目標網路與A路由器之間的鏈路發生故障而斷掉以後:
c(目的網路)--||--router A------router B
A路由器會將針對目標網路C的路由表項的metric值置為16,即標記為目標網路不可達,並準備在每30秒進行一次的路由表更新中發送出去,如果在這條信息還未發出的時候,A路由器收到了來自B的路由更新報文,而B中包含著關於C的metric為2的路由信息,根據前面提到的路由更新方法,路由器A會錯誤的認為有一條通過B路由器的路徑可以到達目標網路C,從而更新其路由表,將對於目標網路C的路由表項的metric值由16改為3,而對於的埠變為與B路由器相連接的埠。很明顯,A會將該條信息發給B,B將無條件更新其路由表,將metric改為4;該條信息又從B發向A,A將metric改為5……最後雙發的路由表關於目標網路C的metric值都變為16,此時,才真正得到了正確的路由信息。這種現象稱為“計數到無窮大”現象,雖然最終完成了收斂,但是收斂速度很慢,而且浪費了網路資源來發送這些循環的分組。
另外,從這裡我們也可以看出,metric值的最大值的選擇實際上存在著矛盾,如果選得太小,那麼適用的網路規模太小;如果選得過大,那麼在出現計數到無窮大現象的時候收斂時間會變得很長。

提高措施


水平分割
在上面的“計數到無窮大”現象中,產生的原因是A、B之間互相傳送了“欺騙信息”,那麼針對這種情況,我們自然會想到如果能將這些“欺騙信息”去掉,那麼不就可以在一定程度上避免“計數到無窮大”了嗎。水平分割正是這樣一種解決手段。
“普通的水平分割”是:如果一條路由信息是從X埠學習到的,那麼從該埠發出的路由更新報文中將不再包含該條路由信息。“帶毒化逆轉的水平分割”是:如果一條路由信息是從X埠學習到的,那麼從該埠發出的路由更新報文中將繼續包含該條路由信息,而且將這條信息的metric置為16。
“普通的水平分割”能避免欺騙信息的發送,而且減小了路由更新報文的大小,節約了網路帶寬;“帶毒化逆轉的水平分割”能夠更快的消除路由信息的環路,但是增加了路由更新的負擔。這兩種措施的選擇可根據實際情況進行選擇。

觸發更新


上面的“水平分割”能夠消除兩台路由器間的欺騙信息的相互循環,但是當牽涉到三台或者以上的路由器時,效果就有限了。考察下面的網路:
+---++----++-----+/-----\
|||C+-------|D|-----||E||
|A+------|||+----||
+-+-++----++---+-+\-----/
|--|
|--|
|--|
+----+|
|||
|B+-----------------------
||
+----+
E是目標網路
針對目標網路,各路由器的路由信息分別如下:
A:3C
B:2D
C:2D
D:1直連
當D與目標網路之間發生故障中斷以後,B和C都能正確的從D得到網路不可達的信息,但是,從上面的路由信息中可以看出,A雖然不會給C發送錯誤信息,但是A可能在未收到網路不可達信息之前就給B發送了路由信息,讓B錯誤的認為可以通過A到達目標網路,繼而又會出現“計數到無窮大”的現象。
觸發更新就是為了針對上述情況進行的一種改善,它的具體實現措施是:路由器一旦察覺到網路變化,就儘快甚至是立即發送更新報文,而不等待更新周期結束。只要觸發更新的速度足夠快,就可以大大的防止“計數到無窮大”的發生,但是這一現象還是有可能發生的。
使用了觸發更新以後,當網路拓撲發生變化的時候,網路中會出現類似於“多米諾骨牌”的更新報文潮流,並最後中止於從未發生變化的路徑到達目標網路的路由器。

定時器


RIP中一共使用了4個定時器:updatetimer,timeouttimer,garbagetimer,holddowntimer。
Updatetimer用於每30秒發送路由更新報文。
Timeouttimer用於路由信息失效前的180秒的計時,每次收到同一條路由信息的更新信息就將該計數器複位。
Garbagetimer和holddowntimer同時用於將失效的路由信息刪除前的計時:在holddowntimer的時間內,失效的路由信息不能被接收到的新信息所更新;在garbagetimer計時器超時后,失效的路由信息被刪除。
另外,在觸發更新中,更新信息會需要1到5秒的隨機延時以後才被發出,這裡也需要一個計時器。

RIP版本2


RIPV2概述

RIP-V2不是一個新的協議,它只是在RIPV1協議的基礎上增加了一些擴展特性,以適用於現代網路的路由選擇環境。這些擴展特性有:
>每個路由條目都攜帶自己的子網掩碼
>路由選擇更新更具有認證功能
>每個路由條目都攜帶下一跳地址
>外部路由標誌
>組播路由更新
最重要的一項是路由更新條目增加了子網掩碼的欄位,因而RIP協議可以使用可變長的子網掩碼,從而使RIP-V2協議變成了一個無類別的路由選擇協議。

RIPV2原理

V1版路由更新用是的廣播方式。RIP-V2協議使用組播的方式向其他宣告RIP-V2的路由器發出更新報文,它使用的組播地址是保留的D類地址224.0.0.9
使用組播方工的好處在於,本地網路上相連的RIP路由選擇無關的設備不再花費時間對路由器廣播的更新報文進行解析。
1 RIP-V2信息幀格式
命令(8位)
版本(8位)
未用(值為0)
地址族標示符
路由標記
IP地址
子網掩碼
下一跳
度量值
……………
和RIPV1一樣,RIP-V2的更新報文最大可以包含25個路由條目。
同樣使用UDP的520埠號,並且數據報文的大小最大為512個8bit位。
>命令(COMMAND)——取值為1和2,1表示是請求信息,2表示是響應消息
>版本號(VERSION)——對於RIP-V2,該欄位值為2
>地址族標識(address family indentifier ,AFI)——對於IP該項設置為2.當消息是對路由器(或主機)整個路由選擇表的請求時,這個欄位將被設置為0.
>路由標誌(ROUTERTAG)——提供這個欄位來標記外部路由或重分配到RIP-V2協議中的路由。默認情況是使用這個16位的欄位來攜帶從外部路由選擇協議注入到RIP中的路由的自主系統號。雖然RIP協議自己並不使用這個欄位,但是在多個地點和某個RIP域相連的外部路由,可能需要使用這個路由標記欄位通過RIP域來交換路由信息。這個欄位也可以用來把外部路由編成"組",以便於在RIP域中更容易地控制這些路由。
>IP地址(IP ADDRESS)——路由條目的目的地址,它可以是主網路地址、子網地址或主機路由。
>子網掩碼(SUBNET MASK)——是一個確認IP地址的網路和子網部分的32位的掩碼。
>下一跳(NEXT HOP)——如果存在的話,它標識一個比通告路由器更好的地址更好的一下地址。也就是說,它指出的下一跳地址,其度量值比同一個子網上的通告路由器更靠近目的地。如果這個欄位設置為全0(0.0.0.0),說明通告路由器的地址就是最好的下一跳地址。
>度量(METRIC)——是一個1~16之間的跳數。

RIPV2的配置

由於RIP-V2隻是RIP-V1的增強版,而不是一個單獨的協議,因此,在RIPV1中介紹的某些命令可以同樣的方法在RIP-V2中正確使用。
1 基本配置
router rip
version 2
network 172.25.0.0
network 192.168.50.0
可以在路由器配置模式(config-router mode)下鍵入命令NO VERSION恢復到原來的預設方式。
2 RIP-V2與V1相結合
基於埠級別(interface-level)的"兼容性開關"。用"ip rip send version 版本號"和"Ip rip recevie version 版本號"來實現。
router(config)#interface ethernet0
router(config-if)#no shutdown
router(config-if)#ip address 192.168.50.1 255.255.255.0
router(config-if)#ip rip send vervion 1
router(config-if)#ip rip receive verion 1 (RIP V1 mode)
router(config-if)#interface ethernet 1
router(config-if)#no shutdown
router(config-if)#ip address 172.25.150.1 255.255.0.0
router(config-if)#ip rip send version 1 2 (RIP V1 V2 mode)
router(config-if)#interface ethernet 2
router(config-if)#no shutdown
router(config-if)#ip address 172.50.0.0 255.255.0.0
router(config-if)#end
router(config)#router rip
router(config-router)#version2
router(config-router)#network172.25.0.0
router(config-router)#network192.168.0.0
3 使用可變長子網掩碼
劃分子網的基本目的總是相同的:路由器必須能夠使用惟一的地址來標識每一條數據鏈路,以區別於網際網路中的其他地址。
4 不連續的子網和無類路由
無類路由選擇協議並沒有關於不連續子網的這些困難。因為每一條路由更新都包含一個子網掩碼,因而一個主網路的子網能夠通告給另一個主網路
RIP-V2協議預設的行為要在主網路邊界上進行路由匯總,為了關閉路由匯總功能以允許被通告的子網通過主網路的邊界,可以在RIP的處理中使用 no auto-summary
router(config)#router rip
router(config-router)#version 2
router(config-router)#no auto-summary

V1V2區別


1.RIPv1是有類路由協議,RIPv2是無類路由協議
2.RIPv1不能支持VLSM,RIPv2可以支持VLSM。
3.RIPv1沒有認證的功能,RIPv2可以支持認證,並且有明文和MD5兩種認證。
4.RIPv1沒有手工匯總的功能,RIPv2可以在關閉自動匯總的前提下,進行手工匯總。
5.RIPv1是廣播更新,RIPv2是組播更新。
6.RIPv1對路由沒有標記的功能,RIPv2可以對路由打標記(tag),用於過濾和做策略。
7.RIPv1發送的update最多可以攜帶25條路由條目,RIPv2在有認證的情況下最多只能攜帶24條路由。
8.RIPv1發送的update包裡面沒有next-hop屬性,RIPv2有next-hop屬性,可以用與路由更新的重定。