計算機網絡中,路由表(routing table)或稱路由擇域信息庫(RIB, Routing Information Base),是一個存儲在路由器或者聯網計算機中的電子表格(文件)或類數據庫。路由表存儲着指向特定網絡地址的路徑(在有些情況下,還記錄有路徑的路由度量值)。路由表中含有網絡周邊的拓撲信息。路由表建立的主要目標是為了實現路由協議和靜態路由選擇。

在現代路由器構造中,路由表不直接參與數據包的傳輸,而是用於生成一個小型指向表,這個指向表僅僅包含由路由算法選擇的數據包傳輸優先路徑,這個表格通常為了優化硬件存儲和查找而被壓縮或提前編譯。本文將忽略這個執行的詳細情況而選擇整個路徑選擇/傳輸信息子系統作為路由表來說明。

基本概念

路由表使用了和利用地圖投遞包裹相似的思想。只要網絡上的一個節點需要發送數據給網絡上的另一個節點,它就必須要知道把數據發送到哪。設備不可能直接連接到目的節點,它需要找到另一個方式去發送數據包。在局域網中,節點也不知道如何發送IP包到網關。將數據包發到正確的地址是一個複雜的任務,網關需要記錄發送數據包的路徑信息。路由表就存儲着這樣的路徑信息,就如地圖一樣,是一個記錄路徑信息,並為需要這些信息的節點提供服務的數據庫。在當代路由構造中將路由表的控制功能和傳輸表的傳輸區分開來[1]

逐跳路由選擇需要所有能到達地址的每個路由表清單,路徑中的下一個設備地址,下一個轉移地址。假設路由表是一致的,中繼包的簡單算法是發送數據到每一個地址。逐跳路由選擇是IP網絡層[2]OSI網絡層的基本特性,與之不同的是IP端到端和OSI傳輸層的功能。

功能

在路徑選擇的過程中,主機路由器的決策是由一個叫路由表的路徑數據庫輔助決定的。路由表在路由器內部。根據路由協議,主機也可以擁有用於選擇最佳路徑的路由表。主機路由表是互聯網協議中可選的,像已經過時了的IPX協議。各種路由表:

  1. 網絡路由:一個在網絡中有特定網絡ID的路由(路徑)
  2. 主機路由:一個有特定網絡地址網絡ID主機ID)的路由。主機路由允許智能化的路由選擇。主機路由通常用於創建用於控制和優化特定網絡通信的定製路由。
  3. 默認路由:一個當別的路由在路由表中未被找到的時候使用的路由。如果一個路由器或終端系統(如裝有Microsoft Windows和Linux的個人電腦),找不到到達目的地的路由時就會使用默認路由。

路由表構造的挑戰

在路由表構造中使用有限的空間去存儲巨量的路徑是最主要的挑戰。在互聯網上,正在使用的地址聚集技術是一種稱為無類別域間路由CIDR)的按位詞頭匹配的方案。

在網絡中每個節點都被認為有一個有效的路由表,路由表必須與各種各樣的節點和路徑環一致。這就是逐跳路由模型的主要問題,幾個擁有不一致的路由表的路由可能會導致傳輸的數據包進入死循環。路由環路在歷史上是有災難性的路由選擇,而如今,如何避免路由環路的出現是路由協議的主要設計目標。

路由表的內容

對每組網絡介面(interface),路由表至少會存有下面的信息:

  1. 網絡ID(Network ID, Network number):就是目標地址的網絡ID。
  2. 子網掩碼(subnet mask):用來判斷IP所屬網絡
  3. 下一跳地址/接口(Next hop / interface):就是數據在發送到目標地址的旅途中下一站的地址。其中interface指向next hop(即為下一個route)。一個自治系統(AS, Autonomous system)中的route應該包含區域內所有的子網路,而默認網關(Network id: 0.0.0.0, Netmask: 0.0.0.0)指向自治系統的出口。

根據應用和執行的不同,路由表可能含有如下附加信息:

  1. 花費(Cost):就是數據發送過程中通過路徑所需要的花費。
  2. 路由的服務質量
  3. 路由中需要過濾的出/入連接列表

路由表也是一個網絡安全的關鍵,像單播可逆路徑傳輸(uRPF)[3]就是一個安全路由表的例子。在這種具有多種變體的技術中,路由器也在路由表中查找數據包的源地址,如果源地址不正確,數據包就會顯示出錯或受到攻擊。

參考資料