TCP/IP學習筆記之八 --- 動態選路協議

當相鄰路由器之間進行通信,以告知對方每個路由器當前所連接的網絡,這時就出現了動態選路。路由器之間必須採用選路協議進行通信,這樣的選路協議有很多種。路由器上有一個進程稱爲路由守護程序(routingdaemon),它運行選路協議,並與其相鄰的一些路由器進行通信。
動態選路並不改變內核在IP層的選路方式(這種選路方式稱爲選路機制)。當路由隨時間變化時,路由表中的路由由路由守護程序動態地增加或刪除。
路由守護程序將選路策略(routingpolicy)加入到系統中,選擇路由並加入到內核的路由表中。如果守護程序發現前往同一信宿存在多條路由,那麼它(以某種方法)將選擇最佳路由並加入內核路由表中。如果路由守護程序發現一條鏈路已經斷開(可能是路由器崩潰或電話線路不好),它可以刪除受影響的路由或增加另一條路由以繞過該問題。
在像Internet這樣的系統中,目前採用了許多不同的選路協議。Internet是以一組自治系統(AS,AutonomousSystem)的方式組織的,每個自治系統通常由單個實體管理。
每個自治系統可以選擇該自治系統中各個路由器之間的選路協議。這種協議我們稱之爲內部網關協議IGP(InteriorGatewayProtocol)或域內選路協議(intradomainroutingprotocol)。最常用的IGP是選路信息協議RIP。一種新的IGP是開放最短路徑優先OSPF(OpenShortestPathFirst)協議。它意在取代RIP。
外部網關協議EGP(ExterierGatewayProtocol)或域內選路協議的分隔選路協議用於不同自治系統之間的路由器。
 
RIP報文
Unix系統上常常運行名爲routed路由守護程序。幾乎在所有的TCP/IP實現中都提供該程序。該程序只使用RIP進行通信。
RIP報文包含中在UDP數據報中,如下圖:
 
命令字段爲1表示請求,2表示應答。還有兩個捨棄不用的命令(3和4),兩個非正式的命令:輪詢(5)和輪詢表項(6)。請求表示要求其他系統發送其全部或部分路由表。應答則包含發送者全部或部分路由表。
版本字段通常爲1,而第2版RIP(10.5節)將此字段設置爲2。
緊跟在後面的20字節指定地址系列(addressfamily)(對於IP地址來說,其值是2)、IP地址以及相應的度量。在本節的後面可以看出,RIP的度量是以跳計數的。
採用這種20字節格式的RIP報文可以通告多達25條路由。上限25是用來保證RIP報文的總長度爲20×25+4=504,小於512字節。由於每個報文最多攜帶25個路由,因此爲了發送整個路由表,經常需要多個報文。
 
RIP的正常運行
RIP常用的UDP端口號是520。
•初始化:在啓動一個路由守護程序時,它先判斷啓動了哪些接口,並在每個接口上發送一個請求報文,要求其他路由器發送完整路由表。在點對點鏈路中,該請求是發送給其他終點的。如果網絡支持廣播的話,這種請求是以廣播形式發送的。目的UDP端口號是520(這是其他路由器的路由守護程序端口號)。
這種請求報文的命令字段爲1,但地址系列字段設置爲0,而度量字段設置爲16。這是一種要求另一端完整路由表的特殊請求報文。
•接收到請求。如果這個請求是剛纔提到的特殊請求,那麼路由器就將完整的路由表發送給請求者。否則,就處理請求中的每一個表項:如果有連接到指明地址的路由,則將度量設置成我們的值,否則將度量置爲16(度量爲16是一種稱爲“無窮大”的特殊值,它意味着沒有到達目的的路由)。然後發回響應。
•接收到響應。使響應生效,可能會更新路由表。可能會增加新表項,對已有的表項進行修改,或是將已有表項刪除。
•定期選路更新。每過30秒,所有或部分路由器會將其完整路由表發送給相鄰路由器。發送路由表可以是廣播形式的(如在以太網上),或是發送給點對點鏈路的其他終點的。
•觸發更新。每當一條路由的度量發生變化時,就對它進行更新。不需要發送完整路由表,而只需要發送那些發生變化的表項。
每條路由都有與之相關的定時器。如果運行RIP的系統發現一條路由在3分鐘內未更新,就將該路由的度量設置成無窮大(16),並標註爲刪除。
 
