Cloud Router 概览

Cloud Router 是一项完全分布式的托管 Google Cloud 服务,可对自定义动态路由进行编程,并随您的网络流量而扩缩。Cloud Router 可与传统网络和虚拟私有云 (VPC) 网络配合使用。

Cloud Router 不是可能造成瓶颈的实体设备。它不能使用本身。但是,在以下情况下是必需或推荐的:

  • Cloud NAT 必需
  • Cloud Interconnect 和高可用性 VPN 必需
  • 传统 VPN 的推荐配置选项

在将本地网络扩展到 Google Cloud 时,您可以使用 Cloud Router 在 Google Cloud 网络与本地网络之间动态交换路由。Cloud Router 与您的本地 VPN 网关或路由器对等互连。路由器会通过边界网关协议 (BGP) 交换拓扑信息。 拓扑更改会自动在虚拟私有云 (VPC) 网络和本地网络之间传播,您无需配置静态路由。

静态路由与动态路由

使用静态路由时,必须创建或维护路由表。任一网络上的拓扑发生更改都需要手动更新静态路由。此外,如果链接发生故障,静态路由不能自动重新路由流量。

静态路由适用于具有稳定拓扑的小型网络。您还可以严格控制路由表。路由器不会在网络之间发送通告。

借助 Cloud Router,您可以使用 BGP 在网络之间交换路由信息。您无需手动配置静态路由;网络会通过 BGP 自动快速地发现拓扑更改,并能在不中断流量的情况下无缝实施更改。这种通过 BGP 交换路由的方法称为动态路由

动态路由适用于任何规模的网络。这种方法使您无需维护静态路由。此外,如果链接发生故障,动态路由会尽可能地自动重新路由流量。要启用动态路由,请创建 Cloud Router 路由器。然后,在 Cloud Router 路由器与本地网关或路由器之间配置 BGP 会话

Cloud VPN 隧道使用静态路由

如果不使用 Cloud Router 路由器,您只能使用静态路由配置 Cloud VPN。使用静态路由有以下缺点:

  • Cloud VPN 隧道任一端发生网络配置更改时,均需要手动创建和删除与这些更改对应的静态路由。此外,静态路由更改的收敛也需要很长时间。
  • 创建使用静态路由的 Cloud VPN 隧道时,您必须在创建隧道之前指定隧道任一端的 IP 前缀列表。也就是说,每次需要更改路由时,您都必须删除并重新创建 Cloud VPN 隧道以及配置新的路由,而这会中断现有流量。
  • 配置静态路由没有标准方法。不同的供应商会使用不同的命令。

在以下示例中,您的复合网络包含 Google Cloud 网络,以及 Cloud VPN 隧道另一端本地网络中的 29 个子网(每个机架一个)。此示例假定您的业务增长幅度需要您每周添加一个新的机器子网。本周,您要添加的子网是 10.0.30.0/24,如下图所示。

在 VPC 网络中的 Cloud VPN 使用 Cloud Router 路由器(点击可放大)
Cloud VPN 不使用 Cloud Router 路由器(点击可放大)

在本情景中,基于静态路由的 Cloud VPN 需要进行以下更改:

  1. 您必须向 Google Cloud 添加静态路由才能访问新的本地子网。
  2. 您必须拆除并重新创建 Cloud VPN 隧道才能加入新的本地子网。

如果部署 Cloud Router 路由器,则无需更改静态路由和 Cloud VPN 隧道的相关配置。Cloud Router 路由器使用 BGP 与您的 Cloud VPN 网关对等互连,以交换拓扑信息。实际上,Google Cloud 网络中的网络拓扑更改会通过 BGP 自动传播到您的本地网络(反之亦然),因此您无需为 Cloud VPN 隧道配置静态路由。

Cloud Interconnect 和 Cloud VPN 的动态路由要求

您必须具有现有 Cloud Router,然后才能执行以下操作:

创建 Cloud Router 时,您可以选择 Google 端 ASN。如果您未指定 ASN,则 Google Cloud 会为您选择一个 ASN。但是,您必须在 Cloud Router 的配置设置中手动指定本地(对等)路由器的 ASN。

您可以通过以下方式指定 BGP 地址:

在 VPC 网络中的 Cloud VPN 隧道使用动态路由

您可以使用 VPC 网络按区域将网络 IP 空间划分为多个前缀(子网),并且可以控制从哪个前缀分配虚拟机 (VM) 实例的内部 IP 地址。为避免静态管理这些子网,无需为 Cloud VPN 添加和移除相关静态路由,请使用 Cloud Router 路由器为 Cloud VPN 隧道启用动态路由。

