Efter mere end to års udvikling er udgivet den referenceimplementering af Yggdrasil-protokollen 0.5, som gør det muligt at implementere et separat decentraliseret privat IPv6-netværk oven på det almindelige globale netværk for at beskytte privatlivets fred, hvor der anvendes end-to-end kryptering. Alle eksisterende applikationer, der understøtter IPv6, kan bruges i Yggdrasil-netværket. Implementeringen er skrevet i Go og distribueres under LGPLv3-licensen. Understøttede platforme inkluderer Linux, OpenWRT, Windows, macOS, FreeBSD, OpenBSD, VyOS og Ubiquiti EdgeRouter.
Yggdrasil udvikler et nyt koncept for routning til oprettelse af et globalt decentraliseret netværk, hvor noder kan forbindes direkte imellem hinanden i en mesh-struktur (for eksempel via Wi-Fi eller Bluetooth), og også interagere oven på eksisterende IPv6 eller IPv4 netværk (netværk over netværk). En særpræget funktion ved Yggdrasil er selvorganisering, der ikke kræver manuel opsætning af routing — ruteinformation beregnes ud fra nodeplaceringen i netværket i forhold til andre noder. Enheder adresseres via en normal IPv6-adresse, der ikke ændres, når noden flytter sig (Yggdrasil bruger det ubenyttede adresseområde 0200::/7).
Hele Yggdrasil-netværket betragtes ikke som en samling af adskilte delnetværk, men som et enkelt struktureret spidstræ, hvor der er en "rod", og hver node har en forælder og en eller flere efterkommere. Denne træstruktur gør det muligt at bygge en rute til destinationsnoden i forhold til kilde-noden ved hjælp af en "locator", der bestemmer den optimale rute til noden fra roden. Oplysningerne om træet distribueres mellem noderne og opbevares ikke centralt.
For at beskytte mod trafikovervågning anvendes end-to-end kryptering i netværket (transitnoder kan ikke bestemme indholdet), men anonymitet garanteres ikke — ved tilslutning over internettet kan peer-noder, som der er direkte interaktion med, bestemme den reelle IP-adresse, så for anonymitet anbefales det at forbinde noder gennem Tor eller I2P.
På trods af at projektet er i alpha-udviklingsfasen, er det allerede stabilt nok til daglig brug, men garanterer ikke bagudkompatibilitet mellem versioner. Yggdrasil-samfundet understøtter en række tjenester, herunder en platform til hosting af Linux-container til hosting sine websider, søgemaskinen YaCy, kommunikationsserveren Matrix, IRC-server, DNS, VoIP-system, BitTorrent-tracker, kort over forbindelsespunkter, gateway til IPFS og proxy for adgang til netværk som Tor, I2P og clearnet.
I den nye version:
- Muligheden for autentificering af forbindelse til pirater med password er blevet tilføjet. Adgangskoden angives via parameteren «password=», for eksempel «tls://a.b.c.d:12345?password=123456abcdef».
- Muligheden for brug af QUIC-protokollen, som er baseret på UDP, til interaktion med pirater er blevet tilføjet. For at bruge QUIC skal URI-skematikken quic:// angives i direktiverne Listen og Peers, men understøttelsen af QUIC er endnu ikke blevet testet så grundigt som TCP og TLS.
- Muligheden PrivateKeyPath er blevet tilføjet, hvilket tillader opbevaring af den private nøgle i PEM-format adskilt fra den primære konfigurationsfil. For at eksportere nøglen til en separat fil kan parameteren «-exportkey» anvendes.
- En ny routing-skematik, som ikke er bagudkompatibel med tidligere versioner (noder med Yggdrasil 0.5 kan ikke interagere med værter baseret på Yggdrasil 0.4), er blevet implementeret og løser de fleste af de stabilitets- og skalerbarhedsproblemer, der fandtes i 0.4-grenen, samtidig med at det betydeligt reducerer hukommelsesforbruget og nedbringer trafik i fravær af netværksaktivitet.
I den nye implementering anvendes en sandsynlighedsstruktur (Bloom Filter) til at spore forbindelser og noder. Distribueret hash-tabel (DHT) anvendes ikke længere til at udveksle data om routing og binding af offentlige nøgler i det træformede netværk.
For at opretholde lokal konsistens og reducere afhængigheden af ruter til rodnoder, sender noder nu separat oplysninger om hver forbindelse, hvilket spores i CRDT-strukturer. I stedet for routing fra kilde anvendes der nu en greedy-algoritme (anmodninger sendes til den nærmeste naboknude).
De formater, der anvendes ved etablering af forbindelser og multicast-udsendelser, er blevet genarbejdet for bedre skalerbarhed. Koden til håndtering af forbindelser er blevet forbedret for mere pålidelig sporing af peer-tilstande. Der er sikret separat sporing af intervaller mellem genforbindelser for hver konfigureret peer.
I stedet for periodisk at sende isolerede keepalive-anmodninger, anvendes bekræftede trafikmodtagelsesbeskeder til fejlidentifikation, hvilket muliggør eliminering af trafik ved netværksoffentlighed (for eksempel reducerer dette strømforbruget på mobile enheder ved at undgå trafik i tomgangsstand).
Kilde: opennet.ru
