路由

Google Cloud 路由定义网络流量从虚拟机 (VM) 实例到其他目的地所采用的路径。这些目的地可以位于您的 Google Cloud 虚拟私有云 (VPC) 网络中(例如在另一虚拟机中),也可位于该网络之外。

在 VPC 网络中,路由包含单个目的地前缀(采用 CIDR 格式)和单个下一个跃点。当 VPC 网络中的实例发送数据包时,如果数据包的目的地地址在路由的目的地范围内, Google Cloud 会将数据包传递到路由的下一个跃点。

本页面简要介绍了路由在 Google Cloud中的工作原理。

Google Cloud中的路由

每个 VPC 网络都使用一种可伸缩的分布式虚拟路由机制。未向该网络分配任何物理设备。某些路由可以选择性地应用,但 VPC 网络的路由表是在 VPC 网络层级定义的。

每个虚拟机实例都有一个控制器,可以从网络路由表中获知所有适用的路由。离开虚拟机的每个数据包都会按照某种路由顺序传送到适用的路由的下一个合适跃点。当您添加或删除路由时,系统会使用最终一致的设计将这组更改传播到虚拟机控制器。

路由类型

下表总结了 Google Cloud 如何对 VPC 网络中的路由进行分类。

类型和目的地 下一个跃点 备注
基于政策的路由:系统会在评估任何其他类型的路由之前先评估基于政策的路由。
基于政策的路由
基于政策的路由可以应用于基于来源 IP 地址、目的地 IP 地址、协议或它们的组合的数据包。

基于政策的路由可以应用于网络中的所有虚拟机、通过网络标记选择的某些虚拟机,或是通过 Cloud Interconnect 的 VLAN 连接进入 VPC 网络的流量(仅在一个区域中或在所有区域中)。

基于政策的路由绝不会通过 VPC 网络对等互连进行交换。

子网路由:系统会在基于政策的路由之后,但在自定义路由之前评估所有子网路由类型。
本地子网路由
自动为每个子网 IP 地址范围创建
VPC 网络

由 Google Cloud在子网生命周期事件期间自动创建、更新和移除。

本地子网路由会应用于整个 VPC 网络。

对等互连子网路由
表示使用 VPC 网络对等互连连接的其他 VPC 网络中的子网 IP 地址范围
对等 VPC 网络中的下一个跃点

VPC 网络对等互连提供用于交换子网路由的选项

由 Google Cloud在子网生命周期事件期间自动创建、更新和移除。

导入的对等互连子网路由适用于整个 VPC 网络。

Network Connectivity Center 子网路由
表示 VPC Spoke 中的子网 IP 地址范围(连接到 Network Connectivity Center Hub 的不同 VPC 网络)
Network Connectivity Center hub

Network Connectivity Center spoke 管理员可以排除子网路由的导出

由 Google Cloud在子网生命周期事件期间自动创建、更新和移除。

导入的 Network Connectivity Center 子网路由会应用于整个 VPC 网络。

自定义路由:系统会在基于政策的路由和子网路由之后评估自定义路由。
本地静态路由
支持各种目的地
将数据包转发到静态路由下一个跃点 如需详细了解每个静态路由下一个跃点,请参阅以下内容的注意事项:
本地动态路由
与子网路由或静态路由不冲突的目的地
Cloud Router 路由器上的 BGP 会话的对等端 路由根据 VPC 网络中 Cloud Router 路由器的已知路由自动添加和移除。

路由根据 VPC 网络的动态路由模式应用于虚拟机。
对等互连静态路由、对等互连动态路由
使用 VPC 网络对等互连连接的其他 VPC 网络中的静态或动态路由
对等 VPC 网络中的下一个跃点

VPC 网络对等互连提供用于交换静态路由的选项

导入的对等互连静态路由适用于整个 VPC 网络。

VPC 网络对等互连提供用于交换动态路由的选项

对等互连动态路由根据导出路由的 VPC 网络的动态路由模式应用于 VPC 网络的一个区域或所有区域。

Network Connectivity Center 动态路由
从位于不同 VPC 网络中的 Network Connectivity Center 混合 spoke 导入的动态路由
Network Connectivity Center hub

Network Connectivity Center hub 可以同时具有 VPC spoke 和混合 spoke

Network Connectivity Center 动态路由根据包含混合分支的 VPC 网络的动态路由模式应用于 VPC 网络的一个区域或所有区域。

系统生成的路由
系统生成的默认路由
0.0.0.0/0 (IPv4)
::/0 (IPv6)
default-internet-gateway 适用于整个 VPC 网络

可以移除或替换

子网路由

每个子网至少有一个子网路由,用于处理与该子网关联的每个 IP 地址范围。如需详细了解子网 IP 范围,请参阅子网

子网路由的类型

