LINUX.ORG.RU
ФорумAdmin

Подскажите как руками установить RTO tcp-сокета?


0

2

У TCP-сокетов есть такой параметр как RTO- retransmission timeout. Параметром кернеля net.ipv4.tcp_frto выставляется адаптивный алогоритм, по которому это RTO считается. И можно отключить этот алгоритм если задать tcp_frto=0.

Вопрос - если я отключу адаптивный алгоритм, то каким параметром руками можно указать то значение RTO, которое я хочу иметь? Не нагугливается. Дефолтовое, что-то около 1.5сек (у меня в книжке так написано), а мне хочется поставить 200..250мс. У меня снифером видно, что часто идут ретрансмиты, но после них приходит ACK от предыдущих пакетов. Как я вижу, что ACK именно от предыдущего пакета, а не от ретрансмитта? — ретрансмит идет с переупаковкой и имеет бОльшую длину.

Параметром кернеля net.ipv4.tcp_frto выставляется адаптивный алогоритм, по которому это RTO считается. И можно отключить этот алгоритм если задать tcp_frto=0

Откуда ты почерпнул эту неверную информацию? ftro - не алгоритм расчета rto, а специальный recovery-механизм

Для справки: RTO нельзя задать, он рассчитывается динамически по специальному алгоритму на основании round-trip-time.

Рекомендую почитать что-нибудь умное по теме, например «Congestion Control in Linux TCP»

Chumka ★★★
()
Ответ на: комментарий от Chumka

Видимо, неверно перевел.

есть две проги с почти одинаковым функционалом, одна на жаве, другая на с. Жавовская шлет данные — они без ретрансмиссий, сишная - с ними. Причем в сишной не используется никаких «хитрых» кернелевских вызовов - обычная работа с сокетами.

это наводит на мысль, что jvm как-то конфигурит сокет, тот его параметр, который относится к ретрансмиссиям. Или использует какое-то более низкоуровневое апи, регилируя параметры сокета самостоятельно. Но это пока лишь гипотеза.

chabapok
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.