1. 程式人生 > >路由器開發(二)—— 路由器工作原理

路由器開發(二)—— 路由器工作原理

       當資訊需要在兩個網路之間傳輸時,常用路由器這種互連裝置來負責資料的傳輸。路由器的主要工作是:路徑的決定和資料包的轉發(從路由器一個介面輸入,然後選擇合適介面輸出);維護路由表。

      路由器工作的方式非常簡潔明瞭,從接收報文中抽取目的地址,並確定地址中的網路號,查詢路由選擇表以獲得與目標網路相匹配的表項。在路由選擇表中的匹配表項中包括下一站、目的地、輸出介面和其它與路由有關的引數。報文被封裝在適合輸出介面的幀中,並由輸出介面輸出。

     下面具體分析路由器兩種工作的工作原理。

一、路由的概念

    路由是將物件從一個地方轉發到另一個地方的中繼過程。學習和維持網路拓撲結構知識的機制被認為是路由功能。渡越資料流經路由器的進入介面穿過路由器被轉移到外出介面的過程稱為交換/

轉發功能。因此,路由裝置必須同時具有路由和交換的功能才可以作為一臺有效的中繼裝置。

完成路由功能的幾個基本步驟:

1. 路由器必須確定它是否已激活了對某協議組的支援。路由裝置在做轉發決定時,必須知道邏輯目的地地址。要想知道該目的地地址,就必須啟動該邏輯編址方案的協議組,並使其處於當前活躍狀態。常用協議組有:TCP/IPIPXDECnet

2. 當路由器能理解該編址方案後,就要判斷目的地邏輯網路在其當前路由表中是否有效存在。若目的邏輯網路不存在路由表中,則路由器可能被程式設計為丟棄這個資料包,並且生成一個出錯資訊通告發送方。當然若設定了預設路由,則當目的地邏輯網路沒有被包含在裝置路由表中時,將預設路由轉發資料包。

3. 若目的地網路存在於路由表中,則路由器必須判斷哪個外出介面是到達目的地的最佳路徑。此最佳路徑將通過路由選擇協議程序與某個外出介面相關聯,路由選擇協議通過度量值來決定到達目的地的最佳路徑。

4. 當知道外出介面後,路由器必須使用某種封裝方法將資料包進行封裝,轉發到下一跳邏輯裝置

    通過路由功能瞭解到一個指向目的地邏輯網路的路由表條目時,就執行交換操作。交換操作的4個基本步驟:(如圖8示)

1、若資料包所在幀的幀頭中含有路由器某個介面的第2層地址,或者廣播型地址,或者多目組播地址,且該路由器被配置成接收該組播地址的話,則經過路由器的這個資料包將被接收進路由器。當檢查該幀時,如果定址正確,那麼幀的內容(資料包)被快取起來,等待進一步處理。

2、路由器檢查資料包頭中的目的地邏輯網路部分,將其與路由表中的網路和子網路條目進行比較。若在路由表中有與之相匹配的條目,那麼目的地網路就會被與下一跳邏輯裝置和路由器的一個外出介面關聯起來。

3、知道了下一跳裝置的邏輯地址之後,還需要查找出下一跳裝置的實體地址;對於區域網介面來說,該查詢是在地址解析協議(ARP)表中進行的;而對於廣域網介面來說,該查詢是在一個第三層與第二層地址的對映表中進行的。

4、在知道了下一跳裝置的實體地址後,將在路由器的記憶體中生成適當的幀頭。(對於IP資料包來說,路由器還需要修改IP包頭:將生存時間【TTL】域的值減1、更新IP包頭校驗和)在生成幀頭之後,資料幀就被轉移到外出介面,以在物理介質上進行傳輸。當將資料幀放到介質上時,外出介面將在幀上新增迴圈冗餘校驗字元和幀結束定界符。這些字元將在下一跳路由裝置的接收介面上被校驗。

 

                                            圖8路由器執行基本的交換功能

