如何在 Linux 中设置最大 TCP 接收窗口大小?

如何在 Linux 中设置最大 TCP 接收窗口大小?

我想限制每个 TCP 连接的速率。我可以在 Linux 中设置最大 TCP 接收窗口大小吗?

用iptables+tc只能限制IP源,net.core.rmem_max和net.core.wmem_max参数效果不好。

答案1

您可以修改该/proc/sys/net/ipv4/tcp_rmem参数来改变 TCP 窗口大小,其中三个值分别是最小窗口、默认窗口和最大窗口。

root@ghyt:~# cat /proc/sys/net/ipv4/tcp_rmem
4096    8192    16384

由于我一直无法弄清楚的原因,您设置的值只是非常宽松地得到遵守,但它仍然允许您减少所宣传的最大窗口。

或者,您可以关闭 TCP 窗口缩放 ( /proc/sys/net/ipv4/tcp_window_scaling),这将强制所有 TCP 连接使用 64KB 窗口。最大带宽则取决于距离:

带宽 (Mbit/s) = ((65535 * 8)/(延迟时间 (ms)/1000))/1000000

相关内容