VPC 网络可以包含以下类型的子网路由:

  • 同一 VPC 网络中子网的子网路由,称为本地子网路由
  • 从 Network Connectivity Center hub 的 VPC spoke 导入的 Network Connectivity Center 子网路由
  • 从使用 VPC 网络对等互连连接的网络导入的对等互连子网路由

所有类型的子网路由的目标范围必须是唯一的。如需了解详情,请参阅:

混合子网路由

如果相应子网配置为混合子网,则本地子网路由和对等互连子网路由可以是混合子网路由。

子网路由的生命周期

属于子网的所有 IP 地址范围(主要 IPv4 地址范围、次要 IPv4 地址范围和 IPv6 地址范围)都有一个对应的子网路由。 Google Cloud 会在以下情况下创建和删除子网路由:

  • 进行子网配置更改,例如:

    • 添加或删除子网。
    • 扩展主要 IPv4 范围。
    • 添加或删除次要 IPv4 范围。
    • 添加或删除 IPv6 范围。
  • Google Cloud 会添加一个新区域,该区域会自动向自动 VPC 模式网络添加新子网。如需按子网区域了解每个子网的 IPv4 地址范围,请参阅自动模式 IPv4 范围

动态路由

Cloud Router 路由器根据收到的边界网关协议 (BGP) 消息、适用的 BGP 路由政策预览版)和 Cloud Router 路由器自定义已知路由指示 VPC 网络创建、更新和移除动态路由。

动态路由会根据包含 Cloud Router 路由器的 VPC 网络的动态路由模式和最佳路径选择模式,在一个区域或所有区域中创建。如需了解详情,请参阅以下内容:

动态路由的下一个跃点可以是以下之一:

如果动态路由的下一个跃点无法访问,则管理其 BGP 会话的 Cloud Router 路由器会指示 VPC 网络移除相应的动态路由。如需了解详情,请参阅 BGP 状态变化

动态路由的类型

VPC 网络可以包含以下类型的动态路由:

Google Cloud 会解决动态路由与子网路由之间的冲突,如与动态路由的交互中所述。

系统生成的默认路由

默认路由具有最广泛的可能目的地:0.0.0.0/0(对于 IPv4)和 ::/0(对于 IPv6)。仅在数据包与路由顺序中更具体的路由不匹配时, Google Cloud 才会使用默认路由来传送数据包。

没有默认路由并不一定会使您的网络与互联网隔离,因为用于外部直通式网络负载均衡器和外部协议转发的特殊路由路径不依赖于默认路由。

当您创建 VPC 网络时,Google Cloud 会向 VPC 网络添加系统生成的 IPv4 默认路由。系统生成的 IPv6 默认路由是一个本地静态路由,目的地为 0.0.0.0/0 且具有默认互联网网关下一个跃点。目的地为 0.0.0.0/0 且具有默认互联网网关下一个跃点的本地静态路由提供了到外部 IPv4 地址(包括互联网上的 IPv4 地址)的路径。以下示例资源使用此路径:

  • 外部 IPv4 地址分配给网络接口的虚拟机(如果发送的数据包的来源与网络接口主要内部 IPv4 地址匹配)。
  • 配置为向虚拟机网络接口使用的子网提供 NAT 服务的公共 Cloud NAT 网关。对于 NAT44 和 NAT64,公共 Cloud NAT 网关始终依赖于使用默认互联网网关下一个跃点的本地 IPv4 静态路由。如需详细了解哪些流量可以由公共 Cloud NAT 网关进行转换,请参阅常规规范

当您创建具有外部 IPv6 地址范围的子网时,Google Cloud 会向 VPC 网络添加系统生成的 IPv6 默认路由(如果该网络还没有此路由)。系统生成的 IPv6 默认路由是一个本地静态路由,目的地为 ::/0 且具有默认互联网网关下一个跃点。目的地为 ::/0 且具有默认互联网网关下一个跃点的本地静态路由提供了到外部 IPv6 地址(包括互联网上的 IPv6 地址)的路径。此路径可供以下各项使用:

  • /96 外部 IPv6 地址范围分配给网络接口的虚拟机(如果发送的数据包的来源在该 /96 地址范围内)。

访问全球 Google API 有时取决于具有默认互联网网关下一个跃点的本地 IPv4 或 IPv6 默认路由:

  • 如果您通过向适用于全球 Google API 的 Private Service Connect 端点发送数据包来访问全球 Google API 和服务,则您的 VPC 网络不需要具有默认互联网网关下一个跃点的默认路由。 Google Cloud 会向该端点添加特殊路由路径

  • 如果您通过向默认网域的 IPv4 或 IPv6 地址、private.googleapis.com 的 IPv4 或 IPv6 地址或 restricted.googleapis.com 的 IPv4 或 IPv6 地址发送数据包来访问全球 Google API 和服务,您可以使用具有默认互联网网关下一个跃点的默认 IPv4 和 IPv6 路由,也可以创建和使用具有更具体的目的地和默认互联网网关下一个跃点的 IPv4 和 IPv6 静态路由:

    • 如果您的虚拟机仅具有内部 IP 地址,请参阅路由选项,了解专用 Google 访问通道。
    • 如果您的虚拟机具有外部 IP 地址,请参阅路由选项

