Conntrack sin la API
Esta página responde a cuántas conexiones está rastreando el router, sin recorrer una tabla por una sesión de la API. El techo y los timeouts se leyeron los dos el 2026-09-14.
Medido en RB5009UG+S+ · 4 × 1,4 GHz Cortex-A72 · RouterOS 7.24.2 · Linux 5.6.3 · · agente a 10 Hz en un contenedor privilegiado efímero
El namespace informa de cero
Sección titulada «El namespace informa de cero»El namespace de red del propio contenedor informa de nf_conntrack_count = 0 por
muy ocupado que esté el router.
Medido en RB5009UG+S+ · 4 × 1,4 GHz Cortex-A72 · RouterOS 7.24.2 · · privileged=yes no cambia el espacio de nombres de red
El asignador slab no
Sección titulada «El asignador slab no»El asignador slab es global. Con privileged=yes el agente lee /proc/slabinfo
e informa del número de objetos activos de la caché nf_conntrack, que es la
población real de conntrack del router:
slab: {'nf_conntrack': 6240, 'skbuff_head_cache': 1008, 'skbuff_fclone_cache': 400, 'TCP': 327, 'UDP': 180, 'TCPv6': 117, 'UDPv6': 125, 'sock_inode_cache': 645, 'kmalloc-1k': 1152, 'kmalloc-2k': 905}En una muestra es el mapa slab; en /metrics es
mikroscope_. La familia no aparece sin
privileged=yes, porque /proc/slabinfo solo lo puede leer root. Una caché que
el kernel no tiene se omite, no se informa como un 0 permanente — el agente
también pide dst_cache e ip_dst_cache, que no aparecen en la salida de arriba.
/proc/slabinfo es el fichero más caro que analiza el agente, así que se lee con
un suelo de presupuesto de 6 Hz, redondeado a ticks enteros: uno de cada 2 ticks
(5 Hz) a los 10 Hz por defecto, uno de cada 17 a 100 Hz. 6 Hz es también más o
menos la tasa a la que se midió que cambia nf_conntrack. Se guarda cuando
cambia, más un latido cada 60 s.
Compruébalo una vez
Sección titulada «Compruébalo una vez»Compruébalo contra la API una vez, para fiarte de él a partir de entonces:
/ip/firewall/connection/print count-only # 6 212 el día anterior; slab decía 6 287Ese día se registraron dos lecturas del slab frente a él, 6 582 y 6 287; el fragmento de arriba es un tercer momento (6 240).
Los dos no coincidirán exactamente — se muestrean en instantes distintos, y el slab cuenta objetos que el asignador aún retiene —, pero se siguen. La diferencia de coste es lo que importa: la lectura de un fichero varias veces por segundo frente a recorrer una tabla por una sesión de la API.
El techo también se puede leer
Sección titulada «El techo también se puede leer»Junto a nf_conntrack_count en /proc/sys/net/netfilter, nf_conntrack_max no
va por namespace. Marca 966 656 desde dentro del contenedor — el mismo número
que un / de solo lectura da como
max-entries en el router de referencia (2026-09-14). Así que “cómo de llena está
la tabla de conexiones” se puede responder sin la API: la población del slab
sobre ese techo.
El agente lee el techo una vez al arrancar, porque es un sysctl que edita una
persona y no un contador, y lo envía junto a la población que acota:
mikroscope_ en /metrics, limit en la fila slab de
InfluxDB.
El colector ejecuta dos detecciones sobre la población y su techo:
conntrack-cliff, cuando nf_conntrack cae por debajo de la mitad de su valor
guardado anterior, y conntrack-high, cuando la ocupación supera el 80 % de
nf_conntrack_max y sube en los últimos 60 s, sin estimación de tiempo hasta
llenarse.
El mismo subárbol tiene una trampa. Los timeouts de conntrack que hay ahí
marcan los valores por defecto de Linux (tcp_timeout_established 432 000 s,
frente al 1d de RouterOS; leído el 2026-09-14), así que nunca deben presentarse
como la configuración del router.
Las cachés vecinas
Sección titulada «Las cachés vecinas»Merece la pena vigilarlas por sí mismas:
skbuff_head_cache/skbuff_fclone_cache— búferes de paquetes en tránsito. Un pico aquí durante un suceso de tráfico es presión de memoria que viene del camino de red, no de algo que hayas instalado.TCP/UDP/sock_inode_cache— sockets que mantiene el propio router.kmalloc-1k/kmalloc-2k— donde se ven las tormentas de asignaciones grandes.
La firma
Sección titulada «La firma»No hizo falta provocarlo ·
nf_conntracksubiendo hacianf_conntrack_maxmientras el recuento del propio namespace se queda en 0.nf_conntrackcayendo por debajo de la mitad de su valor guardado anterior, que es lo que marcaconntrack-cliff; la detección dice dónde mirar, no por qué cayó.skbuff_*subiendo con un suceso de tráfico, lo que sitúa la presión de memoria en el camino de red.