IPv6來了,RIP協議應何去何從
網絡的發展是無法估量的,現在我們已經從IPv4過度到IPv6了,那么在路由方面,尤其是RIP協議方面,它又應該如何適應呢?Internet的迅猛發展,使得網絡規模急劇膨脹,信息量直線上升,新應用層出不窮,原有的己發展20多年的網絡互連協議版本4——IPv4協議由于其先天的缺陷(地址空間不足、路由選擇效率不高、安全性差、服務質量不高以及缺乏對移動的有效支持等),己經不能從根本上適應網絡發展的需要.在這樣的背景下,下一代網絡標準——IPv6協議應運而生.本文探討了Ripng用于IPv6網絡的RIP.在IPv6技術作為下一代互聯網IP層技術已成定局的情況下,深入研究未來網絡中路由技術的簡單,易用協議Ripng是一項走在信息技術學科前沿的課題之一,具有重要的經濟和社會意義.
一、 RIP協議基本工作原理
路由信息協議RIP(RoutingInformationProtocol)是互聯網工程任務組(IETF)的內部網關協議工作組為IP網絡專門設計的路由協議,是一種基于距離矢量算法的內部網關動態路由協議.
每個運行RIP的路由器都維護著一張RIP路由表,該路由表的內容如圖1所示.
圖1RIP路由表示意圖
其中,下一跳(nexthop)表示下一站數據包要到達的地址,度量(metric)代表把數據包從本路由器送達目的站所需的花費(cost).RIP協議支持的***有效度量為15,當一條路由的度量達到16后,那條路由就被認為無效,并且認為對應的目的地不可達.
標志位標志此路由最近是否發生變化,以備觸發更新時用到,年齡實際是個定時器,用于維護每條路由.在RIP中若哪條路由經過180秒后仍未被刷新,則該路由被認為不再有效,而把其度量置成16.
RIP路由器周期性地以多播形式向鄰居發送自己的路由表拷貝,即<目的,度量>組,每個接收到該消息的路由器修改消息中路由的度量,在每條路由的度量上加上接收該路由消息接口的花費.然后,依據度量的大小來判斷路由的好壞,把度量最小的一條路由放入路由表,其判斷過程如下:
(1)查看路由表中是否已有到該目的的路由;(2)如果沒找到,則添加該路由;(3)如果找到,只有在新度量更小時才更新路由,否則,忽略該路由.
圖2是RIP協議的工作流程.由此圖大家就可以很清楚的感受到RIP擁有如此簡單的工作流程.
圖2RIP的工作流程
如圖2所示,當在RouterA路由器的某接口上啟動RIP,接口以多播形式向鄰居發送路由表信息請求,請求鄰居給自己發送路由表信息;鄰居RouterB接收到路由表信息請求,發送整個路由表信息對請求進行響應;RouterA和RouterB在啟動后就開始周期發送并周期更新路由器;RouterA檢測到路由變化時,以多播形式向鄰居發送觸發更新,通知鄰居路由變化.
二、IPv6時代RIP協議的演變
眾所周知,如今的RIP已經從RIP-1發展到RIP-2,直到今天有變革意義的基于IPv6的Ripng!研究RIP的演變過程,剖析其各個發展階段的異同點對于優化、發展該協議具有重要的意義.
RIP-1只在有子網劃分的網絡中支持子網,在該網絡外部由于子網掩碼很難得知,從而也就無法區分子網項和主機項,這樣就需要強制使用嚴格層次路由:外部路由器把分組傳遞到該網中距離最近的路由器,而不考慮目的站點屬于哪個子網.緊跟在嚴格層次路由之后是對連通性的要求,即這個網絡中的每一個路由器都應該知道如何去往任何一個子網!
基于上述缺點,RIP-2定義了一套有效的RIP改進方案,把RIP-1的格式中含有的一些"必須為零"的域,進行了重新定義.
基于安全考慮添加了新的AFI項(0xFFFF)用來傳送"驗證數據";添加了"路由選擇域"、"下一跳域",允許在單個路由器上運行多個RIP實例,指明發往目的IP地址的報文該發向哪里,"下一跳域"屬性使得僅僅只有一個運行別種協議的路由器通告所有的路由,并且使得運行RIP協議的路由器能夠找到正確運行別種協議的路由器作為下一跳以達到所有已知的別種協議的目的地址;添加了"子網掩碼",達到可以支持VLSM(可變長子網掩碼)和CIDR(無類別域間路由)的目的,增強子網選擇路由的性能;添加了"路由標簽",對外部路由進行標志.#p#
RIP-2保留了RFC-1058中定義的"命令字"、"地址族標志符"、"IP地址"、"度量值"等域.
沒有***只有更好!在基于IPv4的RIP-1,RIP-2不斷完善的狀態下,IPv4雖然將一個成熟的互聯網架構支撐了20年之久,但人們早已形成共識,那就是IPv6最終取代IPv4是大勢所趨:128位地址格式所支持的IP地址數量可以徹底解決地址枯竭的問題;IPv4地址空間匱乏,路由選擇效率差,安全性差,移動性差,服務質量保證差.所有這些IPv4問題將毫不猶豫地要求IPv6協議解決,于是Ripng(v6版本)將要,也必然會成為寵兒.
Ripng雖然隸屬RIP家族,但畢竟它經歷了一場變革.與RIP-1,RIP-2在各個方面都有差別:使用端口不同;分組格式不同;***報文長度不同;下一跳不同;編址考慮不同;特殊請求不同;安全考慮不同.
Ripng與RIP-2均有下一跳的說法,但是RIP-2的下一跳是固化在包格式之中的,也就是說下一跳無論添不添都給它留4個字節的空間.而Ripng把下一跳(nexthop)與路由表項分開,使用"度量域"中的值來判斷究竟是下一跳還是路由表項,若值是0xff則說明是下一跳!采用這種方法在無須添寫下一跳信息時,則可以省略不添,從而節省了寶貴空間.
在Ripng與RIP協議改頭換面的變化中,還有一個重大的變化!那就是在RIP-2包格式中有"子網掩碼域",而在Ripng中用一個字節的前綴長度代替了"子網掩碼域"的功能,雖然這與IPv6協議的特點有著不可分割的關系,但是就其布局的合理性、優美性、簡化性也足可以使我們優先考慮使用它.
三、Ripng的實現
Ripng的實現分為六個功能模塊,即Ripng的啟動、Ripng的關閉、輸入處理、輸出處理、定時器處理及路由操作,如圖3所示.
圖3Ripng模塊組成
Ripng啟動模塊:完成Ripng協議的初始化工作,建立通信套接口;Ripng關閉模塊:通知內核刪除由RIPng進程導入的路由、釋放Ripng進程占用的內存空間;輸入處理模塊:把Ripng當作一個黑盒子來處理,鄰居所發送的數據包都是向該黑盒投放的信息,該模塊主要是對這些信息進行相應處理;輸出處理模塊:輸出處理主要包括周期更新和觸發更新的處理;定時器處理模塊:負責維護RIP中為支持尋路操作使用的三個定時器,同時還要負責處理觸發更新中為防止廣播風暴引入的定時機制;路由操作模塊:負責路由條目的處理和路由表的查找和添刪.
Ripng作為解決未來IPv6網絡路由的***,其簡單內部網關協議有強大的優勢和無限的潛力.一個優秀的路由技術,不僅僅是為數據傳輸找到一條高速的通道就行,還需要考慮所選路徑的傳輸容量和服務質量,即具有QoS能力的路由算法,并且還要分析全網負荷,以平衡網絡中各條通道的數據流量.在這些諸多因素考慮的基礎上研究基于IPv6的Ripng路由協議正是我們今后研究的熱點和重點.