高级 VPC 概念

本页面介绍了有关使用 Virtual Private Cloud (VPC) 网络的其他详细信息。在阅读本页内容之前,请先查看 VPC 网络。如果您对对等互连的 VPC 网络感兴趣,请参阅 VPC 网络对等互连

深层 VPC 网络详细信息

此部分介绍了一些深层 VPC 网络详细信息。如果您要了解典型的使用情景,则无需阅读此内容,但这些信息可让您更深入地了解 VPC 网络的工作原理。下图展示了这些深层详细信息,更多信息见相应部分。

VPC 网络。
VPC 网络(点击可放大)。

系统组件和功能

不同的 VPC 网络功能由系统的不同部分处理。其中一些是标准网络功能,有详尽的文档记录,还有一些功能专门针对 VPC 网络。其中的部分功能可由您配置,也有一些功能不能由您配置。VPC 网络使用 Linux 的 VIRTIO 网络模块来模拟以太网卡和路由器功能,但较高层次的网络堆栈(例如 ARP 查询)则使用标准网络软件进行处理。

ARP 查询
实例内核发出 ARP 请求,VPC 网络发出 ARP 回复。MAC 地址与 IP 地址之间的映射由实例内核处理。
MAC 对照表、IP 对照表、活动连接表
这些表托管在底层 VPC 网络中,用户无法检查或配置。
DNS 服务器

各实例的元数据服务器充当 DNS 服务器。它将所有 VPC 网络 IP 地址的 DNS 条目存储在本地 VPC 网络中,并调用 Google 的公开 DNS 服务器处理 VPC 网络以外的条目。您不能配置此 DNS 服务器。每个实例上的 DHCP 客户端均配置为管理实例的 /etc/resolv.conf 文件。

您可以通过修改 DHCP 政策将自己的搜索域名或域名服务器添加到实例的 /etc/resolv.conf。许多 Linux 发行版允许通过 /etc/dhcp/dhclient.conf 持久保留这些修改。如需了解详情,请参阅内部 DNS 文档。

VPC 网络与外部之间的数据包处理

进出 VPC 网络的数据包由网络代码进行处理,网络代码会根据防火墙规则、外部 IP 对照表和活动连接表检查数据包。VPC 网络还对进出 VPC 网络的数据包执行 NAT。

实例接收数据包

实例内核以标准方式接收数据包,并将其转换为流。

实例发送数据包

实例内核以标准方式发送数据包,并将其转换为流。接口和网络功能使用 VIRTIO 网络模块进行建模。

详细的连接演示

下面进一步详细介绍了在实例发起 VPC 网络调用时发生的情况。

实例发起调用:

  1. 如果目标地址是实例名称或诸如 www.google.com 之类的网址,则此实例将调用其元数据服务器上的 DNS 服务并获取匹配的 IP 地址。您可以对实例进行配置以查询另一项 DNS 服务,但您无法解析实例名称。
  2. 目标 IP 地址根据子网的 IP 地址范围进行检查,而每个实例都了解此范围。

    1. 如果 IP 地址不在当前 VPC 网络中,或者在使用 VPC 网络对等互连来对等互连的 VPC 网络中:

      1. 实例将数据包发送到子网的网关 MAC 地址,并将目的地设置为数据包的最终目的地。实例可能需要发出 ARP 请求来解析网关的 MAC 地址。

      2. VPC 网络重写 IP 标头,以将实例的外部 IP 地址声明为来源。如果该实例没有外部 IP 地址,则不允许该调用,并且 VPC 网络会在不通知发送方的情况下丢弃该数据包。

      3. VPC 网络记录传出数据包,并将来源和目的地添加到活动连接表。

      4. VPC 网络将数据包发送到其目的地。

      5. 目的地获取数据包并作出响应(如果它选择这样做)。

      6. VPC 网络接收到响应,查询活动连接表,在确定此连接属于活动连接后允许此连接。VPC 网络查询其网络/外部 IP 对照表,并将实例的外部 IP 地址替换为匹配的网络地址,再将数据包发送到来源实例。

      7. 实例接收数据包。

    2. 如果目的地 IP 地址在 VPC 网络中或在使用 VPC 网络对等互连来对等互连的 VPC 网络中:

      1. 该实例配置了使用 255.255.255.255 掩码的 IP 地址,因此实例会将该数据包发送到子网的网关 MAC 地址。实例可能需要首先发出 ARP 请求来解析网关的 MAC 地址。

      2. Google Cloud 会将数据包转发到当前或对等互连的 VPC 网络中的目的地 IP 地址。

      3. 目标实例接收数据包。目标实例检查入站防火墙,确定是否允许数据包。如果不允许,系统会静默地丢弃数据包。否则,实例会处理数据包。

外部实例或计算机调用实例:

  1. 外部调用方将数据包发送到 VPC 网络拥有的实例外部 IP 地址。

  2. VPC 网络将数据包与活动连接表进行对照,确定此连接是否属于现有连接:

    1. 如果此连接不是现有连接,则 VPC 网络会查找允许此连接的防火墙规则。
    2. 如果没有相应的防火墙规则,VPC 网络会在不通知发送方的情况下丢弃数据包。
  3. 如果存在现有连接或有效的防火墙规则,VPC 网络将检查其对照表,将外部 IP 替换为数据包中相应的内部 IP,将传入数据包记录在活动连接表中,并将数据包发送到目标实例。

  4. 实例接收数据包,并且在将数据包发送到网络范围以外时,会按照 IP 地址位于 VPC 网络 IP 范围以外的情况中的说明进行响应。

  5. VPC 网络接收回复,在活动连接表中查找匹配的传入请求,并允许数据包通过。在发送之前,它会将实例的内部 IP 替换为其查找表中对应的外部 IP,以修改来源 IP 地址。

衡量 VPC 网络吞吐量

如需了解相关说明,请参阅计算网络吞吐量

后续步骤