Po viac ako dvoch rokoch vývoja bol vydaný vzorový protokol Yggdrasil 0.5, ktorý umožňuje nasadenie samostatnej decentralizovanej súkromnej IPv6 siete nad bežnou globálnou sieťou na ochranu súkromia, vo ktorej sa aplikuje end-to-end šifrovanie. V sieti Yggdrasil sa môžu používať všetky existujúce aplikácie, ktoré podporujú IPv6. Implementácia je napísaná v programovacom jazyku Go a je šírená pod licenciou LGPLv3. Podporované platformy sú Linux, OpenWRT, Windows, macOS, FreeBSD, OpenBSD, VyOS a Ubiquiti EdgeRouter.
Yggdrasil rozvíja novú koncepciu smerovania na vytvorenie globálnej decentralizovanej siete, kde sa uzly môžu spájať buď priamo medzi sebou v režime mesh (napríklad cez Wi-Fi alebo Bluetooth), alebo interagovať nad existujúcimi IPv6 alebo IPv4 sieťami (sieť nad sieťou). Vlastnosťou Yggdrasil je samoorganizácia práce, ktorá nevyžaduje explicitné nastavenie smerovania — informácie o trasách sa vypočítavajú na základe polohy uzla v sieti vzhľadom na ostatné uzly. Zariadenia sú adresované pomocou bežnej IPv6 adresy, ktorá sa nemení pri presune uzla (v Yggdrasil je použitý nevyužívaný rozsah adries 0200::/7).
Celá sieť Yggdrasil nie je chápaná ako zhluk roztrhnutých podsietí, ale ako jednotný štruktúrovaný strom, ktorý má jeden "koreň" a každý uzol má jedného rodiča a jedného alebo viacerých potomkov. Takáto stromová štruktúra umožňuje vytvoriť trasu k cieľovému uzlu vzhľadom na uzol zdroja pomocou mechanizmu "locator", ktorý určuje optimálnu cestu k uzlu od korena. Informácie o strome sa distribuujú medzi uzly a nie sú centralizovane uchovávané.
Na ochranu pred analýzou prevádzky sa v sieti aplikuje end-to-end šifrovanie (prenosové uzly nemôžu určiť obsah), ale anonymita nie je zaručená — pri pripojení cez internet môžu peer to peer uzly, s ktorými sa vykonáva priama interakcia, určiť skutočnú IP adresu, preto sa na dosiahnutie anonymity odporúča pripojiť uzly cez Tor alebo I2P.
Aj napriek tomu, že projekt je na štádiu alfa vývoja, je už dostatočne stabilný na každodenné používanie, ale nezaručuje spätnú kompatibilitu medzi vydaniami. Pre Yggdrasil komunita podporuje súbor služieb, vrátane platformy na prevádzkovanie Linuxových kontajnerov pre hostingu svoje webové stránky, vyhľadávací systém YaCy, komunikačný server Matrix, IRC server, DNS, VoIP systém, BitTorrent tracker, mapu pripojovacích bodov, bránu do IPFS a proxy na prístup k sieťam Tor, I2P a clearnet.
V novej verzii:
- Pridaná možnosť autentizácie pripojenia k pirám pomocou hesla. Heslo sa zadáva prostredníctvom parametra „password=“, napríklad „tls://a.b.c.d:12345?password=123456abcdef“.
- Pridaná možnosť používať protokol QUIC pre interakciu s pirám, ktorý je založený na UDP. Na použitie QUIC je potrebné zadať URI schému quic:// v direktívach Listen a Peers, ale podpora QUIC zatiaľ nebola testovaná tak dobre ako TCP a TLS.
- Pridaná možnosť PrivateKeyPath, ktorá umožňuje ukladať súkromný kľúč vo formáte PEM, oddelene od hlavného konfiguračného súboru. Na export kľúča do samostatného súboru možno použiť možnosť „-exportkey“.
- Implementovaná nová schéma routovania, ktorá nie je spätné kompatibilná s predchádzajúcimi verziami (uzly s Yggdrasil 0.5 nemôžu interagovať s hostiteľmi na báze Yggdrasil 0.4), ale rieši väčšinu problémov so stabilitou a škálovateľnosťou prítomných vo verzii 0.4, a tiež výrazne znižuje spotrebu pamäti a znižuje prevádzku pri absencii sieťovej aktivity.
V novej realizácii na sledovanie väzieb a uzlov sa používa pravdepodobnostná štruktúra Filter Bloom. Distribuovaná hash tabuľka (DHT) sa už nepoužíva na výmenu údajov o routovaní a viazaní otvorených kľúčov v stromovej sieti.
Na zachovanie lokálnej konzistencie a zníženie závislosti od trás k vzorovým uzlom, uzly teraz samostatne prenášajú informácie o každom linku, ktoré sú sledované v CRDT štruktúrach. Namiesto routovania od zdroja sa aplikuje routovanie na báze chamtivého algoritmu (dopyty sú smerované k najbližšiemu susednému uzlu).
Formáty používané pri dohodovaní spojení a multicastových rozosielaniach boli prepracované pre lepšiu rozšíriteľnosť. Kód na spracovanie spojení bol prepracovaný pre spoľahlivejšie sledovanie stavu peerov. Zabezpečené oddelené sledovanie intervalov medzi opakovanými spojeniami pre každého nastaveného peera.
Na detekciu porúch sa namiesto periodickej posielania izolovaných keepalive požiadaviek využívajú potvrdené správy o prijatí prenosu, ktoré umožňujú zbaviť sa prenosu pri sieťovej neaktívnosti (čo napríklad znižuje spotrebu energie na mobilných zariadeniach eliminovaním prenosu v idle režime).
Zdroj: opennet.ru