Cloud Router 路由器属于特定的 VPC 网络和区域。Cloud Router 路由器会使用 BGP 将其 VPC 网络中的子网通告给本地网关,并根据 VPC 网络的动态路由模式通告其本地区域中的子网或网络中的所有子网。 此外,Cloud Router 路由器还会通过 BGP 获知本地路由,让网络基础架构能够选择最佳路由来访问关联前缀。

以下示例显示了如何在自定义模式的 VPC 网络中使用 Cloud Router 路由器。如果您使用自动模式的 VPC 网络,Cloud Router 路由器会自动通告区域的 /20 前缀。如需详细了解自动模式和自定义模式,请参阅 VPC 网络概览

下图显示了 VPC 网络中两个不同的区域子网,以及本地网络中的 30 个子网。这两个网络通过 Cloud VPN 隧道连接。在本情景中,两个网络中都添加了新的子网:

  1. Google Cloud 网络的 us-east1 区域新增了一个 192.168.1.0/24 子网。
  2. 本地网络中新增了一个 10.0.30.0/24 子网,以应对数据中心不断增长的流量。
在 VPC 网络中的 Cloud VPN 使用 Cloud Router 路由器(点击可放大)
在 VPC 网络中的 Cloud VPN 使用 Cloud Router 路由器(点击可放大)

要自动传播网络配置更改,Cloud VPN 隧道可使用 Cloud Router 路由器与本地 VPN 网关建立 BGP 会话(本地网关必须支持 BGP)。此后便可在两个网络之间实现新子网的无缝通告。因此新子网中的实例可以立即开始发送和接收流量。

要设置 BGP,您必须为 Cloud VPN 隧道的两端各分配一个额外的 IP 地址。这两个 IP 地址必须是属于 IP 地址范围 169.254.0.0/16链路本地 IP 地址。这些地址不应属于任一端网络的 IP 地址空间,仅用于建立 BGP 会话。这些地址无法路由,因此常用的网络测试工具对它们无效。例如,Traceroute 就对其无效。只有在请求从链路本地地址发送到对等的链路本地地址时,才能进行 ping 测试。

在旧版网络中的 Cloud VPN 隧道使用动态路由

在旧版网络中,网络配置更改会自动传播,而无需重新配置静态路由和重启 Cloud VPN 隧道(与上述示例类似)。

BGP 会话会通知每个路由器所发生的本地更改。要设置 BGP,您必须为 Cloud VPN 隧道的两端各分配一个额外的 IP 地址。这两个 IP 地址必须是属于 IP 地址范围 169.254.0.0/16链路本地 IP 地址。这些地址不应属于隧道任一端的 IP 地址空间,仅用于配置 BGP 对等体以建立 BGP 会话。

您必须在隧道的两端配置两个链路本地 IP 地址(均来自同一子网)和一个网络掩码。在隧道两端配置完这些更改后,系统便会建立 BGP 会话。

同样,如果网络的 Cloud VPN 隧道位于多个区域,您必须在每个需要使用动态路由的区域中都创建一个 Cloud Router 路由器。单个 Cloud Router 路由器可用于路由器专属网络区域中的多个 Cloud VPN 网关和多条隧道。

动态路由模式

VPC 网络的动态路由模式决定了哪些子网对 Cloud Router 路由器可见。您可以将动态路由模式设置为全局性或区域性:

  • 如果使用全局动态路由,Cloud Router 路由器会将 VPC 网络中的所有子网通告给本地路由器。Cloud Router 路由器将获知的路由从本地路由器传播到所有区域。
  • 如果使用区域动态路由,Cloud Router 路由器会在其本地区域中通告和传播路由。

动态路由模式在 VPC 网络中配置。创建或修改 VPC 网络时,您可以将动态路由模式设置为全局性或区域性。VPC 网络中的所有 Cloud Router 路由器实例都会使用该网络的动态路由模式。默认为区域动态路由。

如果您更改 VPC 网络的动态路由模式,则需要考虑诸如中断现有连接或启用非预期路由之类的影响。例如,如果您改用区域动态路由,则原本连接到其他区域的 Cloud VPN 隧道和 Cloud Interconnect 连接的虚拟机可能会失去连接。如果您改用全局动态路由,则 Cloud Router 路由器可能会通告非预期区域中的虚拟机。如需查看或配置动态路由模式,请参阅设置区域或全局动态路由

动态路由模式和负载平衡器

