我想限制每个 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