Есть ли способ начать с размером окна TCP больше, чем по умолчанию, на сервере ubuntu?
Я вижу, что в /proc/sys/net/ipv4/
например:
/proc/sys/net/ipv4/tcp_window_scaling (which is 1)
/proc/sys/net/ipv4/tcp_adv_win_scale (2)
/proc/sys/net/ipv4/tcp_slow_start_after_idle (1)
/proc/sys/net/ipv4/tcp_window_scaling (1)
Поскольку TCP является полнодуплексным, существует два начальных окна перегрузки (IW), одно для отправки и одно для приема. Их можно установить с помощью команды route, однако в версии 2.6.32 я обнаружил, что она не работает после просмотра захваченных пакетов. На моем рабочем столе (3.0.0) IW по умолчанию выше (10 пакетов), поэтому я не тестировал это в более поздней версии, так как это то, что я хотел увеличить.
Теоретически их можно установить с помощью ip route
с чем-то вроде:
sudo ip route add <DEST IP> via <GATEWAY IP> proto static initcwnd 10
Для отправки И.В. Для получения изменения IW initcwnd
к initrwnd
.
Если это работает, я считаю, что вам следует указать новый размер окна, отраженный в SYN или SYN / ACK-пакете (в зависимости от окна отправки / получения) установления связи TCP.. Поскольку окно перегрузки является внутренним и отличается от окна в заголовке TCP, единственный способ узнать, что оно работает, - это протестировать соединение с более высокой задержкой и посмотреть, будет ли отправлено больше начальных пакетов. Я только недавно сам смотрел на это, поэтому в качестве оговорки я на 100% уверен во всем этом.
После этого размер окна должен масштабироваться в соответствии с параметрами Linux по умолчанию, не вызывая проблем с привязкой к окну. Вы, вероятно, не захотите связываться с этим, если у вас нет захвата, показывающего, что вы часто сталкиваетесь с ситуациями, когда вы привязаны к окну (получатель отправит большое количество пакетов с Win 0
если это так.)
Там есть net.ipv4.tcp_wmem
и net.ipv4.tcp_rmem
. Вы можете прочитать значения этих переменных с помощью sysctl -n
а также установите их с помощью sysctl
.
Довольно хорошее вступление Вот.