已知路由

本文档介绍了已知路由、Virtual Private Cloud 网络的动态路由模式如何影响已知路由,以及 Cloud Router 中提供的最佳路径选择模式。

已知路由是指 Cloud Router 使用 BGP 协议从远程对等路由器接收的路由,或您在 Cloud Router 上配置的自定义已知路由:

BGP 收到的路由

从远程对等方获知的 BGP 路由。对等路由器可以是以下任一路由器:

  • 实体本地路由器
  • 另一个 Cloud Router 路由器
  • 路由器设备虚拟机(包含 Network Connectivity Center)
  • 其他云服务提供商的路由器
自定义的已知路由

自定义已知路由是在 Cloud Router 上手动配置的,用于模拟从远程对等方学习到的路由。如果您没有管理员权限来配置远程对等路由器,自定义已知路由会很有用。

Cloud Router 路由器会对动态路由的唯一前缀数量强制执行配额,包括从 BGP 对等方动态学习的前缀或手动配置为自定义已知路由的前缀。如需了解详情,请参阅 Cloud Router 配额

除非您使用启用了数据传输的 Network Connectivity Center 混合 Spoke,否则 Cloud Router 不会重新通告学到的路由

这两种类型的 Cloud Router 路由器已知路由均由动态路由控制平面和 VPC 网络控制平面处理。处理步骤使用目的地前缀和路由指标在 VPC 网络中创建动态路由。如需了解动态路由控制平面和 VPC 网络控制平面之间的差异,请参阅 Cloud Router 路由器的工作原理

自定义的已知路由

自定义已知路由提供与 BGP 收到的动态路由相同的优势。与静态路由不同,当下一个跃点的 BGP 会话关闭时,自定义已知动态路由会自动撤消。

自定义已知路由是定义特定下一个跃点(例如 Cloud Interconnect VLAN 连接和高可用性 VPN 隧道)的非 BGP 路由的唯一方式。

如需了解详情,请参阅指定和管理自定义已知路由

动态路由模式

VPC 网络的动态路由模式会影响动态路由控制平面和 VPC 网络控制平面如何处理收到的 BGP 路由和自定义已知路由,以便在 VPC 网络中创建动态路由。

使用 VPC 网络对等互连时,导出自定义路由的 VPC 网络的动态路由模式可控制如何在导入自定义路由的对等 VPC 网络中创建动态路由。如需了解详情,请参阅 VPC 网络对等互连文档中的动态路由模式的影响

Google Cloud VPC 网络支持两种动态路由模式:

区域动态路由模式
每个区域的动态路由控制平面仅处理来自其自身区域的 Cloud Router 路由器 BGP 任务的已知路由。在 VPC 网络的特定区域中创建的结果动态路由仅在该特定区域内具有下一个跃点。
全局动态路由模式
每个区域的动态路由控制平面都会处理来自其自身区域的 Cloud Router 路由器 BGP 任务的已知路由。每个区域的动态路由控制平面还会将每个前缀的最佳路径发送到 VPC 网络中使用的所有其他区域的动态路由控制平面。在 VPC 网络的特定区域中创建的结果动态路由可以在任何区域中具有下一个跃点。

最佳路径选择模式

Cloud Router 提供两种最佳路径选择模式:标准模式和旧版模式。最佳路径选择模式适用于 VPC 网络所有区域中通过 Cloud Router 学到的所有路由,包括自定义学到的路由。

创建 VPC 网络时,旧版模式是默认模式。我们建议的最佳实践是,除非需要标准模式的特定功能,否则请使用旧版模式。

旧版最佳路径选择

本部分介绍了 Cloud Router BGP 任务和动态路由控制平面如何实现旧版最佳路径选择模式。

AS 路径长度

在旧版最佳路径选择模式下,AS 路径信息仅在单个 Cloud Router BGP 任务中相关,并且动态路由控制平面不会使用 AS 路径信息来做出最佳路径选择决策。使用旧版最佳路径选择模式时,如果涉及同一目的地前缀的不同 Cloud Router 软件任务,请勿依赖根据 AS 路径长度信息选择最佳路径。

BGP 会话涉及多个 Cloud Router BGP 任务。如需了解详情,请参阅 Cloud Router BGP 任务

BGP 任务选择流程

