目录

简介

背景信息

路由器忽略路径的原因

最佳路径算法的工作原理

示例：BGP最佳路径选择

自定义路径选择过程

BGP 多路径

相关信息

简介

本文档介绍边界网关协议 (BGP) 最佳路径算法的功能。

背景信息

BGP路由器通常接收通往同一目的地的多条路径。BGP 最佳路径算法确定要在 IP 路由表中安装且用于流量转发的最佳路径。

路由器忽略路径的原因

假设路由器针对特定前缀接收的所有路径都排列在一个列表中。该列表类似于 show ip bgp longer-prefixes  命令。在此情况下，一些路径没有被视为最佳路径的候选对象。此类路径的输出中通常没有有效的标志 show ip bgp longer-prefixes 命令。路由器在以下情况下忽略路径：

- 在中标记为未同步的路径 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编号。

在这种情况下，路由器将发送通知并关闭会话。

- 在中标记为(仅接收)的路径 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，AS_SET 均视为 1。

-AS_PATH 长度中不包括 AS_CONFED_SEQUENCE 和 AS_CONFED_SET。

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表中，影响为Cisco bug 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，其效果是为Cisco Bug ID CSCef34800固定了代码。

-此 bgp deterministic-med 命令也会影响此步骤。

有关演示，请参阅 BGP 路由器如何使用多出口标识符进行最佳路径选择。

7. 首选 eBGP 路径而非 iBGP 路径。

如果选择了最佳路径，则转到步骤 9（多路径）。

注意:包含AS_CONFED_SEQUENCE和AS_CONFED_SET的路径是联盟本地路径。因此，这些路径将视为内部路径。“联盟外部”和“联盟内部”没有区别。

8. 首选具有最低 IGP 度量且指向 BGP 下一跳的路径。

无论是否已选择了最佳路径，均继续。

9. 确定 BGP 多路径的路由表中是否需要安装多个路径。

如果尚未选择最佳路径，则继续。

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最佳路径选择

在本示例中，有9条路径可用于网络10.30.116.0/23。此 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 成本团体）的扩展团体属性提供了自定义最佳路径选择过程的方式。用于比较成本团体的其他步骤已添加到最佳路径算法的工作原理部分所述的算法中。此步骤位于算法中的必要步骤（插入点）之后。首选具有最低成本值的路径。

注：请注意以下事项：

— 如果您已发出 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 长度

- 原点

- 中文

- 下列项之一：

- 相邻 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多路径中选择的最佳路径上执行。

相关信息

- BGP 故障排除

- BGP 路由器如何使用多出口标识符进行最佳路径选择

- 配置 BGP

- BGP 支持页

- 技术支持和文档 - Cisco Systems