https://image.nostr.build/2c0a35da4ab2a0323ae3aefcd126333bea141f984e7892d80e17d19c8130b043.jpg
O **Yggdrasil** é um protocolo de roteamento experimental e um roteador de software projetado para criar redes #mesh (em malha) escaláveis e totalmente criptografadas de ponta a ponta. Ele funciona como uma rede de sobreposição (**overlay**) #IPv6, o que permite que aplicativos que suportam IPv6 operem sem modificações, mesmo sobre infraestruturas IPv4 existentes ou redes sem acesso à Internet.
Abaixo estão os pilares fundamentais do seu funcionamento:
### 1. Identidade Criptográfica e Endereçamento
No #Yggdrasil, a identidade real de um nó não é um endereço IP atribuído por uma autoridade central, mas sim sua **chave criptográfica pública**.
* **Geração de Endereços:** Os endereços IPv6 estáveis são gerados a partir dessa chave pública. Isso torna os endereços **independentes de localização**; você pode mover seu dispositivo para uma rede física diferente e ele manterá o mesmo endereço IP.
* **Faixa de IPs:** O protocolo utiliza o prefixo `200::/7`, uma região do espaço IPv6 reservada e não utilizada na Internet pública, evitando conflitos de roteamento. Cada nó recebe um endereço individual `/128` e um prefixo `/64` opcional para atuar como #roteador para outros dispositivos na sua rede local.
### 2. Arquitetura de Rede: A Árvore Geradora (Spanning Tree)
O Yggdrasil organiza logicamente todos os nós em uma **árvore geradora** unificada para sincronizar o estado da rede e atribuir coordenadas.
* **Eleição do Root:** O "nó raiz" (root) é eleito dinamicamente com base na menor identidade criptográfica (NodeID) da rede.
* **Coordenadas de Árvore:** Cada nó mantém coordenadas que definem sua posição relativa à raiz. Essas coordenadas mudam se a topologia da rede for alterada, mas a identidade criptográfica do nó permanece constante.
### 3. Mecanismos de Roteamento
O tráfego de dados é governado por um esquema de **roteamento guloso (greedy routing)** em um espaço métrico lógico.
* **Encaminhamento por Salto:** Cada nó examina seus vizinhos diretos e seleciona aquele que está logicamente mais "próximo" do destino, com base nas coordenadas de árvore.
* **Atalhos (Shortcuts):** O roteamento é oportunista. Se houver um link direto entre dois nós que estão longe na árvore lógica, mas fisicamente conectados, o algoritmo usará esse link se ele encurtar a distância métrica para o alvo.
* **Filtros de Bloom (Versão 0.5+):** Nas versões mais recentes, o Yggdrasil substituiu tabelas complexas (DHT) por **Filtros de Bloom**. Os nós trocam informações sobre quais chaves públicas são alcançáveis através de cada link, permitindo buscas de destino eficientes sem inundar a rede com tráfego de manutenção.
### 4. Segurança e Privacidade
A segurança não é opcional no #Yggdrasil; ela é intrínseca ao design.
* **Criptografia Ponta a Ponta:** Todo o tráfego é obrigatoriamente criptografado usando bibliotecas padrão da indústria (como #Ed25519 para identidade e #XSalsa20-Poly1305 para dados).
* **Privacidade de Dados:** Os nós intermediários que roteiam pacotes não podem descriptografar ou ler o conteúdo do tráfego.
* **Forward Secrecy:** O protocolo utiliza rotação de chaves de sessão (**ratcheting**), garantindo que, se uma chave de longo prazo for comprometida, as sessões de tráfego passadas permaneçam protegidas.
### 5. Conexões e Peering
Para participar da rede, um nó precisa estabelecer conexões (**peerings**) com outros nós. Isso ocorre de duas formas principais:
* **Multicast Local:** Em redes locais (LAN/Wi-Fi), o Yggdrasil pode descobrir e conectar-se automaticamente a outros nós próximos.
* **Peers Públicos/Manuais:** Para se conectar à rede global através da Internet, o usuário adiciona endereços de "peers públicos" no arquivo de configuração, estabelecendo túneis TCP, TLS ou QUIC.
Em resumo, o funcionamento do Yggdrasil combina matemática de grafos (árvores e espaços métricos) com criptografia moderna para criar uma rede que se auto-organiza e se cura sem necessidade de administradores centrais.