路由互动

以下部分介绍了子网路由与其他路由类型之间的交互。

子网路由与静态路由之间的交互

Google Cloud 会对本地子网路由、对等互连子网路由和 Network Connectivity Center 子网路由强制执行以下规则,除非相应子网已配置为混合子网

  • 如果新静态路由的目的地与现有本地子网路由、对等互连子网路由或 Network Connectivity Center 子网路由的目的地完全匹配或在其范围内,Google Cloud 将不允许您创建新的静态路由。例如:

    • 如果存在目的地为 10.70.1.0/24 的本地子网路由、对等互连子网路由或 Network Connectivity Center 子网路由,则您无法为 10.70.1.0/2410.70.1.0/2510.70.1.128/2510.70.1.0/24 范围内的任何其他目的地创建新的静态路由。

    • 如果存在目的地为 2001:0db8:0a0b:0c0d::/64 的本地子网路由或对等互连子网路由,则您无法为 2001:0db8:0a0b:0c0d::/642001:0db8:0a0b:0c0d::/962001:0db8:0a0b:0c0d::/64 范围内的任何其他目的地创建新的静态路由。

  • Google Cloud 不允许您对子网进行任何更改,导致子网 IP 地址范围与现有本地静态路由或对等互连静态路由的目的地完全匹配或包含该目的地。例如:

    • 如果 VPC 网络具有目的地为 10.70.1.128/25 的静态路由,则您无法创建具有主要或次要 IPv4 地址范围 10.70.1.128/2510.70.1.0/24 或具有包含 10.70.1.128/25 中所有 IPv4 地址的任何其他 IP 地址范围的新子网。

    • 如果 VPC 网络具有目的地为 2001:db8:a0b:c0d:e0f:f0e::/96 的静态路由,则 Google Cloud 会禁止创建具有 IPv6 地址范围 2001:db8:a0b:c0d::/64 或具有包含 2001:db8:a0b:c0d:e0f:f0e::/96 中所有 IPv6 地址的任何其他范围的新本地子网路由或对等互连子网路由。

子网路由与动态路由之间的交互

除非子网已配置为混合子网,否则Google Cloud 会强制执行以下规则。

  • 如果 Cloud Router 路由器发送的前缀与现有本地子网路由、对等互连子网路由或 Network Connectivity Center 子网路由的目的完全匹配或在其范围内,Google Cloud 不会创建动态路由。例如:

    • 如果存在目的地为 10.70.1.0/24 的本地子网路由、对等互连子网路由或 Network Connectivity Center 子网路由,并且 VPC 网络、对等互连 VPC 网络或包含 Network Connectivity Center 混合 spoke 的网络中的 Cloud Router 路由器接收 10.70.1.128/2510.70.1.0/24 或任何其他在 10.70.1.0/24 范围内的前缀,则 Google Cloud 不会为接收的冲突前缀创建任何本地子网路由、对等互连子网路由或 Network Connectivity Center 动态路由。

    • 如果存在目的地为 2001:0db8:0a0b:0c0d::/64 的本地子网路由、对等互连子网路由或 Network Connectivity Center 子网路由,并且 VPC 网络、对等互连 VPC 网络或包含 Network Connectivity Center 混合网关的网络中的 Cloud Router 路由器接收 2001:0db8:0a0b:0c0d::/962001:0db8:0a0b:0c0d::/64 或任何其他在 2001:0db8:0a0b:0c0d::/64 范围内的前缀,则 Google Cloud 不会为接收的冲突前缀创建任何本地子网路由、对等互连子网路由或 Network Connectivity Center 动态路由。

  • 如果对子网的更改导致创建新的本地子网路由、对等互连子网路由或 Network Connectivity Center 子网路由且其目的地与现有本地动态路由、对等互连动态路由或 Network Connectivity Center 动态路由的目的地完全匹配或包含该目的地,则Google Cloud 会移除任何现有动态路由。例如:

    • 如果 VPC 网络具有目的地为 10.70.1.128/25 的本地动态路由、对等互连动态路由或 Network Connectivity Center 动态路由,则在为 10.70.1.128/2510.70.1.0/24 或包含 10.70.1.128/25 中所有 IPv4 地址的任何其他 IP 地址范围创建新的本地子网路由、对等互连子网路由或 Network Connectivity Center 子网路由时,Google Cloud 会移除该动态路由。