Netsukuku
Эту статью необходимоисправить в соответствии справилом Википедии об оформлении статей. Пожалуйста, помогите улучшить эту статью.(1 июля 2021) |
Netsukuku | |
---|---|
Написана на | Vala, Си[1] и Python[1] |
Операционная система | Linux |
Первый выпуск | 2006 |
Последняя версия | |
Лицензия | GNU GPL 3[4] |
Сайт | netsukuku.freaknet.org |
Netsukuku — проект создания распределённойсамоорганизующейсяодноранговой сети, способной обеспечить взаимодействие огромного количества узлов при минимальной нагрузке нацентральный процессор ипамять. В такой сети возможно обеспечение повышенной отказоустойчивости, анонимности, невозможности цензуры и полной независимости отИнтернета.
В основе проекта лежит идея использования больших потенциальных возможностей связиWi-Fi: если компьютеры пользователей беспроводной связи будут действовать в качествемаршрутизаторов, то возможно создание самоорганизующейся сети на их основе, которая теоретически может быть даже большей, чем сеть интернет.
На данный момент завершено портированиеVala и доступна beta-версия. Релиз второй версии запланирован на июль-август 2017 года.
Реализация
[править |править код]Netsukuku — это ячеистая сеть передачи данных, илиp2p сеть, которая автоматически генерируется и самостоятельно поддерживается. Она создана для управления неограниченным числом узлов с минимальными затратами процессорного ресурса и памяти. Благодаря этому в будущем возможно построение всемирной распределённой, анонимной и не контролируемой сети, отдельно отИнтернет, без поддержки каких-либо служб, провайдеров и тому подобного.Такая сеть состоит из компьютеров, физически соединённых друг с другом, поэтому нет необходимости надстройки над уже существующей сетью.Netsukuku создаёт только пути, которые соединяют компьютеры в единую сеть.Иначе говоря,Netsukuku заменяет 3-й уровень современной моделиOSI другим протоколом маршрутизации.
В качестве заменыDNS (Domain Name System, системы доменных имён) авторыNetsukuku, предлагают использовать A Netsukuku Domain Name Architecture(ANDNA).
Netsukuku автоматически управляема. Она создаёт сама себя и может функционировать автономно. При подсоединении нового узла кNetsukuku сеть автоматически переписывает себя, и все остальные узлы знают наиболее быстрый и эффективный путь к новоприбывшему узлу. Узлы не имеют привилегий или ограничений по сравнению с остальными узлами: они представляют собой части одной сети.
С увеличением числа узлов сеть растёт, становясь более эффективной. ВNetsukuku нет различий между локальной и глобальной сетью, поэтому говорить олокальной сети бессмысленно.
Такая сеть не может быть контролируема или разрушена, потому что она полностью децентрализованная и распределённая. Единственный способ разрушить такую сеть — это физически вывести из строя каждый сигнальный узел, входящий в неё, или разбить на несвязанные островки.
ВнутриNetsukuku кто угодно, когда угодно и откуда угодно может подсоединиться к сети без каких-либо бюрократических проволочек или правового согласия. Более того, каждый узел динамичен и не постоянен.IP-адрес, идентифицирующий компьютер, выбирается случайно, поэтому его невозможно сопоставить с реальным физическим местом источника сигнала. К тому же, нет никакого контакта с какими-либо организациями.
Пропускная способность ограничивается возможностями нынешнихсетевых карт.
Netsukuku — это ячеистая сеть, илиp2p сеть, построенная на протоколе динамической маршрутизации Npv7_HT. В настоящее время существует достаточно много протоколов и алгоритмов для динамического управления, но они все отличаются от Npv7_HT, поскольку используются строго для создания маленьких сетей. Управление Интернетом также осуществляется различными протоколами, такими какOSPF,RIP илиBGP, в основе которых лежат классические алгоритмы, способные находить наилучший путь для достижения узла в сети.Данные протоколы требуют больших ресурсов процессора и памяти. По этой причине для подобных целей предназначены специальные компьютеры. Ни один из этих протоколов не сможет создать и поддерживать такую сеть, какNetsukuku, в которой каждый узел управляется самостоятельно, потому что маршрутная карта всех путей, хранящаяся на каждом компьютере в сети, требовала бы около 10 Гбайт пространства.
Структура Npv7 — сеть какфрактал. Для расчёта всех необходимых путей связи узла со всеми остальными узлами протокол использует особыйалгоритм, называемый Quantum Shortest Path Netsukuku (QSPN).Фрактал — это математическая структура с дробной размерностью, которая обладает свойством рекурсивности: каждая её часть является уменьшенной копией целого. Поэтому возможно большое сжатие структуры, которая может безгранично расширяться. А это значит, что нужно всего лишь несколько килобайт для хранения всей карты маршрутовNetsukuku.Структура маршрутной картыNetsukuku может быть также определена как высококластеризованный граф узлов.
С другой стороны,QSPN представляет собойметаалгоритм в том смысле, что не следует никаким математическим правилам, а использует случайность и хаос, которые не требуют сложных вычислений.QSPN выполняется в реальных сетях, узлы посылаютQSPN-пакеты для создания сети. По этой причине не всегда верно утверждение, что определённый пакет будет отослан раньше какого-либо другого.
Netsukuku не ограничивается созданием только сетей из компьютеров. Это протокол, который может использоваться в любой ситуации, когда надо соединить точки между собой.
Мобильная телефонная сеть представляет собой тысячи узлов, связанных с одним узлом, который распределяет трафик и передаёт информацию узлу назначения.Netsukuku может быть использована в мобильных телефонах, сделав бессмысленным существование многочисленных операторов сотовой связи.
Netsukuku может быть внедрена в любые коммуникационные системы, которые сейчас используются.
Протокол Npv7
[править |править код]ПротоколNetsukuku, первая версия.
Netsukuku использует свой собственныйпротоколNpv7, который родился из трёх предыдущих версий. Первый был очень похож на нынешние протоколы динамического управления: сеть была фактически разделена на несколько групп, и каждый сигнальный узел имел чёткую карту полной сети. Такая система не могла работать сNetsukuku, так как требовалось постоянно обновлять карту сети и каждое обновление приводило к перегрузке сети. Кроме того, после каждого обновления сети требовалось пересчитать все пути.
Разграничения Netsukuku.
Базовые определения:
- src_node
- Исходный узел. Узел, который отправляет пакет узлу назначения dst_node.
- dst_node
- Узел назначения. Узел, который получает пакет от исходного узла src_node.
- r_node
- Удалённый узел от узла X — это любой узел, связанный с узлом X.
- g_node
- Группа узлов или группа групп узлов.
- b_node
- Пограничный узел — узел, соединённый с двумя (r_node) узлами из разных (g_node) групп узлов.
- h_node
- Цепляющийся узел — узел, подсоединяющийся к Netsukuku.
- int_map
- Внутренняя карта. Внутренняя карта узла X содержит информацию о группе узлов (g_node), к которой он принадлежит.
- ext_map
- Внешняя карта. Карта содержит информацию о группах узлов.
- bmap/bnode_map
- Карта пограничных узлов. Карта содержит информацию о (b_node) пограничных узлах.
Npv7 II Лазерная передача, направленная сразу нескольким неспецифицированным приёмникам.
Npv7 II вторая версия прокола Npv7.
Netsukuku разделена на много маленьких групп узлов, до ста узлов в каждой группе, и каждый узел имеет внешнюю карту маршрутов. Все группы организованны в мультигруппы, называемые quadro group_node.Для того, чтобы создать новый маршрут и соединиться с заданным узлом, исходный узел, используя свою внешнюю карту, сначала ищет наилучший путь до пограничного узла группы, к которой принадлежит узел назначения.
QSPN
[править |править код]Тому, кто знаком с физикой волны, будет просто понять, как работает qspn. Если бросить камень в бассейн с водой, то можно наблюдать следующее: волны начинают распространяться из начальной точки, причём каждая волна рождает новую волну, которая продолжает распространяться и рождать все новые и новые волны. Когда волна ударяется о края бассейна или о какую-то преграду, она отражается и начинает распространяться в обратную сторону. В применении к qspn камень — это qspn_starter, бассейн — gnode, а каждая волна — tracer_pkt. Каждая новая волна несёт с собой информацию о родившей её волне. Когда tracer_pkt (волна) достигает extreme_node (препятствия или границы бассейна), рождается qspn_open (отражённая волна).
QSPN базируется на описанном принципе. Начиная трассировку узлов, каждый узел посылает qspn_pkt, называемый qspn_close, становясь тем самым qspn_starter.Qspn_pkt — это обычный tracer_pkt, но его метод вещания немного отличается от остальных.Каждый пакет, который получает qspn_close, «закрывает» линк узла, от которого получил этот пакет и отсылает пакеты по всем своим остальным линкам. Все последующие полученные qspn_close-пакеты будут переправляется по всем оставшимся незакрытым линкам.Через некоторый промежуток времени появляются узлы, у которых все линки будут закрыты.Такие узлы становятся extreme_node и посылают в качестве ответа другой qspn_pkt-пакет (qspn_open). Другими словами, qspn_open-пакет отправляется после того, как получены qspn_close-пакеты от всех узлов.Пакет qspn_open содержит всю информацию, собранную в последнем полученном пакете qspn_close. Extreme_node посылает пакет qspn_open по всем своим линкам, кроме того узла, от которого он получил последний qspn_close; этому узлу отсылается пустой пакет. Другими словами, пакет qspn_open отправляется после того, как узел получил пакет qspn_close от всех узлов.Узел, получивший пакет qspn_open, открывает все линки. Узлы со всеми открытыми связями абсолютно ничего не делают. Таким образом гарантируется законченность обмена пакетами qspn_close.У qspn_open-пакетов также есть идентификационный номер(sub_id) — число, которое идентифицирует во внешних картах узлы «extreme_node», сгенерировавшие эти qspn_open-пакеты. Sub_id, сгенерированный в самом первом пакете и не меняющийся во всех порождённых (qspn_open) пакетах, используется для управления большим числом qspn_pkt-пакетов, так как рано или поздно каждый узел сгенерирует пакет qspn_open, и все они должны быть независимы и отличны друг от друга.Действительно, все узлы, которые имеют только одну связь, — это узлы extreme_node, ведь когда они получают qspn_close, они уже закрыты.После отправки пакета qspn_open узел не может отвечать больше никому и ни на какие полученные qspn_pkt-пакеты, поэтому он больше ничего не отправляет.
Узел qspn_starter, который запустил qspn, становится обычным узлом, но не отправляет пакет qspn_open, поскольку отправил первый qspn_close. Кроме того, чтобы обновить свою собственную карту, узел будет использовать все полученные qspn_close-пакеты, кроме тех, которые были отправлены такими же qspn_start-узлами. Таким образом поддерживается стабильность в случае наличия более одного узла «qspn_starter».
Примечания
[править |править код]См. также
[править |править код]- Анонимные сети
- Криптоанархизм
- Шифропанк
- Цифровой барьер
- I2P — анононимная сеть
- B.A.T.M.A.N.
- Freenet
- TOR
- Cjdns
Ссылки
[править |править код]- Википедия:Статьи с проблемами в оформлении с июля 2021 года
- Википедия:Статьи с проблемами в оформлении
- Википедия:Статьи с шаблонами недостатков по алфавиту
- Википедия:Статьи с источниками из Викиданных
- Википедия:Статьи без изображений (тип: свободное программное обеспечение)
- ПРО:ИТ:Статьи по алфавиту
- ПРО:ИТ:Последняя правка: в текущем году