二、路由選擇過程

    路由器在諸多路由協議、手工配置和路由策略下,是如何選擇最佳路由的?理解這個問題,對於掌握路由器的工作原理大有裨益。

 路由選擇牽涉到三個方面:

 1、各種路由協議的處理,包括rip,igrpeigrp,ospf,is-is,bgp等,每個協議都通過IP資料包在路由器間傳遞網路的路由資訊,為路由表的建立提供資訊。

 2、路由表,它從路由協議那裡接受資訊,併為轉發資料包提供所需要的資訊。

 3、轉發過程,它從路由表那裡請求所需要資訊,為正確轉發資料包做出決策。

    資料包的轉發決定依賴於三部分的程序:路由協議、路由表、實際的轉發交換,這三者的關係圖示9

              圖路由協議、路由表和實際轉發交換三者關係

      路由器從一個報文的網路頭中獲取目的地址,然後通過與子網掩碼進行“與”操作(兩個數均為1,則結果為1;其中任何一個數為0,則結果為0)確定網路號。當確定網路號後,就可以通過在路由表中尋找匹配的網路號找出那個能將報文轉發到目的地的最好的介面。在大多數情況下,報文到達目的地之前需要經過多個路由器。

     我們分析一個報文在小型網路中傳輸的例子。在這個例子中,報文來自Tokyo,要發往IP地址為192.168.3.3NMS工作站。(如圖10


                                        圖10遠端目的地的路由選擇

第一步:報文被NY路由器接收,確定它的目的網路號。

第二步:通過查詢NY路由器的路由表,找到輸出介面名和下一站地址。由於我們採用了序列鏈路,所以不需要使用ARP

第三步:報文被髮給下一站路由器(London)。

當報文到達最後一個路由器,一個本地的傳送過程被用來將報文轉發到最終目的地。乙太網本地傳送過程採用ARP。(如圖11示)

第一步:路由器London接收目的地址為NMS工作站的報文;

第二步:路由器London查詢其路由表,發現目的主機在一個與它的介面直接相連的網路上,因此它將進行一個本地傳送;

第三步:路由器London傳送一個ARP請求,通過ARP應答包(第四步)中瞭解到目的主機的MAC地址,則直接將報文傳送至目的主機(第五步)。

 

                                          圖11本地目的地的路由選擇

三、路由表的構成、建立與維護

       路由器在建立路由表時並不關心單個的節點地址,它們只關心某組包應往哪個網段上傳輸。路由表包含了包到達目的地所要經由的路徑(硬體介面)。每個路由器介面都和一特定網段相對應。當路由器檢查到包的邏輯地址時,它就可以決定包應該轉發到哪個子網上去。

1、 路由表的構成

     路由表分為靜態路由表和動態路由表,靜態路由入口由網路管理員手工配置的靜態路由組成,動態路由入口由路由協議如RIPOSPFBGP等交換的路由表資訊組成。執行路由操作所需要的資訊被包含在路由器的路由表中,它們由一個或多個路由選擇協議程序生成。路由表的內容被限制為只含有到所有目的地的最佳路由。如果存在多條等佳路徑,那麼所有這些路徑都將被列入路由表。

    理解路由表的各項的功能對了解路由器的路由過程非常重要。一般路由表有以下七項(如圖12):


                                                            圖12  路由表

a -- 路由資訊的來源(origin

      也就是路由機制,表示該路由資訊是怎樣學習到的。學習方法主要有三種:直連的網路、靜態路由、某種動態路由協議。

b -- 目的網路地址(destination

      也就是目的地邏輯網路或子網路地址。每個路由表入口的兩個核心元素就是目的網路地址和將資料包轉發出去的本地介面。有時候一個路由條目只列出目的網路和下一跳地址而沒有本地介面。沒有本地介面是無法將資料包轉發出去的,因為交換網板不知道該接通哪個“開關”。這種情況下,必須執行第二次迴圈查詢,用下一跳地址作為目的地址去路由表中查詢到一個匹配條目,找到一個本地介面。       

c -- 管理距離(administrative distance

      標識一種路由學習機制可信賴程度的一個尺度。管理距離決定了來自不同路由表源端的路由資訊的優先權。不同的路由來源,其管理距離是不同的。管理距離小的路由協議優先權高。預設情況下,直連路由優先權最高,靜態路由次之,BGP優先於OSPFOSPF優先於RIP

d -- 度量值(metric

度量一條路徑總“開銷”的尺度,由具體路由選擇協議而定義。當一個路由協議提供了多條到達某目的網路的路由時,必須選擇一條最佳的路由放在路由表中。度量值用於表示每條可能路由的代價,度量值最小的路由就是最佳路由。

e -- 下一跳閘道器地址(next hop

為使IP包到達目的地,需要將該IP包轉發到該閘道器上。路由器不知道到達目的地址的整個路徑,只將資料傳給下一個路由器,通過“接力”的形式將資料傳送到目的網路。下一跳地址就是與之相連的路由器的埠地址。

f -- 計時(age

也就是路由資訊的新舊程度,表示路由條目存在的時間。距離向量協議定時更新該計時,所以該時間值不會超過某個時間值,超出後就進入“保持”狀態,一定時間內仍未更新路由條目就被刪除。其它路由協議(如OSPFBGP)對此時間不作處理。

g -- 傳送的物理埠(local interface

也就是與要去往目的地網路相關聯的介面。學習到該路由條目的介面,也是資料包離開路由器去往目的地將經過的介面。交換結構單元就是根據該值來選擇恰當的“開關”使入口與出口之間建立通道。

2 、路由表的建立

    一般而言,在同一個路由域中所有路由器的每個路由協議都有一個“收斂”(convergence)狀態或過程。當所有路由器達到一個穩定、準確、一致的網路拓撲狀態時,就會獲得“收斂”狀態。網路拓撲的變化會使路由器重新進行“收斂”。路由器如何獲得收斂狀態是由它的具體配置和路由協議所決定的。

    每個路由協議處理路由更新時,選擇到目的地址的最佳路由,並試圖安裝到路由表中。如果只有多個動態路由協議執行,存在爭先安裝路由的問題。必須有機制來管理路由的安裝。該機制就是根據各個路由協議的優先順序來決定安裝過程。每個路由協議都有預設的管理距離值,值愈小其優先順序愈高。各路由協議的預設管理距離值如圖13

 

                         圖13 各路由協議預設管理距離

        假設路由器執行EIGRP、OSPF、RIP、IGRP四種路由協議,它們都得到了到網路192.168.24.0/24的路由,但只有EIGRP(internal)可將其路由安裝到路由表中,因為其管理距離值最小,優先權最高。

        可以通過手工的方式來改變路由協議的預設距離值,但改變路由協議的預設距離值是比較慎重的動作,有可能導致路由迴圈或其他奇怪的問題,必須非常小心!其命令為distance後跟具體的值。也可以只改變從某一協議分佈進來的路由的管理距離值。在靜態路由的最後也可以跟上一個值,改變原來的預設值1。

3、 路由表的維護

    路由轉發表可以是由系統管理員固定設定好的,當網路拓撲發生變換時,由管理員手動調整,也可以由系統依據動態路由協議進行修改。

    RIP只維護一張表:路由表,它們定期與相鄰路由器交換全部路由表,如果一個路由被宣佈為不可達,則該路由被標記為“possible down”,並被置為抑制狀態。過一定時間若仍未從原來的釋出該路由的源路由器那裡重新學習到該路由,該路由條目將被清除。

OSPFBGP除了維護一張路由表外,至少還維護另外的兩張表:相鄰路由器表和拓撲表或路徑表。相鄰路由器通過HELLO資料包來建立和維護相鄰路由器表。一旦正確建立了鄰接關係後,彼此交換路由表資訊,在此過程中建立了拓撲資料庫。根據拓撲資料庫,OSPF實現最短路徑優先演算法,並將結果放在主路由表中。

四、路由選擇演算法

     選擇路由時採取最長匹配的原則,具體實現由路由表的資料結構決定。而路由協議安裝路由的優先順序取決於管理距離值。

    直觀來看,根據子網劃分的原理,可以看出哪個表項是“最長匹配”。舉例來講,路由表有這樣幾個目的網路(斜槓後的數字為子網掩碼長度):192.24.96.64/27192.24.96.96/27192.24.96.128/26192.24.96.192/27192.24.96.224/28192.24.96.240/28,那麼到IP地址為192.24.96.163主機的路由將選中192.24.96.128/26這一表項。其實,該網路地址的主機範圍為192.24.96.129~192.24.96.190,唯一包含了目的主機的IP地址。但路由查詢軟體不是這樣設計的,這會影響查詢速度,而是根據資料的儲存結構選擇最快的查詢演算法。假設資料儲存結構為二叉樹(Tree)方式,樹中只有部分節點是路由條目,並做了標記,那麼路由查詢軟體從目的地址的第一位開始到“樹”中遍歷,記住最近的一個匹配路由條目(根據標記),如果到某個節點無“路”可走,那麼記住的路由條目就作為最後的查詢結果。將上述例子的路由條目的資料結構簡化如圖14所示。

                                圖14最長匹配的Tree結構

    根據圖14,可以直觀的看到路由匹配的方法。假設路由表中沒有192.24.96.128/26這項,那麼對目的地址192.24.96.163的查詢進行就沒有任何匹配項了,不可能採用其它路由了。如果路由器配置了預設路由,樹中的最頂端的根節點就有指向預設路由的指標,這樣對任何目的地址的路由查詢,從頂端開始遍歷時就記下了該預設路由,如果向下的遍歷沒有匹配的節點,最後用預設路由轉發資料包,如果有匹配節點,就用最後一個匹配節點的路由轉發資料包,這就是“最長匹配”的工作原理。