RIP的度量
RIP所使用的度量是以跳(hop)計算的。所有直接連接接口的跳數爲1。
由於每個路由器都發送其路由表給鄰站,因此,可以判斷在同一個自治系統AS內到每個網絡的路由。如果在該AS內從一個路由器到一個網絡有多條路由,那麼路由器將選擇跳數最小的路由,而忽略其他路由。
跳數的最大值是15,這意味着RIP只能用在主機間最大跳數值爲15的AS內。度量爲16表示到無路由到達該IP地址。
 
RIP2
RFC1388[Malkin1993a]中對RIP定義進行了擴充,通常稱其結果爲RIP-2。這些擴充並不改變協議本身,而是利用下圖中的一些標註爲“必須爲0”的字段來傳遞一些額外的信息。如果RIP忽略這些必須爲0的字段,那麼,RIP和RIP-2可以互操作。
 
選路域(routingdomain)是一個選路守護程序的標識符,它指出了這個數據報的所有者。在一個Unix實現中,它可以是選路守護程序的進程號。該域允許管理者在單個路由器上運行多個RIP實例,每個實例在一個選路域內運行。
選路標記(routingtag)是爲了支持外部網關協議而存在的。它攜帶着一個EGP和BGP的自治系統號。每個表項的子網掩碼應用於相應的IP地址上。下一站IP地址指明發往目的IP地址的報文該發往哪裏。該字段爲0意味着發往目的地址的報文應該發給發送RIP報文的系統。
RIP-2提供了一種簡單的鑑別機制。可以指定RIP報文的前20字節表項地址系列爲0xffff,路由標記爲2。表項中的其餘16字節包含一個明文口令。
最後,RIP-2除了廣播外,還支持多播。這可以減少不收聽RIP-2報文的主機的負載。
 
OSPF
OSPF是除RIP外的另一個內部網關協議。它克服了RIP的所有限制。
與採用距離向量的RIP協議不同的是,OSPF是一個鏈路狀態協議。
OSPE選路:在一個鏈路狀態協議中,路由器並不與其鄰站交換距離信息。它採用的是每個路由器主動地測試與其鄰站相連鏈路的狀態,將這些信息發送給它的其他鄰站,而鄰站將這些信息在自治系統中傳播出去。每個路由器接收這些鏈路狀態信息,並建立起完整的路由表。
作爲一種鏈路狀態協議而不是距離向量協議,OSPF還有着一些優於RIP的特點。
1)、OSPF可以對每個IP服務類型計算各自的路由集。這意味着對於任何目的,可以有多個路由表表項,每個表項對應着一個IP服務類型。
2)、給每個接口指派一個無維數的費用。可以通過吞吐率、往返時間、可靠性或其他性能來進行指派。可以給每個IP服務類型指派一個單獨的費用。
3)、當對同一個目的地址存在着多個相同費用的路由時,OSPF在這些路由上平均分配流量。我們稱之爲流量平衡。
4)、OSPF支持子網:子網掩碼與每個通告路由相連。這樣就允許將一個任何類型的IP地址分割成多個不同大小的子網(我們在3.7節中給出了這樣的一個例子,稱之爲變長度子網)。到一個主機的路由是通過全1子網掩碼進行通告的。默認路由是以IP地址爲0.0.0.0、網絡掩碼爲全0進行通告的。
5)、路由器之間的點對點鏈路不需要每端都有一個IP地址,我們稱之爲無編號網絡。這樣可以節省IP地址—現在非常緊缺的一種資源。
6)、採用了一種簡單鑑別機制。可以採用類似於RIP-2機制(10.5節)的方法指定一個明文口令。
7)、OSPF採用多播(第12章),而不是廣播形式,以減少不參與OSPF的系統負載。
 
BGP是一種不同自治系統的路由器之間進行通信的外部網關協議。在Internet中使用BGP的一個目的是減少通過流量。
 
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章