log.pdus em um
worker inteiro, que escreve os PDUs decodificados de todas as sessões em um log compartilhado que
o timer de cleanup mantém por quinze dias.
Uma capture faz o mesmo para uma sessão, sob demanda, e leva o resultado embora consigo.
smsg.ops.admin.token.
O que ela contém, e por que isso é o token admin
Tudo, decodificado: corpos de mensagem, números de destino, TLVs. Esse é o ponto — uma capture que deixasse o conteúdo de fora não poderia responder a pergunta pela qual se inicia uma. É também por isso que estas precisam do token admin em vez do token de leitura, e por que o.txt diz isso em seu próprio cabeçalho.
O que ela custa
Nada mensurável, que é a regra sob a qual o recurso foi construído. O tap é uma leitura de campo volatile por PDU em sessões que não estão sendo capturadas. Na sessão capturada ele faz umoffer limitado em uma fila de handoff e retorna; uma thread separada faz toda
a formatação e codificação, então nada caro roda na thread de I/O do Netty.
Medido em um listener de loopback a ~32 000 TPS — cerca de trinta vezes uma sessão real ocupada — uma
capture sob carga permaneceu dentro do ruído entre execuções do baseline sem capture, com dropped
em zero.
Limites, e nada tocando em disco
Qualquer que seja o teto atingido primeiro para a capture e diz qual —
stopped_because carrega
uma frase como reached the 8388608 byte limit. Um arquivo truncado sem explicação é um fato errado
sobre o cliente.
Captures vivem apenas em memória. O serviço roda sob ProtectSystem=strict, então um arquivo
teria que ficar no diretório de dados como conteúdo de cliente em texto plano; um buffer limitado que
expira faz a história de retenção ser “quinze minutos, aplicados” em vez de “até alguém
lembrar”. Uma quarta capture simultânea é recusada com 409.
O framing do pcap é sintético
O.pcap abre no Wireshark e seu dissector de SMPP o lê — mas os headers IPv4 e TCP ao redor de
cada PDU são fabricados.
O que é capturado são PDUs decodificados, re-encodados, não os bytes que estavam no fio. Endereços e
portas são os reais da sessão; números de sequência, janelas e flags são construídos para fazer o
stream reassemble.
Em uma porta não-padrão, diga ao Wireshark que é SMPP
O Wireshark registra o dissector SMPP na TCP 2775. Uma sessão em qualquer outra porta — um fornecedor na 2779, um segundo listener na 27778 — é dissecada como TCP puro, e o filtro SMPP então não casa com nada. Isso parece exatamente um arquivo corrompido, então descarte antes:tcpdump -r capture.pcap -n | head -1 te diz que número usar.
Sessões de fornecedor
Captures funcionam da mesma forma em uma conexão de fornecedor, que é por que toda sessão reporta umsession_id em ambos os tipos.
Esse id não significa que um bind de fornecedor pode ser derrubado — disconnect ainda responde
409 para um worker de fornecedor, porque a guarda é o tipo de worker, não a presença de um id.
Relacionado
Tokens and access
Por que isto precisa do token admin e health não.
Worker control
Disable, suspend e hold.