Tabla de sesiones del firewall llena Firewall session table exhaustion
ID de la causa dc-firewall · Responsable principal Infraestructura de red (Equipo de infraestructura) · También Desarrollo de servidor (Equipo de desarrollo), Desarrollo de cliente (Equipo de desarrollo)
El firewall registra en la tabla de sesiones cada conexión que deja pasar para hacerle seguimiento. Cuando la tabla se llena, ya no puede aceptar conexiones nuevas.
Por qué Una avalancha de conexiones o un ataque lleva el número de sesiones al límite → Efecto No queda ninguna entrada libre para registrar una conexión nueva, así que se rechaza → En pantalla Para quien intenta entrar, el juego no conecta o se queda en carga infinita; algunas conexiones ya abiertas también se desconectan
Al conectar o tras un mantenimiento, Cuando se junta mucha gente
Responsable
Responsable principal Infraestructura de red (Equipo de infraestructura) · También Desarrollo de servidor (Equipo de desarrollo), Desarrollo de cliente (Equipo de desarrollo)
Tareas (Equipo de desarrollo)
Servidor: regular con una cola de inicio de sesión las conexiones que llegan de golpe, reutilizar conexiones para no abrir conexiones cortas una y otra vez, cerrar primero las conexiones cuyo heartbeat se cortó (para que las conexiones muertas no ocupen la tabla de sesiones mucho tiempo). Cliente: enviar heartbeats a intervalos de como mucho la mitad del timeout por inactividad más corto, reconectar automáticamente si se corta, pero con intervalos de reintento crecientes y aleatorios (para que no vuelvan todos a la vez).
Tareas (Equipo de infraestructura)
Ampliar la tabla de sesiones, limpiar rápido las conexiones que terminan pronto (acortar el timeout de las sesiones cerradas), avisar al equipo de desarrollo del nuevo valor cuando se acorte el timeout de sesiones inactivas para que ajuste el intervalo de heartbeat, bloquear los ataques, poner alertas sobre el uso de la tabla de sesiones.
En el gráfico
Topa con el límite · Sesiones del firewall, conexiones nuevas fallidas
Dónde mirar
Graficar las sesiones simultáneas del firewall junto con su límite y buscar en el log del dispositivo los paquetes descartados por no poder crear la sesión. En un firewall Linux, comparar nf_conntrack_count con nf_conntrack_max y buscar en dmesg “nf_conntrack: table full, dropping packet”; en una instancia de AWS, mirar conntrack_allowance_exceeded en ethtool -S
Se confirma si
Desde el momento en que el número de sesiones queda plano en el límite, aumentan las conexiones nuevas fallidas, junto con los registros de fallos al crear sesiones o los contadores de descartes
Se descarta si
Si el número de sesiones está muy por debajo del límite y aun así no conecta, apunta a “Desbordamiento de la cola de conexiones pendientes (backlog)” o al servidor de login. Si solo se cortan las conexiones inactivas, a “Expiración del seguimiento de conexiones en grupos de seguridad de la nube”
Se verifica con
Con herramientas de infraestructura (no hace falta código del juego)
Fuentes
Netfilter Conntrack Sysfs variablesLinux kernel Número máximo de entradas de la tabla de seguimiento de conexiones (nf_conntrack_max), tiempo que se conservan las conexiones que se están cerrando (TIME_WAIT y FIN_WAIT: 120 s por defecto), TCP establecido: 5 días por defecto, número actual de entradas (nf_conntrack_count)
Amazon EC2 security group connection trackingAWS Si una instancia supera el número de conexiones que puede seguir, se descartan los paquetes de las conexiones nuevas; las conexiones inactivas pueden agotar la tabla de seguimiento
Infrastructure layer attacksAWS Los ataques como el SYN flood acaparan los recursos de servidores, firewalls y balanceadores de carga
net/netfilter/nf_conntrack_core.c (Linux v6.12)Linux kernel Cuando la tabla de seguimiento de conexiones se llena, se registra “nf_conntrack: table full, dropping packet” y se descartan los paquetes de las conexiones nuevas