2

Я пытаюсь изменить поведение протокола медленного запуска 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 между изменениями, а также

2 ответа2

2

Я немного читал на эту тему и считаю, что для установки собственного cwnd необходима версия ядра 2.6.33. Я нашел это упомянуто в этом сообщении в блоге: http://www.igvita.com/2011/10/20/faster-web-vs-tcp-slow-start/

Если TCP медленный запуск, ну, в общем, медленный, то разве мы не можем просто сделать это быстрее? Оказывается, до самого недавнего времени сам стек TCP TCP был жестко запрограммирован для запуска с окном перегрузки (cwnd) всего 3 или 4 пакета, что составляет около 4 КБ (~ 1360 байт на пакет).

Здесь также обсуждается вопрос о добавлении его в ядро: http://kerneltrap.org/mailarchive/linux-netdev/2009/10/26/6258693.

Я не могу найти никакой хорошей информации по настройке, но это то, с чем я столкнулся сегодня ...

0

Вам придется обновить до centos6.2.

По словам Рел Док:

TCP начальное окно перегрузки по умолчанию

В Red Hat Enterprise Linux 6.2 в качестве начального окна перегрузки TCP по умолчанию теперь установлено значение 10, согласно RFC 5681. Кроме того, код начального окна, общий для TCP и CCID-2, был объединен.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .