1.概念:
RIP協議是一種內部網關協議(IGP),是一種動態路由選擇協議,用於自治系統(AS)內的路由信息的傳遞。
RIP協議基於距離矢量算法(DistanceVectorAlgorithms),使用"跳數"(即metric)來衡量到達目標地址的路由距離。
這種協議的路由器只關心自己周圍的世界,只與自己相鄰的路由器交換信息,范圍限制在15跳(15度)之內,再遠,它就不關心了。
收斂:使所有路由表都達到一致狀態的過程。
2.工作原理:
RIP通過廣播UDP報文來交換路由信息,每30秒發送一次路由信息更新(UDP520端口)。
RIP提供跳躍計數(hopcount)作為尺度來衡量路由距離,跳躍計數是一個包到達目標所必須經過的路由器的數目。
如果到相同目標有二個不等速或不同帶寬的路由器,但跳躍計數相同,則RIP認為兩個路由是等距離的。
RIP最多支持的跳數為15,即在源和目的網間所要經過的最多路由器的數目為15,跳數16表示不可達。
3.算法(距離向量算法)
對每一個相鄰路由器發送過來的RIP報文,進行以下步驟:
- 對地址為X的相鄰路由器發來的RIP報文,先修改此報文中的所有項目:把"下一跳"字段中的地址都改為X,並把所有的"距離"字段的值加1
每個項目都有三個關鍵數據,即:目的網絡N,距離是d,下一跳路由器是X。
- 對修改后的RIP報文中的每一個項目,進行如下步驟:
若原來的路由表中沒有目的網絡N,則把該項目添加到路由表中;
若原目的網絡為N且距離大於d,則把收到的項目替換原路由表中的項目。 - 若3分鍾還沒有收到相鄰路由器的更新路由表,則把此相鄰路由器記為不可到達的路由器,即把距離設置為16;
- 返回;
NET | Next hop | Metric | |
---|---|---|---|
C | 10.0.0.0 | 20.0.0.1 | 1 |
C | 30.0.0.0 | 40.0.0.2 | 2 |
R3到右邊的的路徑被剪斷了,R3可以感受到,於是在自己的路由表中更新為16,表示"無窮大",不可達。
R3准備在下一個30秒內告訴R2這個壞消息,但是在這之間R2先把自己的所有信息都告訴了R3,R3一看咦?R2到C的跳數是1,我到R2就一跳,現在雖然我不能直接到,那么繞道R2不就可以了嗎?說干就干,於是把自己到C的跳數改為2.好了,真相被謊言掩蓋了。
R3向R2這個好基友坦白所有的信息,R2看到R3到C的距離變為3了,R2知道自己是經過R3才到達的C,於是毫不猶豫的改為4.下一次再把全部信息告訴R3,R3收到一看,咋回事啊,怎么又加一跳了呢!R2那邊發生了什么?但是還是得根據規則,毫不猶豫的修改距離跳數。就這樣不斷增加,直到都為16,才恍然大悟,原來大家都到不了了啊。
解決這個問題可以用水平分割:
- 從一個接口學習到的路由信息,不再從這個接口發送出去;
- 同時也能減少路由更新信息占用的鏈路帶寬資源。
實驗:
# rip v1
router rip #啟用rip協議
version 1 #設置版本
network 10.0.0.0 #激活網段
network 20.0.0.0 #激活網段
# rip v2
router rip
version 2
no auto-summry
network 10.0.0.0
network 20.0.0.0
作業: