IP : 边界网关协议(BGP)

BGP 最佳路径选择算法

2015 年 8 月 28 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 4 月 22 日) | 反馈


目录


简介

边界网关协议 (BGP) 路由器通常接收多个指向同一目的地的路径。BGP 最佳路径算法确定要在 IP 路由表中安装且用于流量转发的最佳路径。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档不限于特定的软件和硬件版本。

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

路由器忽略路径的原因

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

  • show ip bgp longer-prefixes 输出中标记为“not synchronized”的路径

    如果启用了 BGP 同步,IP 路由表中的前缀必须有一个匹配项,才能将内部 BGP (iBGP) 路径视为有效路径。默认情况下BGP同步在Cisco IOS 软件方面启用。如果匹配的路由是从开放最短路径优先 (OSPF) 邻居获知的,则其 OSPF 路由器 ID 必须与 iBGP 邻居的 BGP 路由器 ID 匹配。大多数用户喜欢使用 no synchronization BGP 子命令来禁用同步。

    注意: 在 Cisco IOS 软件版本 12.2(8)T 及更高版本中,默认情况下禁用同步。

  • NEXT_HOP 处于不可访问状态的路径

    确保有一个指向与路径关联的 NEXT_HOP 的内部网关协议 (IGP) 路由。

  • 来自外部 BGP (eBGP) 邻居的路径(如果本地自治系统 (AS) 显示在 AS_PATH 中)

    这样的路径将被拒绝进入路由器,甚至不会安装到 BGP 路由信息库 (RIB) 中。同样适用于由路由策略拒绝通过访问、前缀、AS_PATH或者属性列表实现的所有路径,除非配置邻居的邻接soft-reconfiguration inbound

  • 如果启用了 bgp enforce-first-as 且 UPDATE 不包含邻居的 AS 作为 AS_SEQUENCE 中的第一个 AS 编号

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

  • show ip bgp longer-prefixes 输出中标记为“(received-only)”的路径

    策略已拒绝这些路径。然而,路由器已存储这些路径,这是因为您已为发送路径的邻居配置了 soft-reconfiguration inbound

最佳路径算法的工作原理

BGP 将第一个有效路径指定为当前最佳路径。然后,BGP 将最佳路径与列表中的下一路径进行比较,直到 BGP 到达有效路径列表的末端为止。此列表提供用于确定最佳路径的规则:

  1. 首选具有最高 WEIGHT 的路径。

    注意: WEIGHT 是特定于 Cisco 的参数。它是配置有该参数的路由器中的本地参数。

  2. 首选具有最高 LOCAL_PREF 的路径。

    注意: 没有 LOCAL_PREF 的路径将视为已经用 bgp default local-preference 命令设置了值,或者使用默认值 100。

  3. 首选通过 network 或 aggregate BGP 子命令或者通过 IGP 重分配而获得的本地路径。

    network 或 redistribute 命令发出的本地路径优先于由 aggregate-address 命令发出的本地聚合路由。

  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) 的路径。

    注意: 请注意以下内容:

  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 地址。此地址对应于在与本地路由器的 TCP 连接中使用的远程对等方。

示例:BGP最佳路径选择

在本例中, 9个路径为网络10.30.116.0/23是可用的。show ip bgp网络命令在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比较可用路径并且选择Path# 6作为根据其更低的最佳路径router-id。

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 命令,则跳过此步骤。

  • 成本团体设置子句使用成本团体 ID 编号(0 到 255)和成本编号值(0 到 4,294,967,295)进行了配置。成本编号值确定首选路径。将首选具有最低成本编号值的路径。对于未用成本编号值专门配置的路径,将指定默认成本编号值为 2,147,483,647。此值是 0 和 4,294,967,295 之间的中央点。然后通过最佳路径选择过程相应地计算这些路径。如果两个路径配置有同一成本编号值,则路径选择过程首选具有最低团体 ID 的路径。如果路径有不同等PRE bestpath开销了社区,有更低PRE bestpath开销社区的路径选择作为最佳路径。

  • ABSOLUTE_VALUE考虑在确定程度的第一步路径的首选。例如,当EIGRP重新分配对BGP Vpnv4时, ABSOLUTE_VALUE类型用于为开销社区。IGB_Cost考虑,在对下一跳的内部(IGP)后距离比较了。这意味着开销社区用IGP_COST问题的插入在算法的步骤8以后考虑在最佳路径算法如何的工作

BGP 多路径

BGP 多路径允许安装到同一目的地的多个 BGP 路径的 IP 路由表中。这些路径与最佳路径一起安装到表中,以实现负载共享。BGP 多路径不影响最佳路径选择。例如,路由器仍然根据该算法,将其中一个路径指定为最佳路径,并且将此最佳路径通告其邻居。

下面是 BGP 多路径功能:

若要成为多路径候选对象,同一目的地的路径需要使下列这些特性等同于最佳路径特性:

  • 权重

  • 本地首选

  • AS-PATH 长度

  • 始发地

  • MED

  • 下列项之一:

某些 BGP 多路径功能对多路径候选对象有额外的要求。

下面是对 eBGP 多路径的额外要求:

  • 应当从外部或联盟外部邻居 (eBGP) 获知路径。

  • BGP 下一跳的 IGP 度量应当等于最佳路径 IGP 度量。

下面是对 iBGP 多路径的额外要求:

  • 应当从内部邻居 (iBGP) 获知路径。

  • 除非路由器是为成本不同的 iBGP 多路径配置的,否则 BGP 下一跳的 IGP 度量应当等于最佳路径 IGP 度量。

BGP 最多可在 IP 路由表中插入 n 个最近从多路径候选对象接收的路径。n 的最大值目前为 6。当禁用多路径时,默认值为 1。

为了使成本不同的负载平衡,您也可以使用 BGP 链路带宽

注意: 等效的 next-hop-self 在转发到内部对等方之前,先在 eBGP 多路径中选择的最佳路径上执行。

相关的思科支持社区讨论

思科支持社区是您提问、解答问题、分享建议以及与工作伙伴协作的论坛。


相关信息


Document ID: 13753