Retrasar la retransmisión TCP SYN en Linux

Retrasar la retransmisión TCP SYN en Linux

Nuestra aplicación se conecta a un dispositivo en una red de radio. La red tiene que activar el dispositivo antes de que pueda comunicarse, lo que demora unos 3 segundos. En estos 3 segundos, nuestras máquinas CentOS (Linux 3.10.0-957.62.1.el7.x86_64 x86_64) envían 2 retransmisiones del paquete TCP SYN. La retransmisión causa problemas en la red de radio, por lo que me gustaría esperar con las retransmisiones durante al menos 3 segundos.

Reducirlo tcp_syn_retriesrealmente no cambia los primeros reintentos y genera un comportamiento no deseado cuando se configura por debajo de 4 (que también esno aconsejado). Simplemente reduce los reintentos pero sigue el mismo patrón de reintentos (solo que menos).

Configurar tcp_frtoto 1y setting tcp_low_latencyto 1no tuvo el efecto deseado.

Se publica una pregunta similar para Windows.aquí

¿Cómo cambio el esquema de retransmisión TCP SYN en Linux?

Respuesta1

La retransmisión tcp del syn está relacionada con el rtovalor del tiempo de espera de recepción ( ) (consulte lacódigo fuente). Por defecto equivale a 1 segundo (definidoaquíyaquí; mín = 0,2 s, máx = 120 s).

Puede cambiar el valor de rto para la ruta especificada con iputil.

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

Pero la propia aplicación puede cambiar el valor de rto con la llamada setsockopt.

información relacionada