1 puntos por GN⁺ 2024-11-17 | 1 comentarios | Compartir por WhatsApp
  • Yggdrasil es una red que experimenta con una alternativa descentralizada a los protocolos de enrutamiento estructurado, usando un esquema de enrutamiento compacto pensado para redes mesh a gran escala
  • La implementación actual es un router de software en espacio de usuario ligero y fácil de configurar, que conecta enrutamiento IPv6 cifrado de extremo a extremo entre los participantes
  • El peering entre nodos puede configurarse mediante enlaces LAN, enlaces punto a punto y conexiones TCP/TLS sobre Internet; el peering real puede funcionar sobre IPv4 o IPv6
  • Se caracteriza por soportar topologías a gran escala, recuperación ante fallas y eventos de movilidad, cifrado de extremo a extremo siempre activo, operación P2P sin puntos centrales y compatibilidad con varios sistemas operativos
  • Todavía está en fase alfa, por lo que persiste la posibilidad de cambios que rompan la compatibilidad, aunque en general es estable para uso diario y algunos usuarios la están sometiendo a pruebas de estrés intensivas

El problema de networking que Yggdrasil busca resolver

  • Yggdrasil es un nuevo enfoque experimental de enrutamiento compacto
  • Su objetivo es ser una alternativa descentralizada y orientada al futuro a los protocolos de enrutamiento estructurado que se usan comúnmente en Internet
  • Está diseñado como una tecnología para habilitar redes mesh a gran escala en el futuro
  • Características del diseño de red

    • Escalabilidad: soporta topologías grandes y complejas, o de escala similar a Internet
    • Autorrecuperación: reacciona rápidamente ante fallas de conexión o eventos de movilidad
    • Cifrado: el tráfico que atraviesa la red siempre usa cifrado completo de extremo a extremo
    • P2P: opera de forma ad hoc, sin puntos centralizados integrados
    • Multiplataforma: soporta Linux, macOS, Windows, iOS, Android, entre otros

Implementación y participación en la red

  • La implementación actual es un router de software en espacio de usuario ligero
    • Es fácil de configurar y soporta diversas plataformas
    • Conecta enrutamiento IPv6 cifrado de extremo a extremo entre todos los participantes de la red
  • El peering entre nodos puede configurarse mediante conexiones TCP/TLS
    • Puede usarse en redes de área local, enlaces punto a punto e Internet
    • Yggdrasil Network ofrece enrutamiento IPv6 entre nodos, pero la conexión de peering en sí puede establecerse sobre redes IPv4 o IPv6
  • El proyecto todavía está en fase alfa
    • En el futuro pueden ocurrir cambios que rompan la compatibilidad
    • Aun así, en general es estable para uso diario
    • Algunos usuarios la usan intensivamente para diversos fines y la están sometiendo a pruebas de estrés
  • Cómo empezar y contribuir