仔细查看内部 TCP/UDP 负载平衡和连接的网络,以了解如何通过 Cloud VPN 隧道和 Cloud Interconnect 连接 (VLAN) 访问内部 TCP/UDP 负载平衡器。例如,禁用全局访问的内部 TCP/UDP 负载平衡器只能由与负载平衡器位于同一区域的客户端虚拟机、Cloud VPN 隧道和 Cloud Interconnect 连接 (VLAN) 访问。

区域动态路由示例

区域动态路由可让您在单个 Google Cloud 区域内配置一条 Cloud VPN 隧道和多个虚拟机。这条隧道可将您的本地网络扩展到 VPC 网络。其他区域中的虚拟机可能也需要与本地网络连接,但这些虚拟机无法连接到该隧道。要解决这项限制,您可以创建静态路由。但是,维护静态路由很容易出错,并且可能会中断流量。

在以下示例中,Cloud Router 路由器只能看到 us-west1 区域内的资源。其他区域(如 us-central1)中的虚拟机无法连接 Cloud VPN 隧道。

Cloud Router 区域动态路由(点击可放大)
Cloud Router 区域动态路由(点击可放大)

全局动态路由示例

全局动态路由可让 Cloud Router 路由器看到所有区域中的资源。例如,如果您在一个区域中配置了多个虚拟机,则这些虚拟机可以自动连接到另一个区域中的 Cloud VPN 隧道,而无需维护静态路由。

以下示例显示了使用全局动态路由的 VPC 网络。us-west1 中的 Cloud Router 路由器会通告两个不同区域 us-west1us-central1 中的子网。这两个区域中的虚拟机均可动态获知本地主机。

Cloud Router 全局动态路由(点击可放大)
Cloud Router 全局动态路由(点击可放大)

在冗余拓扑中,动态路由 (BGP) 可为 VPC 和本地网络提供足够的信息。如此当路径出现故障时,系统便可重新路由流量。也就是说,如果一个区域中的连接存在问题,可将流量故障转移到另一个区域。

以下示例显示了两个不同区域中的两条 Cloud VPN 隧道。虚拟机 (10.128.0.0/20) 使用 us-west1 区域中的 tunnel-us-west1 来访问本地网络中的两个子网。同样,us-central1 中的虚拟机 (10.138.0.0/20) 使用 tunnel-us-central1

Cloud Router 全局动态路由(点击可放大)
Cloud Router 全局动态路由(点击可放大)

路由被配置为让虚拟机优先使用其本地隧道(即虚拟机所在区域中的隧道)。Cloud Router 路由器会为具有相同目标的本地路由和远程路由设置不同的权重。如果一个隧道出现故障,则 Cloud Router 路由器可以视情况重新路由流量。

在以下示例中,tunnel-us-west1 发生故障。进出虚拟机 (10.128.0.0/20) 的流量将通过 tunnel-us-central1 重新路由,而不会被丢弃。

Cloud Router 全局动态路由(点击可放大)
Cloud Router 全局动态路由(点击可放大)

路由通告

Cloud Router 路由器会通过 BGP 通告本地网络中的客户端可以访问的 IP 地址。您的本地网络会将数据包发送到目标 IP 地址与通告的 IP 范围相匹配的 VPC 网络。数据包到达 Google Cloud 之后,将由 VPC 网络的防火墙规则和路由决定 Google Cloud 处理数据包的方式。

您可以使用 Cloud Router 路由器的默认通告,也可以明确指定要通告的 CIDR 范围。如果您未指定通告,则 Cloud Router 将使用默认通告。

默认通告

默认情况下,使用区域动态路由的 Cloud Router 路由器将通告其所在区域中的子网;使用全局动态路由的 Cloud Router 路由器将通告 VPC 网络中的所有子网。Cloud Router 路由器会自动通告新的子网。此外,如果子网具有用于配置别名 IP 地址的次要 IP 范围,则 Cloud Router 路由器会同时通告主要和次要 IP 地址。

Cloud Router 路由器的每个 BGP 会话也具有默认通告。 默认情况下,Cloud Router 路由器会将其路由通告传播到其所有 BGP 会话。如果您在 Cloud Router 路由器上配置了自定义路由通告,则其 BGP 会话将继承这些自定义通告。

在以下情况下,您必须指定自定义路由通告:

  • 您要通告的 IP 地址超出子网的主要 IP 范围或其中一个次要 IP 范围。例如,通告外部 IP 地址。
  • 您要通告使用 VPC 网络对等互连从其他 VPC 网络连接到您的 VPC 网络的路由。在这种情况下,对等网络中的子网路由和导入的自定义路由不会自动通过您 VPC 网络中的 Cloud Router 路由器进行通告。要通告这些路由,您必须在您 VPC 网络中的 Cloud Router 路由器上创建自定义路由通告,并确保对 VPC 网络对等互连连接进行配置,以交换自定义路由。

