Что такое Reticulum?¶
Reticulum — это сетевой стек на основе криптографии для построения локальных и глобальных сетей с использованием легкодоступного оборудования, который может продолжать функционировать в неблагоприятных условиях, таких как чрезвычайно низкая пропускная способность и очень высокая задержка.
Чтобы понять основополагающую философию и цели этой системы, прочитайте Zen of Reticulum.
Reticulum позволяет создавать глобальные сети с помощью готовых инструментов и предлагает сквозное шифрование, прямую секретность, автоконфигурируемый криптографически защищенный многоузловой транспорт, эффективную адресацию, неподдельные подтверждения пакетов и многое другое.
С точки зрения пользователя, Reticulum позволяет создавать приложения, которые уважают и расширяют автономию и суверенитет сообществ и отдельных лиц. Reticulum обеспечивает безопасность цифровых коммуникаций, которые не могут быть подвергнуты внешнему контролю, манипуляциям или цензуре.
Reticulum позволяет строить как небольшие, так и потенциально планетарные сети без необходимости использования иерархических или бюрократических структур для их контроля или управления, обеспечивая при этом полный суверенитет отдельных лиц и сообществ над своими сегментами сети.
Reticulum — это полный сетевой стек, который не требует
IP‑протокола или более высоких уровней
,
хотя протокол IP (TCP или UDP) можно использовать в качестве
базового канала для Reticulum.
Поэтому Reticulum легко туннелировать через Интернет или частные IP‑сети.
Reticulum построен непосредственно на криптографических принципах,
что обеспечивает отказоустойчивость и стабильную работу в открытых и не доверенных сетях.
Не требуется никаких модулей ядра или драйверов. Reticulum может работать полностью в пользовательском пространстве и будет работать практически на любой системе, на которой работает Python 3. Reticulum хорошо работает даже на небольших одноплатных компьютерах, таких как Pi Zero.
Текущий статус¶
Все основные функции протокола реализованы и работают, но по мере изучения реальных условий использования, вероятно, будут добавлены дополнительные функции. API и формат передачи данных можно считать завершенными и стабильными, но они могут измениться, если это будет абсолютно необходимо.
Эталонная реализация ¶
Код на языке Python, для которого написана данная документация и известный как Reticulum Network Stack,
является эталонной реализацией Reticulum.
Протокол Reticulum полностью и авторитетно определяется данной эталонной реализацией и
настоящим руководством.
Его поддерживает Марк Квист (Mark Qvist),
с идентификатором в сети Reticulum:
<bc7291552be7a58f361522990465165c>
Реализация считается совместимой с протоколом Reticulum, если она полностью взаимодействует с эталонной реализацией и обеспечивает те же основные функции. Если оба условия выполнены — реализация является Reticulum. Любая, которая этого не делает, не является Reticulum.
Эталонная реализация лицензируется по лицензии Reticulum.
Протокол Reticulum был передан в общественное достояние в 2016 году.
Что предлагает Reticulum?¶
Глобальная уникальная адресация и идентификация без координации
-
Полностью самонастраиваемая многоузловая маршрутизация по гетерогенным сетям
-
Гибкая масштабируемость в гетерогенных топологиях
-
Reticulum может передавать данные по любой комбинации физических носителей и топологий
-
Сети с низкой пропускной способностью могут сосуществовать и взаимодействовать с большими сетями с высокой пропускной способностью
-
-
Анонимность инициатора, общайтесь, не раскрывая свою личность
Reticulum не включает исходные адреса в любые пакеты
-
Асимметричное шифрование X25519 и подписи Ed25519 как основа для всей коммуникации
-
Основные идентификационные ключи Reticulum представляют собой наборы ключей эллиптической кривой длиной 512 бит
-
-
Прямая секретность доступна для всех типов связи, как для отдельных пакетов, так и для каналов связи
-
Reticulum использует следующий формат для зашифрованных токенов:
Неподделываемые подтверждения доставки пакетов
-
Гибкая и расширяемая система интерфейсов
-
Reticulum включает широкий набор встроенных типов интерфейсов
-
Возможность загрузки и использования пользовательских или предоставленных сообществом типов интерфейсов
-
Легко создавайте собственные интерфейсы для связи по любому каналу
-
-
Аутентификация и виртуальная сегментация сети для всех поддерживаемых типов интерфейсов
-
Интуитивно понятный и простой в использовании API
-
Легче и удобнее в использовании, чем API‑интерфейсы сокетов, и при этом более мощный
-
Значительно упрощает создание распределенных и децентрализованных приложений
-
-
Надежная и эффективная передача произвольных объемов данных
-
Reticulum может работать как с несколькими байтами данных, так и с файлами размером в несколько гигабайт
-
Последовательность, сжатие, координация передачи и контроль контрольных сумм выполняются автоматически
API очень прост в использовании и отображает ход передачи данных
-
Легкий, гибкий и расширяемый механизм запроса/ответа
-
Эффективное установление связи
-
Общая стоимость установки зашифрованного и проверенного соединения составляет 3 пакета, суммарно 297 байт
Низкая стоимость поддержания соединения — всего 0,44 бита в секунду
-
Надёжная последовательная доставка с использованием механизмов Каналов и Буферов
Где можно использовать Reticulum?¶
Практически на любом носителе, который может поддерживать хотя бы полудуплексный канал
со скоростью более 5 бит/с и
MTU ≈ 500 байт.
Радиостанции для передачи данных,
модемы,
радиомодули LoRa,
последовательные линии,
AX.25 TNC,
цифровые режимы любительского радио,
ad-hoc WiFi,
беспроводные оптические линии связи и
аналогичные системы — все это примеры типов интерфейсов, для которых был разработан Reticulum.
Открытый интерфейс на базе LoRa под названием RNode был разработан в качестве примера трансивера, который очень хорошо подходит для Reticulum. Его можно собрать самостоятельно, превратив обычную плату разработки LoRa в такой трансивер, либо купить готовый трансивер у различных поставщиков.
Reticulum может быть инкапсулирован поверх существующих IP‑сетей, поэтому ничто не мешает использовать его через проводной Ethernet или локальную Wi‑Fi сеть — он будет работать так же эффективно. Фактически, одной из сильных сторон Reticulum является то, как легко он позволяет соединять разные среды в самонастраивающуюся, устойчивую и зашифрованную mesh‑сеть.
В качестве примера можно настроить Raspberry Pi, подключённый одновременно к LoRa‑радио, пакетному радиомодулю TNC и Wi‑Fi сети. После добавления этих интерфейсов Reticulum позаботится обо всём остальном, и любое устройство в Wi‑Fi сети сможет обмениваться данными с узлами на LoRa и пакетного радио, и наоборот.
Типы интерфейсов и устройства¶
Reticulum реализует набор обобщённых типов интерфейсов, охватывающих аппаратные средства связи, через которые может работать Reticulum. Если ваше оборудование не поддерживается, его легко добавить, реализовав класс интерфейса. В настоящее время Reticulum может использовать следующие устройства и средства связи:
-
Любое Ethernet‑устройство
Wi‑Fi‑устройства
Проводные Ethernet‑устройства
Оптоволоконные трансиверы
Радиомодули передачи данных с Ethernet‑портами
-
LoRa с использованием RNode
-
Может быть установлен на многих популярных платах LoRa
-
Доступен в виде готового к использованию трансивера
-
-
Пакетные радиомодемы (TNC), такие как OpenModem
Любое устройство с последовательным портом
Сеть I2P
TCP поверх IP‑сетей
UDP поверх IP‑сетей
-
Любой интерфейс, доступный через stdio
Reticulum может использовать внешние программы и каналы (pipe) в качестве интерфейсов
Это можно использовать для простого добавления виртуальных интерфейсов
Или быстро создать интерфейсы для пользовательского оборудования
Любое другое решение, использующее кастомные интерфейсные модули, написанные на Python
Полный список и более подробную информацию см. в главе Поддерживаемые интерфейсы.