動態路由選擇
動態路由選擇就是路由器根據協議查找網絡並更新路由選擇表,動態路由選擇的配置比使用靜態或默認路由選擇容易,但會占用更多的路由器 CPU 處理時間和網絡帶寬。在互聯網中經常使用的路由選擇協議有兩種,即 IGP(Interior Gateway Protocol,內部網關協議)和 EGP(Exterior Gateway Protocol,外部網關協議)。IGP 用於在同一個 AS(Autonomous System,自治系統)中的路由器間交換路由選擇信息,EGP 用於 AS 之間的通信。
管理距離
AD(Administrative Distance,管理距離)用來衡量路由器已接收到的、來自相鄰路由器的路由選擇信息的可信度,管理距離值越低表示越優先考慮。如果路由器接收了兩個對同一遠程網絡的更新信息,路由器會首先檢查更新信息的 AD,如果被通告的路由中有一個的 AD 值比另一個的低,那么這個擁有較低 AD 值的路由將被放置在路由選擇表中。如果被通告的到同一網絡的兩個路由具有相同的 AD,那么路由選擇協議的度量值(如跳計數或鏈路的帶寬)將被用作判斷到達遠程網絡最佳路徑的依據。帶有最低度量值的、被通告的路由將被放置在路由選擇表中。
如果某個網絡與路由器是直接連接的,那么該路由器將一直使用這個接口連接這個網絡。如果在路由器上配置了一個靜態路由,則該路由器將確信這個路由要優於那些習得的路由。靜態路由的管理距離是可以修改的,默認情況下 AD 值為 1。如下是一些默認的管理距離:
| 路由源 | 默認 AD |
|---|---|
| 直連接口 | 0 |
| 靜態路由 | 1 |
| EIGRP | 90 |
| IGRP | 100 |
| OSPF | 110 |
| RIP | 120 |
| 外部 EIGRP | 170 |
路由選擇協議
路由選擇協議可以分為 3 大類,沒有哪一種路由選擇協議配置方式適用於所有情況,具體情況應具體分析。
| 協議類型 | 說明 |
|---|---|
| 距離矢量 | 協議通過判斷距離確定當前到達遠程網絡的最佳路徑。 |
| 鏈路狀態 | 又稱最短路徑優先協議,路由器將分別創建 3 個彼此獨立的表。其中的一個表用來跟蹤直接相連接的鄰居,一個用來確定整個互聯網絡的拓撲結構,而另一個則用作路由選擇表。 |
| 混合型 | 混合型協議將同時具有距離矢量和鏈路狀態兩種協議的特性。 |
這些協議的具體原理,可以去我之前寫的 TCP/IP 博客合集中查看——TCP/IP 協議棧博客清單。
路由環路
距離矢量路由選擇算法發送完整的路由選擇表內容到相鄰的路由器,然后相鄰的路由器將接收到的路由選擇表項與它們原有的路由選擇表合並,以完善自己的路由選擇表。由於路由器接收到的更新信息只是相鄰路由器對於遠程網絡的認知,路由器並不會自己查證這些內容,所以這一方式又被戲稱為傳聞路由。
距離矢量路由選擇協議會在所有激活的接口上定期廣播路由更新,以此跟蹤互聯網絡中的任何改變。廣播內容包括整個路由選擇表。這一方案是可行的,只是需要占用一定的CPU處理資源和鏈路
帶寬。但是,當某個網絡癱瘓時,真正的問題就有可能會出現,特別是距離矢量路由選擇協議的慢會聚,最終會導致不一致的路由選擇表和路由環路。導致路由環路的原因可能是每台路由器不能同時或近乎同時地更新路由選擇表。