使用自定义通告时,您可以选择要通告的子网或子网内的某些部分。也就是说,您可以选择不通告某些子网。如果您不需要这些功能,请使用默认通告。

自定义

配置自定义路由通告时,您需要明确指定 Cloud Router 路由器通告的路由。在大多数情况下,自定义通告是作为默认子网通告的补充,用于添加额外的自定义 IP 地址。自定义 IP 地址是子网 IP 范围之外的地址,例如保留的外部 IP 地址。如果不使用自定义路由通告,您将需要为自定义 IP 地址创建和维护静态路由。

配置自定义路由通告时,您可以选择通告所有子网(等同于默认行为)。您还可以选择不通告所有子网,而只通告特定的子网或某个子网内的特定 CIDR 块。例如,您可能希望阻止 Cloud Router 通告特定子网。为此,您应该只通告想要公开的子网。但是,当您有选择地通告子网时,必须手动将新子网添加到自定义路由通告中。Cloud Router 不会自动通告新子网。

您可以在 Cloud Router 路由器或 BGP 会话上指定自定义路由通告。Cloud Router 路由器上的自定义路由通告适用于其所有 BGP 会话。但是,如果您在 BGP 会话上指定了自定义路由通告,则 Cloud Router 路由器的路由通告会被忽略,并被会话的通告所替换。

对于每个 Cloud Router 路由器,您最多可以指定 200 个 CIDR 范围。 此外,每个 BGP 会话同样具有 200 个 CIDR 范围限制。

示例

以下示例显示了 Cloud Router 路由器的默认行为以及自定义路由通告可能适用的场景。这些示例假定 VPC 与本地网络之间存在现有连接,例如 IPsec VPN 隧道或专用互连。

默认路由通告

使用区域动态路由的 Cloud Router 路由器会通告其所在区域中的子网。在以下示例中,Cloud Router 路由器会通告 us-central1 区域中的子网,也会通告 alias-subnet 的次要 IP 范围。如果您在 us-central1 中创建新的子网,则 Cloud Router 路由器会自动通告这些新子网。Cloud Router 路由器不会通告子网 IP 范围未涵盖的 IP 地址,例如外部 IP 地址。

Cloud Router 默认路由通告(点击可放大)
Cloud Router 默认路由通告(点击可放大)

您可以为专门服务您本地网络内客户端的 Google Cloud 应用使用外部静态 IP 地址。在对该应用执行维护时,您可以将静态 IP 地址重新映射到另一个虚拟机,以最大限度缩短停机时间。使用 Cloud Router 路由器的默认通告时,您需要配置和维护静态路由。而自定义通告可让您通过 BGP 通告外部 IP 地址。

在以下示例中,Cloud Router 路由器会通告代理服务器的外部 IP 地址 1.2.3.4。此外部 IP 地址会映射到服务器的内部 IP 地址 10.20.0.2。Cloud Router 路由器不会通告代理服务器的内部 IP 地址或 my-subnet 子网中的任何虚拟机。本地客户端只能获知代理服务器的外部 IP 地址。

外部 IP 地址通告(点击可放大)
外部 IP 地址通告(点击可放大)

如需了解详情,请参阅通告自定义 IP 范围

限制子网通告

您可以阻止系统通告实例,而将这些实例隐藏起来。在以下示例中,Cloud Router 路由器会通告 subnet-1subnet-2。 本地网络中的客户端可以访问这些子网中的虚拟机,但不能访问 unadvertised-subnet 子网中的虚拟机。

通告 Cloud Router 路由器上指定的特定子网(点击可放大)
通告 Cloud Router 路由器上指定的特定子网(点击可放大)

如需了解详情,请参阅通告特定的 VPC 子网

根据 BGP 会话通告路由

假设您的 VPC 网络和本地网络中有生产资源和测试资源,并且您已将这些资源分布在不同的子网中。您相应地设置了两个 BGP 会话,用于通告不同的 IP 地址范围。通过使用两个不同的 BGP 会话,预期发送到某个子网的流量就不会被意外发送到另一个子网。以下示例展示了两个 BGP 会话:prod-bgp 仅通告 prod-subnettest- bgp 仅通告 test-subnet

通告 BGP 会话上指定的特定子网(点击可放大)
通告 BGP 会话上指定的特定子网(点击可放大)

如需了解详情,请参阅通告自定义 IP 范围通告特定的 VPC 子网

学习自定义动态路由