Cloud Router BGP 任务会从其管理的 BGP 会话的对等路由器接收目的地前缀。BGP 任务会根据 BGP 任务管理的所有 BGP 会话创建一组唯一的目的地前缀。然后,BGP 任务会使用以下流程为每个 BGP 收到的唯一目的地前缀确定至少一个最佳下一个跃点:

  1. AS 路径长度最短:BGP 任务会按 AS 路径长度对下一个跃点列表进行排序,从 AS 路径长度最短到 AS 路径长度最长。排序后,BGP 任务会移除所有 AS 路径长度不短的下一个跃点。

  2. 首选源类型:BGP 任务更倾向于使用内部网关协议 (IGP) 的下一个跃点,而不是使用外部网关协议 (EGP) 的下一个跃点;BGP 任务更倾向于使用 EGP 的下一个跃点,而不是使用“未完成”源类型的下一个跃点。

    如果至少有一个下一个跃点的起源类型为 IGP,则 BGP 任务会移除所有起源类型为 EGP 或“未完成”的下一个跃点。

    如果所有下一个跃点的起源类型均为 IGP,并且至少有一个下一个跃点的起源类型为 EGP,BGP 任务会移除所有起源类型为“未完成”的下一个跃点。

  3. MED 值最小:BGP 任务会按多出口判别器 (MED) 值从小到大对下一个跃点进行排序。排序后,BGP 任务会移除 MED 值不最小的所有下一个跃点。

BGP 任务会将每个目的地前缀及其对应的最佳下一个跃点列表发送到区域的动态路由控制平面。在某些情况下,Cloud Router BGP 软件任务可能还会发送已从考虑范围中移除的下一个跃点。

动态路由控制平面处理

每个区域的动态路由控制平面都会强制执行以下配额,这些配额适用于 BGP 接收路由和自定义已知路由中的唯一目的地:

在强制执行之前的 Cloud Router 配额时,动态路由控制平面会丢弃与排序超出任一 Cloud Router 配额限制的唯一目的地关联的所有路由信息。如需了解详情,请参阅确定性路由丢弃行为

强制执行配额后,动态路由控制平面会对每个未丢弃的唯一目的地前缀应用以下处理算法:

  1. 动态路由控制平面会为前缀创建下一个跃点列表。该列表包括:

    • 从 VPC 网络中自己所在区域的每个 Cloud Router 路由器 BGP 任务收到的前缀的下一个跃点和 MED 值。

    • 使用该前缀的自定义已知路由的下一个跃点和优先级值。自定义已知路由的优先级会被视为 MED 值。

  2. 仅当包含 Cloud Router 路由器的 VPC 网络使用全局动态路由模式时,才会执行以下步骤:

    • 动态路由控制平面仅会将 MED 值最低的下一个跃点发送到其他区域的动态路由控制平面。如果有多个下一个跃点具有相同的最低 MED 值,则系统会将它们全部导出到其他区域的动态路由控制平面。发送的信息包括下一个跃点和最低 MED 值。

    • 动态路由控制平面会从其他区域中的动态路由控制平面接收下一个跃点和 MED 值列表。动态路由控制平面会将每个下一个跃点添加到其前缀的下一个跃点列表中。添加每个下一个跃点时,动态路由控制平面通过添加区域间成本来调整 MED 值。

  3. 动态路由控制平面按照接收的 MED 值从小到大的顺序对前缀的下一个跃点列表进行排序。

  4. 动态路由控制平面会截断发送到 VPC 控制平面的路由列表。通常,发送到 VPC 控制平面的路由列表包含 MED 值最低的路由,以及 MED 值次低的路由(如果有)。不过,动态路由控制平面只能保证将 MED 值最低的路由发送到 VPC 控制平面。

标准最佳路径选择模式

标准最佳路径选择模式更严格地遵循 RFC 4271。与旧版最佳路径选择模式相比,它具有以下优势:

  • 基于 AS 路径的一致路由:系统会考虑 VPC 网络的所有 Cloud Router 路由器上学习到的所有路由的 AS 路径信息。这样,您就可以使用 AS 路径前缀来影响流量流向。

  • 更高的灵活性和自定义性:您可以更好地控制 BGP 前缀在 VPC 网络中的排名方式,包括能够微调 BGP 最佳路径路由。与静态路由相比,动态路由的 VPC 网络路由优先级始终较低。

