След повече от две години разработка, референтната имплементация на Yggdrasil 0.5 беше пусната. Тя позволява разгръщането на отделна, децентрализирана, частна IPv6 мрежа върху обикновената глобална мрежа, използвайки криптиране от край до край за защита на поверителността. Всички съществуващи IPv6-съвместими приложения могат да работят в мрежата на Yggdrasil. Имплементацията е написана на Go и е лицензирана под лиценза LGPLv3. Поддържани платформи LinuxOpenWRT, Windows, macOS, FreeBSD, OpenBSD, VyOS и Ubiquiti EdgeRouter.
Yggdrasil разработва нова концепция за маршрутизиране, за да създаде глобална децентрализирана мрежа, възлите в която могат да се свързват директно един с друг в режим на мрежова мрежа (например чрез Wi-Fi или Bluetooth) или да взаимодействат през съществуващи IPv6 или IPv4 мрежи (мрежа на горната част на мрежата). Отличителна черта на Yggdrasil е неговата самоорганизация на работа, която не изисква изрична конфигурация на маршрутизиране - информацията за маршрутите се изчислява въз основа на местоположението на възел в мрежата спрямо други възли. Устройствата се адресират чрез обикновен IPv6 адрес, който не се променя, ако възел се премести (Yggdrasil използва неизползвания адресен диапазон 0200::/7).
Цялата мрежа Yggdrasil не се разглежда като колекция от различни подмрежи, а като едно структурирано обхващащо дърво с един „корен“ и всеки възел има един родител и едно или повече деца. Такава дървовидна структура ви позволява да изградите маршрут до целевия възел, спрямо изходния възел, като използвате механизма „локатор“, който определя оптималния път до възела от корена. Информацията за дървото се разпределя между възлите и не се съхранява централно.
За защита срещу анализ на трафика в мрежата се използва криптиране от край до край (транзитните възли не могат да определят съдържанието), но анонимността не е гарантирана - при свързване през интернет партньорите, с които се осъществява пряко взаимодействие, могат да определят реалния IP адрес, така че за анонимност се препоръчва свързване на възли чрез Tor или I2P.
Въпреки че проектът все още е в алфа разработка, той вече е достатъчно стабилен за ежедневна употреба, но не гарантира обратна съвместимост между изданията. Общността поддържа набор от услуги за Yggdrasil, включително хостинг платформа. Linux-контейнери за хостинг техните уебсайтове, търсачката YaCy, комуникационния сървър Matrix, IRC сървър, DNS, VoIP система, тракер BitTorrent, карта на точките за свързване, IPFS шлюз и прокси сървъри за достъп до мрежите Tor, I2P и clearnet.
В новата версия:
- Добавена е възможност за удостоверяване на връзки към партньори с помощта на парола. Паролата се посочва чрез параметъра „password=“, например „tls://abcd:12345?password=123456abcdef“.
- Добавена е възможност за използване на UDP-базиран QUIC протокол за взаимодействие с партньори. За да използвате QUIC, трябва да посочите схемата quic:// URI в директивите Listen и Peers, но поддръжката на QUIC все още не е толкова добре тествана, колкото TCP и TLS.
- Добавена е опцията PrivateKeyPath, която ви позволява да съхранявате частния ключ във формат PEM, отделно от основния конфигурационен файл. За да експортирате ключа в отделен файл, можете да използвате опцията „-exportkey“.
- Внедрена е нова схема за маршрутизиране, която не е обратно съвместима с предишните версии (възлите с Yggdrasil 0.5 не могат да комуникират с хостове, базирани на Yggdrasil 0.4), но решава повечето от проблемите със стабилността и скалируемостта, които присъстваха в клона 0.4, и също така значително намалява консумацията на памет и намалява трафика при липса на мрежова активност.
Новата реализация използва вероятностна структура на Bloom Filter за проследяване на връзки и възли. Разпределената хеш таблица (DHT) вече не се използва за обмен на информация за маршрутизиране и свързване на публични ключове в дървовидна мрежа.
За да се поддържа локална съгласуваност и да се намали зависимостта от маршрути до коренни възли, възлите вече отделно комуникират информация за всяка връзка, която се проследява в CRDT структури. Вместо маршрутизиране на източника се използва алчно маршрутизиране (заявките се изпращат до най-близкия съсед).
Форматите, използвани за договаряне на връзка и мултикаст, са преработени за по-добра разширяемост. Кодът за обработка на връзката е преработен, за да проследява по-надеждно състоянието на партньорите. Осигурява отделно проследяване на интервалите между повторните връзки за всеки конфигуриран партньор.
За откриване на грешки, вместо периодично изпращане на отделни заявки за поддържане на активността, се използват съобщения, потвърждаващи получаването на трафик, които ви позволяват да се отървете от трафика по време на неактивност на мрежата (което например намалява консумацията на енергия на мобилни устройства поради изключване на трафика в неактивен режим).
Източник: opennet.ru
