Arquitetura P2P e Redes Yamux
A fundação de telecomunicações do ecossistema Gleam-BR baseia-se em uma arquitetura Peer-to-Peer (P2P) de comunicação sem confiança implícita (Zero-Trust). Ela foi projetada para garantir que nós implantados na Borda (Edge) e na Nuvem possam trocar dados de forma segura, resiliente a partições de rede e eficiente.
1. Multiplexação Criptográfica via Yamux
Para contornar as limitações de firewalls residenciais e corporativos sem a necessidade de abrir portas de entrada públicas na internet (portas inbound), a malha utiliza a multiplexação de conexões via Yamux.
- Yamux (Yet Another Multiplexer): Permite fatiar uma única conexão física TCP bidirecional em múltiplos canais lógicos independentes (streams).
- Conexão Reversa (Reverse Tunneling): Os nós de borda abrem conexões de saída (outbound) para nós gateway na nuvem. A partir desse canal de saída, a comunicação em ambas as direções é estabelecida, eliminando a exposição de portas locais.
-
Stream 0 (Telemetria): Reservado exclusivamente para a transmissão contínua de logs e métricas estruturadas em Influx Line Protocol (ILP) geradas pelo pacote
gbr_telemetry.
2. Kademlia DHT e Descoberta de Nós
A localização de peers, recursos e serviços na rede é orquestrada por uma Tabela Hash Distribuída (DHT) baseada no algoritmo Kademlia.
-
DHT Kademlia: Mapeia chaves criptográficas de identificação de nós (
did:key) para seus respectivos erros físicos (multiaddresses) e portas lógicas multiplexadas. - Bootstrap Nativo: Durante o processo de inicialização de um nó, ele conecta-se a nós sementes pré-configurados e utiliza o protocolo Identify para mapear sua própria topologia física, obtendo sucesso na travessia de NATs dinâmicos.
3. Mensageria Eficiente com GossipSub v1.1
Para a disseminação massiva de eventos globais, sincronização de estado descentralizado e orquestração de logs em rede, adotamos o protocolo de pub/sub GossipSub v1.1.
- Malha e Fofoca (Mesh and Gossip): O GossipSub organiza os nós em tópicos de interesse comuns e espalha metadados (fofoca) antes de transmitir os payloads pesados de dados.
- Decodificação em Rust (Rustler NIFs): Para mitigar o risco de starvation (bloqueio) do agendador Erlang decorrente da decodificação pesada de mensagens Protobuf/GossipSub de alta frequência, delegamos essa operação crítica para NIFs seguras escritas em Rust.