我正在尝试通过远距离/延迟连接提高位于法国鲁贝的网络服务器(由 OVH 托管)的文件传输速度。
我知道 TCP 连接会受到更高延迟的影响,但我听说调整 TCP 堆栈并使用更好的拥塞协议可以带来巨大的不同。我看过关于 TCP BBR 在高延迟连接上推动 10GB/s 的白皮书。
我希望将连接推至接近 1Gb/s 的限制,因为我可以使用低延迟(<20ms RTT)连接。
服务器设置
- 操作系统:Ubuntu 18.04
- Web 服务器:Apache 2.4.29
- 连接:1Gb/s
测试文件:Ubuntu 17.10.1 ISO(1.39GB)
测试“客户端”:
- 操作系统:Windows Server 2016
- 连接:1Gb/s
位置:
- 美国纽约(73 毫秒 RTT)
- 澳大利亚悉尼(也是 OVH 网络,267ms RTT)
结果:
纽约的下载速度约为 3.2 - 3.4 MB/s
悉尼的下载速度约为 900-950KB/s
有趣的是,使用下载管理器创建更多 HTTP/TCP 连接会导致下载速度增加。这意味着链接尚未饱和。
经过测试的调整:
首先我测试了几种 TCP 拥塞协议:
- TCP 立方(默认)
- TCP BBR
- TCP 快取
- 磷酸三钙
拥塞协议的变化几乎没有影响,纽约连接上最多为 200KB/s,悉尼连接上最多为 <50KB/s。
我还尝试设置其他内核参数,例如这里建议的参数: https://medium.com/@frjalex/linux-kernel-high-performance-networking-how-to-2d35f5900974
这些设置对下载速度没有明显的影响。
问题
如何调整 Linux TCP/IP 堆栈,以便单个 TCP(HTTP)连接在高延迟连接上最大限度地利用可用带宽?
问题
在 Linux 上使用 wget 运行测试后,我发现问题出在测试客户端上。显然,Windows(服务器 2016)没有充分增加 TCP 接收窗口以最大化连接。
答案1
在 Linux 上使用 wget 运行测试后,我发现问题出在测试客户端上。显然,Windows(服务器 2016)没有充分增加 TCP 接收窗口以最大化连接。