BGP 协议在确定最佳路径时会考虑什么?

网络工程 路由 BGP
2022-02-23 03:32:40

BGP 协议在确定最佳路径时考虑了什么?为什么它被认为比 RIP、OSPF 等内部路由协议慢?

2个回答

BGP 协议在确定最佳路径时考虑了什么?

下面是 BGP 评估的最佳路径选择属性的粗略备忘单图。

在此处输入图像描述

为什么它被认为比 RIP、OSPF 等内部路由协议慢?

说 BGP 很慢有点不公平,因为它是一个全连接协议。它试图在抽象层面上绘制超立方体的路径。因此,逻辑路径的数量非常非常大。

BGP也是一个相当复杂的协议。BGP4+ 必须处理各种对象。更糟糕的是,因为它是一个不断发展的协议,它不能以任何方式紧凑化。所有被支持的东西都必须得到支持并且仍然以相同的方式运行,这意味着会有一些情况可以用不同的方式表达相同的东西。BGP4+ 必须知道所有这些。

第三,人们长期滥用 IPv4,现在仍然如此。任何给定的 IP 地址都可以位于网络中的任何位置,CIDR 仍然是一个相对较新的想法。这意味着你不能走任何捷径。

相比之下,OSPFv2 和 v3 试图处理更简单的问题。首先,它们是专门的,因此 v3 可以剔除所有不适用的东西。他们也没有使用超立方体。正因为如此,人们滥用网络寻址甚至都没有关系,因为需要消化的数据要少得多。

这几乎就像将卡车 (BGP) 与赛车 (RIP & OSPF) 进行比较。

BGP不是为了收敛速度而构建的,而是为了承载其他协议无法承载的大量信息。您可以使用 BGP 进行的基于策略的路由调整量是巨大的。

在一般部署中,OSPF 用于在两个子网之间铺设路径,在由 OSPF 维护的快速收敛网络之上,我们有 BGP,它携带有关正在连接的子网的一些非常详细的信息。(MPLS VPN)

另一个是连接两个不同的管理实体(网络域)。例如,与 ISP 连接的企业。企业可以在其网络中使用 OSPF 以实现快速收敛,然后使用 BGP 发送其子网的特定信息以与其他地方的其他网络连接。

BGP 有一组丰富的属性,它使用这些属性来进行[复杂] 路径选择算法。RFC 4271, A Border Gateway Protocol 4 (BGP-4)有官方算法,但一些供应商已经增强了算法。例如,思科添加了权重属性和命令来更改原始算法。请参阅BGP 最佳路径选择算法

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

  1. 首选 WEIGHT 最高的路径。
    • 注意:WEIGHT是 Cisco 特定的参数。它在配置它的路由器上是本地的。
  2. 首选具有最高LOCAL_PREF的路径。
    • 注意:没有 LOCAL_PREF 的路径被认为具有使用bgp default local-preference命令设置的值,或者默认值为 100。
  3. 首选通过网络聚合BGP 子命令或通过从 IGP 重新分配本地产生的路径。

    由networkredistribute命令提供的本地路径优先于由aggregate-address命令 提供的本地聚合

    • 注意:请注意此项:
      - 如果配置了AIGP 并且未配置bgp bestpath aigp ignore命令,则决策过程会考虑 AIGP 度量。有关详细信息,请参阅为 BGP 配置 AIGP 度量属性。
  4. 首选 AS_PATH 最短的路径。

    • 注意: 请注意以下项目:

      - 如果您已配置bgp bestpath as-path ignore命令,则跳过此步骤。

      - 无论集合中有多少个 AS,一个 AS_SET 都计为 1。

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

  5. 首选具有最低原点类型的路径。

    • 注意: IGP 低于外部网关协议 (EGP),EGP 低于 INCOMPLETE。
  6. 首选具有最低多出口鉴别器 (MED) 的路径。

    • 注意:请注意以下项目:

      - 仅当两条路径中的第一个(相邻)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 下一跃点。
    继续,即使已经选择了 bestpath。
  9. 确定是否需要在BGP Multipath的路由表中安装多个路径。如果尚未选择最佳路径,请继续。
  10. 当两条路径都是外部路径时,首选首先收到的路径(最旧的路径)。此步骤最大限度地减少了路由抖动,因为较新的路径不会取代较旧的路径,即使较新的路径将是基于下一个决策标准的首选路径(步骤 11、12 和 13)。如果以下任何一项为真,请跳过此步骤:

    -您已启用bgp 最佳路径 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 连接中使用的远程对等点。