Я пытаюсь изменить поведение протокола медленного запуска tcp на коробке CentOS5 (uname -r => 2.6.18-238.12.1.el5). Я прочитал, что следующая команда изменит мой icwnd на 8:
ip route change default via 1.2.3.4 dev eth1 initcwnd 8
echo "4094 $((8*16384)) 4194304" > /proc/sys/net/ipv4/tcp_wmem
(Примечание: часть tcp_wmem является более или менее приблизительным с моей стороны, я думаю, точное число не очень важно, если оно достаточно большое)
Однако само по себе это, похоже, не имеет никакого эффекта. Вместо первоначальной отправки 8 сегментов все равно отправляется только 3. После дальнейшего чтения я обнаружил, что медленный запуск tcp работает параллельно с контролем перегрузки, так что если ssthresh <cwnd, используется протокол управления перегрузкой, в противном случае используется медленный запуск (по крайней мере, это было мое понимание). Я сделал следующее, чтобы узнать, что было установлено в ssthresh по умолчанию:
[root@host ~]# cat /proc/sys/net/ipv4/tcp_congestion_control
bic
[root@host ~]# cat /sys/module/tcp_bic/parameters/initial_ssthresh
0
Видя, что ssthresh равен 0, я бы хотел увеличить его так, чтобы он был больше, чем icwnd, что, в свою очередь, заставило бы ядро использовать медленный запуск, который использовал бы значение по умолчанию, равное 8 окнам. Итак, я сделал следующее:
[root@host ~]# echo 13140 > /sys/module/tcp_bic/parameters/initial_ssthresh
Но все еще нет никаких изменений в поведении. Кто-нибудь знает, что я делаю не так?
(Я перезапускаю процесс apache, который я использую для проверки этого после каждого изменения). РЕДАКТИРОВАТЬ: я также делаю кэш очистки маршрутизации IP между изменениями, а также