RIP的工作原理
RIP(Routing Information Protocol)是一種內部網關協議(IGP),其中文名是路由信息協議。RIP是一種分布式的基於距離向量的路由選擇協議。
RIP協議要求網絡中的每一個路由器都要維護從它自己到其他所有目的網絡的距離記錄,即距離向量。這里的“距離”的含義是:從當前路由器到目的路由器的路徑中所經過的路由器的數量加1。因此,RIP協議的“距離”又稱"跳數"(hop count),因為每經過一個路由器,跳數加一。RIP協議認為最好路由路徑就是它通過的路由器的數目是最少的。
RIP允許一條路徑最多包含15個路由器。因此“距離”大於等於16便相當於不可達。可見RIP協議只適用於小型網絡。
RIP協議的特點
-
僅與相鄰的路由器交換信息(和誰交換信息?);
-
路由器之間交換的是自己的路由表(交換什么信息?);
-
按固定的時間間隔交換信息(什么時候交換信息?)。
RIP路由表中的主要信息是:到達某個網絡的距離與下一跳地址。如下圖所示:
距離向量算法
對於每一個相鄰路由器發送過來的RIP報文,進行如下操作:
(1) 對相鄰路由器B發過來的RIP報文,修改該報文(X的路由表)中的所有表項。將“下一跳”字段中的地址都改為B,並把所有“距離”字段的值加1。
該步操作如下圖所示:
(2) 對修改后的RIP報文中的每一項,進行如下步驟:
① 若本路由器的路由表中沒有目的網絡N,則把該項添加到路由表中;
② 否則,若網絡N的下一跳地址為B,則用該表項替代(因為路由信息更新了);
③ 如網絡N的下一跳地址不為B,則將本路由器中網絡N表項的距離D與該表項的距離d比較,若\(d<D\),則用改表項替代(發現了更短的路徑);
④ 否則,什么都不做。
(3) 若超過3分鍾還未收到相鄰路由器的路由表,則將此路由器標記未不可達,即將距離設置為16。
距離向量算法的基礎是Bellman-Ford算法,其要點是:設X是節點A到B的最短路徑上的一個節點。若將路徑\(A\rightarrow B\)拆稱兩端路徑\(A\rightarrow X\)與\(X\rightarrow B\),則每段路徑\(A\rightarrow X\)與\(X\rightarrow B\)都分別是節點A到X和節點X到B的最短路徑。
RIP協議讓一個自治系統(一個網絡)中的所有路由器都與相鄰的路由器定期交換路由信息,並不斷更新其路由表,使得每一個路由器到每一個目的網絡的路由都是最短的。
RIP報文格式
RIP報文示意圖
RIP報文中的字段
字段 | 描述 |
---|---|
命令(Command) | 指出了報文的意義 |
版本(Version) | 指出RIP的版本 |
必為0 | 為了4字節對齊,填充0 |
地址族標識符(Address Family) | 標志所使用的地址協議 |
路由標記 | 指出自治系統號 |
網絡地址 | 目的地址 |
子網掩碼 | 如名所示 |
下一跳路由器 | 如名所示 |
距離 | 從當前路由器到達目的路由器的距離 |
仿真模擬抓取RIP報文
使用ENSP
仿真:
使用wireshark
抓包得:
好消息傳得快,壞消息傳得慢
RIP存在一個問題:當網絡出現故障時,要經過比較長的時間才能將此信息傳送到所有的路由器。
何以見得?舉個例子,現在有三個網絡\(N_1,N_2,N_3\),使用兩個路由器\(R_1,R_2\)相連接,如下圖所示:
現在網絡\(N1\)出現故障,導致R1無法到達網絡\(N_1\),如下圖所示:
於是乎,路由器\(R_1\)將到網絡\(N_1\)的距離改為16(即不可達)。存在着這樣一種情況,\(R1\)可能要經過30秒后才把更新信息發送給\(R_2\)。而\(R_2\)可能已經先把自己的路由表發送給了\(R_1\),其中有“\(N_1\),2,\(R_1\)”這一項。\(R_1\)收到報文后,誤以為可經過\(R_2\)到達網絡\(N_1\),於是將收到的“\(N_1\),2,\(R_1\)”改為“\(N_1\),3,\(R_2\)”並放入自己的路由表。然后\(R_1\)又把更新的信息發送給\(R_2\),結果\(R_1\)與\(R_2\)相互以為對方能夠到達\(N_1\),便一直如此更新彼此的路由表,最后直到該表項的距離字段到達16才停止。這就是“好消息傳得快,壞消息傳得慢”的含義。
總結
RIP的優點
實現簡單,開銷較小。
RIP的缺點
- RIP限制了網絡的規模,因為它能使用的最大距離為16;
- 使用RIP的路由器交換的是完整的路由表,因而隨着網絡規模的擴大,開銷也隨之增加;
- “壞消息傳得慢”這個特點,使得更新過程收斂時間過長。
因此對於規模較大的協議,不宜使用RIP協議,而應使用OSPF協議。目前在規模較小的網絡中,使用RIP協議的仍然占多數。