提高高延迟连接的单个 HTTP 传输带宽(Ubuntu Linux)

提高高延迟连接的单个 HTTP 传输带宽(Ubuntu Linux)

我正在尝试通过远距离/延迟连接提高位于法国鲁贝的网络服务器(由 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 接收窗口以最大化连接。

相关内容