Я ищу механизм отключения медленного старта tcp для высокоскоростной сети. В настоящее время клиенты отправляют потоки по 100 МБ на случайные серверы с неблокируемым соединением 1 Гбит/с. По моим подсчетам, время завершения потоков составляет менее 1 секунды.
Но проблема в том, что они не могут достичь полной пропускной способности канала. Другими словами, они заканчивают на фазе медленного старта, прежде чем получить полную пропускную способность канала. Поэтому я хочу увеличить размер окна перегрузки tcp до максимума.
Кто-нибудь знает, как легко изменить это значение без модификации ядра?
Спасибо~
решение1
В старых версиях ядра Linux начальное значение окна перегрузки ( initcwnd
) составляло всего 2 (2*MSS или около 3 КБ), а начиная с версии 3.0 новое значение по умолчанию составляет 10 (около 14 КБ).
При условии, что ваше ядро Linux не очень старое, вы можете увеличить начальное окно перегрузки с помощью команды ip
, например такой:
Получить информацию о текущем маршруте по умолчанию:
$ ip route | grep default
default via 192.168.1.1 dev eth0 proto static
Присвойте новое initcwnd
значение этому маршруту:
$ sudo ip route change default via 192.168.1.1 dev eth0 proto static initcwnd 10
Это увеличивает начальное окно перегрузки по умолчанию до более высокого значения 10*MSS (~14КБ). Вы можете захотеть поиграть со значениями выше этого, возможно, до 40.
Для получения более подробной информации прочтитеоригинальное предложение Google по увеличению initcwndа такжеЭта статья.