当 Cloud Router 收到同一目的地前缀的多个下一个跃点时,Google Cloud 会使用路由指标,并在某些情况下使用 AS 路径长度在 VPC 网络中创建自定义动态路由。本部分介绍该过程。

动态路由模式的影响

VPC 网络的动态路由模式决定了如何应用从 Cloud Router 学习的自定义动态路由。

  • 在区域动态路由模式下,Cloud Router 会为 Cloud Router 所在区域中的目的地和下一个跃点创建自定义动态路由。Cloud Router 将该自定义动态路由的优先级设置为基准优先级,该优先级是 Cloud Router 从本地路由器通告的 MED 派生的。

  • 在全局动态路由模式下,Cloud Router 会为每个 Google Cloud 区域中的目的地和下一个跃点创建自定义动态路由。在包含学习了该路由的 Cloud Router 的区域中,Cloud Router 会将自定义动态路由的优先级设置为基准优先级。在所有其他区域,Cloud Router 会将优先级设置为基准优先级加上适当的区域成本。

您可以为导出到本地路由器的转到 Google Cloud 路由定义路由优先级。但是,本地路由器可能会覆盖此路由优先级,具体取决于其配置。例如,如果您的本地路由器修改了路由优先级。

对于 Cloud Router 学习的转到本地路由,Cloud Router 会获取 AS 路径长度和 MED 值,并计算基准优先级,如以下两个部分所述。

考虑 AS 路径长度时

如果单个 Cloud Router 学习具有多个下一个跃点的目的地前缀,则 Cloud Router 将使用 AS 路径长度最短的下一个跃点。在这种情况下,Cloud Router 会在 VPC 网络中为 AS 路径最短的目的地和下一个跃点创建自定义动态路由。Cloud Router 会通过 MED 选择该下一个跃点。Cloud Router 仍使用 MED 设置自定义动态路由的基准优先级,该优先级是从 MED 值派生的。如需了解详情,请参阅动态路由模式的影响

如果相同区域或不同区域中的两个或多个 Cloud Router 学习了目的地前缀,则永远不会考虑 AS 路径。如果存在多个 Cloud Router,则这些路由器将使用自定义动态路由中的优先级来选择下一个跃点,而不使用 AS 路径长度。

AS 路径在前

AS 路径在前是某些网络用来确定 BGP 通告优先级的一种方法。在 Google Cloud 中,由于 VPC 网络在设计上是全局性的,因此降低了 AS 路径在前的优势。

当一个 VPC 网络在一个区域或多个区域中包含一个以上的 Cloud Router 时,它将使用以下算法来为其学习的目的地(前缀)选择下一个跃点:

  • 如果只有一个 BGP 会话接收到目的地(前缀),则 AS 路径在前无效。在 VPC 网络中创建的每个自定义动态路由的下一个跃点都是与一个 BGP 会话关联的下一个跃点。
  • 如果一个以上的 BGP 会话接收到一个目的地(前缀),无论是在同一 Cloud Router 上,还是在不同 Cloud Router 上,Google Cloud 都会忽略任何具有关联 AS 路径在前的下一个跃点。在 VPC 网络中创建的每个自定义动态路由的下一个跃点都是其 BGP 会话不使用 AS 路径在前的下一个跃点。如果涉及多个 Cloud Router,则 Cloud Router 位于相同还是不同的区域无关紧要。

在所有情况下,是创建一个还是多个自定义动态路由都取决于 VPC 网络的动态路由模式

为了获得最一致的结果,请不要使用 AS 路径在前。而是,配置 MED 值。

基准优先级和 MED

Cloud Router 使用对等路由器通告的 MED 值来计算基准优先级

  • 如果目的地前缀的 MED 值介于 0231 -1(含)之间,则 Cloud Router 会将基准优先级设置为 MED 值。
  • 如果目的地前缀的 MED 值介于 231 232 -1(含)之间,则 Cloud Router 会将基准优先级设置为 231 -1

Cloud Router 在 VPC 网络中创建自定义动态路由时设置的最终优先级值取决于网络的动态路由模式。如需了解详情,请参阅动态路由模式的影响

静态路由

请参阅 VPC 路由文档中的路由顺序部分。

VPC 子网与本地路由通告具有重叠的 IP 范围

如果您的 VPC 子网和本地路由通告具有重叠的 IP 范围,Google Cloud 会根据其 IP 范围定向出站流量。

如需了解详情,请参阅 VPC 文档中的适用的路由

将从一个 BGP 会话学习的路由通告到另一个 BGP 会话

