TCP/IP詳解讀書筆記(第10章動態(tài)選路協(xié)議)
在前面各章中,討論了靜態(tài)選路。在配置接口時,以默認方式生成路由表項(對于直接連接的接口),并通過route命令增加表項(通常從系統(tǒng)自引導程序文件),或是通過I MP重定向生成表項(通常是在默認方式出錯的情況下)。
在網(wǎng)絡很小,且與其他網(wǎng)絡只有單個連接點且沒有多余路由時(若主路由失敗,可以使用備用路由),采用這種方法是可行的。如果上述三種情況不能全部滿足,通常使用動態(tài)選路。
本章討論動態(tài)選路協(xié)議,它用于路由器間的通信。我們主要討論RIP,即選路信息協(xié)議(Routing Information Protocol),大多數(shù)TCP/IP實現(xiàn)都提供這個應用廣泛的協(xié)議。然后討論兩種新的選路協(xié)議,OSPF和BGP。
動態(tài)選路
當相鄰路由器之間進行通信,以告知對方每個路由器當前所連接的網(wǎng)絡,這時就出現(xiàn)了動態(tài)選路。路由器之間必須采用選路協(xié)議進行通信,這樣的選路協(xié)議有很多種。路由器上有一個進程稱為路由守護程序(routing daemon),它運行選路協(xié)議,并與其相鄰的一些路由器進行通信。路由守護程序根據(jù)它從相鄰路由器接收到的信息,更新內(nèi)核中的路由表。
注:動態(tài)選路并不改變我們在上章中所描述的內(nèi)核在IP層的選路方式。這種選路方式稱為選路機制(routing mechanism)。內(nèi)核搜索路由表,查找主機路由、網(wǎng)絡路由以及默認路由的方式并沒有改變。僅僅是放置到路由表中的信息改變了—當路由隨時間變化時,路由是由路由守護程序動態(tài)地增加或刪除,而不是來自于自引導程序文件中的route命令。
路由守護程序將選路策略(routing policy)加入到系統(tǒng)中,選擇路由并加入到內(nèi)核的路由表中。如果守護程序發(fā)現(xiàn)前往同一信宿存在多條路由,那么它(以某種方法)將選擇最佳路由并加入內(nèi)核路由表中。如果路由守護程序發(fā)現(xiàn)一條鏈路已經(jīng)斷開(可能是路由器崩潰或電話線路不好),它可以刪除受影響的路由或增加另一條路由以繞過該問題。
RIP:選路信息協(xié)議
報文格式
RIP報文包含中在UDP數(shù)據(jù)報中,如圖1所示:
圖1:封裝在UDP數(shù)據(jù)包中的RIP報文
詳細的RIP報文格式如圖2所示:
圖2:RIP報文格式
命令字段為1表示請求,2表示應答。還有兩個舍棄不用的命令(3和4),兩個非正式的命令:輪詢(5)和輪詢表項(6)。請求表示要求其他系統(tǒng)發(fā)送其全部或部分路由表。應答則包含發(fā)送者全部或部分路由表。
版本字段通常為1,而第2版RIP將此字段設置為2。緊跟在后面的20字節(jié)指定地址系列(address family)(對于IP地址來說,其值是2)、IP地址以及相應的度量。RIP的度量是以跳計數(shù)的。采用這種20字節(jié)格式的RIP報文可以通告多達25條路由。上限25是用來保證RIP報文的總長度為20×25 + 4 = 504,小于512字節(jié)。由于每個報文最多攜帶25個路由,因此為了發(fā)送整個路由表,經(jīng)常需要多個報文。
度量
RIP所使用的度量是以跳( hop )計算的。所有直接連接接口的跳數(shù)為1。考慮圖3所示的
路由器和網(wǎng)絡。畫出的4條虛線是廣播RIP報文。(R-理由器,N-網(wǎng)絡)
圖3:路由器和網(wǎng)絡示例
路由器R1通過發(fā)送廣播到N1通告它與N2之間的跳數(shù)是1(發(fā)送給N1的廣播中通告它與N1之間的路由是無用的)。同時也通過發(fā)送廣播給N2通告它與N1之間的跳數(shù)為1。同樣,R2通告它與N2的度量為1,與N3的度量為1。
如果相鄰路由器通告它與其他網(wǎng)絡路由的跳數(shù)為1,那么我們與那個網(wǎng)絡的度量就是2,這是因為為了發(fā)送報文到該網(wǎng)絡,我們必須經(jīng)過那個路由器。在我們的例子中, R2到N1的度量是2,與R1到N3的度量一樣。
跳數(shù)的最大值是15,這意味著RIP只能用在主機間最大跳數(shù)值為15的AS內(nèi)。度量為16表示到無路由到達該I P地址。
OSPF:開放最短路徑優(yōu)先
O S P F是除R I P外的另一個內(nèi)部網(wǎng)關協(xié)議。它克服了R I P的所有限制。
與采用距離向量的R I P協(xié)議不同的是, O S P F是一個鏈路狀態(tài)協(xié)議。距離向量的意思是,R P發(fā)送的報文包含一個距離向量(跳數(shù))。每個路由器都根據(jù)它所接收到鄰站的這些距離向量來更新自己的路由表。
在一個鏈路狀態(tài)協(xié)議中,路由器并不與其鄰站交換距離信息。它采用的是每個路由器主
動地測試與其鄰站相連鏈路的狀態(tài),將這些信息發(fā)送給它的其他鄰站,而鄰站將這些信息在
自治系統(tǒng)中傳播出去。每個路由器接收這些鏈路狀態(tài)信息,并建立起完整的路由表。
BGP:邊界網(wǎng)關協(xié)議
BGP是一種不同自治系統(tǒng)的路由器之間進行通信的外部網(wǎng)關協(xié)議。
BGP系統(tǒng)與其他BGP系統(tǒng)之間交換網(wǎng)絡可到達信息。這些信息包括數(shù)據(jù)到達這些網(wǎng)絡所必須經(jīng)過的自治系統(tǒng)AS中的所有路徑。這些信息足以構造一幅自治系統(tǒng)連接圖。然后,可以根據(jù)連接圖刪除選路環(huán),制訂選路策略。