Gleam.br Wiki

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:*

  1. *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.
  2. *Integração BPE -> Túnel:* O motor BPE (gbr_bpm) passou a emitir o efeito lógico OpenReverseTunnel. O Ator OTP que gerencia a telemetria memoriza o process.Subject(yamux.SessionMessage) e, ao receber o efeito, executa um process.spawn não-bloqueante.
  3. *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.