Cloud Router 当前不支持通过静态路由通告来将从一个 BGP 会话学习的本地路由通告到另一个 BGP 会话。尝试这样做可能会导致路由被删除。

如需详细了解如何与多个 VPC 网络正确交换动态路由,请参阅 Cloud Router 问题排查页面上的 IP 前缀不传播或不可用

路由指标

Cloud Router 路由器在通告或传播路由时,会使用路由指标来指定路由优先级。如果 VPC 网络与本地网络之间有多条路径,则路由指标将决定首选路由。此值等同于 MED 值。路由指标值 (MED) 越低,表明优先级越高。

路由指标由通告路由的基准优先级和区域成本组成。基准优先级是用户指定的值,而区域成本是 Google 生成的值,您无法修改。区域成本表示 VPC 网络中两个区域之间通信的成本。 Cloud Router 路由器会将这两个值加在一起,进而生成路由指标。

对于区域动态路由,由于 Cloud Router 路由器仅处理其所在区域中的路由,因此它不会在路由指标中加入任何区域成本。 Cloud Router 路由器仅使用通告路由的基准优先级。

对于全局动态路由,所有 Cloud Router 路由器都会通告和传播相同的路由。但是,由于存在区域成本,每个 Cloud Router 路由器使用的路由指标可能不尽相同。

通告路由的基准优先级

在计算路由指标时,Cloud Router 以通告路由的基准优先级值为起始值,然后加上可能存在的区域成本。此基准值是通告路由的最小路由指标。在 Cloud Router 路由器上配置 BGP 会话时,您可以指定适用于该会话的所有路由的通告路由基准优先级。默认情况下,基准通告优先级值为 100,并且使用正整数作为值。Cloud Router 会将数值为 1 的基准通告优先级视为最高优先级路由。此值优先于值为 2 或更高的较低优先级。

通告路由的基准优先级可用于设置路由的优先级。 例如,您可能拥有 Cloud VPN 隧道和专用互连连接,该互连将您的 VPC 与本地网络连接。您可以设置通告路由的基准优先级,以使流量优先使用专用互连。如果 Cloud Interconnect 连接不可用,流量才会通过隧道发送。如需了解详情,请参阅示例拓扑

区域成本

如果 Cloud Router 路由器要通告自身所在区域以外区域中的路由(来自远程 Google Cloud 区域的路由),或要将路由传播到远程区域,则会增加区域成本。

区域成本介于 201 到 9999 之间(包含 201 和 9999)。该值取决于两个区域之间的距离、延迟时间以及其他因素。区域成本值由 Google 生成,您无法修改。如需详细了解区域成本,请参阅示例拓扑

区域成本有助于根据区域邻近程度确定路径的优先级。例如,假设您的 VPC 和本地网络之间有两个连接,例如,有两个 Cloud VPN 隧道,且这些隧道各有自己的 Cloud Router 路由器。一个连接位于 us-central1,另一个连接位于 europe-west1。由于在路由指标中增加了区域成本,us-central1 中网络之间的流量会优先使用 us-central1 隧道。同样,europe-west1 中网络之间的流量会优先使用 europe-west1 隧道。如果没有区域成本,则流量将被均分到两个连接,从而导致网络性能不一致。

对于已知路由,Cloud Router 路由器在将已知路由传播到远程 Google Cloud 区域时会增加区域成本。这有助于在 VPC 和本地网络之间保持入站流量和出站流量间的对称性。Cloud Router 路由器会在本地路由器通告的 MED 值上增加区域成本。

建议的基准优先级值

如需调整单个区域中路由之间的优先级,请使用小于 201 的值。这样可保证区域成本不会影响全局路由优先级。来自其他区域(远程区域)的路由的优先级不能低于 201。如果您使用较高的值,则区域成本可能会影响路由的优先级。例如,假设您有一个主连接和一个备用连接。如果您将备用连接的基准优先级设置得过高,则可能会无意中优先使用来自其他区域的路由,而不使用备用连接。

要在 VPC 网络中全局性地降低路由优先级,请使用高于 10,200 的值。这样可确保无论区域成本如何,优先级值低于 201 的所有其他路由都始终具有更高优先级。

如果区域中的所有路由均具有相同优先级,您可以使用默认值 100

示例拓扑

以下示例说明了在使用全局动态路由时区域成本如何影响路由指标。

假设您的 VPC 网络有两个 Cloud VPN 隧道,每个隧道各有自己的 Cloud Router 路由器。一个隧道位于 us-central1,另一个隧道位于 us-west1。默认情况下,进入这两个区域的入站流量使用其各自区域中的相应隧道。但是,如果要访问不在这些区域中的虚拟机(例如 europe-west1 中的实例),会发生什么情况?下图显示了区域成本如何影响路由指标。

