log.pdus en un worker
entero, que escribe los PDUs decodificados de cada sesión en un log compartido que el temporizador de limpieza mantiene durante
una quincena.
Una captura hace lo mismo para una sesión, bajo demanda, y se lleva el resultado consigo.
smsg.ops.admin.token.
Qué contiene, y por qué eso es el token admin
Todo, decodificado: cuerpos de mensajes, números de destino, TLVs. Ese es el objetivo. Una captura que dejara fuera el contenido no podría responder la pregunta por la que la gente empieza una. También es por lo que estas necesitan el token admin en lugar del token de lectura, y por qué el.txt
lo dice en su propia cabecera.
Qué cuesta
Nada medible, que es la regla a la que se construye la funcionalidad. El tap es una lectura de campo volátil por PDU en sesiones que no se están capturando. En la sesión capturada hace unoffer acotado en una cola de traspaso y regresa; un hilo separado hace
todo el formateo y codificación, así que nada caro corre en el hilo de I/O de Netty.
Medido en un listener loopback a ~32 000 TPS, aproximadamente treinta veces una sesión real ocupada, una captura
bajo carga se mantuvo dentro del ruido de ejecución a ejecución de la línea base no capturada, con dropped a cero.
Límites, y nada tocando disco
Cualquiera que sea el límite alcanzado primero detiene la captura y dice cuál.
stopped_because lleva una
frase como reached the 8388608 byte limit. Un archivo truncado sin explicación es un hecho equivocado
sobre el cliente.
Las capturas viven solo en memoria. El servicio corre bajo ProtectSystem=strict, así que un archivo tendría
que estar en el directorio de datos como contenido de cliente en texto plano; un buffer acotado que expira hace que la
historia de retención sea “quince minutos, aplicados” en lugar de “hasta que alguien recuerde”. Una cuarta
captura concurrente se rechaza con 409.
El framing del pcap es sintético
El.pcap abre en Wireshark y su disector SMPP lo lee. Pero las cabeceras IPv4 y TCP alrededor
de cada PDU están fabricadas.
Lo que se captura son PDUs decodificados, recodificados, no los bytes que estaban en el cable. Direcciones y puertos
son los reales de la sesión; los números de secuencia, ventanas y flags están construidos para hacer que el stream
se reensamble.
En un puerto no estándar, dile a Wireshark que es SMPP
Wireshark registra el disector SMPP en TCP 2775. Una sesión en cualquier otro puerto (un proveedor en 2779, un segundo listener en 27778) se diseca como TCP plano, y el filtro SMPP entonces coincide con nada. Eso se parece exactamente a un archivo corrupto, así que descártalo primero:tcpdump -r capture.pcap -n | head -1 te dice qué número usar.
Sesiones de proveedor
Las capturas funcionan igual en una conexión de proveedor, por eso cada sesión reporta unsession_id en
ambos tipos.
Ese id no significa que un bind de proveedor pueda desconectarse. Disconnect aún responde 409 para un worker
de proveedor, porque la guardia es el tipo de worker, no la presencia de un id.
Relacionado
Tokens y acceso
Por qué esto necesita el token admin y health no.
Control de workers
Deshabilitar, suspender y retener.