Connectivity Tests 概览

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

为了分析网络配置,Connectivity Tests 会通过虚拟私有云 (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 实例(一个位于左侧,另一个位于右侧)之间的跟踪流量。

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

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

网络抽象状态机。
网络抽象状态机(点击可放大)。

分析遵循多个有限状态之一

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

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

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

Google 管理的服务

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

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

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

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

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

由 Google 管理的服务的网络抽象状态机。
由 Google 管理的服务的网络抽象状态机(点击可放大)。

受支持的配置

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

来源端点

Connectivity Tests 配置分析支持以下来源端点:

目标端点

Connectivity Tests 配置分析支持以下目标端点:

Google Cloud 网络功能

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

Cloud Load Balancing 注意事项

对于 Cloud Load Balancing,Connectivity Tests 配置分析支持以下功能:

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

如需了解 Connectivity Tests 如何分析负载均衡器的后端,请参阅测试负载均衡器时生成的跟踪记录数量

Google Kubernetes Engine 注意事项

对于 GKE,Connectivity Tests 配置分析支持以下功能:

支持与 VPC 原生集群中的 GKE Pod 的连通性。不过,某些 GKE 网络功能(例如 GKE 网络政策)不受支持。

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

无服务器端点的注意事项

无服务器端点的来源 IP 地址通常是不确定的。 对于每次测试运行,Connectivity Tests 都会从可供无服务器端点使用的地址池中随机选择一个 IP 地址。如需了解有关如何为无服务器端点分配 IP 地址的一般信息,请参阅以下内容:

在某些情况下,直接 VPC 出站流量和无服务器 VPC 访问通道连接器会根据出站流量设置,将来自无服务器端点的流量路由到外部连接,而不是虚拟私有云网络。

对于不支持的无服务器功能,请参阅“不支持的配置”部分

不支持的配置

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

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

实时数据平面分析功能通过从来源端点向目的地发送多个探测数据包来测试连接。如果目标不是 Google Cloud 资源,则测试来源端点与网络边缘位置之间的连接。

实时数据平面分析结果会显示发送的探测次数、成功到达目的地的探测次数以及可达性状态。此状态取决于成功交付的探测次数,如下表所示。

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

除了显示成功递送了多少个数据包外,实时数据平面分析还显示中位数和第 95 个百分位的单向延迟信息。 当目标是互联网 IP 地址时,实时数据平面分析会发送探测,并显示流量可能会路由到的每个 Google 网络边缘路由器的结果。

限制

实时数据平面分析可能无法涵盖所有可能的网络路径:

  • 如果目标端点是具有多个后端的 Google Cloud 负载平衡器,则每个实时数据平面分析探测器都会发送到随机后端。有些后端可以由多个探测器进行测试,而其他后端可能根本无法进行测试。
  • 如果采用等价多路径 (ECMP) 路由,则每个实时数据平面分析探测器都会通过随机路由转发。许多探测器可以测试某些路由路径,而其他路由路径可能根本无法测试。
  • 实时数据平面分析探测的数量不取决于现有网络路径的数量,并且可能没有足够的实时数据平面分析探测来测试每条可能的路径。

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

受支持的配置

实时数据平面分析支持 Connectivity Tests 配置分析所测试的部分配置。

来源端点

实时数据平面分析支持以下来源端点:

目标端点

实时数据平面分析支持以下目标端点:

协议

实时数据平面分析支持 TCP 和 UDP 协议。

Google Cloud 网络功能

实时数据平面分析支持以下功能:

不支持的配置

实时数据平面分析不支持以下网络配置,也不会针对这些配置执行:

注意事项和限制

在决定是否使用 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 配置分析不支持防火墙连接跟踪,因为防火墙连接表位于Compute Engine实例的数据平面中,无法访问。但是,只要 Connectivity Tests 启动出站连接,配置分析就可以通过允许通常由入口防火墙规则拒绝的返回连接来模拟连接跟踪。

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

Connectivity Tests 无法测试配置为修改转发行为的 Compute Engine 实例

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

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

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

下表显示了针对查询中的示例配置运行测试的所有用户的预期响应时间。此配置包含 Compute Engine 实例、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 文档的服务边界详情和配置页面。

后续步骤