通告路由的 Cloud Router 路由指标(点击可放大)
通告路由的 Cloud Router 路由指标(点击可放大)

两个 Cloud Router 路由器都将路由通告到 europe-west1,但各自的路由指标不同。由于距离、延迟时间以及其他因素,us-central1 中的 Cloud Router 路由器将路由通告到 europe-west1 的路由指标低于通告到 us-west1 的路由指标。本例假定通过 us-central1us-west1 连接到 europe-west1 的区域成本分别是 300350。入站流量使用路由指标较低的 us-central1 隧道。该隧道的路由指标为 350,而 us-west1 隧道的路由指标则为 400

同样,Cloud Router 路由器会在已知路由的 MED 值(由本地路由器指定)上增加区域成本。默认情况下,来自 europe-west1 区域的出站流量也会使用路由指标较低的 us-central1 隧道。这样一来,入站流量和出站流量将保持对称。

已知路由的 Cloud Router 路由指标(点击可放大)
已知路由的 Cloud Router 路由指标(点击可放大)

区域内的路由优先级

为在 us-west1 中实现冗余,假设您创建了一个备用隧道,并为该备用隧道指定了较高的基准优先级,使进入 us-west1 的入站流量优先使用主隧道,如以下示例所示:

区域内路由的基准优先级(点击可放大)
区域内路由的基准优先级(点击可放大)

如果主隧道出现故障,则 us-west1 的入站流量会优先使用备用隧道(路由指标为 51),而非 us-central1 隧道(路由指标值为 400)。

区域内路由的基准优先级(点击可放大)
区域内路由的基准优先级(点击可放大)

同样,对于从 VPC 网络到本地网络的出站流量,请使用低于 201 的 MED 值来使某个路径具有更高优先级。否则,从 VPC 网络到本地网络的出站流量可能无法与入站流量保持对称。

如果区域中的所有隧道或 Cloud Interconnect 连接具有相同优先级,则可以使用默认的基准路由优先级 100

全局首选路由

假设您的专用互连和 Cloud VPN 隧道位于不同的区域。您希望优先使用专用互连,因为它的工作负载成本效益高于 Cloud VPN 隧道。您可以为 Cloud VPN 隧道路由指定基准优先级 10,051,以降低其优先级。这样一来,无论区域成本如何,所有入站流量都将使用专用互连。专用互连的路由指标不会超过 10,051。仅当连接出现故障时,流量才会使用 Cloud VPN 隧道。

全局路由的基准优先级(点击可放大)
全局路由的基准优先级(点击可放大)

您还需要对本地路由器进行相同的调整,以便从 VPC 网络到本地网络的出站流量始终优先使用专用互连。

如需详细了解如何设置基准优先级,请参阅建立 BGP 会话更新通告路由的基准优先级

默认路由

如果没有为特定 IP 目标指定路由,则流量会被发送到默认路由,这是在没有其他选项时的最后选择。例如,Google Cloud VPC 网络会自动包含将流量发送到互联网网关的默认路由 (0.0.0.0/0)。

在某些情况下,您可能会希望系统默认将流量定向到本地网络。为此,您可以通告从本地路由器到 Cloud Router 的默认路由。有了 Cloud Router,您就无需创建和管理静态路由。如果您通告来自本地网络的默认路由,请检查该路由是否优先于其他自动创建的默认路由(具有较低的 MED 值)。请转到“路由”页面,查看目标 IP 地址范围0.0.0.0/0下一个跃点Default internet gateway 的路由的优先级

安全重启

Cloud Router 路由器会服从由您的本地路由器发送的安全重启消息。如果您为本地路由器配置了安全重启功能,那么只要您的路由器需要安装软件更新或执行定期维护,它就可以向 Cloud Router 路由器发送通知。Cloud Router 路由器会按照您本地路由器上的安全重启计时器设置所定义的时间段,保留从本地路由器获知的自定义动态路由。

如需详细了解安全重启计时器,请参阅 BGP 计时器设置

使用安全重启功能的 Cloud VPN 隧道

在以下示例中,如果 Cloud Router 路由器需要进行维护更新,则只要在安全重启期间重新联机,就可以在不中断流量的情况下进行更新。

安全重启和 Cloud Router 路由器(点击可放大)
安全重启和 Cloud Router 路由器(点击可放大)

BGP 计时器设置

Cloud Router 路由器与您的本地路由器会使用以下一组计时器设置来保持通信。

