目錄

簡介

背景資訊

為什麼路由器略過路徑

最佳路徑演算法的運作原理

示例：BGP最佳路徑選取

自訂路徑選取流程

BGP 多重路徑

相關資訊

簡介

本文件說明邊界閘道通訊協定 (BGP) 最佳路徑演算法的功能。

背景資訊

BGP路由器通常會收到多個前往同一目的地的路徑。BGP 最佳路徑演算法會決定哪一條是要安裝在 IP 路由表中並用於流量轉送的最佳路徑。

為什麼路由器略過路徑

假設路由器收到的具有特定首碼的所有路徑都排列在一個清單中。該清單類似於 show ip bgp longer-prefixes 指令。在這個情況下，某些路徑不會被視為最佳路徑的候選路徑。此類路徑的輸出中通常沒有有效的標幟 show ip bgp longer-prefixes 指令。在這些情況下，路由器會略過路徑：

- 在中標籤為not synchronized的路徑 show ip bgp longer-prefixes 輸出。

如果啟用 BGP 同步，則在 IP 路由表中的必須要有相符的首碼，才能讓內部 BGP (iBGP) 路徑被視為有效路徑。Cisco IOS® 軟體預設啟用 BGP 同步。如果相符的路由是從開放最短路徑優先(OSPF)鄰居得知的，其OSPF路由器ID必須與iBGP鄰居的BGP路由器ID相符。大多數使用者更喜歡使用 no synchronization BGP子命令。

註:Cisco IOS®軟體版本12.2(8)T和更新版本預設停用同步功能。

- 無法存取 NEXT_HOP 的路徑。

請確定具有到達與該路徑關聯的 NEXT_HOP 的內部閘道通訊協定 (IGP) 路由。

- 如果本機的自治系統 (AS) 出現在 AS_PATH 中，則路徑來自外部 BGP (eBGP) 鄰居。

此類路徑會在輸入路由器時遭到拒絕，且甚至不會安裝在BGP路由資訊庫(RIB)中。這同樣適用於遭到透過存取、首碼、AS_PATH或群體清單實作的路由原則拒絕的任何路徑，除非您已設定 neighbor soft-reconfiguration inbound 為鄰居。

- 如果您已啟用 bgp enforce-first-as 而UPDATE並未包含鄰居的AS作為AS_SEQUENCE中第一個AS編號。

在這種情況下，路由器會傳送通知並關閉作業階段。

- 在中標籤為(received-only)的路徑 show ip bgp longer-prefixes 輸出

原則已拒絕這些路徑。但是，由於您已設定，因此路由器已儲存路徑 soft-reconfiguration inbound 傳送路徑的鄰居。

最佳路徑演算法的運作原理

BGP 會將第一個有效路徑指派為目前的最佳路徑。接著，BGP 會比較最佳路徑和清單中的下一個路徑，直到 BGP 達到有效路徑清單的結尾。此清單提供用來判斷最佳路徑的規則：

1. 優先使用具有最高 WEIGHT 的路徑。

註:WEIGHT是一個思科特定的引數。這是參數設定所在的路由器的本地參數。

2. 優先使用具有最高 LOCAL_PREF 的路徑。

註：不具LOCAL_PREF的路徑會視為已具有使用 bgp default local-preference 命令，或預設情況下使其值為100。

3. 優先使用從本地透過 network 或 aggregate BGP子命令或通過IGP重新分配。

源自 network 或 redistribute 命令優先於源自 aggregate-address 指令。

註：請注意以下事項：

— 如果已設定AIGP， bgp bestpath aigp ignore 命令時，決策過程會考慮AIGP指標。如需進一步的詳細資訊，請參閱設定 BGP 的 AIGP 指標屬性。

4. 優先使用具有最短 AS_PATH 的路徑。

註：請注意以下事項：

— 如果您已設定 bgp bestpath as-path ignore 指令。

- 一個 AS_SET 計為 1，無論該集合中有多少個 AS。

- AS_CONFED_SEQUENCE 和 AS_CONFED_SET 不包含在 AS_PATH 長度中。

5. 優先使用最低來源類型的路徑。

附註:IGP低於外部閘道通訊協定(EGP),EGP低於INCOMPLETE。

6. 優先使用具有最小多出口鑑別器 (MED) 的路徑。

註：請注意以下事項：

- 只有在兩個路徑的第一個（相鄰）AS 相同時才會執行比較。任何聯盟子 AS 都會被略過。

換句話說，只有當多個路徑的 AS_SEQUENCE 中的第一個 AS 相同時，才會比較 MED。任何前面的AS_CONFED_SEQUENCE都會被略過。

— 如果 bgp always-compare-med 已啟用，則會比較所有路徑的MED。

您必須在整個 AS 停用此選項。否則，可能會發生路由迴圈。

