路由協議和架構/路由資訊協議
路由資訊協議 (RIP) 是一種基於距離向量 (DV) 演算法的域內路由協議。RIP 版本 1 定義於 1988 年,是網際網路上使用的第一個路由協議。
RIP,取決於其實現,包括水平分割、路由中毒和路徑保持機制,以限制不正確路由資訊的傳播。
RIP 適合小型、穩定和同質的網路
- 小型:指標僅基於跳數(每條鏈路成本為 1),但不能超過 16 跳限制 → 同一個 RIP 域內級聯超過 15 臺路由器是不允許的;
- 穩定:狀態更改可能會觸發長期持續的瞬態;
- 同質:
- 同質鏈路:不同鏈路上的成本無法根據頻寬區分;
- 同質路由器:每臺路由器都需要在生成新的 DV 之前完成處理 → 瞬態持續時間受最慢路由器的效能限制。
RIP 資料包具有以下格式
| 8 | 16 | 32 | |
| 命令 | 版本 (1) | 0 | |
| 地址族識別符號 | 0 | ||
| IP 地址 | |||
| 0 | |||
| 0 | |||
| 指標 | |||
其中最重要的欄位是
- 命令 欄位 (1 位元組):它指定訊息型別
- “響應”值:資料包正在傳輸包含一個或多個地址的 DV;
- “請求”值:新連線到網路的路由器通知其鄰居其存在 → 鄰居將傳送回其 DV,而不必等待超時,從而提高收斂速度;
- 地址族識別符號 欄位 (2 位元組):它指定正在使用的網路層協議(例如,值 2 = IP);
- IP 地址 欄位 (4 位元組):它指定要宣佈的 IP 地址(沒有子網掩碼)。
在一個 RIP 資料包中最多可以宣佈 25 個地址; - 指標 欄位 (4 位元組):它指定與宣佈地址相關的成本。
- 封裝
RIP 資料包被封裝到 UDP 資料包中
- 目的UDP 埠是埠 520,當時它是作為一種安全機制選擇的,因為低於 1024 的埠只能在管理許可權下使用;
- 目的IP 地址是廣播地址 (255.255.255.255) → 所有裝置都可以接收它,包括主機,儘管最好在主機端停用路由協議以保護它們免受惡意攻擊並透過偵聽可能的 ICMP 重定向訊息瞭解更好的路由

