- Yggdrasil ist ein Netzwerk, das mit einer dezentralen Alternative zu strukturierten Routing-Protokollen experimentiert und ein kompaktes Routing-Verfahren nutzt, das auf große Mesh-Netzwerke ausgelegt ist
- Die aktuelle Implementierung ist ein leichtgewichtiger, einfach zu konfigurierender Software-Router im Userspace, der Ende-zu-Ende-verschlüsseltes IPv6-Routing zwischen den Teilnehmenden verbindet
- Node-Peering kann über LAN, Punkt-zu-Punkt-Links und TCP/TLS-Verbindungen über das Internet konfiguriert werden; das tatsächliche Peering ist über IPv4 oder IPv6 möglich
- Zu den Merkmalen zählen große Topologien, Wiederherstellung nach Ausfällen und Mobilitätsereignissen, stets aktive Ende-zu-Ende-Verschlüsselung, P2P-Betrieb ohne zentrale Stelle sowie Unterstützung mehrerer Betriebssysteme
- Das Projekt befindet sich noch in der Alpha-Phase, sodass weiterhin inkompatible Änderungen möglich sind; für den Alltagsgebrauch ist es jedoch weitgehend stabil, und einige Nutzer unterziehen es intensiven Stresstests
Welche Netzwerkprobleme Yggdrasil lösen will
- Yggdrasil ist ein neues experimentelles Verfahren für kompaktes Routing
- Ziel ist eine zukunftsorientierte, dezentrale Alternative zu den im Internet verbreiteten strukturierten Routing-Protokollen
- Es wurde als Technologie entwickelt, die künftig große Mesh-Netzwerke ermöglichen soll
-
Eigenschaften des Netzwerkdesigns
- Skalierbarkeit: Unterstützt große und komplexe Topologien bis hin zu Topologien in Internet-Größenordnung
- Selbstheilung: Reagiert schnell auf Verbindungsfehler oder Mobilitätsereignisse
- Verschlüsselung: Der Traffic im Netzwerk nutzt stets vollständige Ende-zu-Ende-Verschlüsselung
- P2P: Funktioniert ad hoc ohne eingebaute zentrale Punkte
- Cross-Plattform: Unterstützt Linux, macOS, Windows, iOS, Android und weitere Systeme
Implementierung und Teilnahme am Netzwerk
- Die aktuelle Implementierung ist ein leichtgewichtiger Software-Router im Userspace
- Sie ist einfach zu konfigurieren und unterstützt verschiedene Plattformen
- Sie verbindet Ende-zu-Ende-verschlüsseltes IPv6-Routing zwischen allen Netzwerkteilnehmenden
- Peering zwischen Nodes kann über TCP/TLS-Verbindungen konfiguriert werden
- Nutzbar in lokalen Netzwerken, über Punkt-zu-Punkt-Links und über das Internet
- Das Yggdrasil Network stellt IPv6-Routing zwischen Nodes bereit, die Peering-Verbindungen selbst können jedoch über IPv4- oder IPv6-Netzwerke eingerichtet werden
- Das Projekt befindet sich noch in der Alpha-Phase
- Künftig kann es zu inkompatiblen Änderungen kommen
- Dennoch ist es für den Alltagsgebrauch weitgehend stabil
- Einige Nutzer verwenden es intensiv für verschiedene Zwecke und unterziehen es Stresstests
-
Einstieg und Möglichkeiten zur Mitarbeit
- Über Installation und Konfiguration kann man mit einem eigenen Computer oder Router am Netzwerk teilnehmen
- Man kann interne Dienste in von Nutzern betriebenen Netzwerken erkunden
- Über die Entwicklerseite und GitHub kann man sich am Projekt beteiligen
- Bugs und Probleme können über GitHub Issues gemeldet werden
1 Kommentare
Meinungen auf Hacker News
Das Erste, wonach ich auf der Website und auf GitHub gesucht habe, war eine Protokollspezifikation, die unabhängig von der Referenzimplementierung umgesetzt werden kann. Dafür, dass es als Scheme/Protokoll beworben wird, war aber nirgendwo eine Spezifikation verlinkt.
Beim eigenen Nachforschen habe ich in einem Neben-Branch eines anderen GitHub-Projekts [1] gefunden; dem Autor gebührt Applaus. Es enthält recht gut die nötigen Inhalte: kryptografische Identität, Nachrichtenformate, Transportprotokoll, Peering- und Stream-Semantik, Spanning-Tree-Updates und Root-Auswahl, DHT, Weiterleitungslogik, Sessions usw.
Allerdings gibt es TODOs etwa zur Verifikation/Signierung von Root-Updates, und beim Algorithmus zur Auflösung von Gleichständen bei der Wahl des nächsten Hops gibt es Unklarheiten. Außerdem müssen alle Pakete zuverlässig und in Reihenfolge zugestellt werden und in kleinere Pakete passend zur MTU fragmentiert werden können; dadurch wirkt die Transportschicht stark an TCP gekoppelt.
[1] https://github.com/yggdrasil-network/yggdrasil-specs/blob/ys...
In v0.4 hat sich die DHT ziemlich verändert, und in v0.5 haben wir die DHT vollständig entfernt. Da es ein Forschungsprojekt ist, wird es sich wahrscheinlich weiter ändern, bis wir bei einem zufriedenstellenderen Design angekommen sind; an diesem Punkt werde ich definitiv mehr Zeit in die Dokumentation stecken.
Dass derzeit geordnete/zuverlässige Links nötig sind, dient in dieser Phase vor allem der bequemeren Entwicklung, aber das lässt sich eindeutig beheben.
Nach meinem Verständnis sind yggdrasil und cjdns virtuelle P2P-Netzwerke, die auf dem bestehenden Internet aufbauen und einen gewöhnlichen Layer-3-Routing-Dienst bereitstellen.
Man braucht also weiterhin ISPs, den Internet-Backbone usw. Gibt es ein Projekt, das versucht, ein weltweites P2P-Netzwerk zu bauen, das die IP-Schicht ersetzt und ohne Verizon- oder Cisco-Router funktionieren kann?
Ich kenne einige Mesh-Networking-Technologien für kleine, isolierte Netze, aber mir ist nichts bekannt, das sich an Verbraucher richtet und mehr als ein paar tausend Nodes unterstützt.
Siehe den ersten Absatz von https://github.com/cjdelisle/cjdns/blob/master/doc/Whitepape.... Leider hat sich herausgestellt, dass dieser Routing-Ansatz in der Praxis nicht ausreichend skaliert. Yggdrasil verwendet einen anderen Routing-Algorithmus, daher könnte es vielleicht möglich sein.
Dieser Ansatz hat viele Vorteile, insbesondere erleichtert er die Einführung. Heute betreiben wir für Legacy-Apps das Telefonnetz über IP. Wenn dieses Yggdrasil Erfolg hat, werden wir am Ende vermutlich IP für Legacy-Systeme darüber betreiben.
Das ist nicht nur eines von mehreren Problemen, sondern eine grundlegende Designgrenze. Auch das Internet (ARPAnet) begann als Mesh-Netzwerk, und um dessen Skalierungsprobleme zu lösen, entstanden die Konzepte von Trunks, Backbones und Routing.
Oder meinst du eine IP-Schicht nicht über dem „Internet“, sondern über einem separaten Netzwerk? Falls ja, würde mich interessieren, wie du die Menschen miteinander verbinden willst. Mit wachsender Größe wird ein Mesh wegen des Mesh-Routings ineffizient, und letztlich erfindet man früher oder später sein „eigenes Internet“ neu. Nur wird es nicht global sein können, weil die Ressourcen fehlen, um die Welt tatsächlich zu verbinden.
Damals war es eher eine idealistische/anarchistische Reaktion auf die Pirate-Bay-Urteile von 2009–2010. Soweit ich mich erinnere, kam cjdns kurz danach heraus und absorbierte den Großteil der Gruppe.
Wer hätte gedacht, dass ein von unzufriedenen Hackern und Software-Piraten gebautes, schlechteres Internet nicht lange durchhalten würde?
[0] https://en.m.wikipedia.org/wiki/Athens_Wireless_Metropolitan...
Zugehörige Links:
Yggdrasil Network - https://news.ycombinator.com/item?id=41669625 - September 2024, 3 Kommentare
Yggdrasil P2P mesh E2EE IPv6 network - https://news.ycombinator.com/item?id=30156551 - Januar 2022, 77 Kommentare
Yggdrasil – Early-stage implementation of an end-to-end encrypted IPv6 network - https://news.ycombinator.com/item?id=27577201 - Juni 2021, 102 Kommentare
Show HN: Yggdrasil Network – compact mesh routing experiment for mesh networks - https://news.ycombinator.com/item?id=18863554 - Januar 2019, 15 Kommentare
Announcing Yggdrasil Network v0.3 - https://news.ycombinator.com/item?id=18751991 - Dezember 2018, 3 Kommentare
Yggdrasil: End-To-end Encrypted IPv6 Networking - https://news.ycombinator.com/item?id=18666245 - Dezember 2018, 1 Kommentar
Wenn man ein echtes Mesh-P2P-IP-Netzwerk braucht, das durch Firewalls/NAT kommt, kann man Tailscale/Headscale verwenden.
Wenn man ein P2P-Verbindungsnetzwerk möchte, bei dem Adressen über kryptografische Schlüssel festgelegt werden, gibt es unter den relativ neuen Projekten eines, das das ziemlich gut macht: https://www.iroh.computer
Es kommt durch Firewalls/NAT und baut QUIC-Verbindungen auf. Es gibt bereits zwei brauchbare Proofs of Concept:
https://github.com/n0-computer/sendme
https://github.com/n0-computer/dumbpipe
Gibt es Vorteile? Wenn man einfach nur ein leichtgewichtiges privates VPN für den Eigengebrauch betreiben will, ist Tailscale hervorragend; und wenn man das Netzwerk selbst hosten möchte, gibt es auch Headscale, das viele Vorteile bietet.
Vor 3–4 Jahren hatte ich ziemlich große Erwartungen, aber inzwischen wirkt es auf mich ein Stück weit wie ein vernachlässigtes Projekt. Ich würde gern wissen, ob es tatsächlich Leute nutzen und welchen Eindruck sie haben.
Ende letzten Jahres haben wir Version 0.5 mit einem neuen Protokolldesign veröffentlicht, und vor etwa einem Monat 0.5.9, das durch Änderungen an den Link-Kosten die Netzwerklatenz deutlich verbessert hat.
Ich nutze es wie ein VPN, um mein Telefon und mein Heimnetzwerk zu verbinden, beide peeren privat mit einem VPS.
Das ist etwas komplizierter als eine direkte Verbindung nach Hause, war aber einfacher einzurichten, als sich um dynamische IPs, Port-Forwarding und WireGuard-Key-Exchange zu kümmern.
Multicast-Peering funktioniert ordentlich, sodass ich zu Hause mit derselben Ygg-IP auch direkt auf meinen Heimserver zugreifen kann. Das Problem ist, dass man die IP verwenden muss. Die iOS-App unterstützt keine Einrichtung eines eigenen DNS-Servers für die Ygg-VPN-Verbindung.
Für diesen Anwendungsfall ist Headscale eigentlich die bessere Lösung, aber es ist ziemlich interessant, dass man durch Hinzufügen nur eines Peerings ein alternatives Internet bekommt.
Ich nutze yggdrasil inzwischen auf allen Geräten, sodass sie sich auch hinter NAT gegenseitig per ssh erreichen können.
Mit termux und der yggdrasil-Android-App auf Android kann man auch unterwegs auf Dateien auf dem heimischen Rechner zugreifen, ohne sie irgendwo in der Cloud abzulegen.
Die Entwicklung ist ziemlich aktiv, und in der neuesten Version wurde der Routing-Algorithmus verbessert, sodass Hops mit der niedrigsten Latenz bevorzugt werden; das hat man spürbar gemerkt.
Wenn man große Community-Hubs im Netzwerk erwartet, könnte man enttäuscht sein, aber man kann auch selbst einen aufbauen. Viele Leute nutzen es passend zu ihren eigenen Zwecken, und von Vernachlässigung ist das Projekt weit entfernt.
Ich dachte, das sei eine Linux-Distribution.
https://en.m.wikipedia.org/wiki/Yggdrasil_Linux/GNU/X
In diesem Bereich gibt es auch den Reticulum Network Stack: https://reticulum.network/
In den FAQ steht: „Ist Yggdrasil anonym? Nein, das Ziel des Yggdrasil-Projekts ist es nicht, Anonymität bereitzustellen.“
Ich verstehe, dass das Problem schwierig ist und dass es über rein technische Fragen hinaus weitere Themen gibt, die gelöst werden müssen. Aber ehrlich gesagt ist das für mich schon am Start ein Ausschlusskriterium. Wenn es um eine echte Weiterentwicklung des Internets geht, sollte sie meiner Meinung nach praktische Anonymität einschließen.
Wenn man das ausklammert, weiß ich nicht, welches Problem des bestehenden Internets, das mit der heutigen Architektur noch ungelöst ist, damit tatsächlich gelöst wird.
Anonyme Netzwerke sind in der Regel sehr teuer und bringen viel Overhead mit sich, weil sie zur Verschleierung absichtlich lange und indirekte Routen erzeugen. Wenn man sich die insgesamt geringe Performance und Zuverlässigkeit von Tor-Circuits ansieht, versteht man, warum man nicht möchte, dass das gesamte Internet auf diese Weise funktioniert.
Es gibt keinen Grund, warum man nicht ein Yggdrasil-Netzwerk betreiben und darin ein I2P-Netzwerk laufen lassen könnte. Dann hätte Kommunikation, die keine Anonymität braucht, weniger Performance-Verlust, und anonyme Peers ließen sich aufbauen, ohne ins Clearnet zu gehen.
Die Idee, dass Adressen aus Public Keys abgeleitet werden, ist wirklich gut, aber dieser Ansatz hat ein Problem. Da Yggdrasil derzeit IPv6-Adressen verwendet, ist die Länge sehr begrenzt, und es können Kollisionen gefunden werden.
Es gibt zwar einen Workaround, bei dem man per Brute Force nach Schlüsseln mit mehr führenden Bits sucht. Soweit ich es verstanden habe, ist der langfristige Plan, ein Custom-Protokoll ohne Begrenzung der Adresslänge hinzuzufügen.
Aber eine Kollision mit einer bereits genutzten Adressmenge zu erzeugen, wirkt weiterhin unrealistisch. Wie groß ist ersteres im Yggdrasil-Kontext praktisch überhaupt als Problem?
Trotzdem bedeutet es derzeit, dass nahezu alle bestehenden IPv6-fähigen Anwendungen ohne Änderungen über Yggdrasil laufen, und für ein Testnet ist das eine gute Eigenschaft.
Dort steht: „Yggdrasil is a new experimental compact routing scheme“ – aber so neu ist es inzwischen doch nicht mehr, oder? Es gibt es seit mindestens 6 Jahren.