— 如果 bgp bestpath med-confed ，則會比較所有僅包含AS_CONFED_SEQUENCE的路徑的MED。

這些路徑源自本地聯盟中。

- 從 MED 為 4,294,967,295 的鄰居所接收的路徑的 MED 在插入 BGP 表之前會有所變更。MED變為4,294,967,294。

- 從 MED 為 4,294,967,295 的鄰居所接收的路徑的 MED 會視為有效並插入 BGP 表中，並對針對思科錯誤 ID CSCef34800 修復的程式碼產生影響。

— 除非您已啟用，否則接收的路徑若無MED，其MED皆會指派為0 bgp bestpath med missing-as-worst.

如果您已啟用 bgp bestpath med missing-as-worst路徑的MED皆會指派為4,294,967,294。

如果您已啟用 bgp bestpath med missing-as-worst路徑，路徑的MED皆會指派為4,294,967,295，並對針對思科錯誤ID CSCef34800修復的程式碼產生影響。

-其 bgp deterministic-med 命令也會影響此步驟。

如需示範，請參閱 BGP 路由器如何使用多出口鑑別器執行最佳路徑選取。

7. 優先使用 eBGP 路徑而非 iBGP 路徑。

如果已選取 bestpath，請前往步驟 9（多重路徑）。

注意:包含AS_CONFED_SEQUENCE和AS_CONFED_SET的路徑是聯盟的本地路徑。因此，這些路徑會視為內部路徑。聯盟外部和聯盟內部之間沒有區別。

8. 優先使用具有最低 IGP 指標的路徑，而非 BGP 下一躍點。

繼續操作，即使已選取 bestpath。

9. 判斷是否需要在 BGP 多重路徑的路由表中安裝多個路徑。

如果尚未選取 bestpath，則繼續操作。

10. 當兩條路徑都是外部路徑時，優先使用首先接收的路徑（最早的路徑）。

即使根據下一個決策標準（步驟 11、12 和 13），較新的路徑會是優先使用的路由，因為較新的路徑不會取代較舊的路徑，此步驟將路由擺動情形降至最低。

如果以下任何事項為真，請跳過此步驟：

- 您已啟用 bgp best path compare-routerid  指令。

註:Cisco IOS®軟體版本12.0.11S、12.0.11SC、12.0.11S3、12.1.3、12.1.3AA、12.1.3.T和12.1.3.E引入了此命令。

- 由於路由是從同一路由器接收的，因此多條路徑的路由器 ID 是相同的。

- 目前沒有最佳路徑。

目前的最佳路徑可能會遺失，例如提供路徑的鄰居關閉時。

11. 優先使用來自具有最低路由器 ID 的 BGP 路由器的路由。

路由器 ID 是路由器上的最高 IP 位址，且優先設為回送位址。此外，您還可以使用 bgp router-id 命令，以手動設定路由器ID。

注意:如果路徑包含路由反射器(RR)屬性，則在路徑選取流程中，建立者ID將替代路由器ID。

12. 如果多個路徑的建立者或路由器 ID 相同，則優先使用具有最短叢集清單長度的路徑。

這只發生在 BGP RR 環境中。這允許用戶端與其他叢集中的 RR 或用戶端建立同儕節點關係。在這種情況下，用戶端必須知道 RR 特定的 BGP 屬性。

13. 優先使用來自最低鄰居位址的路徑。

此位址是BGP中使用的IP位址 neighbor 組態.此位址對應到連線本地路由器的 TCP 連線所使用的遠端同儕節點。

示例：BGP最佳路徑選取

在這個範例中，網路 10.30.116.0/23 有 9 個可用路徑。其 show ip bgp network 命令會顯示指定網路的BGP路由表中的專案。

Router R1#show ip bgp vpnv4 rd 1100:1001 10.30.116.0/23

BGP routing table entry for 1100:1001:10.30.116.0/23, version 26765275