使用标准最佳路径选择模式时,Cloud Router 提供以下配置选项:

  • 比较 MED 值:您可以选择以下任一选项:

    • 始终比较:系统会比较每个目的地前缀的 MED 值,而不考虑 Cloud Router 学习前缀的 AS。

    • 有条件地比较:前缀会按 Cloud Router 从中学习前缀的 AS 进行分组。对于每个 AS 中的每个前缀,跳跃会按 RFC 4721 中所述的 MED 值匹配进行排名。

  • 将区域添加到区域间费用:您可以选择是否将区域间费用添加到 MED 值。

BGP 任务选择流程

Cloud Router BGP 任务会从其管理的 BGP 会话的对等路由器接收目的地前缀。BGP 任务会根据 BGP 任务管理的所有 BGP 会话创建一组唯一的目的地前缀。然后,BGP 任务会使用以下流程为每个 BGP 收到的唯一目的地前缀确定至少一个最佳下一个跃点:

  1. AS 路径长度最短:BGP 任务会按 AS 路径长度对下一个跃点列表进行排序,从 AS 路径长度最短到 AS 路径长度最长。排序后,BGP 任务会移除所有 AS 路径长度不短的下一个跃点。

  2. 首选源类型:BGP 任务更倾向于使用内部网关协议 (IGP) 的下一个跃点,而不是使用外部网关协议 (EGP) 的下一个跃点;BGP 任务更倾向于使用 EGP 的下一个跃点,而不是使用“未完成”源类型的下一个跃点。

    如果至少有一个下一个跃点的起源类型为 IGP,则 BGP 任务会移除所有起源类型为 EGP 或“未完成”的下一个跃点。

    如果所有下一个跃点的起源类型均为 IGP,并且至少有一个下一个跃点的起源类型为 EGP,则 BGP 任务会移除所有起源类型为“未完成”的下一个跃点。

  3. 考虑邻接 ASN:VPC 网络设置 routingConfig.bgpAlwaysCompareMed 会控制算法的此步骤,如下所示:

    • 如果 routingConfig.bgpAlwaysCompareMedTrue,则每个下一个跃点的邻近 ASN 值均不相关。BGP 任务会按照 MED 值从小到大对下一个跃点进行排序。排序后,BGP 任务会移除 MED 值不最小的所有下一个跃点。

    • 如果 routingConfig.bgpAlwaysCompareMedFalse 或未设置,则每个下一个跃点的邻居 ASN 值均会被视为相关,因此 BGP 任务会执行以下操作:

      1. BGP 任务会按邻居 ASN 值对下一个跃点列表进行分组。

      2. 在每个邻居 ASN 组中,BGP 任务会按 MED 值从小到大对下一个跃点进行排序。(每个邻近 ASN 组中的编号最小的 MED 值可能会有所不同。)

      3. 在每个邻居 ASN 组内,BGP 任务会移除 MED 值不最小的所有下一个跃点。

BGP 任务会将每个目的地前缀及其对应的未移除下一个跃点列表发送到该区域的动态路由控制平面。在某些情况下,Cloud Router BGP 软件任务可能还会发送已从考虑范围中移除的下一个跃点。

动态路由控制平面处理

每个区域的动态路由控制平面都会强制执行以下配额,这些配额适用于 BGP 收到的路由和自定义已知路由中的唯一目的地:

在强制执行之前的 Cloud Router 配额时,动态路由控制平面会丢弃与排序超出任一 Cloud Router 配额限制的唯一目的地关联的所有路由信息。如需了解详情,请参阅确定性路由丢弃行为