keepalive 计时器
这是 Cloud Router 路由器与其对应的本地对等路由器之间定期交换 BGP 检测信号的时间间隔。keepalive 定时器与保留定时器一起指示每个路由器对另一个路由器的可用性。在本地路由器上将 keepalive 计时器设置为 20 秒。
保留计时器
此计时器会跟踪自上次成功检测到 keepalive 检测信号以来的最短时间。它指示 Cloud Router 路由器或本地路由器要等待多久才能移除从另一个路由器获知的路由。在本地路由器上将 hold 计时器设置为 60 秒。
安全重启计时器

该计时器指示在没有定期 keepalive 检测信号的情况下,本地路由器在收到来自对应 Cloud Router 路由器的安全重启通知消息之后,要等待多长时间才能收到新的 keepalive 检测信号。如果未收到新的 keepalive 检测信号,则本地路由器将移除其从 Cloud Router 路由器获知的路由。

如果您希望路由器的运行方式与 Cloud Router 路由器相同,我们建议将本地路由器的安全重启计时器设置为 1 秒钟。

当 Cloud Router 路由器确定下一个跃点 Cloud VPN 隧道出现故障或 Cloud Interconnect 连接中断时,它会撤消从本地设备获知的自定义动态路由。如果您将本地路由器的安全重启时间设置为大于一秒,则本地路由器可能会将返回流量发送到不再处于活跃状态的下一个跃点,而不是切换到已配置且处于活跃状态的下一个辅助跃点。

过时路径计时器

此设置用于确定在收到来自另一个路由器的记录结束 (EOR) 消息后,路由器要等待多久才能删除已知路由。当 BGP 会话安全重启后进行重新初始化时,此计时器会启动,但 UPDATE 消息尚未处理相关前缀。我们建议在本地路由器上将过时路径计时器设置为 300 秒,以与 Cloud Router 路由器的设置相匹配。

冗余 Cloud VPN 隧道

如果本地网关不支持安全重启,则 BGP 会话任一端发生故障时,都会导致会话失败并且流量中断。超过 BGP 超时限制后(Cloud Router 路由器超时限制为 60 秒),系统便会从两端撤消路由。动态路由的 Cloud VPN 流量将不再进入隧道。系统将继续提供隧道的静态路由。

如果系统不支持安全重启,则需部署两个本地网关(每个网关一个隧道),以提供冗余和故障转移。此配置可让一个隧道及其设备脱机进行软件升级或维护,而不会中断流量。此外,如果一个隧道发生故障,另一个隧道可以使路由保持活动,流量不中断。

以下示例用一个框表示 Cloud Router 路由器,但具有两个 IP 地址。这两个地址是同一个 Cloud Router 路由器任务中的独立以太网接口。每个接口通过不同的本地网关用于不同的 BGP 会话。在此特定用例中,由于这些 Cloud VPN 隧道是为实现冗余而创建的,因此两个 BGP 会话交换完全相同的一组路由前缀,但各自有指向不同 Cloud VPN 隧道的下一个跃点。

未启用安全重启功能的冗余(点击可放大)
未启用安全重启功能的冗余(点击可放大)

升级周期

Cloud Router 会定期升级,耗时不到 60 秒。升级过程中无法使用 Cloud Router。BGP 保留定时器确定在对等互连的 BGP 路由器不可用时将已知路由保留多长时间。BGP 保留定时器通过协商确定为两端两个值中的较低者。Cloud Router 使用值为 60 秒的 BGP 保留定时器。我们建议您将对等 BGP 保留计时器设置为 60 秒或更长时间(默认值为 3 分钟)。这样一来,两个路由器都将在这些升级期间保留其路由,并且流量可持续流动。

在单个 Cloud VPN 网关的维护周期内,使用 Cloud Router 路由器会增加大约 20 秒的隧道恢复时间,因为 BGP 会话会被重置且需要重新获知路由。Cloud VPN 网关恢复时间通常约为一分钟。如果存在冗余 Cloud VPN 网关,则流量就不会受到影响,因为系统一次只关闭一个 Cloud VPN 网关。

后续步骤

要排查 Cloud Router 常见问题,请参阅问题排查文档

如需详细了解如何对支持的服务使用静态路由和动态路由,请参阅以下文档:

产品 路由 文档
专用互连 静态 不支持
专用互连 动态 创建 VLAN 连接
传统 VPN 基于政策,静态 使用静态路由创建传统 VPN
传统 VPN 或高可用性 VPN 动态 使用动态路由创建传统 VPN
创建高可用性 VPN 到对等 VPN 网关
创建 Google Cloud 到 Google Cloud 高可用性 VPN 网关