目錄

簡介

必要條件

需求

採用元件

慣例

背景資訊

涉及的流程

構建路由表

備份路由

調整管理距離

度量如何確定路由選擇過程

字首長度

制定轉發決策

IP無類

摘要

相關資訊

簡介

本文檔介紹路由器如何工作、如何配置以及如何為其選擇路由。

必要條件

需求

本文件沒有特定先決條件。

採用元件

本文件所述內容不限於特定軟體和硬體版本。

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路運作中，請確保您瞭解任何指令可能造成的影響。

慣例

如需文件慣例的詳細資訊，請參閱思科技術提示慣例。

背景資訊

Cisco路由器的一個方面是路由器如何在協定、手動配置和其他各種方式提供的路由中選擇最佳路由。  路由選擇需要瞭解Cisco路由器的工作方式。

涉及的流程

在思科路由器中建立和維護路由表涉及三個過程：

- 實際執行網路（或路由）通訊協定的各種路由程式，例如增強型內部閘道路由通訊協定(EIGRP)、邊界閘道通訊協定(BGP)、中間系統到中間系統(IS-IS)和開放最短路徑優先(OSPF)。

- 路由表本身，它接受來自路由進程的資訊，並響應來自轉發進程的資訊請求。

- 轉發過程，從路由表中請求資訊以做出資料包轉發決定。

您需要檢查路由協定和路由表之間的互動，以瞭解路由表的構建方式。

構建路由表

構建路由表時的主要注意事項包括：

- 管理距離 — 這是對路由來源的可信度的度量。如果路由器從多個路由協定瞭解某個目的地，將對管理距離進行比較，為管理距離較小的路由指定優先順序。

- 度量 — 路由協定使用這種度量來計算到達給定目標的最佳路徑（如果它獲知到達同一目標的多個路徑）。每個路由協定使用不同的度量。

- 首碼長度

當每個路由進程收到更新和其他資訊時，它會選擇通往任何給定目標的最佳路徑，並嘗試將此路徑安裝到路由表中。例如，如果EIGRP獲知指向10.1.1.0/24的路徑，並確定此特定路徑是通往此目標的最佳EIGRP路徑，則會嘗試將其獲知的路徑安裝到路由表中。

路由器決定是否安裝由路由進程呈現的路由，取決於相關路由的管理距離。如果此路徑距離此目標具有最小的管理距離（與表中的其他路由相比），則此路徑將安裝在路由表中。如果此路由不是具有最佳管理距離的路由，則該路由被拒絕。

例如，假設路由器運行四個路由進程：EIGRP、OSPF、RIP和IGRP。現在，所有這四個進程都學習了通往192.168.24.0/24網路的各種路由，而且每個進程都通過其內部度量和進程選擇了通往該網路的最佳路徑。

這四個進程都會嘗試將指向192.168.24.0/24的路由安裝到路由表中。每個路由進程都分配了一個管理距離，用來決定安裝哪個路由。

預設管理距離

已連線

0

靜態

1

eBGP

20

EIGRP（內部）

90

IGRP

100

OSPF

110

IS

115

RIP

120

EIGRP（外部）

170

iBGP

200

EIGRP總結路由

5

由於內部EIGRP路由具有最佳管理距離（管理距離越小，優先順序越高），因此會將其安裝在路由表中。

備份路由

其它協定（RIP、IGRP和OSPF）如何處理未安裝的路由？如果從EIGRP獲知的最首選路由出現故障，該怎麼辦？Cisco IOS®軟體使用兩種方法解決此問題。第一種方法是讓每個路由進程嘗試定期安裝其最佳路由。如果最優先的路由失敗，則次最佳路由（由管理距離決定）將在下一次嘗試時成功。另一種解決方案是，未能在表中安裝其路由的路由協定掛起路由，並告訴路由表過程報告最佳路徑是否失敗。