强制执行配额后,动态路由控制平面会对每个未丢弃的唯一目的地前缀应用以下处理算法:

  1. 前缀的初始下一个跃点列表:动态路由控制平面会为前缀创建初始下一个跃点列表,该列表包含以下两者:

    • 来自管理 VPC 网络中 Cloud Router 路由器的 BGP 任务的 BGP 接收下一个跃点信息,这些 BGP 任务位于动态路由控制平面所在的区域。

    • 为前缀学习的自定义路由的下一个跃点信息,在 VPC 网络中的 Cloud Router 路由器上定义,并且位于与动态路由控制平面相同的区域。系统会对自定义已知路由应用以下 BGP 属性:

      • AS 路径,仅包含对等方的 ASN。即 AS 路径长度为 1,并且是相应对等 ASN 的邻居 ASN。
      • 来源,设置为“未完成”。
      • MED 值,其中每个自定义已知路由的优先级都被视为 MED 值。
      • 区域间费用设为 0。
  2. 最短的 AS 路径长度:动态路由控制平面会按 AS 路径长度对下一个跃点列表进行排序,从最短的 AS 路径长度到最长的 AS 路径长度。动态路由控制平面会移除所有 AS 路径长度不短的下一个跃点。

  3. 首选源类型:动态路由控制平面更倾向于使用 IGP 的下一个跃点,而不是使用 EGP 的下一个跃点;更倾向于使用 EGP 的下一个跃点,而不是使用“Incomplete”源类型的下一个跃点。

    如果至少一个下一个跃点的起源类型为 IGP,则动态路由控制平面会移除所有具有 EGP 或“未完成”起源类型的下一个跃点。

    如果所有下一个跃点的起源类型均为 IGP,并且至少有一个下一个跃点的起源类型为 EGP,则动态路由控制平面会从考虑范围中移除所有起源类型为“未完成”的下一个跃点。

  4. 考虑邻接 ASN:VPC 网络设置 routingConfig.bgpAlwaysCompareMed 会控制算法的此步骤,如下所示:

    • 如果 routingConfig.bgpAlwaysCompareMedTrue,则每个下一个跃点的邻近 ASN 值均不相关。在这种情况下,动态路由控制平面会按照 MED 值从小到大的顺序对下一个跃点进行排序。MED 值最小的下一个跃点的排名最高。动态路由控制平面会移除所有下一个跃点,只保留排名最高的下一个跃点。

    • 如果 routingConfig.bgpAlwaysCompareMedFalse 或未设置,则每个下一个跃点的邻居 ASN 值均被视为相关,因此动态路由控制平面会执行以下操作:

      1. 动态路由控制平面会按邻居 ASN 值对下一个跃点列表进行分组。

      2. 在每个邻居 ASN 组中,动态路由控制平面会按照 MED 值从小到大的顺序对下一个跃点进行排序。每个邻近 ASN 组中的编号最小的 MED 值可能会有所不同。

      3. 在每个邻近 ASN 组中,动态路由控制平面会移除所有 MED 值不最小的下一个跃点。

      在每个邻居 ASN 组内,MED 值最小的下一个跃点具有最高的排名。动态路由控制平面会移除所有下一个跃点,只保留排名最高的下一个跃点。

  5. 将所有排名最高的下一个跃点发送到其他区域:当 VPC 网络的动态路由模式为全球模式时,动态路由控制平面会将当前一组排名最高的下一个跃点发送到其他区域。

  6. 接收来自其他区域的排名最高的跃点:当 VPC 网络的动态路由模式为全局模式时,动态路由控制平面会从每个其他区域的动态路由控制平面接收前缀的排名最高的下一个跃点列表。每个收到的下一个跃点都包含 AS 路径长度、邻居 ASN、来源类型和 MED,以及发送下一个跃点的动态路由控制平面的区域。

    动态路由控制平面会将收到的下一个跃点附加到其前缀的下一个跃点列表中,然后执行以下操作:

    • 重复执行最短 AS 路径长度步骤。

    • 重复执行首选来源类型步骤。

    • 根据 VPC 网络的 routingConfig.bgpInterRegionCost 设置重复 Consider neighbor ASN 步骤:

      • 如果 VPC 网络的 routingConfig.bgpInterRegionCostADD_COST_TO_MED,则动态路由控制平面在重复考虑邻近 ASN 步骤时会使用经过调整的 MED 值。每个经过调整的 MED 值都是原始 MED 值加上区域间费用的总和。动态路由控制平面所在区域中的下一个跃点的区域间费用为 0。从其他区域中的动态路由控制平面学习到的下一个跃点具有非零的区域间费用,这些费用是发送区域和接收区域对中的每个区域对所特有的。

      • 如果 VPC 网络的 routingConfig.bgpInterRegionCostDEFAULT 或未设置,动态路由控制平面会使用原始 MED 值重复执行考虑邻近 ASN 步骤。

  7. 从考虑范围中移除所有非最小区域间费用的下一个跃点:当 VPC 网络的动态路由模式为全局模式时,动态路由控制平面会从考虑范围中移除所有下一个跃点,除了具有最小区域间费用的下一个跃点之外。

  8. 将下一个跃点发送到 VPC 控制平面:对于每个唯一的目的地前缀,动态路由控制平面都会将排名最高且区域间费用最小的所有下一个跃点发送到 VPC 控制平面。这些下一个跃点会在 VPC 网络的动态路由控制平面的区域中创建动态路由。这些动态路由的 Andromeda 路由优先级为 6553665536 优先级数字是经过精心选择的,因为它比 65535静态路由最低优先级)大 1 个值。因此,如果同一目的地前缀存在静态路由和动态路由,则路由顺序会优先选择静态路由。

    在某些情况下,动态路由控制平面可以发送排名较低或区域间费用不是最低的下一个跃点。这些额外的下一个跃点也会在 VPC 网络的动态路由控制平面的区域中创建动态路由,但它们使用较低的 Andromeda 路由优先级,例如 6553765538

