
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_retries
realmente 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_frto
to 1
e setting tcp_low_latency
to 1
nã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 rto
valor 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 ip
util.
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.