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 Tests 会将数据包路由到下一个跃点(内部负载均衡器)。
在上一个示例中,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 管理的服务之间的连接中的测试示例。
受支持的配置
Connectivity Tests 配置分析支持测试以下部分所述的网络配置。
流量
- 虚拟机实例与互联网之间
- 虚拟机实例与虚拟机实例之间
- Google Cloud 与本地网络之间
- 通过 Network Connectivity Center 连接的两个本地网络之间
- 两个 Network Connectivity Center VPC spoke 之间
VPC 网络功能
您可以测试使用以下功能的资源之间的连接(只要适用,IPv4 和 IPv6 都受支持):
- VPC 网络
- VPC 网络对等互连
- 共享 VPC
- 专用 Google 访问通道
- 别名 IP 范围
- RFC 1918 地址范围外的专用 IP 地址
- 具有多个网络接口的 Compute Engine 虚拟机实例
- 从对等互连的 VPC 网络导入的自定义路由
- VPC 传递性路由
- VPC 防火墙规则
- 区域级网络防火墙政策
- 分层防火墙政策和全球网络防火墙政策
- 防火墙的 Resource Manager 标记,如果附加到具有单个网络接口的 Compute Engine 实例。
- 基于政策的路由
- Private Service Connect
- 具有 IPv6 地址的实例,包括具有多个网络接口的实例
Google Cloud 混合网络解决方案
IPv4 和 IPv6 都支持以下混合网络解决方案:
- Cloud VPN
- Cloud Interconnect
- Cloud Router 路由器,包括使用 BGP 的动态路由和静态路由
Network Connectivity Center
支持 Network Connectivity Center 的 VPC spoke 和混合 spoke。
Cloud NAT
Cloud Load Balancing
- 支持以下 Google Cloud 负载均衡器类型:外部应用负载均衡器、外部直通网络负载均衡器、外部代理网络负载均衡器、内部应用负载均衡器、内部直通网络负载均衡器和内部代理网络负载均衡器。
- 支持测试与负载均衡器 IP 地址的连接。
- 支持验证 Cloud Load Balancing 健康检查与后端的连接。
- 内部 TCP/UDP 负载均衡器可用作下一个跃点。
对于不支持的 Cloud Load Balancing 功能,请参阅“不支持的配置”部分。
Google Kubernetes Engine (GKE)
- 支持与 GKE 节点和 GKE 控制平面之间的连接。
- 支持通过 Cloud Load Balancing 与 GKE 服务的连接。
- 支持与 VPC 原生集群中的 GKE Pod 的连接。不过,某些 GKE 网络功能(例如 GKE NetworkPolicies)不受支持。
对于不支持的 GKE 功能,请参阅“不支持的配置”部分。
其他 Google Cloud 产品和服务
支持以下其他 Google Cloud 产品或服务:
- 支持 Cloud SQL 实例,包括 Private Service Connect 连接、VPC 网络对等互连连接和外部副本。
- 支持 Memorystore for Redis 实例。
- 支持 Memorystore for Redis Clusters。
- 支持 Cloud Run functions(第 1 代)。
- 支持 Cloud Run 修订版本。
- 支持 App Engine 标准环境。
不支持的配置
Connectivity Tests 配置分析不支持测试以下网络配置:
- 不支持包含地理位置对象、威胁情报数据或 FQDN 对象的防火墙政策规则。如果此类防火墙可能会影响特定流量流,Connectivity Tests 会返回相应的警告。
- 如果防火墙的 Resource Manager 标记附加到具有多个网络接口的 Compute Engine 实例,则不受支持。
- 不支持定位到 FQDN 的互联网 NEG 后端。不过,系统支持定位到 IP 地址的互联网 NEG 后端。
- 不支持 Cloud Service Mesh 负载平衡器(使用
INTERNAL_SELF_MANAGED
转发规则)。 - 跟踪与外部应用负载均衡器 IP 地址的连接时,不会考虑或使用 Google Cloud Armor 政策。
- 不支持 Private Service Connect 端口映射。
- 不支持连接到 Compute Engine 虚拟机的高可用性 VPN 网关。
- 在跟踪与 GKE 集群和节点中的 IP 地址的连接时,不会考虑或使用 GKE NetworkPolicy 和IP 伪装配置。
- 不支持使用 DNS 名称定义的 Cloud SQL 外部服务器副本。不过,系统支持由 IP 地址定义的外部服务器副本。
- 不支持 Cloud Run Functions(第 2 代)。不过,您可以通过为底层 Cloud Run 修订版本创建 Connectivity Tests 来测试 Cloud Run functions(第 2 代)的连接。每次部署 Cloud Run 函数时,系统都会创建一个 Cloud Run 修订版本。
- 不支持 App Engine 柔性环境。
- 不支持 Cloud Run 作业。如需了解详情,请参阅“服务和作业:运行代码的两种方式”。
- 不支持 Cloud Run 直接 VPC 出站流量。
Connectivity Tests 如何分析实时数据平面
实时数据平面分析功能通过从来源端点向目的地发送多个跟踪记录数据包来测试连接。实时数据平面分析结果会显示发送的探测次数、成功到达目的地的探测次数以及可达性状态。此状态取决于成功交付的探测次数,如下表所示。
状态 | 到达目标的探测次数 |
---|---|
可访问 | 至少 95% |
无法访问 | 无 |
可部分访问 | 大于 0 且小于 95% |
除了显示成功传送了多少个数据包外,动态验证还显示中位数和第 95 个百分位的单向延迟信息。
实时数据平面分析与配置分析无关。实时数据平面分析会独立地评估连接状态。
如果您看到配置分析和实时数据平面分析结果之间存在明显差异,请参阅排查 Connectivity Tests 问题。
受支持的配置
实时数据平面分析支持以下网络配置。
流量
- 两个虚拟机实例之间
- 一个虚拟机实例和一个 Cloud SQL 实例之间
- 虚拟机实例和 GKE 控制平面端点之间
- 虚拟机实例和 Google 网络边缘位置之间
- IP 协议:TCP、UDP
VPC 网络功能
您可以对使用以下功能的资源之间的连接进行动态验证:
- VPC 网络对等互连
- 共享 VPC
- 别名 IP 范围
- 外部 IP 地址
- 内部 IP 地址,RFC 1918 地址范围外的专用 IP 地址
- 自定义路由
- 负载均衡器作为目标。负载均衡器支持的后端包括实例组、可用区级网络端点组 (NEG) 和 Private Service Connect 后端
- 入站防火墙规则,包括入站分层防火墙政策规则和入站 VPC 防火墙规则
- 具有 IPv6 地址的实例,包括具有多个网络接口的实例
- 已发布服务的 Private Service Connect 端点和 Google API
不支持的配置
系统未明确列为支持的所有配置均不受支持。此外,连接被出站防护墙规则阻止的配置也不受支持。
对于任何给定测试,如果未执行实时数据平面分析功能,则上一次数据包传输结果字段中会显示 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 文档的服务边界详情和配置页面。
后续步骤
识别和修复 ICMP 问题(教程)