GBR: ADR-0005 Túnel Reverso Zero-Trust Acionado por Rede de Petri (gbr_p2p_tunnel) | Wiki
Documentação de engenharia e especificações técnicas da Gleam-BR.
GBR: ADR-0005 Túnel Reverso Zero-Trust Acionado por Rede de Petri (gbrp2ptunnel)
- *Status:* Aceito
- *Data:* 2026-05-01
*Contexto:*
O sistema de telemetria necessita prover suporte a banco de dados (DBeaver) sem expor portas corporativas (Firewall/NAT). A solução de arquitetura exige um túnel TCP reativo e multiplexado que seja invocado apenas sob demanda lógica, sem manter conexões zumbis. Além disso, o protocolo criptográfico Noise falhava sob fragmentação natural do TCP em cargas pesadas (1187 bytes da chave pública do nó + Protobuf).
*Decisão:*
-
*Buffer de Remontagem de Frames:* Implementado Binary Pattern Matching no Ator TCP para tratar fragmentação. O Ator armazena a "cauda" dos pacotes e só aciona a NIF Rust de decriptação (Noise) quando o frame exato delimitado pelo prefixo
u16é atingido, reativando a leitura via{active, once}para garantir backpressure. -
*Integração BPE -> Túnel:* O motor BPE (
gbr_bpm) passou a emitir o efeito lógicoOpenReverseTunnel. O Ator OTP que gerencia a telemetria memoriza oprocess.Subject(yamux.SessionMessage)e, ao receber o efeito, executa umprocess.spawnnão-bloqueante. -
*Roteador Piper:* Criação de um loop infinito de aceitação local (
tunnel_accept_loop), que intercepta o TCP do DBeaver e encapsula os bytes em mensagens Yamux, trafegando-as pela malha P2P segura.
*Consequências:*
-
*Positivas:* Interoperabilidade comprovada com a especificação global
libp2p; túneis são orquestrados por regras matemáticas de telemetria; alta concorrência mantida pois o túnel opera em thread separada do loop principal de ingestão de métricas. -
*Negativas/Riscos:* A operação das NIFs de criptografia Ed25519 (Identity Protobuf) requer a anotação
"DirtyCpu"no Rustler para não causar inanição (starvation) no Scheduler principal da BEAM.