已知路由

本文档介绍了已知路由、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 网络时,旧版是默认的最佳路径选择模式。我们建议您使用旧版模式,除非您需要标准模式的特定功能或使用依赖于标准模式的 Google Cloud 功能。

用于站点到站点数据传输的 Network Connectivity Center 和用于第三方网络虚拟设备或路由器设备的 Network Connectivity Center 可与标准最佳路径选择或旧版最佳路径选择配合使用。

Network Connectivity Center 与 VPC 辐条进行路由交换的最佳路径选择模式有以下限制:

  • 如果路由由一个 VPC 唯一通告,则旧版模式和标准模式都能按预期运行。

  • 如果多个 VPC 向同一工作负载 VPC 通告相同的路由,则适用以下规则:

    • 如果所有 VPC 都使用旧版最佳路径选择,则工作负载 VPC 会在来自不同路由 VPC 的路由中应用旧版最佳路径选择。

    • 如果所有 VPC 都使用标准最佳路径选择,则工作负载 VPC 会根据内部算法使用某个路由 VPC 的最佳路由。

    • 如果路由 VPC 使用的是旧版最佳路径选择和标准最佳路径选择的混合,则工作负载 VPC 会使用基于旧版最佳路径选择的最佳路由,或者基于内部算法的最佳标准最佳路径选择路由之一。

    如果您计划从多个路由 VPC 通告相同的路由,建议您为所有 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 或 Incomplete 的下一个跃点。

    如果所有下一个跃点的源类型均为 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 路径前缀来影响流量。

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

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

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

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

    • 条件比较:前缀按 Cloud Router 路由器获知前缀的 AS 分组。对于每个 AS 中的每个前缀,跳数会根据 RFC 4721 中所述的 MED 值匹配进行排序。

  • Add region to inter-region costs:您可以选择是否将区域间费用与 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 或 Incomplete 的下一个跃点。

    如果所有下一个跃点都没有源类型 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. 前缀的初始下一个跃点列表:动态路由控制平面会为前缀创建初始下一个跃点列表,其中包含以下两者:

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

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

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

  3. 首选源类型:动态路由控制平面会优先使用使用 IGP 的下一个跃点,而不是使用 EGP 的下一个跃点;优先使用使用 EGP 的下一个跃点,而不是源类型为“不完整”的下一个跃点。

    如果至少有一个下一个跃点的源类型为 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 设置,重复考虑邻居 ASN 步骤:

      • 如果 VPC 网络的 routingConfig.bgpInterRegionCostADD_COST_TO_MED,动态路由控制平面会在重复考虑邻居 ASN 步骤时使用调整后的 MED 值。每个调整后的 MED 值都是原始 MED 值加上区域间费用的总和。动态路由控制平面自己的区域中的下一个跃点的区域间成本为 0。从其他区域的动态路由控制平面获知的下一个跃点具有非零区域间成本,该成本是发送方区域和接收方区域组成的每个区域对所特有的。

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

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

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

    在某些情况下,动态路由控制平面可以发送排名较低或非最低区域间费用的下一个跃点。这些额外的下一个跃点也会在 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

后续步骤