Cisco经典文档

当前位置: 首页Cisco经典文档BGP 最佳路径选择算法


BGP 最佳路径选择算法

            

 

                                                       文档下载:

切换至英文原版


内容

前言
前提条件
      需求
      使用的组件
      惯例
路由器忽略路径的原因
最佳路径算法的工作原理
自定义路径选择过程
BGP 多路径
 


前言

边界网关协议 (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) 路径视为有效路径。 在 Cisco IOS® 软件中,默认情况下启用 BGP 同步。 如果匹配的路由是从开放最短路径优先 (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) 的路径。

    注意: 请注意以下内容:

    • 只有第一个(相邻)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。

    • 除非启用了 bgp bestpath med missing-as-worst,否则将为收到的没有 MED 的路径指定一个值为 0 的 MED。

      如果启用了 bgp bestpath med missing-as-worst,则为路径指定一个值为 4,294,967,294 的 MED。

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

自定义路径选择过程

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

  • 目前,仅实施 IGP_COST 插入点。 这意味着,在最佳路径算法的工作原理中算法的步骤 8 之后,仅考虑具有 IGP_COST 插入点的成本团体。

BGP 多路径

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

下面是 BGP 多路径功能:

  • eBGP 多路径 — maximum-paths n

  • iBGP 多路径 — maximum-paths ibgp n

  • eiBGP 多路径 — maximum-paths eibgp n

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

  • 权重

  • 本地首选

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


 

 

注:本人能力有限,如遇不足之处,还请指正!

China-CCIE  QQ交流群:106155045   点击与作者QQ交谈