本页介绍了 Connectivity Tests 如何衡量可单手操作性。还介绍了配置分析和实时数据平面分析的工作原理。
可达性是什么?
如果网络配置(如防火墙和路由)允许流量从一个端点到达另一个端点,则资源可以从另一个端点访问。例如,如果网络配置应允许 VM1 将数据包发送到 VM2,则系统认为 VM2 可通过 VM1 访问。
请注意 Connectivity Tests 衡量可单手操作性的方式:
- Connectivity Tests 可测量从特定来源到特定目的地的可达性。VM1 能够访问 VM2 并不一定意味着 VM3 可以访问 VM2。
- Connectivity Tests 用于衡量单向可达性。VM1 可以打开与 VM2 的连接并不意味着 VM2 可以打开与 VM1 的连接。防火墙规则可能允许一个方向的流量,但不允许另一个方向的流量。
- Connectivity Tests 可测量特定协议和目标端口的可达性。VM1 可以在
tcp:443
连接到 VM2,这并不意味着它可以在tcp:80
上连接。 - Connectivity Tests 仅会测试 Google Cloud 可能会影响从来源到目标的数据包递送的 VPC 网络配置。它不会检查有效的服务器是否在目标位置运行,操作系统防火墙规则是否会阻止流量,或者安全软件是否阻止了携带病毒载荷的数据包。
可达性概念来自图论。从概念上讲,网络的整个可达性图包含所有端点作为节点,以及指示从源节点到目标节点的可达性的有向边缘。
可达性分析是一个较通用的术语,旨在描述可以用来确定网络可达性的分析正文。可达性分析中的一种用例是连接测试。在这种情况下,连接性是指网络连接的状态。
对于网络转发路径中的每个步骤,可达性分析都会针对底层网络配置进行测试并提供结果。例如,Connectivity Tests 会分析应用于模拟测试数据包的 Google Cloud 防火墙规则和路由。
Connectivity Tests 的工作方式
Connectivity Tests 包括两个主要组件:配置分析和实时数据平面分析。本部分会介绍这两种类型的分析的工作原理。
配置分析的工作原理
本部分介绍了 Connectivity Tests 及其组件的工作方式。
Connectivity Tests 会执行可达性分析,该测试根据理想配置模型评估测试路径中的 Google Cloud 资源。Connectivity Tests 可通过实时数据平面分析功能得到增强,该功能会发送数据包来验证数据平面的状态,并为受支持的配置提供基准信息。如需详细了解动态验证的工作原理,请参阅实时数据平面分析的工作原理。
作为网络管理员,您可以控制可能会影响分析结果的很多配置,不过也有一些例外情况。例如,您无法控制托管由 Google 管理的服务(如 Cloud SQL 实例)的 VPC 网络。此外,由于权限限制,您可能无法控制会影响网络的分层防火墙政策规则。
运行 Connectivity Tests 时,您输入一组特定的参数并以网络跟踪记录或查询的形式接收格式化的结果。如果一项测试在网络中具有多个可能的路径,则 Connectivity Tests 会生成多条跟踪记录(例如,在目标端点是具有多个后端的 Google Cloud 负载平衡器的情况下)。
- “匹配”表示 Connectivity Tests 找到一项 Google Cloud配置,该配置允许模拟的数据包继续通过测试路径。
- “不匹配”表示 Connectivity Tests 找不到匹配项。因此,配置不存在。
- “遭拒匹配”表示 Connectivity Tests 找到必须丢弃模拟测试数据包的Google Cloud 配置。
Connectivity Tests 组件
Connectivity Tests 是顶级组件,其中包含配置分析所需的所有测试子组件。这些部分包括以下几项:
- 来源端点和目标端点
- 测试及其跟踪的可达性详细信息,包括由配置分析确定的总体可达性结果
- 一条或多条跟踪记录,每条跟踪记录包含一个或多个步骤
- 每个步骤的状态
每个测试都有一个唯一的名称,每个步骤都有一个状态以及与之关联的 Info
元数据。例如,如果某个步骤检查路由,则该步骤中将包含 RouteInfo
元数据。
下图展示了从一个 Compute Engine 虚拟机实例到另一个 Compute Engine 实例的测试。如需查看测试组件的说明,请参阅以下各部分。
来源端点和目标端点
Connectivity Tests 配置分析支持没有来源端口的 5 元组数据包标头。这是因为不使用源端口验证 Google Cloud 网络配置中的资源。因此,您无需在运行测试时提供源端口。
数据包标头包含以下组件:
- 网络协议
- 源端点,包括以下各项之一:
- 虚拟机实例名称
- 来源 IP 地址
- 源 App Engine 服务
- Cloud Run 函数(第 1 代)环境
- Cloud Run 服务
- Cloud SQL 实例名称
- GKE 控制层面的集群名称
- 目标端点,包含以下各项之一和端口号:
- 虚拟机实例名称
- 目标 IP 地址
- Cloud SQL 实例名称
- GKE 控制层面的集群名称
- Private Service Connect 端点
您还可以指定 Google Cloud 或非Google Cloud 网络类型,或者结合使用网络类型和 IP 地址或虚拟机实例名称来唯一标识网络位置。
虚拟机、IP 地址和 Google 管理的服务支持以下网络协议:
- TCP
- UDP
- ICMP
- ESP
- AH
- SCTP
- IPIP
无服务器 VPC 访问通道连接器支持以下网络协议:
- TCP
- UDP
支持 TCP 或 UDP 协议的目标端口。如果未指定端口,则默认设置为端口 80
。
跟踪记录、步骤和状态
配置分析包含一条或多条跟踪记录。每条跟踪记录表示测试中的一条唯一的模拟数据包转发路径。
- 每条跟踪记录包含多个有序的步骤。
- 每个步骤都包含一个与 Google Cloud 配置相关的状态,Connectivity Tests 会检查此配置以发现该步骤。
- 状态分为非最终状态和最终状态。
非最终状态
非最终状态表示针对测试路径中的每项 Google Cloud资源(例如虚拟机实例、端点、防火墙规则、路由或 Google Cloud 负载平衡器)的配置检查。
非最终状态有四种:
- 初始
- 配置检查
- 转发
- 转换
如需了解详情,请参阅配置分析状态。
最终状态
每条跟踪记录必须以最终状态结束,这是跟踪过程的最后一步。
最终状态可能有四种:
Drop
Abort
Forward
Deliver
每种状态都有与之相关的原因。如需了解详情,请参阅每种最终状态的详细信息。
总体可达性结果
配置分析还提供了总体可达性结果,该结果可以采用以下四个值之一:Reachable
、Unreachable
、Ambiguous
或 Undetermined
。
了解总体可达性结果会有助于设置监控或自动化。
如需了解详情,请参阅总体可达性结果。
仿冒检查
当往返虚拟机实例的模拟数据包使用并非归该实例拥有的 IP 地址时,连接测试将执行仿冒检查。虚拟机拥有的 IP 地址包含所有虚拟机内部 IP 地址和次要 IP 地址。
如果该地址似乎是来自外部流量的地址(也称为外部地址),则该 IP 地址无法通过仿冒检查。
元数据
每种状态可以具有 Info
字段形式的与之关联的元数据。例如,InstanceInfo
包含虚拟机实例的详情,包括名称和 IP 地址。
实时数据平面分析的工作原理
实时数据平面分析的探测机制不涉及客机操作系统,并且对用户完全透明。探测将代表源端点注入网络,并在发送到目标端点之前被丢弃。探测不包括在常规网络计费、遥测指标和流日志中。
后续步骤
识别和修复 ICMP 问题(教程)