从任何具有高延迟的网络发送来自Windows的数据都很慢,但是Linux很快

时间:2012-05-22 00:15:21

标签: tcp

通过网络以高延迟将数据从Windows计算机发送到Windows或Linux,使用10%的链接容量。同时,从Linux通过同一网络发送相同的数据几乎快十倍。即使仅通过延迟数据包在低延迟连接上模拟高延迟,问题也是相同的。

它似乎影响了我尝试过的所有应用程序。测试在Windows 7和Windows Server 2003上执行,并观察到相同的行为。

从tcpdump可以看出,Windows在快速突发中发送大约10个数据包然后等待ACK,同时Linux发送大约100个数据包而不等待ACK。

我试图在没有改进的情况下启用Compound TCP。

我正在寻找有关如何了解正在发生的事情的任何建议。以及如何解决它。

1 个答案:

答案 0 :(得分:4)

我能够通过在Windows注册表中增加TCP发送和接收缓冲区的大小来完全解决我的问题(需要重新启动):

[HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Services \Afd \Parameters]
DefaultReceiveWindow = 1024000
DefaultSendWindow = 1024000

如果这些密钥不存在,则两者的默认值均为8KB,这是Windows等待ACK之后的数据量。

同时确保

netsh interface tcp show global

未显示

Receive Window Auto-Tuning Level    : disabled

否则,TCP窗口缩放不仅会被禁用,也会被禁用,这会显着限制连接速度。要启用TCP窗口缩放,请将自动调整级别设置为正常:

netsh interface tcp set global autotuninglevel=normal