VPC 网络
虚拟私有云 (VPC) 网络是物理网络的虚拟版本,在 Google 的生产网络内部使用 Andromeda 实现。
VPC 网络会执行以下操作:
- 为 Compute Engine 虚拟机 (VM) 实例提供连接。
- 为内部应用负载均衡器提供原生内部直通式网络负载均衡器和代理系统。
- 通过使用 Cloud VPN 隧道和 Cloud Interconnect 的 VLAN 连接,连接到本地网络。
- 将来自 Google Cloud 外部负载均衡器的流量分配到后端。
项目可以包含多个 VPC 网络。除非您创建组织政策来禁止 VPC 网络,否则新项目会首先创建一个默认网络(自动模式 VPC 网络),此网络在每个地区内都包含一个子网。
网络和子网
术语“subnet”(子网)和“subnetwork”(子网)是同义词。这两个词在 Google Cloud 控制台、gcloud
命令和 API 文档中可以互换使用。
子网不同于 (VPC) 网络。 网络和子网在 Google Cloud 中属于不同类型的资源。
如需了解详情,请参阅子网。
虚拟机实例
Compute Engine 虚拟机 (VM) 实例是托管在 Google 基础设施上的虚拟机。术语“Compute Engine 实例”“虚拟机实例”和“虚拟机”是同义词。它们在 Google Cloud 控制台、Google Cloud CLI 参考文档和 API 文档中可以互换使用。
虚拟机实例包括 Google Kubernetes Engine (GKE) 集群、App Engine 柔性环境实例,以及 Compute Engine 虚拟机上构建的其他 Google Cloud 产品。
如需了解详情,请参阅 Compute Engine 文档中的虚拟机实例。
规格
VPC 网络具有以下属性:
VPC 网络(包括其关联的路由和防火墙规则)属于全球性资源。它们与任何特定地区或区域均无关联。
子网属于区域级资源。
每个子网都会定义一个 IPv4 地址范围。自定义模式 VPC 网络中的子网也可以具有 IPv6 地址范围。
进出实例的流量可以通过网络防火墙规则加以控制。规则在虚拟机本身上实现,因此只能在流量离开或到达虚拟机时控制和记录流量。
VPC 网络内的资源可以使用内部 IPv4 地址、内部 IPv6 地址或外部 IPv6 地址相互通信,但须遵守适用的网络防火墙规则。如需了解详情,请参阅网络内通信。
具有内部 IPv4 或 IPv6 地址的实例可以与 Google API 和服务通信。如需了解详情,请参阅服务的专用访问通道选项。
可以使用 Identity and Access Management (IAM) 角色来保护网络管理。
组织可以使用共享 VPC 将 VPC 网络保留在通用宿主项目中。来自同一组织中其他项目的已授权 IAM 主账号可以创建使用共享 VPC 网络子网的资源。
通过使用 VPC 网络对等互连,VPC 网络可以连接到不同项目或组织中的其他 VPC 网络。
可以使用 Cloud VPN 或 Cloud Interconnect 在混合环境中安全连接 VPC 网络。
VPC 网络支持 GRE 流量,包括 Cloud VPN 和 Cloud Interconnect 上的流量。VPC 网络不支持 GRE 用于 Cloud NAT 或用于负载均衡和协议转发的转发规则。对 GRE 的支持让您可以从互联网(外部 IP 地址)和 Cloud VPN 或 Cloud Interconnect(内部 IP 地址)终止虚拟机上的 GRE 流量。然后,解封的流量将被转发到可达目标。GRE 可让您使用安全访问服务边缘 (SASE) 和 SD-WAN 等服务。
VPC 网络支持 IPv4 和 IPv6 单播地址。VPC 网络不支持网络内的广播或多播地址。
如需详细了解 IPv6 子网范围,请参阅子网。
VPC 网络示例
以下示例演示了在两个地区中具有三个子网的自定义模式 VPC 网络:
- Subnet1Subnet1 定义为 us-west1 地区内的
10.240.0.0/24
。- us-west1-a 区域中的两个虚拟机实例位于此子网中。它们的 IP 地址均在 subnet1 中的可用地址范围内。subnet1
- Subnet2Subnet2 定义为 us-east1 地区内的
192.168.1.0/24
。- us-east1-b 可用区中的两个虚拟机实例位于此子网中。它们的 IP 地址均在 subnet2 中的可用地址范围内。subnet2
- Subnet3Subnet3 同样位于 us-east1 地区内,定义为
10.2.0.0/16
。- us-east1-b 可用区内的一个虚拟机实例和 us-east1-c 可用区内的另一个实例都位于 subnet3 subnet3中,每个实例获得的 IP 地址均在可用范围内。由于子网属于地区性资源,因此实例可以将其网络接口与包含其区域的那个地区中的任何子网相关联。
组织政策限制条件
每个新项目起初都有一个默认 VPC 网络。您可以通过创建具有
compute.skipDefaultNetworkCreation
限制条件的组织政策来禁止创建默认网络。继承此组织政策的项目将没有默认网络。您可以使用组织政策控制以下 IPv6 配置:
禁止 VPC 外部 IPv6 使用:如果设置为 true,
constraints/compute.disableVpcExternalIpv6
限制条件会阻止您配置具有外部 IPv6 范围的双栈子网。禁止 VPC 内部 IPv6 使用:如果设置为 true,
constraints/compute.disableVpcInternalIpv6
限制条件会阻止您配置具有内部 IPv6 范围的双栈子网。禁止所有 IPv6 使用:如果设置为 true,
constraints/compute.disableAllIpv6
限制条件会禁止创建或更新 IPv6 使用所涉及的所有资源。
如需详细了解限制条件,请参阅组织政策限制条件。
子网创建模式
Google Cloud 提供两种类型的 VPC 网络,具体取决于其子网创建模式:
创建自动模式 VPC 网络时,系统会在此网络内为每个区域自动创建一个子网。这些自动创建的子网使用
10.128.0.0/9
CIDR 块内的一组预定义 IPv4 范围。在新 Google Cloud 地区可用时,这些地区中的新子网将使用该块中的 IP 范围,自动添加到自动模式 VPC 网络中。除了自动创建的子网之外,您还可以使用10.128.0.0/9
之外的 IP 地址范围,在所选区域中向自动模式 VPC 网络手动添加更多子网。创建自定义模式 VPC 网络时,系统不会自动创建子网。这种类型的网络让您可以完全控制其子网和 IP 范围。您可以使用指定的 IP 地址范围决定在所选地区中创建哪些子网。
您可以将 VPC 网络从自动模式切换到自定义模式。这是单向转化过程;自定义模式 VPC 网络无法更改为自动模式 VPC 网络。为了帮助您决定哪种类型的网络能满足您的需求,请参阅自动模式 VPC 网络的注意事项。
默认网络
除非您选择停用默认网络,否则每个新项目开始都有一个默认网络。默认网络是一个具有预先填充的 IPv4 防火墙规则的自动模式 VPC 网络。默认网络没有预先填充的 IPv6 防火墙规则。
自动模式 VPC 网络的注意事项
自动模式 VPC 网络易于设置和使用,并且非常适合具有以下特性的使用场景:
在每个地区中自动创建子网非常有用。
子网的预定义 IP 范围与用于不同用途的 IP 范围(例如,与本地资源的 Cloud VPN 连接)不重叠。
不过,自定义模式 VPC 网络更加灵活,也更适合生产。以下特性突出表明了建议或需要使用自定义模式 VPC 网络的使用场景:
没有必要在每个区域自动创建一个子网。
在新地区可用时,如果自动创建新子网,则可能会与手动创建的子网或静态路由使用的 IP 地址发生重叠,或者可能干扰整体网络规划。
您需要完全控制在 VPC 网络中创建的子网,包括所用地区和 IP 地址范围。
您计划将 VPC 网络连接到其他网络:
由于每个自动模式 VPC 网络的子网都使用相同的预定义 IP 地址范围,因此您无法使用 VPC 网络对等互连或 Cloud VPN 将自动模式 VPC 网络相互连接。
由于自动模式
10.128.0.0/9
CIDR 范围是常用的 RFC 1918 地址空间的一部分,因此 Google Cloud 外部的网络目前或未来可能会使用重叠的 CIDR 范围。
您希望创建使用 IPv6 范围的子网。自动模式 VPC 网络不支持双栈子网。
IPv4 子网范围
每个子网都有一个主要 IPv4 地址范围。以下资源的主要内部地址来自子网的主要范围:虚拟机实例、内部负载均衡器和内部协议转发。您可以选择将次要 IP 地址范围添加到仅由别名 IP 地址范围使用的子网。但是,您可以为子网的主要或次要范围中的实例配置别名 IP 地址范围。
VPC 网络中所有子网的每个主要或次要 IPv4 地址范围都必须是唯一的有效 CIDR 块。请参阅每个网络的限制,了解您可以定义的次要 IP 地址范围数。
您的 IPv4 子网不需要形成预定义的连续 CIDR 块,但您可以视需要执行此操作。例如,自动模式 VPC 网络会创建适合预定义自动模式 IP 地址范围的子网。
在自定义模式 VPC 网络中创建子网时,可以选择要使用的 IPv4 范围。如需了解详情,请参阅有效范围、禁止的子网范围和 IPv4 子网范围的限制。
每个主要 IPv4 子网范围内都有四个不可用的 IP 地址。如需了解详情,请参阅 IPv4 子网范围内不可用的地址。
在创建时,自动模式 VPC 网络会为每个区域创建一个子网,并自动接收新区域中的新子网。子网只有 IPv4 范围,并且所有子网范围都在 10.128.0.0/9
CIDR 块内。10.128.0.0/9
中未使用的部分会预留,以供 Google Cloud 将来使用。如需了解哪个区域中使用了哪个 IPv4 范围,请参阅自动模式 IPv4 子网范围。
IPv6 子网范围
在自定义模式 VPC 网络中创建双堆栈子网时,您可以选择该子网配置有内部 IPv6 子网范围还是外部 IPv6 子网范围。
内部 IPv6 子网范围使用唯一的本地地址 (ULA)。
- ULA 用于 VPC 网络内虚拟机之间的通信。适用于 IPv6 的 ULA 类似于适用于 IPv4 的 RFC 1918 地址。ULA 无法通过互联网访问,并且不能公开路由。
外部 IPv6 子网范围使用全球单播地址 (GUA)。
- GUA 可用于 VPC 网络内虚拟机之间的通信,也可以在互联网上路由。
如需详细了解 IPv6 子网范围,请参阅子网。
支持双栈子网的网络
您可以在自定义模式 VPC 网络中创建双栈子网。
自动模式 VPC 网络(包括默认网络)不支持双栈子网。旧版网络不支持双栈子网。
如果您希望将双栈子网添加到自动模式 VPC 网络,则可以执行以下操作:
路由和防火墙规则
路由
路由定义了数据包离开实例(出站流量)的路径。如需详细了解 Google Cloud 路由类型,请参阅路由。
动态路由模式
每个 VPC 网络都有一个关联的动态路由模式,用于控制网络中所有 Cloud Router 路由器的行为。Cloud Router 路由器管理 Google Cloud 连接产品的 BGP 会话。
如需了解动态路由模式选项,请参阅 Cloud Router 文档中的动态路由模式的影响。
路由通告和内部 IP 地址
以下 IP 地址在 VPC 网络内通告:
区域内部 IPv4 地址
用于主要和次要 IPv4 子网地址范围
区域内部和外部 IPv6 地址
用于内部和外部 IPv6 子网地址范围
全球内部 IPv4 地址
如果您使用 VPC 网络对等互连连接 VPC 网络,则使用专用 IPv4 地址的子网范围始终会交换。您可以控制使用以非公开方式使用的公共 IPv4 地址的子网范围是否会交换。全球内部 IPv4 地址永不会使用对等互连进行交换。如需了解详情,请参阅 VPC 网络对等互连文档。
使用 Google Cloud 连接产品(例如 Cloud VPN、Cloud Interconnect 或路由器设备)将 VPC 网络连接到其他网络(例如本地网络)时:
- 您可以将 VPC 网络的内部 IP 地址通告给其他网络(例如某个本地网络)。
- 虽然 VPC 网络与其他网络(例如某个本地网络)之间的连接可以使用 Google Cloud 连接产品提供的专用路由实现,但另一个网络的 IP 地址也可能会公开路由。如果本地网络使用可公开路由的 IP 地址,请务必注意这一点。
- 如果 VPC 网络中的虚拟机实例包含具有以不公开方式使用的公共 IP 地址的子网范围,则这些实例无法连接到使用相同公共 IP 地址的外部资源。
- 在向其他网络(例如本地网络)通告以不公开方式使用的公共 IP 地址时,要格外小心,尤其是当其他网络可以将这些公共 IP 地址通告到互联网时。
防火墙规则
分层防火墙政策和 VPC 防火墙规则均适用于传入和传出虚拟机实例(以及依赖于虚拟机的资源,例如 Google Kubernetes Engine 节点)的数据包。这两种类型的防火墙都会控制流量,即使是相同 VPC 网络中的虚拟机之间的流量也是如此。
如需监控哪条防火墙规则允许或拒绝了特定连接,请参阅防火墙规则日志记录。
通信和访问权限
网络内通信
系统生成的两类路由定义了使用内部 IP 地址在网络内的实例之间发送流量的路径。为了让一个实例能够与另一个实例进行通信,还必须配置适当的防火墙规则,因为每个网络都有一条用于入站流量的隐式拒绝防火墙规则。
您必须明确创建更高优先级的入站防火墙规则以允许实例相互通信,默认网络除外。除了隐式防火墙规则之外,默认网络还包括一些其他防火墙规则,其中包括允许网络内实例间通信的 default-allow-internal
规则。默认网络还附带允许 RDP 和 SSH 等协议的入站规则。
默认网络附带的规则也会显示为选项,供您应用于使用 Google Cloud 控制台创建的新自动模式 VPC 网络。
互联网访问要求
为使实例具有传出互联网访问权限,必须满足以下条件:
网络必须具有有效的默认互联网网关路由或自定义路由,其目的地 IP 地址范围是最通用的范围 (
0.0.0.0/0
)。此路由定义了访问互联网的路径。如需了解详情,请参阅路由。防火墙规则必须允许来自实例的出站流量。除非被更高优先级的规则所替换,否则出站流量的隐式允许规则允许来自所有实例的出站流量。
必须满足以下条件之一:
适用于 App Engine 的通信和访问权限
VPC 防火墙规则适用于在 VPC 网络中运行的资源,例如 Compute Engine 虚拟机。对于 App Engine 实例,防火墙规则的工作原理如下所示:
App Engine 标准环境:只有 App Engine 防火墙规则适用于入站流量。由于 App Engine 标准环境实例不在您的 VPC 网络内运行,因此 VPC 防火墙规则不适用于入站流量。
App Engine 柔性环境:App Engine 和 VPC 防火墙规则均适用于入站流量。只有在这两种防火墙规则都允许的情况下,才允许入站流量。对于出站流量,VPC 防火墙规则适用。
如需详细了解如何控制对 App Engine 实例的访问权限,请参阅应用安全。
跟踪外部 IP 地址的 Traceroute
由于内部原因,Google Cloud 会增加遍历 Google 网络中下一个跃点的数据包的 TTL 计数器。traceroute
和 mtr
等工具可能会提供不完整的结果,因为 TTL 在某些跃点上不会过期。从 Compute Engine 实例向互联网上的目标位置发送数据包时,Google 网络内部的跃点可能会被隐藏。
隐藏的跃点数因实例的 Network Service Tiers、地区和其他因素而异。如果只有几个跃点,则所有跃点都可能会被隐藏。traceroute
或 mtr
结果中缺少跃点并不意味着出站流量被丢弃。
此行为没有解决方法。如果您配置了连接到与虚拟机关联的外部 IP 地址的第三方监控,则必须考虑这一点。
出站吞吐量限制
您可以在 Compute Engine 文档的网络带宽页面上查看网络吞吐量信息。
数据包大小
您可以在最大传输单元中找到有关数据包大小的信息。
最大传输单元
如需详细了解 VPC 网络及其连接的虚拟机的最大传输单元 (MTU) 设置,请参阅最大传输单元。
如需了解如何更改 VPC 网络的 MTU,或在具有不同 MTU 设置的 VPC 网络之间迁移虚拟机,请参阅更改 VPC 网络的 MTU 设置。
支持的协议
Google Cloud 仅支持以下协议和扩展标头:
- 虚拟机之间的 IPv4 数据包:所有 IPv4 协议。
- 虚拟机和互联网之间的 IPv4 数据包:ICMP、IPIP、TCP、UDP、GRE、ESP、AH 和 SCTP 协议。
- 虚拟机之间以及虚拟机与互联网之间的 IPv6 数据包:AH、ESP、GRE、ICMP、ICMPv6、IPIP、SCTP、TCP 和 UDP 协议,Destination Options 和 Fragments 扩展标头。但是,在 IPv6 数据包中,不支持将 Destination Options 标头放在 Fragments 标头之后。
- 协议转发:AH、ESP、GRE、ICMP、ICMPv6、SCTP、TCP 和 UDP 协议
如需允许支持的协议的数据包,您需要根据您的要求配置防火墙规则或协议转发规则。
网络性能
延迟时间
您可以在我们的直播信息中心查看所测量的 Google Cloud 网络的地区间延迟时间。 信息中心会显示 Google Cloud 的地区间延迟时间中位数和吞吐量性能指标,以及使用 PerfKit Benchmarker 重现这些结果的方法。
Google Cloud 通常会在同一区域中 c2-standard-4 虚拟机实例之间测量到小于 55 微秒的往返延迟时间(第 50 个百分位),以及小于 80 微秒的尾延迟时间(第 99 个百分位)。
Google Cloud 通常会在同一低延迟网络中的 c2-standard-4 虚拟机实例之间测量到小于 45 微秒的往返延迟时间(第 50 个百分位),以及小于 60 微秒的尾延迟时间(第 99 个百分位)(“紧凑”放置政策)。 紧凑布置政策通过确保各虚拟机在物理上位于同一低延迟网络中来缩短网络延迟时间。
方法:通过黑盒探测器监控可用区内的延迟时间,该探测器在提供 c2 实例的每个可用区中的一对 c2 型虚拟机之间持续运行 netperf TCP_RR 基准。它会收集 P50 和 P99 结果,以便在采用和不采用紧凑放置政策的情况下进行设置。TCP_RR 基准通过测量事务速率来测量请求/响应性能。如果您的应用需要最佳延迟时间,建议使用 c2 实例。
丟包率
Google Cloud 通过定期测量所有地区之间的往返包损失来跟踪跨地区丢包率。我们的目标是这些测量指标的全球平均值小于 0.01%。
方法:黑盒虚拟机到虚拟机探测器使用 ping 监控每个区域对的丢包率,并将结果聚合到一个全球损失指标中。此指标的跟踪期为一天。