VPC 控制平面处理

每个区域的 VPC 控制平面都会从区域的动态路由控制平面接收候选动态路由。除非动态路由控制平面丢弃某个动态路由,否则 VPC 控制平面会评估每个候选动态路由。评估结果会在包含 Cloud Router 路由器的 VPC 网络中创建动态路由,或禁用候选动态路由。以下是抑制动态路由候选项的原因:

  • 候选动态路由的目的地前缀与本地、对等互连或 Network Connectivity Center 子网路由冲突。如需了解详情,请参阅与动态路由的交互

  • 在 Cloud Router 路由器处理更新后的 BGP 状态之前,VPC 控制平面会确定候选动态路由的下一个跃点不可用。如需了解详情,请参阅忽略下一个跃点不可用的静态和动态路由

如果包含 Cloud Router 路由器的 VPC 网络导出自定义路由,而对等 VPC 网络导入自定义路由,则每个区域的 VPC 控制平面还可以在对等 VPC 网络中创建对等互连动态路由。如需了解如何使用 VPC 网络对等互连进行自定义路由交换,请参阅用于交换动态路由的选项

创建对等连接动态路由时,每个区域的 VPC 控制平面都会根据每个网络独立评估候选动态路由。除了前面提到的抑制情况外,对等互连 VPC 网络中还适用以下其他抑制情况:

  • 如果候选对等互连动态路由的目的地前缀与本地动态路由的目的地前缀完全匹配,则 VPC 控制平面会禁止冲突对等互连动态路由。

  • 如果从两个或更多对等互连的 VPC 网络收到同一目的地前缀的对等互连动态路由候选项,则 VPC 控制平面会使用内部算法来选择要从中导入对等互连动态路由的网络。系统会先评估此内部算法,然后再考虑路由优先级。如需了解详情,请参阅为单个 VPC 网络中的对等互连自定义路由选择下一个跃点

  • 如果每对等互连组每区域的动态路由数量限制超出其限制,VPC 控制平面只会抑制对等互连动态路由。

由于每个 VPC 控制平面都按网络禁止动态路由,因此请注意以下几点:

  • 如果候选动态路由成为包含创建候选动态路由的 Cloud Router 路由器的 VPC 网络中的本地动态路由,候选动态路由可能在一个或多个对等互连的 VPC 网络中被禁用。

  • 如果候选动态路由在包含创建候选动态路由的 Cloud Router 路由器的 VPC 网络中被禁用,则候选动态路由可能成为一个或多个对等互连 VPC 网络中的对等互连动态路由。

BGP 状态变化

BGP 接收的路由和自定义已知路由会生成动态路由(如最佳路径选择模式中所述)。只要建立相应的 BGP 会话,动态路由就会保留。在以下情况下,当 BGP 会话不再建立时,系统会移除动态路由:

  • 如果对等路由器支持安全重启,则在对等路由器的安全重启计时器过期后,系统会移除动态路由。(对等路由器的优雅重启计时器的值可以与 Cloud Router 路由器的优雅重启计时器不同。)

  • 如果对等路由器不支持安全重启,则动态路由会在 Cloud Router 保留计时器过期后移除。Cloud Router 路由器保留计时器与可配置的 Cloud Router 路由器 keepalive 间隔时间成比例。

Cloud Router 路由器维护事件通常可在 60 秒内完成,并且预计不会导致动态路由被移除。

Cloud Router 使用 60 秒的优雅重启计时器。这样一来,支持优雅重启的对等路由器在 Cloud Router 维护事件期间会将建立的 BGP 会话保持长达 60 秒。

我们建议您将不支持优雅重启的对等路由器配置为使用大于或等于 60 秒的保留计时器值。

Cloud Interconnect 的计划内维护事件的持续时间会超过 60 秒,并且会导致在维护连接期间移除下一个跃点为与 Cloud Interconnect 连接关联的 VLAN 连接的动态路由。确保您的 Cloud Interconnect VLAN 连接和连接符合以下其中一项要求:

如需详细了解 BFD,请参阅故障事件期间的 BFD

后续步骤