Введение

Netsukuku – экспериментальная система пиринговой маршрутизации, разработанная FreakNet MediaLab в 2005 году для создания распределённой сети, анонимной и свободной от цензуры, полностью независимой, но необязательно изолированной от Интернета, без поддержки серверов, интернет-провайдеров и централизованного управления. Netsukuku рассчитана на работу с до 2128 узлами без использования серверов или центральных систем, требуя минимальных ресурсов процессора и памяти. Эта mesh-сеть может быть построена на базе существующей сетевой инфраструктуры, такой как Wi-Fi. Проект находится в медленном развитии с 2005 года, оставаясь в бета-стадии и никогда не подвергаясь масштабному тестированию.

Операция

По состоянию на декабрь 2011 года последние теоретические разработки по Netsukuku были представлены в магистерской диссертации автора «Масштабируемые сети mesh и проблема балансировки адресного пространства». В данном описании рассматриваются только базовые концепции теории. Netsukuku использует собственный протокол маршрутизации под названием QSPN (Quantum Shortest Path Netsukuku), который стремится быть эффективным и не создавать чрезмерной нагрузки на вычислительные ресурсы каждого узла. Текущая версия протокола – QSPNv2. Он имеет иерархическую структуру: 256 узлов объединяются в гнод (групповой узел), 256 гнодов – в ггнод (группа групповых узлов), 256 ггнодов – в гггнод и так далее. Это обеспечивает ряд преимуществ, описанных в основной документации. Протокол опирается на предположение о стационарности узлов и медленных изменениях структуры сети, поскольку для распространения изменений в сети может потребоваться несколько минут. Однако узел, присоединившийся к сети, сразу же может осуществлять связь, используя маршруты своих соседей. Когда узел подключается к mesh-сети, Netsukuku автоматически адаптируется, и все остальные узлы узнают самые быстрые и эффективные маршруты для связи с новым узлом. Каждый узел имеет одинаковые права и ограничения с другими узлами. Система доменных имен (DNS) заменена децентрализованной и распределенной системой под названием ANDNA (Аномальная анархия доменных имен Netsukuku). База данных ANDNA включена в систему Netsukuku, поэтому каждый узел содержит такую базу данных, занимающую не более 355 килобайт памяти. Упрощенно, ANDNA работает следующим образом: для разрешения символического имени хост применяет к нему хеш-функцию. Хеш-функция возвращает адрес, по которому хост обращается с запросом на разрешение, сгенерированным хешем. Обращенный узел получает запрос, ищет в своей базе данных ANDNA адрес, связанный с именем, и возвращает его запрашивающему хосту. Регистрация работает аналогично: например, предположим, что узел X хочет зарегистрировать адрес FreakNet.andna. X вычисляет хеш имени и получает адрес 11.22.33.44, связанный с узлом Y. Узел X связывается с Y, прося зарегистрировать 11.22.33.44 как свой. Y сохраняет запрос в своей базе данных, и любой запрос на разрешение хеша 11.22.33.44 будет возвращать адрес X. Протокол несколько сложнее, поскольку система предоставляет пары открытый/закрытый ключ для аутентификации хостов и предотвращения несанкционированных изменений в базе данных ANDNA. Кроме того, протокол обеспечивает избыточность базы данных для устойчивости к сбоям и предусматривает миграцию базы данных при изменении топологии сети. Протокол не предусматривает возможности отзыва символического имени; после определенного периода неактивности (в настоящее время 3 дня) оно просто удаляется из базы данных. Протокол также предотвращает регистрацию одним хостом чрезмерного количества символических имен (в настоящее время 256 имен), чтобы предотвратить использование спамерами большого количества терминов для киберсквоттинга.