与 UDP 相比,TCP 速度和吞吐量非常慢

网络工程 转变 以太网 通讯协议 包分析 UDP
2021-07-07 18:02:25

我一直在监视 1 Gbps OM2 光纤连接到我们使用 Smokeping 的一台交换机......现在似乎有 3-4% 的平均损耗了几天......

开始使用 iperf 进行故障排除,将窗口大小设置为 65K...只是为了交叉检查我使用了相同窗口大小的路径测试...两个报告的速度都低于 10 Mbps (!),考虑到逻辑传输速率,这肯定是不可接受的当使用 PCI NIC 和内存传输时,大约是 Gpbs 连接的 1/4...

另一方面,UDP 测试从 iperf 和吸烟报告速度都在 300-400 Mbps 之间,就使用 LanSpeed 进行读写而言,我分别得到了 55-65 Mbps 和 20 Mbps ...

读过 iperf 在 Windows 上的实现不是一个可靠的实现后,我现在认为使用该工具进行测试首先在 Windows 上是错误的......

用于测试的机器是 Windows XP(客户端)> Windows XP(服务器)...所有 NIC 在协商和报告 1 Gbps 的 lan 链接的预协商速度方面都有自动...没有显示 mdix 错误或上/下在系统日志上... MTU 为 1500... 使用 Wireshark 的快速 Rawcap 跟踪和跟踪分析显示 TCP 零窗口错误,这清楚地解释了 TCP 吞吐量的显着下降...

Switch 是 SG200-50,在带外管理设施和 cli 方面表现不佳,因此,目前,除了在 Web 界面下之外,没什么可看的……已经禁用了 Bonjour 等零 DNS 服务……

任何建议非常感谢...

2个回答

正如罗恩所说,3-4% 的丢包率非常高。ThousandEyes 对丢包的影响进行了一些实验,发现任何超过 0.5% 的东西都是非常有害的。见:https : //blog.thousandeyes.com/a-very-simple-model-for-tcp-throughput/

希望更换光纤补丁(确保先清洁它!)会有所帮助。否则就开始寻找损失的其他来源。

答案就在您的问题中 :) TCP 零窗口意味着数据流将停止,直到接收端的缓冲区被清除到足以接收更多数据为止。换句话说,您的网络连接工作正常,问题在于您的 PC/服务器。阅读此链接。

零窗口故障排除 出于某种原因,发出零窗口警报的机器将不会再从主机接收任何数据。可能是该机器当时正在运行太多进程,并且其处理器已达到最大值。或者可能是 TCP 接收器中存在错误,例如 Windows 注册表配置错误。尝试确定当 TCP 零窗口发生时客户端正在做什么。

您没有看到 UDP 出现相同问题的原因是因为它是无连接的,因此它不知道也不关心远程端是否有可用的缓冲区,无论如何它都会继续发送更多数据。

我的建议是首先确保您用于测试的主机有足够的 RAM 和 CPU,如果有,请尝试从几个不同的主机进行测试。事实是,阻碍您前进的不是网络连接,而是您的主机没有足够快地处理接收到的数据,因此延迟了它们的 ACK,从而降低了您的连接速度。