對於沒有自己的路由資訊表的協定（如IGRP），則使用第一種方法。每次IGRP收到有關路由的更新時，都會嘗試將更新後的資訊安裝到路由表中。如果路由表中已存在通往此同一目標的路由，則安裝嘗試將失敗。

對於擁有自己的路由資訊資料庫的協定（如EIGRP、IS-IS、OSPF、BGP和RIP），在初始嘗試安裝路由失敗時註冊備份路由。如果路由表中安裝的路由由於某種原因而失敗，路由表維護進程將呼叫已註冊備份路由的每個路由協定進程，並要求它們在路由表中重新安裝路由。如果有多個協定具有註冊的備份路由，則根據管理距離選擇首選路由。

調整管理距離

預設管理距離並不總是適合您的網路；您可以調整它，以便優先使用RIP路由而非IGRP路由。但是，首先，如果更改管理距離，請看其影響。

更改路由協定上的管理距離非常危險。它可能導致網路中的路由環路和其他異常。因此，請始終謹慎更改管理距離。在進行此操作之前，請確保您對更改進行計畫並瞭解其後果。

對於整個協定，很容易更改距離。只需在路由進程子配置模式下使用 distance命令。您也可以在某些協定中更改從一個源獲知的路由的距離，而您也可以在某些路由上更改距離。有關詳細資訊，請參閱在Cisco IOS路由器配置示例中調整路由選擇的管理距離。

對於靜態路由，要更改每個路由的距離，請在ip route 命令後輸入距離：

ip route network subnet mask next hop distance

您不能同時更改所有靜態路由的管理距離。

度量如何確定路由選擇過程

路由是根據路由協定的管理距離在路由表中選擇和生成的。從路由協定獲知的管理距離最短的路由將安裝到路由表中。如果有從單個路由協定到達同一目標的多個路徑，則多個路徑將具有相同的管理距離，並根據度量選擇最佳路徑。度量是與特定路由關聯的值，這些路由將它們從最優先到最不優先。用於確定度量的引數因路由協定而異。具有最低度量的路徑被選為最佳路徑並安裝到路由表中。如果有多條路徑到達具有相同度量的同一目標，則在這些等價路徑上執行負載均衡。有關負載均衡的詳細資訊，請參閱負載均衡如何工作？

字首長度

檢視另一個案例，瞭解路由器如何處理另一種常見情況：字首長度變化。再次假設路由器運行有四個路由進程，且每個進程都收到了以下路由：

- EIGRP（內部）：192.168.32.0/26

- 安息：192.168.32.0/24

- OSPF:192.168.32.0/19

路由表中可以安裝下列哪條路由？由於EIGRP內部路由具有最佳管理距離，因此您可以假設可以安裝第一個內部路由。但是，由於這些路由具有不同的字首長度（子網掩碼），因此它們被視為不同的目的地，並且它們都可以安裝到路由表中。

下一節提供來自路由表的資訊以做出轉發決策。

制定轉發決策

檢視路由表中安裝的三條路由，看看它們在路由器上的樣子。

router# show ip route

....

D   192.168.32.0/26 [90/25789217] via 10.1.1.1

R   192.168.32.0/24 [120/4] via 10.1.1.2

O   192.168.32.0/19 [110/229840] via 10.1.1.3

....

如果資料包到達目的地為192.168.32.1的路由器介面，路由器會選擇哪條路由？這取決於字首長度或子網掩碼中設定的位數。轉發資料包時，較長的字首始終優先於較短的字首。

在本例中，目的地為192.168.32.1的資料包將指向10.1.1.1，因為192.168.32.1屬於192.168.32.0/26網路（192.168.32.0到192.168.32.63）。它也屬於另外兩條可用的路由，但192.168.32.0/26具有路由表中最長的字首（26位與24位或19位不同）。

