Netsukuku: Принципиально новая Cеть - фрактальный роутинг

Oct 14, 2005 06:06

Наткнулся тут на http://netsukuku.freaknet.org/

Товарищи предлагают совершенно новый тип сети, альтернативу иерархично построенному Инернету. Построена сеть на p2p-принципах - каждый узел вяжется с несколькими соседями, и каждый - опять же роутер. Написана уже тестовая бета-версия софта Netsukuku - это всего лишь роутинг-демон и DNS-резольвер, пока только для Linux. C интернетом оно несовместимо, тестируют пока на wi-fi связи. Как утверждается, оно уже реально работает.
Интересны принципы этой сети. Авторы хотят избавиться от иерархичного построения сети, когда трафик и подключение теоретически контролируются и кто-то политически может кого-то отключить. Но предлагаемая, схема, очевидно, требует, чтобы каждый узел-роутер знал маршрут до каждого узла в сети, что, опять же очевидно, невозможно - сейчас пограничные роутеры должны быть весмьа мощными машинами. Авторы предлагают учиться у Природы (муравейники etc.), эксплуатируя Хаос, и таким образом, сделав Сеть самоподобной, ужать таблицу маршрутизации всего до нескольких килобайт (порядка 1024 маршрутов в ядре для IPv4).

Как это работает. Отдельные узлы (level 0) объединяются в group_node (level 1), который сейчас может содержать до 256 узлов. Узел хранит внутреннюю карту - знает, как добраться до каждого узла в своей группе. Дальше - внешние карты, т.е. маршрутизирует на группу назначения, а те внутри себя разберутся. Дальше, групноды объединяются в групноды следующего уровня, тоже до 256 максимум, которые впрочем тоже называются group_node (level 2). То есть, для IPv4 будет 3 уровня, для v6 - 15, а принципиально неограниченное количество узлов. На уровне групнодов роутинг между ними осуществляют пограничные b_node, на следующем уровне это пограничные g_node в их роли и т.д.

Протокол роутинга у них называется QSPN (Quantum Shortest Path Netsukuku). Он выглядит так - узел (например при включении в сеть) запускает трассировочный броадкаст - который распространяется как волна. То есть, принцип Гюйгенса - каждый узел пускает вторичные волны, пакет трассировки сохраняет в себе пройденный путь. Линк, с которого пришла волна, узлом "закрывается" - если "закрылись" все линки узла, он запускает обратную волну на открытие - своего рода отражение волны от препятствия. Таким образом требуется относительно небольшое число пакетов, чтобы выяснить всю топологию подсети. То же повторяется пограничными узлами на более высоких уровнях для групнодов.

У вас еще не возникла стойкая ассоциация с BGP ? :) Может, авторы просто не знали, что современный Интернет примерно так и работает ? Только лишь автономные системы (AS) не иерархичны (уровень только один). Опять же пройденные AS сохраняются в атрибуте пути, это обязательно. И т.д.

IP адреса здесь выделяются динамически рандомно при включении в сеть, как функция от времени, чтоб у каждого уникальный был. Поэтому-то оно с инетом сейчас и несовместимо. Хотя это всего лишь схема L3 - дальше те же TCP и UDP и вообще все неизменно. Кстати, зная топологию всей сети, они хранят 10 лучших маршрутов и осуществляют балансировку нагрузки каналов.

И о DNS. Предложено заменить иерархию DNS анархией. Выглядит это так: от резольвемого имени вычисляется хэш - это будет IP-адрес машины, у которой собственно и спросим, во что резольвится имя. p2p-природа, естественно, порождает Стройную Систему Костылей и Подпорок (TM) - такого узла может и не быть. Для надежности инфу хранит еще и вся групнода, а т.к. и ее может и не быть, пройдемся по соседним номерам групнод и т.д. Отдельная песня - сообщения регистрации и апдейта DNS-имени, трехдневные таймауты и т.д. Так что я совсем не удивился, прочитав о реверсе вот это:

7.8.2 noituloser emantsoh esreveR

If a node wants to know all the related hostnames associated to an ip, it
will directly contact the node which possides that ip.

Спуфьте на здоровье :)

Резюме:
Сейчас софт представляет собой простого userland-демона, всего лишь устанавливающего маршруты в ядре и служащего DNS-сервером на 127.0.0.1. Динамический рандомный IP делает несовместимым это с текущим инетом, поэтому полигон в сером диапазоне класса A (10.0.0.0/8). Реализация, как говорят, требует всего лишь 355 Кб памяти под оперируемые данные. В общем, там еще много интересного, и документ и FAQ написаны живым языком, читать однозначно стоит.

Хотя я таки сторонник иерархии...

сети, технологии, internet

Previous post Next post
Up