可以强制将 TCP 窗口缩放至更高的值吗?

可以强制将 TCP 窗口缩放至更高的值吗?

是否可以在 Linux(CentOS 7.2)上增加 TCP 窗口缩放因子?我有一个从伦敦到芝加哥的长距离网络(100 Mbps),并且我在从伦敦机器(Windows Server 2012r2)到我的芝加哥 CentOS 机器的 sftp 上获得了 16 Mbps 的 TCP 吞吐量。我想尝试一下缩放因子,看看我的吞吐量是否会发生变化。

我的延迟是往返88毫秒。

我之所以问这个问题,是因为使用 UDP 我可以获得超过 90 Mbps 的速度,因此我在想,如果可以的话,将我的 TCP 吞吐量翻倍会很好。

我理解 TCP 是面向连接的,需要 ACK 等,并且实际上可能会对我的吞吐量产生负面影响。我正在做的是质疑制造商的智慧并尝试自己控制,而不是让自动调整自动调整。

Wireshark 显示我从 Windows 到 Linux 的 sftp 确实正在使用 TCP 窗口缩放,所以我知道它在我的路径中受到支持。

否则,我将研究 TCP 多路径(http://www.multipath-tcp.org/) 作为我的 LFN。

谢谢。

答案1

您可以通过增加 net.core.rmem_max 和 net.ipv4.tcp_rmem 来增加 tcp 窗口比例因子。当增加 rmem(接收器内存缓冲区)时,间接地增加了*rcv_wscale

例如,将接收窗口缓冲区增加到 32MB,我得到了 1024 的窗口比例因子:

echo 'net.core.rmem_max=33554432' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_rmem=4096 33554432 33554432' >> /etc/sysctl.conf
sysctl -p

无论如何,阅读您之前的评论,我认为您的发送方吞吐量受到限制,因此更改接收方参数不会提高 bps。可以发布捕获文件吗?

相关内容