1. 程式人生 > >動態選路協議のRIP

動態選路協議のRIP

在前面各章中,我們討論了靜態選路。在配置介面時,以預設方式生成路由表項(對於直接連線的介面),並通過r o u t e命令增加表項(通常從系統自載入程式檔案),或是通過I C M P重定向生成表項(通常是在預設方式出錯的情況下)。在網路很小,且與其他網路只有單個連線點且沒有多餘路由時(若主路由失敗,可以使用備用路由),採用這種方法是可行的。如果上述三種情況不能全部滿足,通常使用動態選路。

本章討論動態選路協議,它用於路由器間的通訊。我們主要討論R I P,即選路資訊協議(Routing Infromation Protocol),大多數T C P / I P實現都提供這個應用廣泛的協議。然後討論兩種新的選路協議,O S P F和B G P。本章的最後研究一種名叫無分類域間選路的新的選路技術,現在I n t e r n e t上正在開始採用該協議以保持B類網路的數量。

動態選路

當相鄰路由器之間進行通訊,以告知對方每個路由器當前所連線的網路,這時就出現了動態選路。路由器之間必須採用選路協議進行通訊,這樣的選路協議有很多種。路由器上有一個程序稱為路由守護程式(routing daemon),它執行選路協議,並與其相鄰的一些路由器進行通訊。正如圖9 - 1所示,路由守護程式根據它從相鄰路由器接收到的資訊,更新核心中的路由表。動態選路並不改變我們在9 . 2節中所描述的核心在I P層的選路方式。這種選路方式稱為選路機制(routing mechanism)。核心搜尋路由表,查詢主機路由、網路路由以及預設路由的方式並沒有改變。僅僅是放置到路由表中的資訊改變了—當路由隨時間變化時,路由是由路由守護程式動態地增加或刪除,而不是來自於自載入程式檔案中的r o u t e命令。正如前面所描述的那樣,路由守護程式將選路策略(routing policy)加入到系統中,選擇路由並加入到核心的路由表中。如果守護程式發現前往同一信宿存在多條路由,那麼它(以某種方法)將選擇最佳路由並加入核心路由表中。如果路由守護程式發現一條鏈路已經斷開(可能是路由器崩潰或電話線路不好),它可以刪除受影響的路由或增加另一條路由以繞過該問題。
在像I n t e r n e t這樣的系統中,目前採用了許多不同的選路協議。I n t e r n e t是以一組自治系統(A S,Autonomous System)的方式組織的,每個自治系統通常由單個實體管理。常常將一個公司或大學校園定義為一個自治系統。N S F N E T的I n t e r n e t骨幹網形成一個自治系統,這是因為骨幹網中的所有路由器都在單個的管理控制之下。每個治系統可以選擇該自治系統中各個路由器之間的選路協議。這種協議我們稱之為內部閘道器協議I G P(Interior Gateway Protocol)或域內選路協議(intradomain routing protocol)。最常用的I G P是選路資訊協議R I P。一種新的I G P是開放最短路徑優先O S P F(Open Shortest
Path First)協議。它意在取代R I P。另一種1 9 8 6年在原來N S F N E T骨幹網上使用的較早的I G P協議—H E L L O,現在已經不用了。新的RFC [Almquist 1993]規定,實現任何動態選路協議的路由器必須同時支援OSPF和RIP,還可以支援其他IGP協議。外部閘道器協議E G P(Exterier Gateway Protocol)或域內選路協議的分隔選路協議用於不

同自治系統之間的路由器。在歷史上,(令人容易混淆)改進的E G P有著一個與它名稱相同的協議:E G P。新E G P是當前在N S F N E T骨幹網和一些連線到骨幹網的區域性網 

Unix選路守護程式

U n i x系統上常常執行名為r o u t e d路由守護程式。幾乎在所有的T C P / I P實現中都提供該程式。該程式只使用R I P進行通訊,我們將在下一節中討論該協議。這是一種用於小型到中型網路中的協議。另一個程式是g a t e d。I G P和E G P都支援它。

選路資訊協議

       RIP報文包含中在UDP資料報中。這裡只總結版本1,對於版本2參考tcp/ipv1

)。



  命令欄位為1表示請求,2表示應答。還有兩個捨棄不用的命令( 34),兩個非正式的命令:輪詢( 5)和輪詢表項( 6)。請求表示要求其他系統傳送其全部或部分路由表。應答則包含傳送者全部或部分路由表。版本欄位通常為1,而第2R I P將此欄位設定為2。緊跟在後面的2 0位元組指定地址系列( address family)(對於I P地址來說,其值是2)、I P地址以及相應的度量。在本節的後面可以看出, R I P的度量是以跳計數的。採用這種2 0位元組格式的R I P報文可以通告多達2 5條路由。上限2 5是用來保證R I P報文的總長度為2 0×25 + 4 = 504,小於5 1 2位元組。由於每個報文最多攜帶2 5個路由,因此為了傳送整個路由表,經常需要多個報文。有一個注意點:跳數的最大值是1 5,這意味著R I P只能用在主機間最大跳數值為1 5A S(自治系統)內。度量為1 6表示到無路由到達該I P地址。最大跳數為15限制了使用RIP網路的大小。

正常執行

讓我們來看一下采用R I P協議的r o u t e d程式正常執行的結果。R I P常用的U D P埠號是5 2 0

1)初始化:在啟動一個路由守護程式時,它先判斷啟動了哪些介面,並在每個介面上傳送一個請求報文,要求其他路由器傳送完整路由表。在點對點鏈路中,該請求是傳送給其他終點的。如果網路支援廣播的話,這種請求是以廣播形式傳送的。這種請求報文的命令欄位為1,但地址系列欄位設定為0,而度量欄位設定為1 6。這是一種要求另一端完整路由表的特殊請求報文。

2)接收到請求。如果這個請求是剛才提到的特殊請求,那麼路由器就將完整的路由表傳送給請求者。否則,就處理請求中的每一個表項:如果有連線到指明地址的路由,則將度量設定成我們的值,否則將度量置為1 6(度量為1 6是一種稱為“無窮大”的特殊值,它意味著沒有到達目的的路由)。然後發回響應。

3)接收到響應。使響應生效,可能會更新路由表。可能會增加新表項,對已有的表項進行修改,或是將已有表項刪除。

4)定期選路更新。每過3 0秒,所有或部分路由器會將其完整路由表傳送給相鄰路由器。傳送路由表可以是廣播形式的(如在乙太網上),或是傳送給點對點鏈路的其他終點的。

5)觸發更新。每當一條路由的度量發生變化時,就對它進行更新。不需要傳送完整路由表,而只需要傳送那些發生變化的表項。

每條路由都有與之相關的定時器。如果執行R I P的系統發現一條路由在3分鐘內未更新,就將該路由的度量設定成無窮(16),並標註為刪除。這意味著已經在63 0秒更新時間裡沒收到通告該路由的路由器的更新了。再過6 0秒,將從本地路由表中刪除該路由,以保證該路由的失效已被傳播開。

更新演算法

      RIP採用的是距離向量演算法,是以最小的跳數為判定標準的。這裡舉個例子:

 RIP存在的問題

          RIP存在的一個問題就是當網路出現故障的時候,要經過較長的時間才能將此資訊傳送到所有的路由器。如下圖:

          如果網路1出現故障,然後R1更新自己的路由表,但是需要30秒之後才向R2傳送,所以此時如果R2先發送了路由表過來的話,然們就會使得,需要很多次往返傳送才能使R2得知網路1故障。