如下是一些路由環路的解決方案:
- 最大跳計數:定義一個最大跳計數,例如 RIP 允許的最大跳計數為 15,經過 16 跳才能到達的網絡都被認為不可達;
- 水平分割:禁止路由選擇協議回傳路由選擇信息(即傳送方向與信息接收方向相反);
- 路由中毒:路由中毒可以避免因更新不一致而導致的問題,並阻止網絡環路的產生;
- 保持關閉:可以阻止常規的更新消息恢復一個不斷地打開又關閉(稱為翻轉)的路由,在串行鏈路上連接失效后又恢復的情況下就會產生。
RIP 協議
RIP(Routing Information Protocol,路由信息協議)是一個純粹的距離矢量路由選擇協議,RIP 每隔 30 秒就將自己完整的路由選擇表從所有激活的接口上送出。RIP 只將跳計數作為判斷到達遠程網絡最佳路徑的依據,並且在默認情況下允許的最大跳計數為 15,也就是說 16 跳就被認為是不可達的。在小型的網絡應用中用 RIP 沒問題,但對於那些配備有慢速 WAN 鏈接的大型網絡或者是那些安裝有大量路由器的網絡,它的運行效率就很低了。
RIP 版本 1 只使用有類的路由選擇,即網絡中的所有設備都必須使用相同的子網掩碼。這是因為RIP 版本 1 在其發送的更新數據中不攜帶子網掩碼信息。RIP版本2提供了前綴路由選擇信息,並可
以在路由更新中傳送子網掩碼信息。
RIP 只使用跳計數判定到達某個網絡的最佳路徑,如果 RIP 發現對於同一個遠程網絡存在多個具有相同跳計數的鏈路,則 RIP 將自動執行循環負載均衡,RIP可以對多達 6 個(默認為 4 個)等價鏈
路實現負載均衡。然而,當兩條通往同一遠程網絡的鏈路具有不同的帶寬,但是有相同的跳計數時,這種類型的路由度量將會導致問題。

配置 RIP 協議
實驗拓撲

| 設備 | 接口 | IP 地址 | 子網掩碼 | 默認網關 |
|---|---|---|---|---|
| R1 | G0/1 | 172.30.10.1 | 255.255.255.0 | N/A |
| S0/0/0 (DCE) | 10.1.1.1 | 255.255.255.252 | N/A | |
| R2 | G0/0 | 209.165.201.1 | 255.255.255.0 | N/A |
| S0/0/0 | 10.1.1.2 | 255.255.255.252 | N/A | |
| S0/0/1 (DCE) | 10.2.2.2 | 255.255.255.252 | N/A | |
| R3 | G0/1 | 172.30.30.1 | 255.255.255.0 | N/A |
| S0/0/1 | 10.2.2.1 | 255.255.255.252 | N/A | |
| S1 | N/A | VLAN 1 | N/A | N/A |
| S3 | N/A | VLAN 1 | N/A | N/A |
| PC-A | NIC | 172.30.10.3 | 255.255.255.0 | 172.30.10.1 |
| PC-B | NIC | 209.165.201.2 | 255.255.255.0 | 209.165.201.1 |
| PC-C | NIC | 172.30.30.3 | 255.255.255.0 | 172.30.30.1 |
配置並檢驗 RIPv2 路由
在 R1 上,將 RIPv2 配置為路由協議並通告相應的網絡。
R1(config)# router rip
R1(config-router)# version 2
R1(config-router)# passive-interface g0/1
R1(config-router)# network 172.30.0.0
R1(config-router)# network 10.0.0.0
passive interface 命令會阻止指定接口的路由更新,此過程可避免 LAN 中產生不必要的路由流量,從其他接口發出的路由更新中仍將通告指定接口所屬的網絡。
在 R3 上配置 RIPv2,並使用 network 語句添加適當的網絡和阻止 LAN 接口的路由更新。
R3(config)# router rip
R3(config-router)# version 2
R3(config-router)# passive-interface g0/1
R3(config-router)# network 172.30.0.0
R3(config-router)# network 10.0.0.0
在 R2 上配置 RIPv2,並使用 network 語句添加適當的網絡和阻止 LAN 接口的路由更新。
R2(config)# router rip
R2(config-router)# version 2
R3(config-router)# passive-interface g0/0
R2(config-router)# network 10.0.0.0
R2(config-router)# network 209.165.201.0
分別查看 3 台路由器的路由表,可以看到路由表已經學習到了路由條目。



幾台 PC 之間可以互相 Ping 通。

禁用自動總結
可以使用 no auto-summary 命令關閉 RIPv2 中的自動總結。在所有路由器上禁用自動總結。路由器將不會在主網邊界處總結路由。
R1(config)# router rip
R1(config-router)# no auto-summary
發出 clear ip route * 命令將路由表清空,清除路由表后需要一定時間來聚合路由表。
R1# clear ip route *
如果不把 RIPv2 的自動總結關了,則路由的項目會自動地進行路由匯總,也就會返回超網地址。此時超網地址就會導致路由聚合的網絡中的子網數據丟失,會導致本主機 ping 對方網絡中的子網無法ping通,所以要關掉。
參考資料
《思科網絡技術學院教程(第6版):路由和交換基礎》,[加] Bob Vachon,[美] Allan Johnson 著,思科系統公司 譯,人民郵電出版社
《CCNA 學習指南(第 7 版)》,[美] Todd Lammle 著,袁國忠 徐宏 譯,人民郵電出版社
