Опубликован выпуск эталонной реализации протокола Yggdrasil 0.4, позволяющего поверх обычной глобальной сети развернуть отдельную децентрализованную приватную IPv6-сеть, для защиты конфиденциальности в которой применяется сквозное шифрование. Для работы через сеть Yggdrasil могут использоваться любые существующие приложения, поддерживающие IPv6. Реализация написана на языке Go и распространяется под лицензией LGPLv3. Поддерживаются платформы Linux, Windows, macOS, FreeBSD, OpenBSD и Ubiquiti EdgeRouter.
Yggdrasil развивает новую концепцию маршрутизации для создания глобальной децентрализованной сети, узлы в которой могут соединяться как напрямую между собой в режиме mesh-сети (например, через Wi-Fi или Bluetooth), так и взаимодействовать поверх существующих IPv6 или IPv4 сетей (сеть поверх сети). Отличительной особенностью Yggdrasil является самоорганизация работы, без необходимости явной настройки маршрутизации – информация о маршрутах рассчитывается отталкиваясь от расположения узла в сети относительно других узлов. Устройства адресуются через обычный адрес IPv6, который не меняется в случае перемещения узла (в Yggdrasil задействован неиспользуемый диапазон адресов 0200::/7).
Вся сеть Yggdrasil рассматривается не как объединение разрозненный подсетей, а как единое структурированное остовное дерево, у которого имеется один “корень”, а каждый узел имеет одного родителя, а также одного или нескольких потомков. Подобная древовидная структура позволяет построить маршрут к узлу назначения, относительно узла источника, используя механизм “locator”, определяющий оптимальный путь к узлу от корня.
Информация о дереве распределяется между узлами и не хранится централизованно. Для обмена данными о маршрутизации применяется распределённая хэш-таблица (DHT), при помощи которой узел может извлечь всю информацию о маршруте к другому узлу. Сама по себе сеть обеспечивает лишь сквозное шифрование (транзитные узлы не могут определить содержимое), но не анонимность (при подключении через интернет, одноранговые узлы, с которыми осуществляется прямое взаимодействие, могут определить реальный IP-адрес, поэтому для анонимности предлагается подключать узлы через Tor или I2P).
Отмечается, что несмотря на нахождение проекта на стадии альфа-разработки, он уже достаточно стабилен для ежедневного использования, но не гарантирует обратную совместимость между выпусками. Для Yggdrasil 0.4 сообществом поддерживается набор сервисов, включая платформу для размещения Linux-контейнеров для хостига своих сайтов, поисковую систему YaCy, коммуникационный сервер Matrix, IRC-сервер, DNS, систему VoIP, BitTorrent-трекер карту точек подключения, шлюз в IPFS и прокси для обращения к сетям Tor, I2P и clearnet.
В новой версии:
- Реализована новая схема маршрутизации, не совместимая с прошлыми выпусками Yggdrasil.
- При установке TLS-соединений с узлами задействована привязка открытых ключей (key pinning). Если привязка при соединении отсутствует полученный ключ будет закреплён за соединением. Если ключ не соответствует привязке, соединение будет отвергнуто.
- TLS определён как рекомендованный метод подключения к пирам с привязкой ключей.
- Полностью переработан и переписан код для маршрутизации и управления сеансами, что позволило увеличить пропускную способность и надёжность работы, особенно для узлов, часто меняющих пиры. В криптографических сеансах реализована периодическая ротация ключей. Добавлена поддержка маршрутизации по источнику (Source routing), которая может использоваться для перенаправления пользовательского IPv6 трафика. Переработана архитектура распределённой хэш-таблицы (DHT) и добавлена поддержка маршрутизации на основе DHT. Реализация алгоритмов маршрутизации вынесена в отдельную библиотеку.
- IP-адреса IPv6 теперь формируются из открытых ключей ed25519, а не их хэша X25519, что приведёт к смене всех внутренних IP в выпуске Yggdrasil 0.4.
- Предоставлены дополнительные настройки для поиска Multicast-пиров.