路由表
在電腦網絡中,路由表(routing table)或稱路由擇域資訊庫(RIB, Routing Information Base),是一個儲存在路由器或者聯網電腦中的電子試算表(檔案)或類資料庫。路由表儲存着指向特定網絡地址的路徑(在有些情況下,還記錄有路徑的路由度量值)。路由表中含有網絡周邊的拓撲資訊。路由表建立的主要目標是為了實現路由協定和靜態路由選擇。
在現代路由器構造中,路由表不直接參與封包的傳輸,而是用於生成一個小型指向表,這個指向表僅僅包含由路由演算法選擇的封包傳輸優先路徑,這個表格通常為了最佳化硬件儲存和尋找而被壓縮或提前編譯。本文將忽略這個執行的詳細情況而選擇整個路徑選擇/傳輸資訊子系統作為路由表來說明。
基本概念
[編輯]路由表使用了和利用地圖投遞包裹相似的思想。只要網絡上的一個節點需要傳送數據給網絡上的另一個節點,它就必須要知道把數據傳送到哪。裝置不可能直接連接到目的節點,它需要找到另一個方式去傳送封包。在區域網絡中,節點也不知道如何傳送IP包到閘道器。將封包發到正確的地址是一個複雜的任務,閘道器需要記錄傳送封包的路徑資訊。路由表就儲存着這樣的路徑資訊,就如地圖一樣,是一個記錄路徑資訊,並為需要這些資訊的節點提供服務的資料庫。在當代路由構造中將路由表的控制功能和傳輸表的傳輸區分開來[1]。
逐跳路由選擇需要所有能到達地址的每個路由表清單,路徑中的下一個裝置地址,下一個轉移地址。假設路由表是一致的,中繼包的簡單演算法是傳送數據到每一個地址。逐跳路由選擇是IP網絡層[2]和OSI網絡層的基本特性,與之不同的是IP端到端和OSI傳輸層的功能。
功能
[編輯]在路徑選擇的過程中,主機和路由器的決策是由一個叫路由表的路徑資料庫輔助決定的。路由表在路由器內部。根據路由協定,主機也可以擁有用於選擇最佳路徑的路由表。主機路由表是互聯網協定中可選的,像已經過時了的IPX協定。各種路由表:
- 網絡路由:一個在網絡中有特定網絡ID的路由(路徑)
- 主機路由:一個有特定網絡地址(網絡ID和主機ID)的路由。主機路由允許智能化的路由選擇。主機路由通常用於建立用於控制和最佳化特定網絡通訊的客製化路由。
- 預設路由:一個當別的路由在路由表中未被找到的時候使用的路由。如果一個路由器或終端系統(如裝有Microsoft Windows和Linux的個人電腦),找不到到達目的地的路由時就會使用預設路由。
路由表構造的挑戰
[編輯]在路由表構造中使用有限的空間去儲存巨量的路徑是最主要的挑戰。在互聯網上,正在使用的地址聚集技術是一種稱為無類別域間路由(CIDR)的按位詞頭匹配的方案。
在網絡中每個節點都被認為有一個有效的路由表,路由表必須與各種各樣的節點和路徑環一致。這就是逐跳路由模型的主要問題,幾個擁有不一致的路由表的路由可能會導致傳輸的封包進入無窮迴圈。路由環路在歷史上是有災難性的路由選擇,而如今,如何避免路由環路的出現是路由協定的主要設計目標。
路由表的內容
[編輯]對每組網絡介面(interface),路由表至少會存有下面的資訊:
- 網絡ID(Network ID, Network number):就是目標地址的網絡ID。
- 子網絡遮罩(subnet mask):用來判斷IP所屬網絡
- 下一跳地址/介面(Next hop / interface):就是數據在傳送到目標地址的旅途中下一站的地址。其中interface指向next hop(即為下一個route)。一個自治系統(AS, Autonomous system)中的route應該包含區域內所有的子網絡,而預設閘道器(Network id:
0.0.0.0
, Netmask:0.0.0.0
)指向自治系統的出口。
根據應用和執行的不同,路由表可能含有如下附加資訊:
- 花費(Cost):就是數據傳送過程中通過路徑所需要的花費。
- 路由的服務質素
- 路由中需要過濾的出/入連接列表
路由表也是一個網絡安全的關鍵,像單播可逆路徑傳輸(uRPF)[3]就是一個安全路由表的例子。在這種具有多種變體的技術中,路由器也在路由表中尋找封包的源地址,如果源地址不正確,封包就會顯示出錯或受到攻擊。
參考資料
[編輯]- ^ Forwarding and Control Element Separation (ForCES) Framework. [2008-08-08]. (原始內容存檔於2021-02-28).
- ^ Requirements for IPv4 Routers (頁面存檔備份,存於互聯網檔案館),F. Baker, RFC 1812, June 1995
- ^ Ingress Filtering for Multihomed Networks,RFC 3704, F. Baker & P. Savola,March 2004