Rede Yggdrasil
(yggdrasil-network.github.io)- Yggdrasil é uma rede que experimenta uma alternativa descentralizada aos protocolos de roteamento estruturado, usando um método de roteamento compacto pensado para redes mesh de grande escala
- A implementação atual é um roteador de software em espaço de usuário leve e fácil de configurar, que conecta roteamento IPv6 criptografado de ponta a ponta entre os participantes
- O peering de nós pode ser configurado por LAN, links ponto a ponto e conexões TCP/TLS pela internet; o peering em si pode ocorrer sobre IPv4 ou IPv6
- Seus recursos incluem topologias de grande escala, recuperação de falhas e eventos de mobilidade, criptografia de ponta a ponta sempre ativa, operação P2P sem ponto central e suporte a vários sistemas operacionais
- Ainda está em fase alfa, portanto há possibilidade de quebras de compatibilidade, mas é geralmente estável para uso diário e alguns usuários vêm realizando testes de estresse intensos
O problema de rede que o Yggdrasil tenta resolver
- O Yggdrasil é uma nova abordagem experimental de roteamento compacto
- Seu objetivo é ser uma alternativa descentralizada e voltada para o futuro aos protocolos de roteamento estruturado comumente usados na internet
- Foi projetado como uma tecnologia para viabilizar redes mesh de grande escala no futuro
-
Características do projeto da rede
- Escalabilidade: oferece suporte a topologias grandes e complexas, ou em escala de internet
- Autorreparação: reage rapidamente a falhas de conexão ou eventos de mobilidade
- Criptografia: o tráfego que passa pela rede usa sempre criptografia completa de ponta a ponta
- P2P: opera de forma ad hoc, sem pontos centralizados embutidos
- Multiplataforma: oferece suporte a Linux, macOS, Windows, iOS, Android e outros
Forma de implementação e participação na rede
- A implementação atual é um roteador de software em espaço de usuário leve
- É fácil de configurar e oferece suporte a várias plataformas
- Conecta roteamento IPv6 criptografado de ponta a ponta entre todos os participantes da rede
- O peering entre nós pode ser configurado com conexões TCP/TLS
- Pode ser usado em redes locais, links ponto a ponto e pela internet
- A Yggdrasil Network fornece roteamento IPv6 entre nós, mas as conexões de peering em si podem ser estabelecidas sobre redes IPv4 ou IPv6
- O projeto ainda está em fase alfa
- Quebras de compatibilidade podem ocorrer no futuro
- Mesmo assim, é geralmente estável para uso diário
- Alguns usuários o utilizam intensamente para diversos fins e vêm realizando testes de estresse
-
Como começar e caminhos para contribuir
- É possível participar da rede em um computador pessoal ou roteador por meio da instalação e da configuração
- É possível explorar serviços internos em redes operadas por usuários
- É possível participar do projeto pela página de desenvolvedores e pelo GitHub
- Bugs e problemas podem ser reportados em GitHub Issues
1 comentários
Comentários do Hacker News
A primeira coisa que procurei no site e no GitHub foi uma especificação do protocolo que pudesse ser implementada independentemente da implementação de referência, mas para algo divulgado como scheme/protocol não havia link para a especificação em lugar nenhum
Fuçando por conta própria, acabei encontrando [1] em um branch secundário de outro projeto no GitHub, e dou os parabéns ao autor. Há bastante do que é necessário: identidades criptográficas, formato das mensagens, protocolo de transporte, peering e semântica de streams, atualização da spanning tree e seleção de raiz, DHT, lógica de encaminhamento, sessões etc.
Ainda assim, há TODOs em pontos como validação/assinatura de atualização da raiz, e existe ambiguidade no algoritmo de desempate para seleção do próximo salto. Além disso, todos os pacotes precisam ser entregues de forma confiável e em ordem, e deve ser possível fragmentá-los em pacotes menores para se ajustar ao MTU, então a camada de transporte parece fortemente acoplada ao TCP
[1] https://github.com/yggdrasil-network/yggdrasil-specs/blob/ys...
Na v0.4, a DHT mudou bastante, e na v0.5 a DHT foi removida por completo. Como é um projeto de pesquisa, é bem provável que continue mudando até chegar a um design mais satisfatório, e nesse ponto certamente vamos dedicar mais tempo à documentação
A necessidade de links confiáveis/com garantia de ordem, no estágio atual, tem muito a ver com conveniência de desenvolvimento, mas isso certamente pode ser corrigido
Pelo que entendi, yggdrasil e cjdns são redes P2P virtuais construídas sobre a internet existente, oferecendo um serviço de roteamento típico de camada 3
Então ainda dependem de ISPs, backbone de internet etc. Existe algum projeto tentando criar uma rede P2P global capaz de substituir a camada IP e funcionar sem roteadores da Verizon ou da Cisco?
Conheço algumas tecnologias de rede mesh para pequenas redes isoladas, mas não sei de nada voltado ao consumidor que suporte milhares de nós ou mais
Veja o primeiro parágrafo de https://github.com/cjdelisle/cjdns/blob/master/doc/Whitepape.... Infelizmente, descobriu-se que esse método de roteamento não escalava bem na prática. O Yggdrasil usa um algoritmo de roteamento diferente, então talvez tenha potencial
Essa abordagem tem muitas vantagens, especialmente por facilitar a adoção. Hoje rodamos a rede telefônica sobre IP por causa de aplicações legadas. Se o Yggdrasil tiver sucesso, imagino que no fim acabaremos rodando IP sobre ele por causa dos sistemas legados
Isso não é apenas um entre vários problemas, mas uma limitação fundamental do design. A internet (ARPAnet) também começou como uma rede mesh, e os conceitos de troncos, backbone e roteamento surgiram para resolver esse problema de escalabilidade
Ou você está falando de uma camada IP sobre uma rede separada, e não sobre a “internet”? Se for isso, fico curioso sobre como pretende conectar as pessoas entre si. À medida que a escala aumenta, mesh se torna ineficiente por causa do roteamento mesh, e logo você acaba reinventando uma “internet própria”. Só que, sem os recursos para realmente conectar o mundo inteiro, ela não será global
Na época, era algo mais próximo de uma resposta idealista/anarquista ao veredito do Pirate Bay em 2009–2010. Se bem me lembro, o cjdns apareceu um pouco depois e acabou absorvendo a maior parte do grupo
Quem diria que, se hackers reclamões e piratas de software criassem uma internet pior, isso não duraria muito?
[0] https://en.m.wikipedia.org/wiki/Athens_Wireless_Metropolitan...
Links relacionados:
Yggdrasil Network - https://news.ycombinator.com/item?id=41669625 - setembro de 2024, 3 comentários
Yggdrasil P2P mesh E2EE IPv6 network - https://news.ycombinator.com/item?id=30156551 - janeiro de 2022, 77 comentários
Yggdrasil – Early-stage implementation of an end-to-end encrypted IPv6 network - https://news.ycombinator.com/item?id=27577201 - junho de 2021, 102 comentários
Show HN: Yggdrasil Network – compact mesh routing experiment for mesh networks - https://news.ycombinator.com/item?id=18863554 - janeiro de 2019, 15 comentários
Announcing Yggdrasil Network v0.3 - https://news.ycombinator.com/item?id=18751991 - dezembro de 2018, 3 comentários
Yggdrasil: End-To-end Encrypted IPv6 Networking - https://news.ycombinator.com/item?id=18666245 - dezembro de 2018, 1 comentário
Se você precisa de uma rede IP P2P mesh real que consiga atravessar firewall/NAT, pode usar Tailscale/Headscale
Se quiser uma rede de conexões P2P em que o endereço é definido por chaves de criptografia, há um projeto relativamente recente que faz isso muito bem: https://www.iroh.computer
Ele atravessa firewall/NAT e estabelece conexões QUIC. Já existem duas provas de conceito bem utilizáveis:
https://github.com/n0-computer/sendme
https://github.com/n0-computer/dumbpipe
Há alguma vantagem? Se a ideia é só rodar uma VPN privada leve para uso pessoal, Tailscale é excelente, e se você quiser hospedar a rede por conta própria, também existe o Headscale, que traz muitas vantagens
Eu tinha bastante expectativa há 3 ou 4 anos, mas agora parece meio que um projeto abandonado. Fico curioso se alguém realmente usa e qual é a impressão
No fim do ano passado lançamos a versão 0.5 com um novo desenho de protocolo, e há cerca de um mês lançamos a 0.5.9, que melhorou bastante a latência da rede ao alterar o custo dos links
Eu uso como se fosse uma VPN ligando meu celular à minha rede doméstica, com ambos pareados de forma privada a um VPS
É um pouco mais complexo do que conectar direto em casa, mas foi mais fácil de configurar do que lidar com IP dinâmico, redirecionamento de porta e troca de chaves do WireGuard
O pareamento por multicast funciona bem, então, quando estou em casa, também consigo acessar diretamente meu servidor doméstico pelo mesmo IP do Ygg. O problema é que preciso usar o IP. O app para iOS não suporta configurar um servidor DNS personalizado para a conexão VPN do Ygg
Para esse uso, o Headscale na verdade é uma solução melhor, mas é bem divertido que basta adicionar mais um pareamento para ter uma internet alternativa
Hoje uso yggdrasil em todos os meus dispositivos, então consigo acessar uns aos outros por ssh mesmo estando atrás de NAT
No Android, usando termux e o app Android do yggdrasil, dá para acessar em movimento os arquivos do meu computador de casa sem precisar guardar nada em alguma nuvem
O desenvolvimento é bem ativo, e nas versões mais recentes o algoritmo de roteamento foi melhorado para preferir os hops de menor latência, o que trouxe uma melhora perceptível
Se você espera um grande hub comunitário dentro da rede, pode se decepcionar, mas também pode criar um por conta própria. Muita gente usa do seu próprio jeito, e o projeto está longe de estar abandonado
Eu achei que isso fosse uma distribuição Linux
https://en.m.wikipedia.org/wiki/Yggdrasil_Linux/GNU/X
Também existe o Reticulum Network Stack nessa área: https://reticulum.network/
No FAQ está escrito: “Yggdrasil é anônimo? Não, o objetivo do projeto Yggdrasil não é oferecer anonimato”
Entendo que o problema é difícil e que há questões a resolver além de um simples problema técnico, mas, sinceramente, para mim isso já elimina a proposta no ponto de partida. Se for uma evolução real da internet, acho que deveria incluir anonimato efetivo
Tirando isso, não está claro para mim que problema da internet atual, que já não tenha sido resolvido na configuração existente, isso de fato resolve
Redes anônimas normalmente têm custo e overhead muito altos, porque criam deliberadamente caminhos longos e indiretos para ocultação. Olhando para o desempenho e a confiabilidade geralmente baixos dos circuitos do Tor, dá para entender por que não se desejaria que a internet inteira funcionasse assim
Não há motivo para não operar a rede Yggdrasil e rodar dentro dela uma rede I2P. Assim, comunicações que não precisam de anonimato teriam pouca perda de desempenho, e peers anônimos também poderiam ser criados sem subir para a clearnet
A ideia de que o endereço é derivado da chave pública é realmente muito boa, mas há problemas nessa abordagem. Como o Yggdrasil atualmente usa endereços IPv6, o tamanho é muito limitado e é possível encontrar colisões
Existe um paliativo de procurar por força bruta uma chave com mais bits iniciais em comum. Pelo que entendi, o plano de longo prazo é adicionar um protocolo customizado sem limitação no tamanho do endereço
Mas ainda parece impraticável fazê-los colidir com um conjunto de endereços já em uso. No contexto do Yggdrasil, até que ponto o primeiro caso seria um problema real?
Ainda assim, por enquanto isso significa que praticamente todos os aplicativos com suporte a IPv6 existentes funcionam sobre o Yggdrasil sem modificações, o que é uma boa característica para uma testnet
Está escrito “Yggdrasil is a new experimental compact routing scheme”, mas isso já não é tão novo, certo? Já faz pelo menos 6 anos