1. 程式人生 > >計算機網路之IP路由(二)---RIP協議

計算機網路之IP路由(二)---RIP協議

RIP 基本原理

        RIP是基於貝爾曼-福特演算法的一種內部閘道器路徑向量協議。RIP基於UDP封裝路由資訊,在520號埠上偵聽並接收來自遠端路由器傳送的路由更新資訊,並對本地路由器中的路由表做相應的修改在廣播給其他路由器。路由器每隔30s向外廣播路由資訊,如果經過180s都沒有收到對端路由器的路由更新資訊,則將來自此路由器的路由資訊標誌為不可達,再經過120s都還沒有收到路由更新資訊,則將路由從該路由表中刪除。RIP使用跳數來衡量到達網路的距離,與路由器直接相連的網路距離為0,每增加一臺路由器,跳數加1,當跳數為16跳時,定義為不可達,所以RIP協議規定最大跳數為15跳。

執行RIP協議的路由器路由表更新過程

       收到遠端路由器的路由更新資訊之後,將收到的路由表與自身路由表進行比較,如果本地路由表裡的路由條目中沒有並且遠端路由器的路由表裡有路由條目,則本地路由器新增該條路由條目,並且跳數加1,如果本地路由表中已有路由條目,並且下一跳是該鄰居路由器時,無論度量值增大還是減少,都更新該路由項,該路由條目的下一跳不是該鄰居路由器時,只在度量值減少時更新路由條目。

RIP報文格式

       RIP有兩個版本,RIPv1和RIPv2。RIPv1不支援可變長子網掩碼(VLSM),RIPv2支援可變長子網掩碼以及支援路由聚合和無類域間路由,並且支援明文驗證和MD5密文驗證。RIPv1使用廣播方式傳送報文,RIPv2使用廣播和多播方式傳送報文,多播地址為224.0.0.9。使用多播的好處就是可以避免沒有執行RIP的網段接收RIP報文,還可以避免執行RIPv1的網段錯誤接收和處理RIPv2中帶有子網掩碼的路由。

       RIPv1報文包括一個命令識別符號(Command)、一個版本號(Version)、若干條路由條目構成,路由條目包括IP地址和度量值。RIPv2報文頭部與RIPv1的一樣,但是路由條目裡面還包含了子網掩碼以及下一跳地址。RIP報文頭部4個位元組,每條路由條目20個位元組,一個RIP資料報文的大小為4+20*25+8=512位元組,8位元組為UDP的頭部長度。

RIP防環機制

      RIP產生環路的原因:一臺路由器從鄰居路由器學習到一條路由,假設由於鏈路原因該路由條目在鄰居路由器上已失效,但是該路由器又將這條路由資訊傳送給鄰居路由器,這樣是鄰居路由器誤認為可以通過這臺路由器到達目的網路,這樣兩臺相鄰的路由器週期性地交換路由資訊,使得該條路由資訊不斷在兩臺路由器之間傳送,直至跳數增至16跳時才結束,這樣就產生了環路。

解決環路方法1:水平分割。

      路由器不允許把從一個介面進來的更新又通過該介面轉發出去。簡單來說就是從鄰居路由器學習來的路由資訊不再發送給該鄰居路由器。

解決環路方法2:毒性反轉

      當網路發生故障時,路由器將路由表中的到達該網路的路徑開銷設定為16,即不可達,鄰居路由器收到網路不可達的通過後,向該路由器傳送一個毒性反轉的更新,用來確認網段上的所有路由器都收到網路不可達的通告資訊。

解決環路方法3:觸發更新

       路由器檢測到網路拓撲發生變化的時候,立即傳送觸發更新資訊給相鄰路由器,需要與毒性反轉一起結合使用。