1 comentarios

 
GN⁺ 2024-11-17
Opiniones en Hacker News
  • Lo primero que busqué en el sitio web y en GitHub fue una especificación del protocolo que pudiera implementarse de forma independiente de la implementación de referencia, pero para algo que se promociona como scheme/protocol, no había ninguna especificación enlazada en ningún lado.
    Investigando por mi cuenta, encontré [1] en una rama lateral de otro proyecto de GitHub, y aplaudo al autor. Incluye bastante bien lo necesario: identidad criptográfica, formato de mensajes, protocolo de transporte, semántica de peering y streams, actualización del árbol de expansión y selección de raíz, DHT, lógica de reenvío, sesiones, etc.
    Sin embargo, hay TODOs como el método de verificación/firma de actualizaciones de raíz, y hay ambigüedad en el algoritmo para resolver empates al elegir el siguiente salto. Además, todos los paquetes deben entregarse de forma confiable y en orden, y deben poder fragmentarse en paquetes más pequeños para ajustarse al MTU, así que la capa de transporte parece estar fuertemente acoplada a TCP.
    [1] https://github.com/yggdrasil-network/yggdrasil-specs/blob/ys...

    • Dediqué algo de tiempo a documentar el antiguo protocolo v0.3 que enlazaste, pero desde entonces el diseño cambió de forma importante dos veces.
      En v0.4, el DHT cambió bastante, y en v0.5 eliminamos el DHT por completo. Como es un proyecto de investigación, es muy probable que siga cambiando hasta llegar a un diseño más satisfactorio, y en ese momento definitivamente planeo dedicarle más tiempo a la documentación.
      Que hoy se necesiten enlaces con entrega en orden/confiable tiene mucho que ver con la comodidad de desarrollo en esta etapa, pero eso claramente se puede corregir.
    • ¿Es un problema que esté acoplado a TCP? ¿Hace algo que vaya en contra del objetivo de una descentralización completa?
  • Según entiendo, yggdrasil y cjdns son redes P2P virtuales construidas sobre el Internet existente, y ofrecen un servicio de enrutamiento típico de capa 3.
    Así que siguen necesitando ISP, backbones de Internet, etc. ¿Existe algún proyecto que intente crear una red P2P global que pueda funcionar sin routers de Verizon o Cisco y que reemplace la capa IP?
    Conozco algunas tecnologías de redes mesh para redes pequeñas y desconectadas, pero no conozco bien algo orientado a consumidores que soporte miles de nodos o más.

    • Ese era originalmente el objetivo de cjdns. Por eso se empareja automáticamente con otros nodos alcanzables por Ethernet, incluido WiFi (sin necesidad de IP).
      Consulta el primer párrafo de https://github.com/cjdelisle/cjdns/blob/master/doc/Whitepape.... Lamentablemente, en la práctica ese método de enrutamiento resultó no escalar bien. Yggdrasil usa otro algoritmo de enrutamiento, así que podría tener posibilidades.
    • IP también fue originalmente una red superpuesta sobre la red telefónica.
      Ese enfoque tiene muchas ventajas, en particular que facilita la adopción. Hoy corremos la red telefónica sobre IP para aplicaciones legacy. Si este Yggdrasil tiene éxito, creo que al final terminaremos corriendo IP encima de él para los sistemas legacy.
    • Las redes mesh han sido el sueño de todos desde hace mucho, pero lamentablemente escalan muy mal.
      No es solo uno de varios problemas, sino una limitación fundamental del diseño. Internet (ARPAnet) también empezó como una red mesh, y para resolver ese problema de escalabilidad surgieron los conceptos de troncales, backbones y enrutamiento.
    • ¿Por qué quieres eliminar la capa IP?
      ¿O te refieres a una capa IP sobre una red separada, no sobre “Internet”? Si es así, me da curiosidad cómo piensas conectar a las personas entre sí. A medida que la escala crece, el enrutamiento mesh hace que la mesh sea ineficiente, y al final, tarde o temprano, terminas reinventando “tu propio Internet”. Solo que no será global, porque no tendrás los recursos para conectar realmente a todo el mundo.
    • Antes de cjdns, algunos de nosotros, inspirados por Athens[0], iniciamos project meshnet, que intentaba reemplazar o complementar Internet.
      En ese momento era más bien una respuesta idealista/anarquista a los fallos contra The Pirate Bay de 2009–2010. Según recuerdo, cjdns apareció poco después y absorbió a la mayor parte del grupo.
      ¿Quién hubiera pensado que un grupo de hackers descontentos y piratas de software no llegaría muy lejos construyendo un Internet más mediocre?
      [0] https://en.m.wikipedia.org/wiki/Athens_Wireless_Metropolitan...
  • Enlaces relacionados:
    Yggdrasil Network - https://news.ycombinator.com/item?id=41669625 - septiembre de 2024, 3 comentarios
    Yggdrasil P2P mesh E2EE IPv6 network - https://news.ycombinator.com/item?id=30156551 - enero de 2022, 77 comentarios
    Yggdrasil – Early-stage implementation of an end-to-end encrypted IPv6 network - https://news.ycombinator.com/item?id=27577201 - junio de 2021, 102 comentarios
    Show HN: Yggdrasil Network – compact mesh routing experiment for mesh networks - https://news.ycombinator.com/item?id=18863554 - enero de 2019, 15 comentarios
    Announcing Yggdrasil Network v0.3 - https://news.ycombinator.com/item?id=18751991 - diciembre de 2018, 3 comentarios
    Yggdrasil: End-To-end Encrypted IPv6 Networking - https://news.ycombinator.com/item?id=18666245 - diciembre de 2018, 1 comentario

  • Si necesitas una red IP P2P mesh real que pueda atravesar firewalls/NAT, puedes usar Tailscale/Headscale
    Si quieres una red de conexiones P2P que direccione mediante claves de cifrado, hay un proyecto relativamente reciente que lo hace bastante bien: https://www.iroh.computer
    Atraviesa firewalls/NAT y establece conexiones QUIC. Ya hay dos pruebas de concepto bastante usables:
    https://github.com/n0-computer/sendme
    https://github.com/n0-computer/dumbpipe

    • Justo eso iba a preguntar. ¿Por qué alguien debería usar Yggdrasil en lugar de Tailscale o WireGuard?
      ¿Tiene alguna ventaja? Si solo quieres montar una VPN privada ligera para uso personal, Tailscale es excelente; y si quieres alojar la red tú mismo, también está Headscale, con muchas ventajas
  • Hace 3 o 4 años me generaba bastante expectativa, pero ahora parece un proyecto algo abandonado. Me da curiosidad si alguien lo usa de verdad y qué impresión tiene

    • Para nada está abandonado; es un proyecto que hacemos en nuestro tiempo libre otro desarrollador y yo
      A fines del año pasado lanzamos la versión 0.5 con un nuevo diseño de protocolo, y hace aproximadamente un mes lanzamos la 0.5.9, que mejoró bastante la latencia de la red gracias a cambios en el costo de los enlaces
    • Hubo varias actualizaciones recientes, y la app de iOS, que llevaba un tiempo estancada, volvió a la vida
      Yo la uso como una VPN para conectar mi teléfono y mi red doméstica, y ambos están emparejados de forma privada con un VPS
      Es un poco más complejo que conectarse directamente a casa, pero fue más fácil de configurar que preocuparse por IP dinámica, port forwarding e intercambio de claves de WireGuard
      El peering por multicast funciona bien, así que cuando estoy en casa también puedo acceder directamente a mi servidor doméstico con la misma IP de Ygg. El problema es que tengo que usar la IP. La app de iOS no permite configurar un servidor DNS personalizado para la conexión VPN de Ygg
      Para este caso de uso, Headscale en realidad es una mejor solución, pero es bastante divertido que con solo agregar un peering tengas una internet alternativa
    • Yggdrasil simplemente funciona bien, así que los desarrolladores tienen relativamente menos necesidad de debatir en salas de chat qué arreglar
      Ahora uso yggdrasil en todos mis dispositivos, así que aunque estén detrás de NAT puedo conectarme entre ellos por ssh
      Con termux y la app de yggdrasil para Android, puedo acceder en movimiento a archivos de mi computadora de casa sin guardarlos en alguna nube
    • Lo uso siempre para acceder a los equipos que tengo en casa cuando estoy afuera, y también chateo con amigos mediante un servidor IRC que corre encima de eso
      El desarrollo está bastante activo, y en la versión más reciente mejoraron el algoritmo de ruteo para preferir los saltos con menor latencia, lo que se notó en la práctica
      Si esperas un gran hub comunitario dentro de la red, podrías decepcionarte, pero también podrías crear uno tú mismo. Hay mucha gente que lo usa para sus propios fines y el proyecto está lejos de estar abandonado
  • Yo pensé que esto era una distribución de Linux
    https://en.m.wikipedia.org/wiki/Yggdrasil_Linux/GNU/X

  • En este campo también existe Reticulum Network Stack: https://reticulum.network/

  • En las FAQ dice: “¿Yggdrasil es anónimo? No, el objetivo del proyecto Yggdrasil no es ofrecer anonimato”.
    Entiendo que el problema es difícil y que hay temas por resolver más allá de lo meramente técnico, pero, sinceramente, para mí esto queda descartado desde el punto de partida. Si se trata de una evolución real de Internet, creo que debería incluir anonimato efectivo.
    Si se excluye eso, no sé qué problema de la Internet actual que siga sin resolverse realmente soluciona con la configuración actual.

    • Así como el anonimato no es un objetivo de Yggdrasil, tampoco lo es de BGP, OSPF, BATMAN, etc.
      Las redes anónimas normalmente tienen costos y overhead muy altos. Es porque crean deliberadamente rutas largas e indirectas para ocultar. Al ver el bajo rendimiento y la baja confiabilidad general de los circuitos Tor, se entiende por qué uno no querría que toda Internet funcionara de esa manera.
    • ¿Por qué tendría que ser así? Parece mucho más razonable enfocarse en el protocolo de enrutamiento mesh y poner el anonimato como una capa opcional encima.
      No hay razón por la que no se pueda correr la red Yggdrasil y operar una red I2P dentro de ella. Así habría menos pérdida de rendimiento para las comunicaciones que no necesitan anonimato, y también se podrían crear peers anónimos sin pasar por la clearnet.
    • Como la optimización de latencia puede romper el anonimato, conviene poner la anonimización en una capa superior.
  • La idea de que la dirección se derive de la clave pública es muy buena, pero este enfoque tiene un problema. Como Yggdrasil actualmente usa direcciones IPv6, la longitud es muy limitada y se pueden encontrar colisiones.
    Existe un workaround que consiste en encontrar por fuerza bruta una clave con más bits iniciales. Según entiendo, el plan a largo plazo es agregar un protocolo personalizado sin límite de longitud de dirección.

    • Haciendo un cálculo aproximado, parece posible generar un par de direcciones que colisionen. Por algo parecido al problema del cumpleaños.
      Pero hacerla colisionar con un conjunto de direcciones ya en uso sigue pareciendo poco realista. En el contexto de Yggdrasil, ¿qué tan problemático sería realmente lo primero?
    • Estoy de acuerdo en que truncar la clave pública para ajustarla a una dirección IPv6 no es del todo ideal.
      Aun así, por ahora significa que casi cualquier aplicación existente compatible con IPv6 funciona sobre Yggdrasil sin modificaciones, y esa es una buena propiedad para una testnet.
    • ¿Por qué no usar la clave pública completa y dejar el resto a la entropía? Como en Reticulum Network.
  • Dice “Yggdrasil is a new experimental compact routing scheme”, pero ¿no dejó de ser tan nuevo? Ya tiene al menos 6 años.

    • ¿Hay algún lugar que use algo parecido en producción?