1 pontos por GN⁺ 2024-11-17 | 1 comentários | Compartilhar no WhatsApp
  • 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

1 comentários

 
GN⁺ 2024-11-17
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...

    • A documentação vinculada do antigo protocolo v0.3 recebeu algum tempo de atenção, mas depois disso o design mudou bastante duas vezes
      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
    • O acoplamento com TCP é um problema? Isso faz algo que contrarie o objetivo de descentralização total?
  • 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

    • Esse era originalmente o objetivo do cjdns. Por isso ele faz peering automaticamente com outros nós alcançáveis por Ethernet, incluindo Wi‑Fi (sem necessidade de IP)
      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
    • O próprio IP também era originalmente uma rede de sobreposição sobre a rede telefônica
      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
    • Redes mesh são um sonho antigo de todo mundo, mas infelizmente escalam muito mal
      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
    • Por que você quer remover a camada IP?
      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
    • Antes do cjdns, alguns de nós, inspirados pela Athens[0], começamos o project meshnet para substituir ou complementar a internet
      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

    • Era exatamente isso que eu ia perguntar. Por que alguém deveria usar Yggdrasil em vez de Tailscale ou WireGuard?
      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

    • Não está abandonado de forma alguma; é um projeto tocado por mim e por outro desenvolvedor no nosso tempo livre
      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
    • Houve algumas atualizações recentes, e o app para iOS, que ficou parado por um tempo, voltou à ativa
      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
    • O Yggdrasil simplesmente funciona bem, então os desenvolvedores têm relativamente menos necessidade de discutir no chat coisas para corrigir
      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
    • Eu uso o tempo todo para acessar meus equipamentos de casa quando estou fora, e também converso com amigos por um servidor IRC rodando em cima dele
      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

    • Assim como o anonimato não é o objetivo do Yggdrasil, também não é o objetivo de BGP, OSPF, BATMAN
      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
    • Por que teria que ser assim? Parece bem mais razoável focar no protocolo de roteamento em malha e colocar o anonimato como uma camada opcional por cima
      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
    • Como a otimização de latência pode quebrar o anonimato, é melhor que a anonimização fique em uma camada superior
  • 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

    • Fazendo uma conta aproximada, parece possível gerar pares de endereços que colidem, por razões parecidas com o problema do aniversário
      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?
    • Concordo que truncar a chave pública para encaixá-la em um endereço IPv6 não é totalmente ideal
      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
    • Por que não usar a chave pública inteira e deixar o resto para a entropia? Como na Reticulum Network
  • 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

    • Existe algum lugar usando algo parecido na prática?