背景:我有一个在 VMware 环境中运行的 Windows Server 2003 虚拟实例(尽管我现在只能访问实际的客户操作系统)。我有一个自定义的 .NET Windows 服务(对源的完全访问权限),该服务正在侦听给定端口。
问题:客户端与此服务的通信最近开始降级。具体来说,客户端的数据包会随机停止到达侦听服务。一旦客户端的流量无法到达服务,它就再也无法正常工作。奇怪的是,使用 Wireshark 我可以看到每一个客户端的请求。但之后,vmxnet3 好像丢弃了该客户端的数据包。但只有该客户端的数据包。其他客户端完全不受影响。此外,服务记录每一个它接收单个字节,并且是成熟的服务器。以前所有服务器和客户端都运行良好,网络适配器也运行良好。一切都没有改变或更新。
有些人推测丢包是因为 rx 缓冲区已满。之所以提出这个推测是因为我们在 Wireshark 中看到了“TCP ZeroWindowProbe”错误。我怀疑 rx 缓冲区已满,因为当时的网络利用率只有 0.1%,而且许多其他客户端的通信完全没有受到影响。
问题:如何调试此适配器以更仔细地检查数据包发生的情况后它是否命中了虚拟适配器?我如何查看哪些数据包被丢弃以及丢弃的原因(无论是否为满的 rx 缓冲区)?
提前致谢。
答案1
尝试在适配器属性下在 vmxnet3 驱动程序上启用 RSS。