Atrasar a retransmissão TCP SYN no Linux

Atrasar a retransmissão TCP SYN no Linux

Nosso aplicativo se conecta a um dispositivo em uma rede de rádio. A rede precisa ativar o dispositivo antes que ele possa se comunicar, o que leva cerca de 3 segundos. Nestes 3 segundos nossas máquinas CentOS (Linux 3.10.0-957.62.1.el7.x86_64 x86_64) enviam 2 retransmissões do pacote TCP SYN. A retransmissão causa problemas na rede de rádio, então gostaria de aguardar as retransmissões por pelo menos 3 segundos.

A redução tcp_syn_retriesrealmente não altera as primeiras tentativas e gera um comportamento indesejado quando configurado abaixo de 4 (que também énão aconselhado). Apenas reduz as tentativas, mas ainda segue o mesmo padrão de tentativas (apenas menos).

Definir tcp_frtoto 1e setting tcp_low_latencyto 1não teve o efeito desejado.

Uma pergunta semelhante para Windows foi postadaaqui

Como altero o esquema de retransmissão TCP SYN no Linux?

Responder1

A retransmissão tcp do syn está relacionada com o rtovalor do tempo limite de recebimento ( ) (veja oCódigo fonte). Por padrão é igual a 1 segundo (definidoaquieaqui; min = 0,2 seg, máx = 120 seg).

Você pode alterar o valor rto para a rota especificada com iputil.

ip route replace 0/0 via <wifi-gw> dev <wifi-iface> rto_min 5s

Mas o próprio aplicativo pode alterar o valor rto com a chamada setsockopt.

informação relacionada