RIP
文章目錄
思維導圖:
1. 路由協議基礎
1.1 自治系統(AS)
自治系統(Autonomous System,AS):在網絡中一個自治系統指的是若干個二層網絡及若干路由器組成的集合
,集合中的這些網絡和這些路由器屬於同一個管理機構。規模大小不同,一個 internet 可以包含一個或多個AS。
1.2 路由協議分類
- 路由協議分爲兩大類,一類是
IGP(Interior Gateway Protocol,內部網關協議)
,一類是EGP(Exterior Gateway Protocol ,外部網關協議 )
。 - IGP成員有
RIP(Routing Information Protocol)
,OSPF(Open Shortest Path First)
,IS-IS(Intermediate System to Intermediate System)
等; - EGP成員雖然也有若干個協議,但是目前使用的就只有一個
BGP(Border Gateway Protocol)
。
2. RIP協議基本原理
-
RIP是一種基於
距離矢量(Distance Vector,簡稱DV)
算法的IGP協議,其協議的優先級爲100(華爲),120(思科); -
以“跳數”作爲開銷,所謂“跳數”就是到達目的地需要經過的路由器個數,跳數>=16時視爲不可達路由,使得RIP只能應用於小規模的網絡;
-
週期性更新路由表,即使在穩定狀態下,路由交換過程仍然會繼續進行;
3. RIP路由表形成
一臺路由器在創建RIP路由表初期,RIP路由表中只包含直連路由。隨後路由器會不斷接收從鄰居發來的路由信息,並根據這些路由信息來完善自己的路由表。同時路由器會每隔30s
向鄰居路由器發起更新請求。
4. RIP消息格式
-
RIP的消息格式有兩種:一種是RIP請求消息(Request),另一種是RIP響應消息(Response);
-
RIP路由器發送請求消息給鄰居路由器,鄰居路由器收到後就會立即發送響應消息給鄰居路由器;
-
RIP路由器可以隨時向鄰居發出請求消息;
-
RIP路由器總是會
每隔30s週期性
向鄰居路由器發送響應消息;RIP請求消息有兩種:
- 請求消息用來請求關於某一些指定的路由信息;
- 請求關於整個RIP網絡的路由信息,
RIP剛剛啓動的時候應該是採用第二種RIP請求消息
;
5. RIP-1與RIP-2
RIP協議有兩個版本,RIP-1和RIP-2,基於UDP協議,使用的端口號爲520
。
5 .1RIP-1的報文格式
RIP-1報文由頭部(Header)和多個路由表項(Route Entries)部分組成。在一個RIP報文中,最多可以有25個路由表項
。RIP是一個基於UDP協議
的,並且RIP-1的數據包不能超過512字節。
字段名 | 長度 | 含義 |
---|---|---|
Command(命令) | 8比特 | 標識報文的類型: 1:Request報文,向鄰居請求全部或部分路由信息; 2:Reponse報文,發送自己全部或部分路由信息,一個Response報文中最多包含25個路由表項。 |
Version(版本) | 8比特 | RIP的版本號: 1:RIP-1 2:RIP-2 |
Must be zero | 16 比特 | 必須爲零字段。 |
AFI(Address Family Identifier)協 議簇 | 16比特 | 地址族標識,其值爲2時表示IP協議。對於Request報文,此字段值爲0。 |
Route Tag | 16比特 | 外部路由標記。 |
IP Address | 32比特 | 該路由的目的IP地址,可以是自然網段的地址,也可以是子網地址或主機地址。 |
Metric | 32比特 | 路由的開銷值。對於Request報文,此字段爲16。 |
5.2 RIP-2的報文格式
字段名 | 長度 | 含義 |
---|---|---|
Command(命令) | 8比特 | 標識報文的類型: 1:Request報文 ,向鄰居請求全部或部分路由信息; 2:Reponse報文 ,發送自己全部或部分路由信息,一個Response報文中最多包含25個路由表項。 |
Version(版本) | 8比特 | RIP的版本號: 1:RIP-1 2:RIP-2 |
Must be zero | 16比特 | 必須爲零字段。 |
AFI(Address Family Identifier)協議簇 | 16比特 | 地址族標識,其值爲2時表示IP協議。對於Request報文,此字段值爲0。 |
Route Tag | 16比特 | 外部路由標記。 |
IP Address | 32比特 | 該路由的目的IP地址,可以是自然網段的地址,也可以是子網地址或主機地址。 |
Subnet Mask | 32比特 | 目的地址的掩碼。 |
Next Hop | 32比特 | 提供一個更好的下一跳地址。如果爲0.0.0.0,則表示發佈此路由的路由器地址就是最優下一跳地址。 |
Metric | 32比特 | 路由的開銷值。對於Request報文,此字段爲16。 |
5.3 運行RIP-1和RIP-2版本的不同
5.3.1 運行RIP-1的時候
-
對於請求消息或週期性的響應消息(情況1),IP報文的
目的地址爲廣播地址255.255.255.255
,源地址爲發送該請求消息或響應消息的接口的IP地址,協議字段的值爲0x11
。 -
爲了迴應請求消息而發送的響應消息(情況2),IP報文的目的地址爲發送請求消息
接口的IP地址
,源地址爲發送響應消息的接口的IP地址,協議字段0x11
。- 接下來,IP報文又是封裝在以太網幀中(假設路由器的接口都是以太網接口):
-
對於情況1,以太網幀的
目的MAC地址是ff-ff-ff-ff-ff-ff
,源地址是發送請求消息或響應消息的接口的MAC地址,類型字段爲0x0800。 -
對於情況2,以太網幀的目的MAC地址是發送請求消息的接口的MAC地址,源地址爲發送該響應消息的接口的MAC地址,類型字段爲0x0800。
5.3.2 運行RIP-2的時候
-
對於請求消息或週期性的相應消息(情況1),IP報文的
目的地址爲組播地址224.0.0.9
,也可以爲廣播地址255.255.255.255
,源地址爲發送該請求消息或響應消息的接口的IP地址,協議字段的值爲0x11。 -
爲了迴應請求消息而發送的響應消息(情況2),IP報文的目的地址爲發送請求消息接口的IP地址,源地址爲發送響應消息的接口的IP地址,協議字段0x11。
-
接下來,IP報文又是封裝在以太網幀中(假設路由器的接口都是以太網接口):
-
對於情況1,以太網幀的
目的MAC地址是ff-ff-ff-ff-ff-ff
,源地址是發送請求消息或響應消息的接口的MAC地址,類型字段爲0x0800。 -
對於情況2,以太網幀的目的MAC地址是發送請求消息的接口的MAC地址,源地址爲發送該響應消息的接口的MAC地址,類型字段爲0x0800。
-
-
5.3.3 RIP-1與RIP-2的不同
- RIP-1只支持有類路由;RIP-2支持無類路由,支持VLSM,CIDP等特性;
- RIP-1不支持認證功能;RIP-2可以支持認證功能,因此安全性得到提高;
- RIP-1不能採用組播方式發佈消息;RIP-2可以採用組播方式發佈消息,因此RIP-2比RIP-1佔用更少的設備處理資源;
6. RIP定時器
RIP協議有三種定時器:分別是更新定時器(Update Timer)
,無效定時器(Invalid Timer)
,垃圾收集定時器(Carbage Collection Timer)
。
6.1 更新定時器
更新定時器也可以稱爲週期定時器(Periodic Timer),每臺RIP路由器都有一個屬於自己的RIP更新定時器。缺省情況下,週期值爲30s
。每當更新定時器倒計時值爲0時,路由器就會向所有鄰居發送RIP響應消息,當路由器收到RIP請求消息時候,會立即發送RIP響應消息,但是不影響基於更新定時器的週期性RIP響應消息的發送
。
6.2 無效定時器
每個路由器都建立並維護一個無效定時器。缺省情況下,無效定時器值爲180s(更新定時器週期的6倍)
。當一個路由項的無效定時器的值倒計時爲0時,就說明該路由表項已經有180s的時間沒有別更新,此時路由表會認爲該路由項已經變爲一個無效的路由項,也就是認爲該路由項所指的所指的目的地已經變爲不可達,於是路由器會將該路由的cost值設置爲16
.
6.3 垃圾收集定時器
-
當無效定時器值倒計時爲0時,該路由項是一個無效路由項,其cost值就會被設置爲16。此時路由器不會立即將這個無效的路由項刪除掉,而是會爲該路由項啓用一個被稱爲垃圾收集定時器的倒數計時器。垃圾收集定時器的缺省值爲120s。
-
在垃圾收集定時器倒計時爲0之前,該路由器仍然會週期性在RIP響應消息中攜帶這條無效的路由信息,其目的是爲了告訴他的所有鄰居這條路由項對於自己來說已經無效,以便路由器能夠及時對各自的RIP路由表中的相應的路由項進行更新。
-
一旦垃圾收集定時器的值倒計時爲0時,路由器就會將這條無效路由項刪除。(注意:在垃圾收集定時器爲0前的某一時刻,該無效路由被更新,即Cost的值更新爲小於16,則該路由項的的無效定時器會被複位成初始值,然後重新計時,相應的垃圾收集定時器則會被刪除掉)
7. RIP環路問題
假設路由器C發生故障(E0接口down掉),RC監測到該故障後會立即向RB發送故障信息(跳數設置爲16)表示10.4.0.0爲無效路由。然而,在RC準備將這條無效路由週期性響應消息發給RB的時候,收到RB週期性的相應消息,其中包含10.4.0.0 網段的路由信息,那麼這個時候RC就會認爲通過RB可以到達10.4.0.0網段,所以RC就在10.4.0.0路由項的跳數上+1,RB又會從RC學習到這條路由並且會通告給自己的鄰居,那麼不斷往復,就產生了環路。
8. 環路解決
華爲的環路解決方案提供了觸發更新
,水平分割
,毒性逆轉
三種
8.1 觸發更新
-
所謂觸發更新,就是指RIP路由表中的某些路由項的內容發生改變時,路由器應立即向它的所有鄰居發佈響應消息,而不用等待更新定時器所規定的下一個響應消息的發送時刻。(立即更新)
-
另外,觸發更新響應消息中只需要包含路由信息發生了改變的路由項,減少帶寬及路由器處理資源的消耗
注意如果對方未收到觸發更新的消息,本端就收到一個週期性響應消息,這種情況下仍然會產生路由。但是觸發更新在一定程度上降低了環路產生的概率。
8.2 水平分割
水平分割的原理是:如果一臺路由器的RIP路由表中目的地/掩碼爲z/y的路由信息是通過該路由器的Interface-x接口學習來的,那麼該路由器在通過Interface-x接口向外發送響應消息時,響應消息一定不要包含關於z/y這個路由項的信息。(從哪裏學到就不發回哪裏
)
8.3 毒性逆轉
毒性逆轉的原理是:如果一臺路由器的RIP路由表中目的地/掩碼爲z/y的路由信息是通過該路由器的Interface-x接口學習來的,那麼該路由通過Interface-x接口向外發送消息時,響應消息中仍然需要包含z/y這個路由項,但是這個路由項的Cost值總是16。
裏`)
8.3 毒性逆轉
毒性逆轉的原理是:如果一臺路由器的RIP路由表中目的地/掩碼爲z/y的路由信息是通過該路由器的Interface-x接口學習來的,那麼該路由通過Interface-x接口向外發送消息時,響應消息中仍然需要包含z/y這個路由項,但是這個路由項的Cost值總是16。