Я хочу ограничить скорость каждого TCP-соединения. Могу ли я установить максимальный размер окна приема TCP в Linux?
С помощью iptables + tc можно ограничить только источник IP. Параметры net.core.rmem_max и net.core.wmem_max работали некорректно.
Вы можете изменить /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-соединения использовать окно размером 64 КБ. Максимальная их пропускная способность становится вопросом расстояния:
Пропускная способность (Мбит / с) = ((65535 * 8) / (задержка в мс / 1000)) / 1000000