簡介
本文件說明邊界閘道通訊協定 (BGP) 最佳路徑演算法的功能。
背景資訊
BGP路由器通常會收到多個前往同一目的地的路徑。BGP 最佳路徑演算法會決定哪一條是要安裝在 IP 路由表中並用於流量轉送的最佳路徑。
為什麼路由器略過路徑
假設路由器收到的具有特定首碼的所有路徑都排列在一個清單中。此清單類似show ip bgp longer-prefixescommand的輸出。在這個情況下,某些路徑不會被視為最佳路徑的候選路徑。在 show ip bgp longer-prefixes 命令的輸出中,此類路徑通常沒有有效的標幟。在這些情況下,路由器會略過路徑:
-
在 show ip bgp longer-prefixes 輸出中標記為 not synchronized 的路徑。
如果啟用 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 達到有效路徑清單的結尾。此清單提供用來判斷最佳路徑的規則:
-
優先使用具有最高 WEIGHT 的路徑。
附註:WEIGHT 是一個思科特定的參數。這是參數設定所在的路由器的本地參數。
-
優先使用具有最高 LOCAL_PREF 的路徑。
附註:不具LOCAL_PREF的路徑會視為已具有使用bgp default local-preference 命令設定的值,或者具有預設的值100。
-
優先使用從本地透過 network 或 aggregate BGP 子命令產生或透過 IGP 重新分配的路徑。
源自 network 或 redistribute 命令的本地路徑會較源自 aggregate-address 命令的本地聚合優先使用。
附註:請注意以下事項:
- 如果已設定 AIGP,「但」未設定 bgp bestpath aigp ignore 命令,則決策過程會考慮 AIGP 指標。如需進一步的詳細資訊,請參閱設定 BGP 的 AIGP 指標屬性。
-
優先使用具有最短 AS_PATH 的路徑。
附註:請注意以下事項:
- 如果您已設定 bgp bestpath as-path ignore 命令,則會跳過此步驟。
- 一個 AS_SET 計為 1,無論該集合中有多少個 AS。
- AS_CONFED_SEQUENCE 和 AS_CONFED_SET 不包含在 AS_PATH 長度中。
-
優先使用最低來源類型的路徑。
附註:IGP 低於外部閘道通訊協定 (EGP),EGP 低於 INCOMPLETE。
-
優先使用具有最小多出口鑑別器 (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 修復的程式碼產生影響。
- 除非您已啟用 bgp bestpath med missing-as-worst,否則接收的路徑若無 MED,其 MED 皆會指派為 0。
如果您已啟用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 路由器如何使用多出口鑑別器執行最佳路徑選取。
-
優先使用 eBGP 路徑而非 iBGP 路徑。
如果已選取 bestpath,請前往步驟 9(多重路徑)。
附註:包含 AS_CONFED_SEQUENCE 和 AS_CONFED_SET 的路徑是聯盟的本地路徑。因此,這些路徑會視為內部路徑。聯盟外部和聯盟內部之間沒有區別。
-
優先使用具有最低 IGP 指標的路徑,而非 BGP 下一躍點。
繼續操作,即使已選取 bestpath。
-
判斷是否需要在 BGP 多重路徑的路由表中安裝多個路徑。
如果尚未選取 bestpath,則繼續操作。
-
當兩條路徑都是外部路徑時,優先使用首先接收的路徑(最早的路徑)。
即使根據下一個決策標準(步驟 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 是相同的。
-
目前沒有最佳路徑。
目前的最佳路徑可能會遺失,例如提供路徑的鄰居關閉時。
-
優先使用來自具有最低路由器 ID 的 BGP 路由器的路由。
路由器 ID 是路由器上的最高 IP 位址,且優先設為回送位址。此外,您還可以使用bgp router-id命令來手動設定路由器ID。
附註:如果路徑包含路由反射器 (RR) 屬性,則在路徑選取流程中,建立者 ID 將替代路由器 ID。
-
如果多個路徑的建立者或路由器 ID 相同,則優先使用具有最短叢集清單長度的路徑。
這只發生在 BGP RR 環境中。這允許用戶端與其他叢集中的 RR 或用戶端建立同儕節點關係。在這種情況下,用戶端必須知道 RR 特定的 BGP 屬性。
-
優先使用來自最低鄰居位址的路徑。
此位址是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 多重路徑的功能:
要成為多重路徑的候選路徑,到達同一目標的路徑需要具有與最佳路徑特性相同的這些特性:
-
重量
-
本地優先使用程度
-
AS-PATH 長度
-
原始來源
-
MED
-
以下其中一項:
有些 BGP 多重路徑功能對多重路徑候選選項有額外的要求。
以下是對 eBGP 多重路徑的額外要求:
以下是對 iBGP 多重路徑的額外要求:
BGP 最多可在 IP 路由表中插入 n 個最近從多重路徑候選路徑接收到的路徑。目前,最大值n為6。當停用多重路徑時,預設值為1。
對於成本不等的負載平衡,您還可以使用 BGP 鏈結頻寬。
附註:從 eBGP 多重路徑中選取的最佳路徑會先執行等價的 next-hop-self,才會轉送到內部同儕節點。
相關資訊