
Yggdrasil как встраиваемая библиотека
AsciiMoth 2 часа назад Yggdrasil как встраиваемая библиотека Средний 11 мин 2.4K Сетевые технологии * Mesh-сети * Open source * Децентрализованные сети * Go * Туториал Yggdrasil - это экспериментальная оверлейная IPv6...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. AsciiMoth 2 часа назад Yggdrasil как встраиваемая библиотека Средний 11 мин 2. 4K Сетевые технологии * Mesh-сети * Open source * Децентрализованные сети * Go * Туториал Yggdrasil - это экспериментальная оверлейная IPv6 mesh-сеть, уже неоднократно рассматривавшаяся на хабре (1 2 3). Если кратко, Yggdrasil позволяет поднять “сеть поверх сети” где у каждого узла появляется стабильный IPv6 адрес выведенный из его публичного ключа, не зависящий от того, где он физически находится и какой у него внешний IP.
Узлы могут подключаться к публичным пирам, друг к другу напрямую, через локальное обнаружение, а после установления связности обычные TCP/UDP приложения могут общаться так, будто перед ними просто еще одна IPv6 сеть. В классическом варианте Yggdrasil это демон создающий виртуальный сетевой интерфейс в системе. Но было бы удобно встраивать его в приложения например в matrix клиенты или веб пиложения.
Технические детали
Оригинальный yggdrasil-go не очень удобен в такой роли из за подтекающих абстракций и сильного зацепления компонент. Ради более удобного библиотечного использования и поддержки фич которые систематически отклонялись потому что “это не цель yggdrasil”, я организовал свой совместимый с оригиналом форк. Далее рассматривается встраивание его библиотечной части в ваше go приложение.
Что мы будем собиратьВ этой статье мы соберем минималистичный сетап:┌─────────────┐ ┌─────────────┐ │ node A │ │ node B │ │ │ Yggdrasil │ │ │ Core + VTun │ <───────────> │ Core + VTun │ └──────┬──────┘ └──────┬──────┘ │ │ │ обычный TCP/UDP/HTTP │ │ через userspace IPv6 стек │ ▼ ▼ net. Client В нем можно выделить две разные сетевые прослойки. Первая - “carrier network”.
Это сеть, поверх которой сами Yggdrasil узлы устанавливают соединения друг с другом. В ygglib используется интерфейс Network за которым в конкретном случае может быть как обычная “нативная” сеть вашей ОС, так и socks прокся или вообще отладочная in-memory эмуляция сети (или даже другая yggdrasil сеть). Вторая - сама виртуальная IPv6 сеть yggdrasil, которая появляется после того, как узлы поднялись, нашли друг друга и обменялись служебной информацией.
Отраслевые последствия
Минимальный узелНачнем с самого минимального примера: создадим один yggdrasil Core узел, зарегистрируем TCP и TLS транспорты, выведем адрес узла и завершим работу. package main import ( "fmt" "github. com/asciimoth/gonnect/native" "github.
com/asciimoth/ygg/ygglib/config" "github. com/asciimoth/ygg/ygglib/core" ygglogger "github. com/asciimoth/ygg/ygglib/logger" "github.
com/asciimoth/ygg/ygglib/transport func main() { // Конфиг содержит идентичность узла. // Для примера генерируем новый self-signed сертификат на каждый запуск. GenerateConfig() if err := cfg.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





