Efter mere end to års udvikling er Yggdrasil 0.5-referenceimplementeringen blevet udgivet. Den muliggør implementering af et separat, decentraliseret, privat IPv6-netværk oven på det almindelige globale netværk ved hjælp af end-to-end-kryptering for at beskytte privatlivets fred. Alle eksisterende IPv6-aktiverede applikationer kan køre på Yggdrasil-netværket. Implementeringen er skrevet i Google og licenseret under LGPLv3-licensen. Understøttede platforme Linux, OpenWRT, Windows, macOS, FreeBSD, OpenBSD, VyOS og Ubiquiti EdgeRouter.
Yggdrasil udvikler et nyt routingkoncept for at skabe et globalt decentraliseret netværk, hvor noder kan oprette forbindelse direkte til hinanden i mesh-netværkstilstand (for eksempel via Wi-Fi eller Bluetooth), eller interagere oven på eksisterende IPv6- eller IPv4-netværk (netværk ovenpå netværk). Et karakteristisk træk ved Yggdrasil er dens selvorganisering af arbejdet, som ikke kræver eksplicitte routing-indstillinger - information om ruter beregnes ud fra placeringen af noden i netværket i forhold til andre noder. Enheder adresseres via en almindelig IPv6-adresse, som ikke ændres, hvis noden flytter sig (Yggdrasil bruger det ubrugte adresseområde 0200::/7).
Hele Yggdrasil-netværket ses ikke som en samling af forskellige undernetværk, men som et enkelt struktureret spændingstræ, med en "rod" og hver node har en forælder og et eller flere børn. En sådan træstruktur gør det muligt at bygge en rute til destinationsknuden i forhold til kildenoden ved at bruge "locator"-mekanismen, som bestemmer den optimale vej til knudepunktet fra roden. Oplysninger om træet er fordelt mellem noder og gemmes ikke centralt.
For at beskytte mod trafikanalyse anvender netværket end-to-end-kryptering (transitknudepunkter kan ikke bestemme indholdet), men anonymitet er ikke garanteret - ved forbindelse via internettet kan peer-to-peer noder, som der udføres direkte interaktion med, bestemme den rigtige IP-adresse, så for anonymitet anbefales det at forbinde noder via Tor eller I2P.
Selvom projektet stadig er i alfa-udvikling, er det allerede stabilt nok til daglig brug, men det garanterer ikke bagudkompatibilitet mellem udgivelser. Fællesskabet vedligeholder et sæt tjenester til Yggdrasil, herunder en hostingplatform. Linux-containere til hosting deres hjemmesider, YaCy-søgemaskinen, Matrix-kommunikationsserveren, en IRC-server, DNS, et VoIP-system, en BitTorrent-tracker, et kort over forbindelsespunkter, en IPFS-gateway og proxyer til adgang til Tor-, I2P- og Clearnet-netværkene.
I den nye version:
- Tilføjet muligheden for at godkende forbindelser til peers ved hjælp af en adgangskode. Adgangskoden indstilles via parameteren "password=", for eksempel "tls://abcd:12345?password=123456abcdef".
- Tilføjet muligheden for at bruge den UDP-baserede QUIC-protokol til at interagere med jævnaldrende. For at bruge QUIC skal du angive quic:// URI-skemaet i Listen and Peers-direktiverne, men QUIC-understøttelse er endnu ikke så godt testet som TCP og TLS.
- Tilføjet PrivateKeyPath-mulighed, der gør det muligt at gemme privat nøgle i PEM-format, separat fra hovedkonfigurationsfilen. For at eksportere nøglen til en separat fil, kan du bruge "-exportkey" muligheden.
- Der er implementeret et nyt routingskema, der ikke er bagudkompatibelt med tidligere versioner (noder, der kører Yggdrasil 0.5, kan ikke kommunikere med værter, der kører Yggdrasil 0.4), men løser de fleste stabilitets- og skalerbarhedsproblemer, der var til stede i 0.4-grenen, og reducerer hukommelsesforbrug og trafik væsentligt, når der ikke er netværksaktivitet.
Den nye implementering bruger en probabilistisk Bloom Filter-struktur til at spore links og noder. Distributed hash table (DHT) bruges ikke længere til udveksling af routinginformation og offentlig nøglebinding i et trænetværk.
For at opretholde lokal konsistens og reducere afhængigheden af ruter til rodknudepunkter transmitterer noder nu separat information om hvert link, som spores i CRDT-strukturer. I stedet for kildedirigering bruges grådig routing (anmodninger sendes til nærmeste naboknude).
Formaterne, der bruges i forbindelsesforhandling og multicasting, er blevet redesignet for bedre udvidelsesmuligheder. Forbindelseshåndteringskoden er blevet omarbejdet til mere pålidelig sporing af peer-tilstand. Giver separat sporing af genforbindelsesintervaller for hver konfigureret peer.
For at opdage fejl, i stedet for at sende periodiske separate keepalive-anmodninger, bruges meddelelser med bekræftelse af modtagelse af trafik, som gør det muligt at slippe af med trafik, når netværket er inaktivt (hvilket for eksempel reducerer strømforbruget på mobile enheder på grund af udelukkelse af trafik i inaktiv tilstand).
Kilde: opennet.ru