Paths: (9 available, best #6, no table)

Advertised to update-groups:

1          2          3

(65001 64955 65003) 65089, (Received from a RR-client)

172.16.254.226 (metric 20645) from 172.16.224.236 (172.16.224.236)

Origin IGP, metric 0, localpref 100, valid, confed-internal

Extended Community: RT:1100:1001

mpls labels in/out nolabel/362

(65008 64955 65003) 65089

172.16.254.226 (metric 20645) from 10.131.123.71 (10.131.123.71)

Origin IGP, metric 0, localpref 100, valid, confed-external

Extended Community: RT:1100:1001

mpls labels in/out nolabel/362

(65001 64955 65003) 65089

172.16.254.226 (metric 20645) from 172.16.216.253 (172.16.216.253)

Origin IGP, metric 0, localpref 100, valid, confed-external

Extended Community: RT:1100:1001

mpls labels in/out nolabel/362

(65001 64955 65003) 65089

172.16.254.226 (metric 20645) from 172.16.216.252 (172.16.216.252)

Origin IGP, metric 0, localpref 100, valid, confed-external

Extended Community: RT:1100:1001

mpls labels in/out nolabel/362

(64955 65003) 65089

172.16.254.226 (metric 20645) from 10.77.255.57 (10.77.255.57)

Origin IGP, metric 0, localpref 100, valid, confed-external

Extended Community: RT:1100:1001

mpls labels in/out nolabel/362

(64955 65003) 65089

172.16.254.226 (metric 20645) from 10.57.255.11 (10.57.255.11)

Origin IGP, metric 0, localpref 100, valid, confed-external, best

Extended Community: RT:1100:1001

mpls labels in/out nolabel/362

!--- BGP selects this as the Best Path on comparing

!--- with all the other routes and selected based on lower router ID.

(64955 65003) 65089

172.16.254.226 (metric 20645) from 172.16.224.253 (172.16.224.253)

Origin IGP, metric 0, localpref 100, valid, confed-internal

Extended Community: RT:1100:1001

mpls labels in/out nolabel/362

(65003) 65089

172.16.254.226 (metric 20645) from 172.16.254.234 (172.16.254.234)

Origin IGP, metric 0, localpref 100, valid, confed-external

Extended Community: RT:1100:1001

mpls labels in/out nolabel/362

65089, (Received from a RR-client)

172.16.228.226 (metric 20645) from 172.16.228.226 (172.16.228.226)

Origin IGP, metric 0, localpref 100, valid, confed-internal

Extended Community: RT:1100:1001

mpls labels in/out nolabel/278

BGP會考慮本文所述的各種屬性，從這9個路徑中選擇最佳路徑。此處顯示的輸出中，BGP會比較可用路徑，並根據其較小的路由器ID選擇路徑6作為最佳路徑。

Comparing path 1 with path 2:

Both paths have reachable next hops

Both paths have a WEIGHT of 0

Both paths have a LOCAL_PREF of 100

Both paths are learned

Both paths have AS_PATH length 1

Both paths are of origin IGP

The paths have different neighbor AS's so ignoring MED

Both paths are internal

(no distinction is made between confed-internal and confed-external)

Both paths have an IGP metric to the NEXT_HOP of 20645

Path 2 is better than path 1 because it has a lower Router-ID.

Comparing path 2 with path 3:

Both paths have reachable next hops

Both paths have a WEIGHT of 0

Both paths have a LOCAL_PREF of 100

Both paths are learned

Both paths have AS_PATH length 1

Both paths are of origin IGP

Both paths have the same neighbor AS, 65089, so comparing MED.

Both paths have a MED of 0

Both paths are confed-external

Both paths have an IGP metric to the NEXT_HOP of 20645

Path 2 is better than path 3 because it has a lower Router-ID.

Comparing path 2 with path 4:

Both paths have reachable next hops

Both paths have a WEIGHT of 0

Both paths have a LOCAL_PREF of 100

Both paths are learned

Both paths have AS_PATH length 1

Both paths are of origin IGP

Both paths have the same neighbor AS, 65089, so comparing MED.

Both paths have a MED of 0

Both paths are confed-external

Both paths have an IGP metric to the NEXT_HOP of 20645

Path 2 is better than path 4 because it has a lower Router-ID.

Comparing path 2 with path 5:

Both paths have reachable next hops

Both paths have a WEIGHT of 0

Both paths have a LOCAL_PREF of 100

Both paths are learned

Both paths have AS_PATH length 1

Both paths are of origin IGP

Both paths have the same neighbor AS, 65089, so comparing MED.

Both paths have a MED of 0

Both paths are confed-external

Both paths have an IGP metric to the NEXT_HOP of 20645

Path 5 is better than path 2 because it has a lower Router-ID.

Comparing path 5 with path 6:

Both paths have reachable next hops

Both paths have a WEIGHT of 0

Both paths have a LOCAL_PREF of 100

Both paths are learned

Both paths have AS_PATH length 1

Both paths are of origin IGP

Both paths have the same neighbor AS, 65089, so comparing MED.

Both paths have a MED of 0

Both paths are confed-external

Both paths have an IGP metric to the NEXT_HOP of 20645

Path 6 is better than path 5 because it has a lower Router-ID.

Comparing path 6 with path 7:

Both paths have reachable next hops

Both paths have a WEIGHT of 0

Both paths have a LOCAL_PREF of 100

Both paths are learned

Both paths have AS_PATH length 1

Both paths are of origin IGP

Both paths have the same neighbor AS, 65089, so comparing MED.

Both paths have a MED of 0

Both paths are internal

(no distinction is made between confed-internal and confed-external)

Both paths have an IGP metric to the NEXT_HOP of 20645

Path 6 is better than path 7 because it has a lower Router-ID.

Comparing path 6 with path 8:

Both paths have reachable next hops

Both paths have a WEIGHT of 0

Both paths have a LOCAL_PREF of 100

Both paths are learned

Both paths have AS_PATH length 1

Both paths are of origin IGP

Both paths have the same neighbor AS, 65089, so comparing MED.

Both paths have a MED of 0

Both paths are confed-external

Both paths have an IGP metric to the NEXT_HOP of 20645

Path 6 is better than path 8 because it has a lower Router-ID.

Comparing path 6 with path 9:

Both paths have reachable next hops

Both paths have a WEIGHT of 0

Both paths have a LOCAL_PREF of 100

Both paths are learned

Both paths have AS_PATH length 1

Both paths are of origin IGP

The paths have different neighbor AS's so ignoring MED

Both paths are internal

(no distinction is made between confed-internal and confed-external)

Both paths have an IGP metric to the NEXT_HOP of 20645

Path 6 is better than path 9 because it has a lower Router-ID.

The best path is #6

自訂路徑選取流程

擴充的群體屬性（稱為 BGP Cost Community）提供了一種自訂最佳路徑選取流程的方法。最佳路徑演算法運作原理一節所述的演算法中新增一個額外的步驟，會比較成本群體。此步驟在演算法中的必要步驟（插入點）之後執行。具有最低成本值的路徑是優先使用路徑。

註：請注意以下事項：

— 如果您已核發 bgp bestpath cost-community ignore 指令。

- 成本群體 SET 子句是以成本群體 ID 編號（0 至 255）和成本值（0 到 4,294,967,295）設定。成本數值決定路徑是否優先使用。具有最低成本數值的路徑是優先使用路徑。未明確以成本數值設定的路徑將指派為 2,147,483,647 的預設成本值。此值為 0 到 4,294,967,295 之間的中點。接著，這些路徑會按照最佳路徑選取流程評估。如果兩條路徑皆以相同的成本數值設定，則路徑選取流程將優先使用具有最低群體 ID 的路徑。如果路徑具有不相等的最佳路徑前成本群體數，則會選取具有較低最佳路徑前成本群體的路徑作為最佳路徑。

- ABSOLUTE_VALUE被認為是判斷路徑優先使用程度的第一步。例如，將 EIGRP 重新分配到 BGP VPNv4 時，成本群體會使用 ABSOLUTE_VALUE 類型。在內部 (IGP) 與下一躍點的距離進行比較後，會考慮 IGB_Cost。這表示在最佳路徑演算法運作原理中的演算法步驟 8 之後，會考慮具有 IGP_COST 插入點的成本群體。

BGP 多重路徑

BGP 多重路徑允許將到達同一目的地的多個 BGP 路徑安裝到 IP 路由表中。這些路徑會與負載共用的最佳路徑一起安裝到表中。BGP 多重路徑不會影響最佳路徑的選取。例如，路由器仍會根據演演算法將其中一條路徑指定為最佳路徑，並將此最佳路徑通告給鄰居。

以下是 BGP 多重路徑的功能：

- eBGP多重路徑 — maximum-paths n

- iBGP多重路徑 — maximum-paths ibgp n

- eiBGP多重路徑 — maximum-paths eibgp

要成為多重路徑的候選路徑，到達同一目標的路徑需要具有與最佳路徑特性相同的這些特性：

- 重量

- 本地優先使用程度

- AS-PATH 長度

- 原始來源

- MED

- 以下其中一項：

- 相鄰 AS 或子 AS （在新增 eiBGP 多重路徑功能之前）

- AS-PATH（在新增 eiBGP 多重路徑功能之後）

有些 BGP 多重路徑功能對多重路徑候選選項有額外的要求。

以下是對 eBGP 多重路徑的額外要求：

- 必須從外部或聯盟外部鄰居(eBGP)得知該路徑。

- BGP下一躍點的IGP度量必須等於最佳路徑IGP指標。

以下是對 iBGP 多重路徑的額外要求：

- 必須從內部鄰居(iBGP)得知該路徑。

- 除非路由器設定為不等價的iBGP多重路徑，否則BGP下一躍點的IGP度量必須等於最佳路徑IGP指標。

BGP 最多可在 IP 路由表中插入 n 個最近從多重路徑候選路徑接收到的路徑。目前，最大值 n 為 6。當停用多重路徑時，預設值為 1。

對於成本不等的負載平衡，您還可以使用 BGP 鏈結頻寬。

注意:從eBGP多重路徑中選取的最佳路徑會先執行等價的next-hop-self，才會轉送到內部同儕節點。

相關資訊

- 疑難排解 BGP

- BGP 路由器如何使用多出口鑑別器執行最佳路徑選取

- 設定 BGP

- BGP 支援頁面

- 技術支援與文件 - Cisco Systems