Connectivity Tests 概览

Connectivity Tests 是一种诊断工具,可让您检查网络端点之间的连接。它会分析您的配置,在某些情况下还会在端点之间执行实时数据平面分析。端点是指网络流量的来源或目的地,例如虚拟机、Google Kubernetes Engine (GKE) 集群、负载均衡器转发规则或互联网上的 IP 地址。

为了分析网络配置,Connectivity Tests 会通过 Virtual Private Cloud (VPC) 网络、Cloud VPN 隧道或 VLAN 连接模拟数据包的预期转发路径。Connectivity Tests 还可以模拟指向 VPC 网络中资源的预期入站转发路径。

对于某些连接场景,Connectivity Tests 还会执行实时数据平面分析。这项功能通过数据平面发送数据包,以验证连接并提供延迟和数据包丢失的基准诊断信息。如果该功能支持该路由,则您运行的每个测试都会包含实时数据平面分析结果。

如需了解如何针对各种场景创建和运行测试,请参阅创建和运行 Connectivity Tests

Connectivity Tests 的 API 是 Network Management API。如需了解详情,请参阅 API 文档

为何使用 Connectivity Tests?

Connectivity Tests 可以帮助您排查以下网络连接问题:

  • 意外的配置不一致
  • 由于网络配置更改或迁移而导致配置作废
  • 各种网络服务和功能的配置错误

在测试由 Google 管理的服务时,Connectivity Tests 还可以帮助您确定您的 VPC 网络或 Google 拥有的用于服务资源的 VPC 网络是否存在问题。

Connectivity Tests 如何分析配置

分析网络配置时,Connectivity Tests 使用抽象状态机来建立 VPC 网络处理数据包的模型。Google Cloud 按照多个逻辑步骤处理数据包。

这种分析可能会通过多种途径进行,

由于配置分析所支持的 VPC 网络服务和功能多种多样,遍历 VPC 网络配置的测试数据包可能会采用多种不同的可能路径。

下图展示了一个模型,用于说明配置分析如何模拟两个 Compute Engine 虚拟机 (VM) 实例(一个位于左侧,另一个位于右侧)之间的跟踪流量。

具体分析取决于您的网络基础架构

根据 Google Cloud 网络和资源配置,此流量可能会先通过 Cloud VPN 隧道、VPC 网络、Google Cloud 负载均衡器或对等互连的 VPC 网络,然后再到达目标虚拟机实例。

网络抽象状态机。
网络抽象状态机

分析符合多种有限状态中的一种

在数据包递送或丢弃之前,不连续状态之间的有限步骤数量会建模为有限状态机。此有限状态机在任何时候都可以正好处于多个有限状态之一,并且可能有多个继承者状态。

例如,当 Connectivity Tests 根据路由优先级匹配多个路由时,Google Cloud 可以根据数据平面中未指定的哈希函数在多个路由中选择路由。如果配置了基于政策的路由,则 Connectivity Test 会将数据包路由到下一个跃点(即内部负载均衡器)。

在上一个示例中,Connectivity Tests 跟踪记录会返回所有可能的路由,但无法确定 Google Cloud 用来返回路由的方法。这是因为该方法是 Google Cloud 的内部方法,随时可能更改。

Google 管理的服务

由 Google 管理的服务(例如 Cloud SQL 和 Google Kubernetes Engine (GKE))会在 Google 拥有和管理的项目和 VPC 网络中为客户分配资源。客户无权访问这些资源。

Connectivity Tests 配置分析仍然可以运行测试,并提供由 Google 管理的服务的总体可达性结果,但不提供关于 Google 拥有的项目中的测试资源的详细信息。

下图展示了一个模型,用于说明配置分析如何模拟从客户 VPC 网络中的虚拟机实例到 Google 自有 VPC 网络中的 Cloud SQL 实例的跟踪记录流量。在此示例中,网络通过 VPC 网络对等互连进行连接。

与两个虚拟机之间的标准测试类似,逻辑步骤包括检查相关出站防火墙规则以及匹配路由。运行测试时,Connectivity Tests 配置分析会提供有关这些步骤的详细信息。但是,对于分析 Google 拥有的 VPC 网络中的配置的最终逻辑步骤,分析仅提供总体可达性结果。Connectivity Tests 不会提供 Google 拥有的项目中资源的详细信息,因为您无权查看这些资源。

