在RFC 1058 RIP中,有一個單一的距離-向量度量:跳數。R I P中缺省的跳度量為1。因此,對于每一臺接收和轉發報文的路由器而言,R I P報文數量域中的跳數遞增1。這些距離度量用于建造路由表。路由表指明了一個報文以最小耗費到達其目的地的下一跳。
早一些私有的類R I P路由協議使用1作為惟一支持的每一跳耗費。RFC 1058 RIP保留了這個習慣作為缺省的跳數值,但提供給路由器的治理者選擇更大耗費值的能力。這些值對于區分不同性能的鏈路是有好處的。這些值可以是不同網絡鏈路(比如區分5 K b p s線路和T 1私有線路)帶寬或者甚至是新路由器與舊模型之間的性能差異。
圖5對圖4中給出的廣域網進行了一點改動。這個圖為圖4中的拓撲加入了低速冗余鏈路。網絡治理員,為了保證可選路由保持其狀態,把這些可選路由的度量值設為1 0。這些更高的耗費使得路由選擇趨向于更高帶寬的T 1傳輸線路。在其中一條T 1線路發生故障時,互聯網絡能繼續保持工作正常,雖然由于5 6 K b p s備份線路的可用帶寬更低而造成性能降低。圖6給出了當網關與路由器之間的T 1線路發生故障時,互聯網絡如何反應的情況。
圖4 具有相同耗費的同構網絡
圖5 改變跳數以區分基本路由和可選路由圖6 跳數很快地加起來,但是網絡仍保持工作
圖6 跳數很快的地加起來,但是網絡仍保持工作
可選的5 6 K b p s傳輸線路成為路由器A與其他網絡部分進行通信的惟一路徑。路由器A的路由表,在網絡收斂于新的拓撲之后,其內容匯總在表4中。
R I P為每個目的地只記錄一條路由的事實要求R I P積極地維護路由表的完整性。通過要求所有活躍的R I P路由器在固定時間間隔廣播其路由表內容至相鄰的R I P路由器來做到這一點,所有收到的更新自動代替已經存儲在路由表中的信息。R I P依靠3個計時器來維護路由表:
? 更新計時器
? 路由超時計時器
? 路由刷新計時器更新計時器用于在節點一級初始化路由表更新。每個R I P節點只使用一個更新計時器。相反的,路由超時計時器和路由刷新計時器為每一個路由維護一個。
如此看來,不同的超時和路由刷新計時器可以在每個路由表項中結合在一起。這些計時器一起能使R I P節點維護路由的完整性并且通過基于時間的觸發行為使網絡從故障中得到恢復。
1. 初始化表更新R I P路由器每隔3 0秒觸發一次表更新。更新計時器用于記錄時間量。一旦時間到,R I P節點就會產生一系列包含自身全部路由表的報文。這些報文廣播到每一個相鄰節點。因此,每一個R I P路由器大約每隔3 0秒鐘應收到從每個
相鄰R I P節點發來的更新。注重在更大的基于R I P的自治系統中,這些周期性的更新會產生不能接受的流量。因此,一個節點一個節點地交錯進行更新更理想一些。R I P自動完成更新,每一次更新計時器會被復位,一個小的、任意的時間值加到時鐘上。
假如更新并沒有如所希望的一樣出現,說明互聯網絡中的某個地方發生了故障或錯誤。故障可能是簡單的如把包含更新內容的報文丟掉了。故障也可能是嚴重的如路由器故障,或者是介于這兩個極端之間的情況。顯然,采取合適的措施會因不同的故障而有很大區別。由于更新報文丟失而作廢一系列路由是不明智的(記住,R I P更新報文使用不可靠的傳輸協議以最小化開銷)。因此,當一個更新丟失時,不采取更正行為是合理的。為了幫助區別故障和錯誤的重要程度,R I P使用多個計時器來標識無效路由。
2. 標識無效路由
有兩種方式使路由變為無效:
? 路由終止。
? 路由器從其他路由器處學習到路由不可用。在任何一種情形下,R I P路由器需要改變路由表以反映給定路由已不可達。一個路由假如在一個給定時間之內沒有收到更新就中止。比如,路由超時計時器通常設為1 8 0秒。當路由變為活躍或被更新時,這個時鐘被初始化。
1 8 0秒是大致估計的時間,這個時間足以令一臺路由器從它的相鄰路由器處收到6個路由表更新報文(假設它們每隔3 0秒發送一次路由更新),假如1 8 0秒消逝之后,R I P路由器沒收到關于那條路由的更新,R I P路由器就認為那個目的I P地址不再是可達的。因此,路由器就會把那條路由表項標記為無效。通過設置它的路由度量值為1 6來實現,并且要設置路由變化標志。這個信息可以通過周期性的路由表更新來與其相鄰路由器交流。
注重對于R I P節點而言,1 6等于無窮。因此,簡單的設置耗費度量值為1 6能作廢一條
路由。
接到路由新的無效狀態通知的相鄰節點使用此信息來更新它們自己的路由表。這是路由變為無效的第二種方式。
無效項在路由表中存在很短時間,路由器決定是否應該刪除它。即使表項保持在路由表中,報文也不能發送到那個表項的目的地址:R I P不能把報文轉發至無效的目的地。
假如路由更新在2 7 0秒之后仍未收到( 1 8 0秒超時加上9 0秒路由刷新時間),就從路由表中移去此路由(也就是刷新)。而為了路由刷新遞減計數的計時器稱為路由刷新計時器。這個計時器對于R I P從網絡故障中恢復的能力絕對必要。
主動和被動站點
注重到為了使R I P互聯網絡正常工作,網絡中的每一個網關必須參與進去這一點很重要。參與可以是主動參與也可以是被動參與,但所有的網關必須參與。主動節點是那些主動地進行共享路由信息的節點。它們從相鄰者處接收更新,并且轉發它們的路由表項拷貝至那些相鄰節點。
被動站點從相鄰者處接收更新,并且使用那些更新來維護它們的路由表。然而被動節點不主動地發布它們自己路由表項的拷貝。被動維護路由表的能力在硬件路由器出現之前的日子里是非凡有用的特性,那時路由是一個運行在U N I X處理器下的后臺程序,這樣會使U N I X主機上的路由開銷達到最小。
2.3 尋址問題
I E T F確保R I P完全向后兼容于所有知道的R I P和路由變體。考慮到這些協議都是高度個體化的,所以開放式的標準R I P沒有規定地址類型是必要的。R I P報文中的地址標識域可以包含:
? 主機地址。
? 子網號。
? 網絡號。
? 0,指示缺省路由。
這個靈活性暗示了如下事實,R I P答應計算至單獨主機的路由,也答應計算至包含大量主機的網絡的路由。為了適應這一操作中的地址靈活性,R I P節點當轉發報文時使用最非凡的可用信息。比如,當R I P路由器收到一個I P報文時,必須查看目的地址。它試圖把這個地址與路由表中的目的地址作匹配。假如它不能找到那個目的地主機地址,就會檢查目的地址是否能和一個已知的子網或網絡號進行匹配。假如在這一級也不能進行匹配,R I P路由器會使用缺省路由來轉發報文。
1. 路由至網關
到本章的這時為止,R I P路由表中的項一直假設為至個別主機的路由。這個簡單的假設可以更好地描述路由原本的工作方式。現在,網絡已變得太大,網絡內有很多主機,記錄到主機的路由是不現實的。基于主機的路由不必要地擴大了路由表,并且減慢了路由表中的路由速度。