路由
Google Cloud 路由定义了网络流量从虚拟机实例到其他目的地所采用的路径。这些目的地可以位于您的 Google Cloud Virtual Private 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 动态路由根据包含混合 spoke 的 VPC 网络的动态路由模式应用于 VPC 网络的一个区域或所有区域。 |
系统生成的路由 | ||
系统生成的默认路由
0.0.0.0/0 (IPv4)
::/0 (IPv6) |
default-internet-gateway |
适用于整个 VPC 网络 可以移除或替换 |
子网路由
每个子网与每个 IP 地址范围相关联,每个 IP 地址范围至少有一个子网路由。如需详细了解子网 IP 范围,请参阅子网。
子网路由类型
VPC 网络可以包含以下类型的子网路由:
- 同一 VPC 网络中子网的子网路由,称为本地子网路由。
- 从 Network Connectivity Center hub 的 VPC spoke 导入的 Network Connectivity Center 子网路由。
- 从使用 VPC 网络对等互连连接的网络导入的对等互连子网路由。
所有类型的子网路由的目的地范围都必须是唯一的。如需了解详情,请参阅:
VPC 网络对等互连文档中的用于交换子网路由的选项和子网和对等互连子网路由交互
Network Connectivity Center 文档中的子网路由唯一性和 VPC Spoke 概览
子网路由的生命周期
属于子网的所有 IP 地址范围(主要 IPv4 地址范围、次要 IPv4 地址范围和 IPv6 地址范围)都有一个对应的子网路由。Google Cloud 会在以下情况下创建和删除子网路由:
进行子网配置更改,例如:
- 添加或删除子网。
- 扩展主要 IPv4 范围。
- 添加或删除次要 IPv4 范围。
- 添加或删除 IPv6 范围。
Google Cloud 添加了新区域,该区域会自动向自动 VPC 模式网络添加新子网。如需按子网区域了解每个子网的 IPv4 地址范围,请参阅自动模式 IPv4 范围。
动态路由
Cloud Router 路由器根据收到的边界网关协议 (BGP) 消息、适用的 BGP 路由政策(预览版)和 Cloud Router 路由器自定义已知路由指示 VPC 网络创建、更新和移除动态路由。
系统会根据包含 Cloud Router 的 VPC 网络的动态路由模式和最佳路径选择模式,在一个区域或所有区域创建动态路由。如需了解详情,请参阅以下内容:
动态路由的下一个跃点可以是以下之一:
Cloud VPN 隧道(高可用性 VPN 隧道或配置为使用动态路由的传统 VPN)
如果动态路由的下一个跃点无法访问,则管理其 BGP 会话的 Cloud Router 路由器会指示 VPC 网络移除动态路由。如需了解详情,请参阅 BGP 状态变化。
动态路由的类型
VPC 网络可以包含以下类型的动态路由:
- 同一 VPC 网络中的 Cloud Router 路由器学到的动态路由称为本地动态路由。
- 使用自定义路由交换从使用 VPC 网络对等互连连接的网络导入的对等互连动态路由。
- Network Connectivity Center 动态路由,从位于不同 VPC 网络中的混合 spoke 导入到 Network Connectivity Center hub。
Google Cloud 会解决动态路由与子网路由之间的冲突,如与动态路由的交互中所述。
系统生成的默认路由
默认路由具有最广泛的可能目的地:0.0.0.0/0
(对于 IPv4),::/0
(对于 IPv6)。只有当数据包与路由顺序中的更具体的路由不匹配时,Google Cloud 才会使用默认路由来传送数据包。
没有默认路由并不一定会使您的网络与互联网隔离,因为用于外部直通式网络负载均衡器和外部协议转发的特殊路由路径不依赖于默认路由。
创建 VPC 网络时,Google Cloud 会向 VPC 网络添加系统生成的 IPv4 默认路由。系统生成的 IPv4 默认路由是一个本地静态路由,目的地为 0.0.0.0/0
且具有默认互联网网关下一个跃点。目的地为 0.0.0.0/0
且具有默认互联网网关下一个跃点的本地静态路由提供了到外部 IPv4 地址(包括互联网上的 IPv4 地址)的路径。以下示例资源使用此路径:
- 外部 IPv4 地址分配给网络接口的虚拟机(如果发送的数据包的来源与网络接口主要内部 IPv4 地址匹配)。
- 配置为向虚拟机网络接口使用的子网提供 NAT 服务的公共 Cloud NAT 网关。根据 Cloud NAT 网关配置为提供哪些子网 IPv4 地址范围,数据包来源可以与以下任一项匹配:
- 来自虚拟机网络接口的别名 IP 地址范围的内部 IPv4 地址(无论该网络接口是否具有外部 IPv4 地址),或者
- 虚拟机网络接口的主要内部 IPv4 地址(如果该网络接口未分配有外部 IPv4 地址)。
当您创建具有外部 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 静态路由:
路由互动
以下部分介绍了子网路由与其他路由类型之间的交互。
子网路由与静态路由之间的交互
Google Cloud 会对本地子网路由、对等互连子网路由和 Network Connectivity Center 子网路由强制执行以下规则,除非相应子网已配置为混合子网。
如果新静态路由的目的地与现有本地子网路由、对等互连子网路由或 Network Connectivity Center 子网路由的目的地完全匹配或在其范围内,Google Cloud 将不允许您创建新的静态路由。例如:
如果存在目的地为
10.70.1.0/24
的本地子网路由、对等互连子网路由或 Network Connectivity Center 子网路由,则您无法为10.70.1.0/24
、10.70.1.0/25
、10.70.1.128/25
或10.70.1.0/24
范围内的任何其他目的地创建新的静态路由。如果存在目的地为
2001:0db8:0a0b:0c0d::/64
的本地子网路由或对等互连子网路由,则您无法为2001:0db8:0a0b:0c0d::/64
、2001:0db8:0a0b:0c0d::/96
或2001:0db8:0a0b:0c0d::/64
范围内的任何其他目的地创建新的静态路由。
Google Cloud 不允许您对子网进行任何更改,导致子网 IP 地址范围与现有本地静态路由或对等互连静态路由的目的地完全匹配或包含该目的地。例如:
如果 VPC 网络具有目的地为
10.70.1.128/25
的静态路由,则您无法创建具有主要或次要 IPv4 地址范围10.70.1.128/25
、10.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/25
、10.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::/96
、2001: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/25
、10.70.1.0/24
或包含10.70.1.128/25
中所有 IPv4 地址的任何其他 IP 地址范围创建新的本地子网路由、对等互连子网路由或 Network Connectivity Center 子网路由时,Google Cloud 会移除该动态路由。如果您的 VPC 网络具有目的地为
2001:db8:a0b:c0d::/96
的本地动态路由、对等互连动态路由或 Network Connectivity Center 动态路由,则在为2001:db8:a0b:c0d::/64
创建新的本地子网路由、对等互连子网路由或 Network Connectivity Center 子网路由时,Google Cloud 会移除该动态路由。
适用范围和顺序
适用的路由
每个实例、Cloud VPN 隧道和 VLAN 连接都有一组适用的路由,即适用于该特定资源的路由。适用的路由是 VPC 网络中所有路由的子集。
以下路由类型始终适用于所有虚拟机实例、VLAN 连接和 Cloud VPN 隧道:
以下路由类型可配置为仅应用于特定的虚拟机实例、VLAN 连接或 Cloud VPN 隧道:
基于政策的路由可应用于:
- 所有虚拟机实例、VLAN 连接和 Cloud VPN 隧道
- 仅限由网络标记标识的虚拟机实例
- 仅特定区域中的 VLAN 连接
静态路由可应用于:
- 所有虚拟机实例、VLAN 连接和 Cloud VPN 隧道
- 仅限由网络标记标识的虚拟机实例
动态路由可应用于包含动态路由的下一个跃点的区域或所有区域中的虚拟机实例、VLAN 连接和 Cloud VPN 隧道,具体取决于 VPC 网络的动态路由模式。
特殊路由路径
VPC 网络具有针对特定服务的特殊路由。这些特殊路由路径不会显示在您的 VPC 网络路由表中。您无法移除任何特殊路由路径。不过,您可以使用 VPC 防火墙规则或防火墙政策来允许或拒绝数据包。
外部直通式网络负载均衡器和外部协议转发的路径
外部直通式网络负载平衡器和外部协议转发使用 Maglev 系统将数据包从互联网上的客户端路由到 VPC 网络中的后端虚拟机和目标实例。这些 Maglev 系统会路由目的地与外部转发规则的目的地匹配的数据包。
外部直通式网络负载均衡器或外部协议转发的每个转发规则还会为其后端虚拟机或目标实例提供路由路径,以将数据包发送到 VPC 网络之外的目的地:
- 后端虚拟机或目标实例发送的数据包可以是出站响应数据包(发送回客户端),也可以是发起新连接的出站数据包。
- 数据包来源必须与转发规则的 IP 地址匹配。数据包协议和来源端口不必与转发规则的协议和端口指定相匹配。
- 转发规则路由路径不依赖于默认路由或使用默认互联网网关下一个跃点。
- 后端虚拟机和目标实例不需要启用 IP 转发。
Google Front End 前端和后端之间的路径
外部应用负载均衡器和外部代理网络负载均衡器使用 Google Front End (GFE) 前端。第二层 GFE 会打开与后端虚拟机的 TCP 连接,并发送来自以下来源的数据包:
35.191.0.0/16
130.211.0.0/22
Google Cloud 使用 Google 网络中的路由将来自这些来源范围的数据包传送到 VPC 网络中的后端虚拟机。每个 VPC 网络都包含路由路径,可让虚拟机向 35.191.0.0/16
和 130.211.0.0/22
发送响应数据包。
健康检查的路径
所有负载均衡器和托管式实例组自动修复的健康检查会从健康检查探测 IP 地址范围向后端虚拟机发送数据包。
Google Cloud 使用 Google 网络中的路由将来自健康检查探测系统的数据包传送到 VPC 网络中的虚拟机。每个 VPC 网络都包含路由路径,可让虚拟机向健康检查探测系统发送响应数据包。
Identity-Aware Proxy (IAP) 的路径
使用 IAP 进行 TCP 转发将 35.235.240.0/20
用作仅限内部使用的范围,其下一个跃点完全在 Google 网络内。Google 不会在互联网上发布到 35.235.240.0/20
的路由。
当您使用 IAP TCP 转发时,Google 网络中的路由会将数据包从 35.235.240.0/20
传送到 VPC 网络中的虚拟机。每个 VPC 网络都包含路由路径,可让虚拟机向 35.235.240.0/20
发送响应数据包。
Cloud DNS 和 Service Directory 的路径
以下 Cloud DNS 和 Service Directory 功能将 35.199.192.0/19
用作仅限内部使用的范围,其下一个跃点完全在 Google 网络内。Google 不会在互联网上发布到 35.199.192.0/19
的路由。
- Cloud DNS 使用专用路由的转发目标
- Cloud DNS 使用专用路由的备用域名服务器
- Service Directory 的专用网络访问
当您使用这些 Cloud DNS 和 Service Directory 功能时,Google 网络中的路由会将数据包从 35.199.192.0/19
传送到 VPC 网络中的虚拟机。每个 VPC 网络都包含路由路径,可让虚拟机向 35.199.192.0/19
发送响应数据包。
无服务器 VPC 访问通道的路径
无服务器 VPC 访问通道将 35.199.224.0/19
用作仅限内部使用的范围,其下一个跃点完全在 Google 网络内。Google 不会在互联网上发布到 35.199.224.0/19
的路由。
Google 网络中的路由会将数据包从 35.199.224.0/19
传送到无服务器 VPC 访问通道连接器实例。每个 VPC 网络都包含路由路径,可让连接器实例向 35.199.224.0/19
发送响应数据包。
适用于全球 Google API 的 Private Service Connect 端点的路径
当您创建适用于全球 Google API 的 Private Service Connect 端点时,Google Cloud 会为该端点添加到 VPC 网络的路由。该路由的目的地是端点的全球内部 IP 地址。
路由顺序
给定数据包可能有多个适用的路由。以下步骤对用于选择路线的过程进行了建模。
特殊路由路径:某些 Google Cloud 特殊路由路径不会显示在 VPC 网络路由表中。如需了解详情,请参阅特殊路由路径。
如果特殊路由路径适用,则路由选择模型仅包含特殊路径。所有其他路由均会被忽略,评估会在此步骤停止。
基于政策的路由:系统会在特殊返回路径之后但其他类型的路由之前评估基于政策的路由。如果 VPC 网络中不存在基于政策的路由,则 Google Cloud 会跳过此步骤并继续执行子网路由步骤。
Google Cloud 仅根据优先级评估基于政策的路由。Google Cloud 会为每个基于政策的路由评估数据包的来源和目的地,从一个或多个优先级最高的基于政策的路由开始。如果数据包的特征与基于政策的路由不匹配,Google Cloud 会忽略基于政策的路由,并继续评估已排序列表中的下一个基于政策的路由。下一个要评估的基于政策的路由可能与忽略的基于政策的路由具有相同优先级,也可能优先级更低。
如果在评估路由选择模型中所有基于政策的路由后,数据包的特征与任何基于政策的路由都不匹配,则 Google Cloud 会忽略所有基于政策的路由,并继续执行子网路由这一步骤。
如果数据包的特征与优先级最高的基于政策的路由匹配,则 Google Cloud 会首先忽略所有优先级较低的基于政策的路由。如果列表中保留了两个或更多基于政策的路由,则 Google Cloud 会评估剩余的每个具有相同优先级的基于政策的路由。如果数据包的特征与其不匹配,Google Cloud 会忽略所有剩余的基于政策的路由。完成此步骤后,您的路由选择模型可能会包含一个或多个基于政策的路由。
如果您的路由选择模型包含两个或更多匹配的优先级最高的基于政策的路由,则 Google Cloud 会使用内部算法来选择单个基于政策的路由。所选基于政策的路由可能不是数据包来源或目的地的最具体匹配项。为避免这种歧义,我们建议您创建具有唯一优先级的基于政策的路由。
如果您的路由选择模型仅包含一个优先级最高的基于政策的路由,而该路由配置为跳过其他基于政策的路由,则 Google Cloud 会忽略所有基于政策的路由,并继续执行子网路由这一步骤。
如果您的路由选择模型仅包含一个优先级最高的基于政策的路由,而该路由未配置为跳过其他基于政策的路由,则 Google Cloud 会将数据包传送到下一个跃点内部直通式网络负载均衡器,并忽略所有非基于政策的路由。
子网路由:Google Cloud 会确定数据包的目的地是否在 VPC 网络中的本地子网路由、对等互连子网路由或 Network Connectivity Center 子网路由的目的地范围内。
如果数据包的目的地与任何本地子网路由、对等互连子网路由或 Network Connectivity Center 子网路由的目的地范围都不匹配,则 Google Cloud 会忽略所有子网路由,并继续执行最具体的目的地这一步骤。
如果数据包的目的地与 VPC 网络中的本地子网路由、对等互连子网路由或 Network Connectivity Center 子网路由的目的地范围匹配,则行为会有所不同,具体取决于子网是否已配置为混合子网:
对于大多数子网,Google Cloud 仅使用子网路由,并尝试将数据包发送到子网中的资源,例如虚拟机网络接口或内部转发规则。所有其他路由均会被忽略,评估会在此步骤停止。如果没有资源使用数据包的目的地,或者资源是已停止的虚拟机实例,则数据包会被丢弃。
不过,如果匹配的子网路由来自混合子网,则 Google Cloud 会尝试在子网中找到匹配的目的地资源,例如虚拟机网络接口或内部转发规则:
如果子网中存在资源,则 Google Cloud 仅使用子网路由,并尝试将数据包发送到相应资源。所有其他路由均会被忽略,评估会在此步骤停止。 如果数据包的目的地不存在资源,则数据包会被丢弃。如果资源是未运行的虚拟机,数据包也会被丢弃。
如果子网中不存在资源,则 Google Cloud 会忽略所有子网路由(包括匹配的子网路由),并继续执行最具体的目的地这一步骤。
最具体的目的地:在此步骤开始时,您的路由选择模型不包含特殊路由路径、基于政策的路由,也不包含本地子网路由、对等互连子网路由或 Network Connectivity Center 子网路由。
Google Cloud 会确定剩余适用路由中哪些路由具有包含数据包的目的地 IP 地址的最具体目的地。Google Cloud 会忽略目的地不太具体的所有其他路由。例如,
10.240.1.0/24
是比10.240.0.0/16
更具体的目的地。完成此步骤后,您的路由选择模型会仅包含具有相同目的地的自定义路由。
仅选择最有利的自定义路由类型:在此步骤中,Google Cloud 会移除除最有利的自定义路由类型之外的所有自定义路由。本地自定义路由优先于 Network Connectivity Center 动态路由,Network Connectivity Center 动态路由优先于对等互连自定义路由。
下表总结了 Google Cloud 在此步骤中使用的逻辑。
自定义路由类别 具体变化 本地动态路由和本地静态路由 如果您的路由模型包含至少一个目的地的本地动态路由或本地静态路由,Google Cloud 会移除路由模型中存在的以下自定义路由类型:
- 位于不同 VPC 网络中的混合 spoke 的 Network Connectivity Center 动态路由
- 对等互连动态路由(从使用 VPC 网络对等互连连接的其他 VPC 网络导入)
Network Connectivity Center 动态路由 如果满足以下所有条件,Google Cloud 会从路由模型中移除所有对等互连动态路由和对等互连静态路由: - 您的路由模型不包含目的地的任何本地自定义路由
- 您的路由模式确实包含至少 1 条目的地 Network Connectivity Center 动态路由
- Network Connectivity Center 动态路由来自不同 VPC 网络中的混合 spoke
对等互连动态路由和对等互连静态路由 最不利的自定义路由类型包含对等互连自定义路由。 只有当路由模型不包含目的地的任何本地自定义路由或 Network Connectivity Center 动态路由时,才会使用目的地的对等互连自定义路由。 为来自单个 VPC 网络的对等自定义路由选择下一个跃点:同一目的地的下一个跃点必须位于同一 VPC 网络中。仅当您的路由模型包含从两个或更多使用 VPC 网络对等互连连接的不同 VPC 网络导入的对等互连动态路由或对等互连静态路由时,此步骤才适用。
Google Cloud 使用内部算法从单个 VPC 网络导入对等互连自定义路由。如果您的 VPC 网络与新的 VPC 网络对等互连,或者它与现有对等 VPC 网络断开连接,Google Cloud 选择的对等网络可能会更改。
忽略下一个跃点不可用的静态和动态路由:此步骤会对 Google Cloud 忽略已关闭或无效的下一个跃点的情况进行建模。
下一个跃点虚拟机 IP 地址指定无效:静态路由的
next-hop-address
必须与路由 VPC 网络中分配给虚拟机的 IP 地址匹配。IP 地址必须以以下任一方式分配给虚拟机的网络接口:- 主要内部 IPv4 地址
- 内部 IPv6 地址
- 外部 IPv6 地址
如果
next-hop-address
指定的 IP 地址与其他类型的资源(例如别名 IP 范围)匹配,或者与任何资源都不匹配,Google Cloud 会忽略该路由。下一个跃点虚拟机已停止或删除:Google Cloud 会忽略其下一个跃点虚拟机实例已停止或删除的每个静态路由。此行为适用于下一个跃点是使用
next-hop-instance
或next-hop-address
指定的路由。如需了解详情,请参阅停止或删除实例时的行为。下一个跃点负载均衡器 IP 地址指定无效:对于通过 IP 地址指定下一个跃点负载均衡器的静态路由,该 IP 地址必须与位于路由的 VPC 网络或对等互连的 VPC 网络中的内部直通式网络负载均衡器的转发规则匹配。如果下一个跃点 IP 地址与其他类型的负载均衡器的转发规则匹配,或者与任何转发规则都不匹配,则 Google Cloud 会忽略该路由。
下一个跃点传统 VPN 隧道未建立:Google Cloud 会忽略其下一个跃点传统 VPN 隧道没有有效第 1 阶段 (IKE) 安全关联 (SA) 的每个静态路由。如需了解详情,请参阅传统 VPN 文档中的路由顺序。
下一个跃点无法正常运行的动态路由:即使在负责编程动态路由的 BGP 会话关闭之前,如果动态路由的下一个跃点 Cloud VPN 隧道、VLAN 连接或路由器设备虚拟机无法正常运行,Google Cloud 也会忽略该动态路由。当相应的 Cloud Router 路由器 BGP 会话关闭时,此类情况通常只会在动态路由被移除前的几秒钟内存在。
Google Cloud 不会验证下一个跃点虚拟机的客机操作系统或下一个跃点负载均衡器的后端虚拟机是否在处理数据包。如需了解详情,请参阅实例和内部直通式网络负载平衡器下一个跃点共同的注意事项。
忽略低优先级路由:此步骤会对 Google Cloud 如何舍弃除优先级最高的路由之外的其他所有路由进行建模。
完成此步骤后,您的路由模型可能为空,也可能包含一个或多个路由。如果您的模型不为空,则模型中的所有路由都具有以下特征:
- 相同的优先级
- 尚未被忽略的下一个跃点
- 相同的目的地
- 非基于政策的路由或子网路由
从单个 VPC 网络中为 Network Connectivity Center 动态路由选择下一个跃点:同一目的地的下一个跃点必须位于同一 VPC 网络中。仅当您的路由模型包含从位于不同 VPC 网络中的两个或更多混合边缘导入的 Network Connectivity Center 动态路由时,此步骤才适用。
Google Cloud 使用内部算法从位于单个 VPC 网络中的混合边缘导入 Network Connectivity Center 动态路由。如果您向 Network Connectivity Center hub 添加混合 spoke 或从中移除混合 spoke,所选的混合 spoke 可能会发生变化。为避免这种歧义,请确保在以下情况下,Network Connectivity Center 动态路由具有唯一的优先级:
- 路由具有相同的目的地。
- 路由从位于不同 VPC 网络中的两个或更多混合 spoke 导入。
仅选择最有利的偏好类别:Google Cloud 不会在属于不同偏好类别的路由之间执行等价多路径 (ECMP),如本步骤中所定义。
偏好类别 路由类型和下一个跃点类型 第一偏好(最优先) 一个或多个具有下一个跃点实例( next-hop-instance
或next-hop-address
)或下一个跃点传统 VPN 隧道的静态路由。第二个偏好设置 一种类型的一个或多个动态路由。 第三选择 具有下一个跃点内部直通式网络负载平衡器的单个静态路由。 第四个偏好(最不喜欢) 一个或多个下一个跃点为 default-internet-gateway
的静态路由。在此步骤中,如果存在两个或多个具有下一个跃点负载均衡器的静态路由,Google Cloud 会使用内部算法选择单个静态路由,而不会在多个负载均衡器之间执行 ECMP。如需了解详情,请参阅内部直通式网络负载平衡器下一个跃点的注意事项。
完成此步骤后,您的路由模型可能为空,也可能包含一个或多个路由。如果您的模型不为空,则模型中的所有路由都具有以下特征:
- 相同的偏好设置类别
- 相同的优先级
- 尚未被忽略的下一个跃点
- 单个 VPC 网络中的下一个跃点
- 相同的目的地
- 非基于政策的路由或子网路由
发送或丢弃数据包:Google Cloud 会根据路由模型中剩余的路由数量发送或丢弃数据包:
如果您的路由模型包含单个路由,则 Google Cloud 会将数据包发送到下一个跃点,但存在以下例外情况:
未启用全球访问权限的下一个跃点内部直通式网络负载均衡器无法从负载均衡器所在区域以外的区域访问。因此,如果下一个跃点负载均衡器未启用全球访问权限,Google Cloud 会丢弃从与负载均衡器所在区域不同的区域中的虚拟机实例、VLAN 连接和 Cloud VPN 隧道发送的所有数据包。如需更改此行为,请启用全球访问权限。
如果您的路由模型包含两个或更多路由,Google Cloud 会执行 ECMP,在下一个跃点之间分配数据包。下一个跃点的选择取决于哈希计算和下一个跃点的数量。如果数据包包含端口信息,则 Google Cloud 使用五元组哈希值;否则使用三元组哈希值。如果路由模型在发送后续数据包时更改,则即使哈希值相同,Google Cloud 也可能会将这些数据包定向到其他下一个跃点。
如果路由模型为空,Google Cloud 会丢弃数据包,并发送 ICMP 类型 3、代码 0(网络不可达)消息。
后续步骤
- 如需创建和管理路由,请参阅使用路由。
- 如需详细了解静态路由,请参阅静态路由。
- 如需大致了解 Google Cloud VPC 网络,请参阅 VPC 网络。
- 如需创建、修改或删除 VPC 网络,请参阅创建和管理 VPC 网络。