RIP 很大程度上依賴於計時器
- 由於 CPU 可能很忙,因此難以精確地遵守固定計時器 → 不確定性會引入更多延遲;
- 網路中的所有路由器都必須使用相同的計時器,否則路由器可能會以不協調的方式互動。
它定義了多久傳送一次包含有關 DV 資訊的無條件響應訊息。
- 路由器同步
它試圖透過在傳送觸發更新時不重置路由更新計時器以及透過在 25 到 35 秒之間以可變延遲傳送無條件響應訊息來避免。
它定義了在重新整理之前條目在路由表中可以保持有效的時長。當路由器失效計時器到期時,條目的跳數將設定為無窮大成本 (16),將目標標記為不可達。
- 故障檢測
路由失效計時器尤其有用,可以在“鏈路關閉”訊號不可用時檢測到與鄰居的連線丟失。
它定義了在重新整理之前條目可以在路由表中保留的時長。當路由重新整理計時器到期時,該條目將從路由表中刪除。
- 路由中毒
當路由失效計時器到期且條目被標記為失效時,路由器可以在刪除條目之前宣佈無窮大成本的目標,這樣還有 60 秒(預設值)的時間來通知其他路由器。
它定義了在懷疑無窮大計數開始後,條目不受更改的時間長度。保持計時器是思科的專有功能。
- 路徑保持
當跳數增加到更高的值時,保持計時器開始,以避免觸發無窮大計數並允許路由穩定下來。
- 路由中毒
路徑保持演算法阻塞的目標也可以以無窮大成本傳播。
RIP 的第一個版本是在分層定址仍然在使用的時候定義的,其中子網掩碼可以從網路地址本身自動獲得 → 在 DV 中宣佈的網路地址缺少有關其子網掩碼的資訊 → RIP 版本 1 只能在網路中使用,其中每個地址都屬於根據舊的分層定址規則的地址類。
可以採用一種策略來使 RIP 版本 1 在具有可變長度子網掩碼地址的網路中工作:給定一個已宣佈的網路地址,路由器會掃描分配給其連線介面的網路地址
- 如果至少一個介面被分配了一個具有與宣佈地址的子網掩碼相同的子網掩碼的地址,則路由器會從介面地址中獲取子網掩碼作為宣佈地址的子網掩碼;
- 如果沒有介面被分配了一個具有與宣佈地址的子網掩碼相同的子網掩碼的地址,則路由器會將其自己的子網掩碼作為宣佈地址的子網掩碼。
- 問題
如果可能假設錯誤的子網掩碼
- 路由器的任何介面都沒有正在搜尋的子網掩碼;
- 宣佈的地址確實有一個除所選介面的地址以外的子網掩碼。
RIP 將跳數限制定義為 16,這意味著距離大於 15 的目標被視為不可達。
選擇如此低的最大值是為了限制基於 DV 的演算法中眾所周知的“計數到無窮大”問題:當路由成本達到 16 時,路由被視為不可達,其成本無法再增加。
這 並不 意味著網路中不能有超過 15 個路由器級聯:唯一的限制是,兩個距離太遠的路由器不能直接相互通訊。這個問題可以透過將網路劃分為兩個路由域來解決,這兩個路由域由兩個不同的 RIP 協議例項處理,並透過啟用它們之間的重新分配過程來“偽造”外部路由的成本。
缺少“年齡”欄位
[edit | edit source]RIP 在 DV 中沒有為路由關聯“年齡”欄位,這意味著宣佈的資訊可能是舊的,但接收路由器將其視為新的並將其計時器重置為零,這意味著距離狀態變化越遠,瞬態持續時間越長。
- 示例
在一個拓撲為 A—B—C 的網路中:[1]
- 時間 0 秒:A—B 鏈路上發生故障,節點 A 無法訪問。
- 時間 179 秒:節點 B 向節點 C 宣佈其 DV,最後一個包括目標 A 的 DV。
- 時間 180 秒:節點 B 將目標 A 標記為不可達。
- 時間 359 秒:節點 C 將目標 A 標記為不可達。
RIP 版本 2
[edit | edit source]RIP 版本 2 透過利用訊息中一些未使用的欄位來擴充套件 RIP 的第一個版本。
| 8 | 16 | 32 | |
| 命令 | 版本(2) | 路由域 | |
| 地址族識別符號 | 路由標籤 | ||
| IP 地址 | |||
| 子網掩碼 | |||
| 下一跳 | |||
| 指標 | |||
其中新欄位是
- 路由域 欄位(2 位元組):它指定此 RIP 訊息用於處理同一邊界路由器上的多個路由域。

- 路由標籤 欄位(2 位元組):它指定宣佈的地址是否為外部路由,即它是透過從另一個路由域的重新分配過程學到的;
- 子網掩碼 欄位(4 位元組):它包含與宣佈的網路地址相關聯的網路掩碼,以支援無類別地址;
- 下一跳 欄位(4 位元組):當多個 RIP 路由器屬於同一個 LAN 但屬於兩個不同的 RIP 域時,它可以最佳化路由,因此從一個域到另一個域的流量將始終穿越邊界路由器,邊界路由器可以宣佈將流量傳送到另一個域中的下一跳路由器。

身份驗證
[edit | edit source]RIP 版本 2 引入了一種基於密碼的身份驗證機制:路由器必須經過身份驗證才能向其鄰居宣佈其 DV。
如果 RIP 資料包中的第一個條目中“地址族識別符號”欄位的值等於 0xFFFF,則條目的其餘部分包含身份驗證資訊。
| 16 | 32 |
| 0xFFFF | 身份驗證型別 |
| 身份驗證 | |
其中欄位是
- 身份驗證型別 欄位(2 位元組):任何型別“簡單密碼”都被定義(值 2);
- 身份驗證 欄位(16 位元組):它包含明文密碼。
這種身份驗證機制非常弱,因為密碼很容易被嗅探,因此很少使用。由於 RIP 訊息中缺乏空間,無法實現更復雜的身份驗證機制。
組播
[edit | edit source]RIP 版本 1 以廣播方式傳送 DV,這意味著所有實體(包括主機)都必須處理 RIP 訊息。
RIP 版本 2 定義了一個目標組播 IP 地址 (224.0.0.9),這樣 RIP 資料包只會被訂閱了組播組的實體接收,因此,不使用 RIP 協議的主機和路由器可以在資料鏈路層丟棄該資料包。
優點
[edit | edit source]- 它適用於小型、穩定和同構網路;
- 它需要的處理資源很少;
- 它易於實現;
- 它易於配置(與 OSPF 不同,沒有子域);
- 它在各種裝置上都可用,即使是在廉價路由器上。
參考文獻
[edit | edit source]- ↑ 假設:預設計時器值、沒有觸發更新、沒有路由中毒。