如需了解详情,请参阅测试与 Google 管理的服务之间的连接中的测试示例。

由 Google 管理的服务的网络抽象状态机。
由 Google 管理的服务的网络抽象状态机

受支持的配置

Connectivity Tests 配置分析支持测试以下部分所述的网络配置。

流量

  • 虚拟机实例与互联网之间
  • 虚拟机实例与虚拟机实例之间
  • Google Cloud 与本地网络之间
  • 通过 Network Connectivity Center 连接的两个本地网络之间
  • 两个 Network Connectivity Center VPC spoke 之间

VPC 网络功能

您可以测试使用以下功能的资源之间的连接(只要适用,IPv4 和 IPv6 都受支持):

Google Cloud 混合网络解决方案

IPv4 和 IPv6 都支持以下混合网络解决方案:

Network Connectivity Center

支持 Network Connectivity Center 的 VPC spoke 和混合 spoke

Cloud NAT

支持公共 NAT 和专用 NAT

Cloud Load Balancing

  • 支持以下 Google Cloud 负载均衡器类型:外部应用负载均衡器、外部直通式网络负载均衡器、外部代理网络负载均衡器、内部应用负载均衡器、内部直通式网络负载均衡器、内部代理网络负载均衡器。
  • 支持测试与负载均衡器 IP 地址的连接。
  • 支持验证 Cloud Load Balancing 健康检查与后端的连接。
  • 内部 TCP/UDP 负载均衡器可用作下一个跃点

对于不支持的 Cloud Load Balancing 功能,请参阅“不支持的配置”部分

Google Kubernetes Engine (GKE)

  • 支持与 GKE 节点和 GKE 控制层面之间的连接。
    • 在测试 GKE 控制层面的专用 IP 地址时,Connectivity Tests 配置分析会确定数据包是否可以传送到控制层面。这包括分析 Google 拥有的 VPC 网络中的配置。
    • 在测试 GKE 控制层面的公共 IP 地址时,Connectivity Tests 配置分析会确定是否可以将数据包发送到运行该控制层面的 Google 拥有的 VPC 网络。这不包括分析 Google 拥有的 VPC 网络中的配置。
  • 支持通过 Cloud Load Balancing 与 GKE 服务的连接。
  • 支持与 VPC 原生集群中的 GKE Pod 的连接。

对于不支持的 GKE 功能,请参阅“不支持的配置”部分

其他 Google Cloud 产品和服务

支持以下其他 Google Cloud 产品或服务:

  • 支持 Cloud SQL 实例,包括 Private Service Connect 连接VPC 网络对等互连连接外部副本
    • 在测试 Cloud SQL 实例的专用 IP 地址时,配置分析会确定数据包是否可传送到实例。这包括分析 Google 拥有的 VPC 网络中的配置。
    • 在测试 Cloud SQL 实例的公共 IP 地址时,配置分析会确定是否可以将数据包发送到运行该实例所在的 Google 拥有的 VPC 网络。这不包括分析 Google 拥有的 VPC 网络中的配置。
  • 支持 Cloud Functions(第 1 代)。
  • 支持 Cloud Run 修订版本。
  • 支持 App Engine 标准环境

不支持的配置

Connectivity Tests 配置分析不支持测试以下网络配置:

Connectivity Tests 如何分析实时数据平面

实时数据平面分析功能通过从来源端点向目的地发送多个跟踪记录数据包来测试连接。实时数据平面分析结果会显示发送的探测次数、成功到达目的地的探测次数以及可达性状态。此状态取决于成功交付的探测次数,如下表所示。

状态 到达目标的探测次数
可访问 至少 95%
无法访问
可部分访问 大于 0 且小于 95%

除了显示成功传送了多少个数据包外,动态验证还显示中位数和第 95 个百分位的单向延迟信息。

实时数据平面分析与配置分析无关。实时数据平面分析会独立地评估连接状态。

如果您看到配置分析和实时数据平面分析结果之间存在明显差异,请参阅排查 Connectivity Tests 问题