同樣地，如果目的地為192.168.32.100的封包到達其中一個路由器介面，則會轉送到10.1.1.2，因為192.168.32.100不屬於192.168.32.0/26（192.168.32.0到192.168.32.63），而屬於192.168.32.0/24目的地（192.168.32.0到1 2.168.32.255）。同樣，它也屬於192.168.32.0/19覆蓋的範圍，但192.168.32.0/24的字首長度更長。

IP無類

如果 ip classless 配置命令屬於路由和轉發過程，則通常會造成混淆。實際上，IP無類僅影響Cisco IOS中轉發進程的操作；它不影響路由表的構建方式。如果未配置IP classless(使用no ip classless 命令)，則路由器無法將資料包轉發到超網。例如，再次將三條路由放在路由表中，並通過路由器路由資料包。

注意：如果通過IS-IS或OSPF獲知超網或預設路由，則忽略no ip classless configuration命令。在這種情況下，封包交換行為的運作方式就如同已設定ip classless一樣

router# show ip route

....

172.30.0.0/16 is variably  subnetted, 2 subnets, 2 masks

D        172.30.32.0/20 [90/4879540] via  10.1.1.2

D       172.30.32.0/24  [90/25789217] via 10.1.1.1

S*   0.0.0.0/0 [1/0] via 10.1.1.3

172.30.32.0/24網路包括從172.30.32.0到172.30.32.255的地址，172.30.32.0/20網路包括從172.30.32.0到172.30.47.255的地址，因此，您可以嘗試通過此路由表交換三個資料包，並檢視結果。

- 目的地為172.30.32.1的資料包將轉送到10.1.1.1，因為這是最長字首匹配。

- 目的地為172.30.33.1的資料包將轉送到10.1.1.2，因為這是最長字首匹配。

- 目的地為192.168.10.1的資料包將轉發到10.1.1.3；由於此網路在路由表中不存在，因此此資料包將轉發到預設路由。

- 目的地為172.30.254.1的資料包被丟棄。

這四個封包的答案是最後一個封包，遭捨棄。由於目的地172.30.254.1位於已知主網路172.30.0.0/16中，而路由器不知道該主網路中的這個特定子網而將其捨棄。

這是有類路由的本質：如果主網路的一部分已知，但資料包在該主網路內的目標子網未知，則資料包將被丟棄。

此規則最令人困惑的方面是，如果目的地主要網路在路由表中根本不存在，路由器只會使用預設路由。

如圖所示，這可能會導致遠端站點（通過一條連線返回到網路其餘部分）不運行路由協定的網路出現問題。

不運行路由協定

遠端站點路由器的配置如下：

interface Serial 0

ip address 10.1.2.2 255.255.255.0

!

interface Ethernet 0

ip address 10.1.1.1 255.255.255.0

!

ip route 0.0.0.0 0.0.0.0 10.1.2.1

!

no ip classless

透過此設定，遠端站點的主機可以到達網際網路（透過10.x.x.x雲端）上的目的地，但無法到達位於企業網路10.x.x.x雲內的目的地。由於遠端路由器知道10.0.0.0/8網路的某些部分（兩個直接連線的子網，而沒有10.x.x.x的其他子網），因此它會假定這些其他子網不存在，並丟棄任何發往這些子網的資料包。但是，發往Internet的流量在10.x.x.x地址範圍內從未有目的地，因此會通過預設路由正確路由。

如果在遠端路由器上配置ip classless，則此問題會得到解決，因為它允許路由器忽略其路由表中網路的有類邊界，而只是路由到其能找到的最長字首匹配。

摘要

總之，做出轉發決策包括三組過程：路由協定、路由表以及做出轉發決策並交換資料包的實際過程。以下三組過程及其關係將在下一張圖中說明：

三組路由過程

在路由表中安裝的路由中，最長的字首匹配始終是獲勝的，而當路由安裝到路由表中時，管理距離最短的路由協定始終是獲勝的。

相關資訊

- 負載均衡如何工作？

- 什麼是管理距離？

- IP路由頁面

- 「IP路由協定」頁

- 思科技術支援與下載