Equilibrio L4 usando ipvs: descartar paquetes RST - conmutación por error

Equilibrio L4 usando ipvs: descartar paquetes RST - conmutación por error

Tengo un equilibrador de carga ipvs L4 con configuración de equilibradores enviados L7. Digamos que uno de mis balanceadores L4 falla y gracias al hash constante, el tráfico que ahora maneja (gracias a BGP) por otro balanceador L4 se envía al mismo nodo L7.

Esto debería funcionar sin problemas y creo que es una configuración común.

El problema está en las conexiones de larga duración. Cuando el nuevo nodo L4 recibe el tráfico (solo datos: paquetes ACK/PUSH) y el nodo no ha recibido ningún paquete SYN, el nodo simplemente envía el paquete RST al cliente, que finaliza la conexión. La siguiente imagen ilustra esto.

Esto no debería estar sucediendo y mi pregunta es: ¿hay alguna manera (una configuración sysctl o algo así) que sea la razón de esto? Sé que quizás pueda descartar paquetes RST usando iptables, pero eso no suena bien.

ingrese la descripción de la imagen aquí

Respuesta1

En realidad, existe una variable sysctl net.ipv4.vs.sloppy_tcppara este problema específico (https://lore.kernel.org/patchwork/patch/386081/?fbclid=IwAR17t0jEvRSlvZFch1Lz_CDMjYOzUluuNGQmiyKequZK1Vq4kI75vezWEGs) que resuelve esto.

Muchas gracias a Patric Shuff, que me ayudó a resolver esto (excelente presentación sobre este tema).https://www.usenix.org/conference/lisa16/conference-program/presentation/shuff).

información relacionada