受支持的配置

实时数据平面分析支持以下网络配置。

流量

  • 两个虚拟机实例之间
  • 一个虚拟机实例和一个 Cloud SQL 实例之间
  • 虚拟机实例和 GKE 控制平面端点之间
  • 虚拟机实例和 Google 网络边缘位置之间
  • IP 协议:TCP、UDP

VPC 网络功能

您可以对使用以下功能的资源之间的连接进行动态验证:

不支持的配置

系统未明确列为支持的所有配置均不受支持。此外,连接被出站防护墙规则阻止的配置也不受支持。

对于任何给定测试,如果未执行实时数据平面分析功能,则上一次数据包传输结果字段中会显示 N/A-

注意事项和限制

在决定是否使用 Connectivity Tests 时,请评估以下注意事项。

  • Connectivity Tests 执行的配置分析完全基于 Google Cloud 资源的配置信息,可能无法代表 VPC 网络数据平面的实际条件或状态。
  • 虽然 Connectivity Tests 确实会获取一些动态配置信息(例如 Cloud VPN 隧道状态和 Cloud Router 上的动态路由),但它不会访问或维护 Google 内部生产基础架构和数据平面组件的运行状况。
  • Connectivity Tests 的 Packet could be delivered 状态保证流量可以通过数据平面。该测试的目的是验证可能导致流量下降的配置问题。

对于受支持的路由,实时数据平面分析结果会通过测试传输的数据包是否到达目的地来补充配置分析结果。

Connectivity Tests 对 Google Cloud 之外的网络一无所知

外部网络的定义如下:

  • 数据中心或其他设施(您可以在其中操作硬件设备和软件应用)所在的本地网络。
  • 运行资源的其他云服务商。
  • 互联网上将流量发送到 VPC 网络的主机。

Connectivity Tests 不会执行防火墙连接跟踪

VPC 防火墙的连接跟踪功能存储有关新连接和已建立连接的信息,并根据这些信息启用或限制后续流量。

Connectivity Tests 配置分析不支持防火墙连接跟踪,因为防火墙连接表位于虚拟机实例的数据平面中,无法访问。但是,只要 Connectivity Tests 启动出站连接,配置分析就可以通过允许通常由入口防火墙规则拒绝的返回连接来模拟连接跟踪。

实时数据平面分析不支持测试防火墙连接跟踪。

Connectivity Tests 无法测试配置为修改转发行为的虚拟机实例

Connectivity Tests 无法测试已配置为在数据平面中充当路由器、防火墙、NAT 网关、VPN 等的虚拟机实例。这种类型的配置使得很难评估虚拟机实例上运行的环境。此外,实时数据平面分析也不支持此测试场景。

Connectivity Tests 的测试结果产生时间可能会有所不同

获得 Connectivity Tests 结果可能需要 30 秒到最多 10 分钟。测试所花费的时间取决于 VPC 网络配置的大小以及您使用的 Google Cloud 资源数量。

下表显示了针对查询中的示例配置运行测试的所有用户的预期响应时间。此配置包含虚拟机实例、Cloud VPN 隧道和 Google Cloud 负载平衡器。

每个查询的响应时间
项目规模 Google Cloud 资源数量 响应延迟时间
小型项目 不到 50 来自所有用户的 95% 的查询需要 60 秒
中型项目 大于 50 但小于 5000 来自所有用户的 95% 的查询需要 120 秒
大型项目 大于 5000 来自所有用户的 95% 的查询需要 600 秒

实时数据平面分析不适用于持续监控

实时数据平面分析会执行一次性验证,以便进行诊断。如需持续监控连接和丢包情况,请使用性能信息中心

实时数据平面分析不会测试多个跟踪记录

如果路由不确定,则不支持实时数据平面分析。

VPC Service Controls 支持

VPC Service Controls 可为 Connectivity Tests 提供额外的安全保护,有助于降低发生数据渗漏的风险。使用 VPC Service Controls,您可以将项目添加到服务边界,从而防止资源和服务受到源自边界外部的请求的影响。

如需详细了解服务边界,请参阅 VPC Service Controls 文档的服务边界详情和配置页面。

后续步骤