RIPng
RIPng
RIPng的度量是基於跳數(hops count)的,每經過一台路由器,路徑的跳數加l。如此一來,跳數越多,路徑就越長,路由演演算法會優先選擇跳數少的路徑。RIPng支持的最大跳數是15,跳數為16的網路被認為不可達。
圖1 RIPng網路拓撲
RIPng中路由的更新是通過定時廣播實現每個路由表有一個更新計時器(Update Timer),預設情況下,路由器每隔30秒向與它相連的網路廣播自己的路由表,接到廣播的路由器將收到的信息添加至自身的路由表中。每個路由器都如此廣播,最終網路上所有的路由器都會得知全部的路由信息。正常情況下,每30秒路由器就可以收到一次路由信息確認,如果經過180秒,即6個更新周期,1個路由項都沒有得到確認,路由器就認為它已失效了。如果再經過120秒,路由項仍沒有得到確認,它就被從路由表中刪除。上面的30秒、180秒和120秒的延時都是由計時器控制的,它們分別是更新計時器(UpdateTimer)、暫時超時計時器(Timeout)和垃圾收集計時器(Garbage—collection Timer) 。
RIPng報文用UDP數據報進行傳輸,使用埠號521發送和接收數據報。RIPng報文分為兩類:選路信息報文和用於請求信息的報文。它們都使用相同格式,由固定的首部和路由表項I盯E(Route Table Entry)組成,其中路由表項可以有多個,如圖2所示。首部包括命令欄位和版本號欄位。同RIP一樣,命令欄位用來區分報文要實現的各種操作。其中命令號1表示請求部分或全部選路信息,命令號2表示響應。
圖2 RiPng報文格式
(RIPng:RIP for IPv6)
下一代路由選擇信息協議(RIPng,應用於 IPv6)是一種基於 IPv6 網路協議和演演算法的協議。在國際性網路中,如網際網路,擁有很多應用於整個網路的路由選擇協議。形成網路的每一個自治系統(AS),都有屬於自己的路由選擇技術,不同的自治系統,路由選擇技術也不同。自治系統內部的路由選擇協議稱為內部網關協議(IGP)。外部網關協議(EGP)是一種用於在自治系統之間傳輸路由選擇信息的協議。 RIPng 在中等規模的 AS 中被用作 IGP 協議。對於較複雜的網路環境, RIPng 不適用。
RIPng 是一種距離向量(Distance Vector)演演算法。此協議所用的演演算法早在 1969 年, ARPANET 就用其來計算路由。然而該協議最初屬於 XEROX 網路協議。 PUP 協議通過網關信息協議交換路由選擇信息,而 XNS 則採用該協議的更新版本,命名為路由選擇信息協議(RIP)實現路由選擇信息交換。 Berkeley 的路由協議很大程度上與 RIP 相同,即能夠處理 IPV4 及其它地址類型的通用地址格式取代了 XNS 地址,同時路由選擇每隔 30 秒更新一次。正是因為這種相似性, RIP 既適用於 XNS 協議,也適用於路由類協議。
關於 IPV4 網路,路由選擇信息協議即指 RIP / RIP2,具體內容可參照相關說明。本文主要闡述 RIPng 。
關於 IPV6 網路,路由選擇信息協議即指 RIPng
RIPng報文格式
RIPng是基於UDP的協議,並且使用埠號521發送和接收數據報。RIPng報文大致可分為兩類:選路
信息報文和用於請求信息的報文。它們都使用相同的格式,由固定的首部和路由表項RTE(Route Table
Entry)組成,其中路由表項可以有多個。
RIPng工作原理
路由器通常不會主動發出請求報文來進行路由請求,路由請求通常只是在路由器剛啟動或是路由器正在尋找路由信息時才會發出請求報文以獲得響應。路由器在查詢響應、周期更新、觸發更新三種情況下會收到響應報文。路由器根據響應報文判斷是否對本地路由表進行更新。由於響應報文可能對本地路由表進行改動,因此對報文的來源必須進行嚴格的檢查,以確認報文的合法性。
眾所周知,基於距離矢量演演算法的路由協議會產生慢收斂和無限計數問題,這樣就引發了路由的不一致。RIPng使用水平分割技術、毒性逆轉技術、觸發更新技術來解決這些問題,但是這些技術的引入,同時又帶來了另一些問題,如採用觸發更新技術后,如果不對產生的報文進行合理的控制,很容易產生廣播風暴。
路由器周期性的報文廣播和觸發更新給網路造成很多額外的負載,為減少路由信息的數量,RIPng可以採用多播技術發送更新報文,同時利用一個小的隨機時延對觸發更新報文進行抑制。
介紹RIPng的工作原理就不能不提到定時器,定時器在RIPng中起著非常重要的作用,RIPng使用定時器來實現路由表的更新、報文的發送。周期性的報文廣播是由定時器實現的,另外為防止路由表長時間未更新而失效,每個路由表項有兩個定時器與之相聯繫,超時的路由表項最終將會被刪除,以防止路由器廣播和使用已經失效的路由。RIPng中使用的定時器主要有以下三個:啟動周期性廣播的定時器。此定時器被設置成25s到35s之間的任一隨機數。這樣設置的目的是為了避免網路上所有路由器以相同的定時發送更新報文,利用隨機間隔可以均衡通信量,從而減少路由器之間發生衝突的可能性。
期滿定時器。路由器只要收到通往特定信宿路由,就對通往該信宿的期滿定時器初始化。期滿定時器被設定為180s,如果一條路由在期滿定時器超時前未得到相關報文的更新,則該條路由不再有效,但仍保留在路由表中,以便通知其他路由器這條路由已經失效。
垃圾收集定時器。路由器對無效路由打上尺度為無窮大的無效標記並將垃圾收集定時器初始化。此時,定時器被設置為120s,在這段時間內這些路由仍然會被路由器周期性地廣播,這樣相鄰路由器就能迅速從路由表中刪除該路由。
根據上面的介紹,我們應該看到RIPng的目標並不是創造一個全新的協議,而是對RIP進行必要的改造以使其適應IPv6下的選路要求,因此RIPng的基本工作原理同RIP是一樣的,其主要的變化在地址和報文格式方面。下面列舉了一些RIPv1、RIPv2與RIPng之間的主要區別:
1. 地址版本。RIPv1、RIPv2是基於IPv4的,地址域只有32bit,而RIPng基於IPv6,使用的所有地址均為128bit。
2. 子網掩碼和前綴長度。RIPv1被設計成用於無子網的網路,因此沒有子網掩碼的概念,這就決定了RIPv1不能用於傳播變長的子網地址或用於CIDR的無類型地址。RIPv2增加了對子網選路的支持,因此使用子網掩碼區分網路路由和子網路由。IPv6的地址前綴有明確的含義,因此RIPng中不再有子網掩碼的概念,取而代之的是前綴長度。同樣也是由於使用了IPv6地址,RIPng中也沒有必要再區分網路路由、子網路由和主機路由。
3. 協議的使用範圍。RIPv1、RIPv2的使用範圍被設計成不只局限於TCP/IP協議簇,還能適應其他網路協議簇的規定,因此報文的路由表項中包含有網路協議簇欄位,但實際的實現程序很少被用於其他非IP的網路,因此RIPng中去掉了對這一功能的支持。
4. 對下一跳的表示。RIPv1中沒有下一跳的信息,接收端路由器把報文的源IP地址作為到目的網路路由的下一跳。RIPv2中明確包含了下一跳信息,便於選擇最優路由和防止出現選路環路及慢收斂。與RIPv2不同,為防止RTE過長,同時也是為了提高路由信息的傳輸效率,RIPng中的下一跳欄位是作為一個單獨的RTE存在的。
5. 報文長度。RIPv1、RIPv2中對報文的長度均有限制,規定每個報文最多只能攜帶25個RTE。而RIPng對報文長度、RTE的數目都不作規定,報文的長度是由介質的MTU決定的。RIPng對報文長度的處理,提高了網路對路由信息的傳輸效率。
6. RIPng使用FF02::9這個地址進行組播更新。