当数据包通过覆盖网络和底层网络中的物理及逻辑实体(如 ESXi 主机、逻辑交换机和逻辑路由器)时,跟踪流会将数据包注入到 vSphere Distributed Switch (VDS) 端口,并沿着数据包的路径提供各个观察点。这样,您就可以标识数据包到达其目标所经过的一个或多个路径,或者反过来,标识数据包沿着哪个路径时被丢弃。每个实体都会报告输入和输出上的数据包处理,因此您可以确定接收数据包或转发数据包时是否出现问题。
请记住,跟踪流与在客户机虚拟机堆栈之间传送的 ping 请求/响应不同。跟踪流执行的操作是在标记的数据包通过覆盖网络时观察这些数据包。在每个数据包通过覆盖网络时,将监视该数据包,直至到达并可传输到目标客户机虚拟机。不过,绝不会将注入的跟踪流数据包实际传输到目标客户机虚拟机。这意味着即使客户机虚拟机电源关闭,跟踪流仍能够成功。
跟踪流支持以下流量类型:
- 第 2 层单播
- 第 3 层单播
- 第 2 层广播
- 第 2 层多播
您可以使用自定义标头字段和数据包大小构造数据包。跟踪流的源始终为虚拟机的虚拟网卡 (vNIC)。目标端点可以是 NSX 覆盖或底层中的任何设备。不过,您无法选择位于 NSX Edge 服务网关 (ESG) 北部的目标。目标必须位于相同的子网上,或者必须能够通过 NSX 分布式逻辑路由器访问目标。
如果源和目标虚拟网卡位于同一第 2 层域中,跟踪流操作将被视为第 2 层。在 NSX 中,这意味着它们位于同一 VXLAN 网络标识符(VNI 或分段 ID)上。例如,当两个虚拟机连接到同一逻辑交换机时,会发生这种情况。
如果配置了 NSX 桥接,未知第 2 层数据包将始终发送到网桥。通常,网桥会将这些数据包转发到 VLAN 并将跟踪流数据包报告为“已传送”。报告为“已递送”的数据包不一定表示跟踪数据包已传送到指定的目标。
对于第 3 层跟踪流单播流量,两个端点位于不同的逻辑交换机上,且具有连接到分布式逻辑路由器 (DLR) 的不同 VNI。
对于多播流量,源为虚拟机的虚拟网卡,目标为多播组地址。
跟踪流观察可能包括广播的跟踪流数据包观察。如果不知道目标主机的 MAC 地址,ESXi 主机将广播跟踪流数据包。对于广播流量,源为虚拟机的虚拟网卡。广播流量的第 2 层目标 MAC 地址为 FF:FF:FF:FF:FF:FF。要为防火墙检测创建有效的数据包,广播跟踪流操作需要子网前缀长度。子网掩码使 NSX 可以计算数据包的 IP 网络地址。
使用跟踪流的方式有两种:通过 API 和通过 GUI。API 即为 GUI 使用的 API,但是 API 允许您在数据包中指定确切设置,而 GUI 具有的设置更有限。
GUI 允许您设置以下值:
- 协议---TCP、UDP、ICMP。
- 活动时间 (TTL)。默认值为 64 个跃点。
- TCP 和 UDP 源及目标端口号。默认值为 0。
- TCP 标记。
- ICMP ID 和序列号。两者的默认值均为 0。
- 跟踪流操作的过期超时,以毫秒 (ms) 为单位。默认值为 10,000 ms。
- 以太网帧大小。默认值为每帧 128 字节。最大帧大小为每帧 1000 字节。
- 负载编码。默认值为 Base64。
- 负载值。