Két év fejlesztés után megjelent az Yggdrasil 0.5 protokoll referenciája, amely lehetővé teszi egy külön decentralizált privát IPv6 hálózat kiépítését a megszokott globális hálózat fölött, a magánélet védelme érdekében, amely végpontok közötti titkosítást alkalmaz. Az Yggdrasil hálózaton bármilyen meglévő alkalmazás használható, amely támogatja az IPv6-ot. A megvalósítás Go programozási nyelven készült, LGPLv3 licenc alatt terjesztik. Támogatott platformok: Linux, OpenWRT, Windows, macOS, FreeBSD, OpenBSD, VyOS és Ubiquiti EdgeRouter.
Az Yggdrasil egy új routing koncepciót fejlődtet ki, hogy globális decentralizált hálózatot hozzon létre, amelyben a csomópontok közvetlenül is kapcsolódhatnak egymáshoz mesh-hálózati módban (például Wi-Fi vagy Bluetooth-on keresztül), valamint a meglévő IPv6 vagy IPv4 hálózatokon keresztül is kölcsönhatásba léphetnek (hálózat a hálózaton belül). Az Yggdrasil kiemelkedő jellemzője az automatikus önszervező működés, amely nem igényel explicit routing beállítást — az útvonalinformációk a csomópont elhelyezkedéséből a többi csomóponthoz viszonyítva kerülnek kiszámításra. Az eszközök egy szokásos IPv6 címmel rendelkeznek, amely nem változik, ha a csomópont átköltözik (az Yggdrasil egy kihasználatlan címzési tartományt használ: 0200::/7).
Az egész Yggdrasil hálózatot nem szigetszerű alhálózatok összességeként, hanem mint egy egységes, strukturált fájlanézetet tekintjük, amelynek egy "gyökere" van, és amelynek minden csomópontnak van egy szülője és egy vagy több utódja. Az ilyen fa-szerű struktúra lehetővé teszi az útvonal építését a célcsomóponthoz a forráshoz viszonyítva, a "locator" mechanizmus segítségével, amely meghatározza az optimális utat a csomóponthoz a gyökeretől. Az információt a fára vonatkozóan elosztják a csomópontok között, és nem tárolják központosítva.
A forgalom elemzése ellen a hálózatban végpontok közötti titkosítást alkalmaznak (a tranzit csomópontok nem tudják meghatározni a tartalmat), de az anonimitás nem garantált — az interneten keresztüli csatlakozáskor a közvetlenül interakcióba lépő peer-to-peer csomópontok valós IP-címet tudnak meghatározni, ezért az anonimitás érdekében javasolt a csomópontokat Tor vagy I2P-n keresztüli kapcsolatra csatlakoztatni.
Bár a projekt alfa fejlesztési fázisban van, már elég stabil a napi használatra, de nem garantálja a visszafelé kompatibilitást a kiadások között. Az Yggdrasil közösség által támogatott szolgáltatások közé tartozik a Linux-konténerek elhelyezésére szolgáló platform, hoszting a saját weboldalaikhoz, a YaCy keresőmotor, a Matrix kommunikációs szerver, IRC-szerver, DNS, VoIP rendszer, BitTorrent tracker, csatlakozási pontok térképe, IPFS-be való átjáró és proxy a Tor, I2P és clearnet hálózatokhoz való hozzáféréshez.
Az új verzióban:
- Hozzáadva a lehetőség, hogy a piramidákhoz való csatlakozás hitelesítése jelszóval történjen. A jelszót a „password=” paraméterrel kell megadni, például „tls://a.b.c.d:12345?password=123456abcdef”.
- Hozzáadva a lehetőség, hogy a piramidákkal való kölcsönhatás QUIC protokollal történjen, amely UDP alapú. A QUIC használatához a quic:// URI sémát kell megadni a Listen és Peers direktívákban, de a QUIC támogatása egyelőre nem tesztelt annyira jól, mint a TCP és TLS.
- Hozzáadva a PrivateKeyPath opció, amely lehetővé teszi a PEM formátumú privát kulcs tárolását a fő konfigurációs fájltól külön. A kulcs egy külön fájlba történő exportálásához használható az „-exportkey” opció.
- Megvalósítva egy új irányítási séma, amely nem kompatibilis a korábbi verziókkal (az Yggdrasil 0.5 csomópontok nem tudnak kölcsönhatásba lépni az Yggdrasil 0.4 alapú hosztokkal), de megoldja a 0.4-es ágon található stabilitási és skálázhatósági problémák nagy részét, valamint jelentősen csökkenti a memóriafogyasztást és a forgalmat hálózati aktivitás hiányában.
Az új megvalósítás során a kapcsolatok és csomópontok nyomon követésére valószínűségi Bloom szűrő struktúrák használatosak. A szétosztott hashtáblák (DHT) már nem alkalmazhatók az irányításhoz és a nyitott kulcsok fa alapú hálózaton történő összekapcsolásához.
A helyi koherencia fenntartása és a gyökércsomópontok közötti függőség csökkentése érdekében a csomópontok most külön-külön továbbítják az egyes linkekről szóló információkat, amelyeket CRDT struktúrákban követnek. Az eredeti forrástól való irányítás helyett mohó algoritmus alapú irányítás alkalmazandó (a lekérdezések a legközelebbi szomszédos csomópontra irányulnak).
A csatlakozások és a multicast üzenetek egyeztetéséhez használt formátumokat átdolgozták a jobb bővíthetőség érdekében. A kapcsolatok feldolgozásának kódja is átdolgozásra került a pír állapotának megbízhatóbb nyomon követése érdekében. Biztosítva van a külön nyomkövetés az ismételt csatlakozások közötti intervallumokhoz minden beállított pír számára.
A hibák felfedezéséhez a periódikusan küldött elkülönített keepalive kérések helyett a forgalom átvételi visszaigazolásait használják, amelyek lehetővé teszik a forgalom kikapcsolását a hálózati inaktivitás idején (ami például csökkenti a mobil eszközök energiafogyasztását a felesleges forgalom kiszűrésével).
Forrás: opennet.ru
