В походе, в горах или во время отключения сотовой связи привычный телефон превращается в бесполезный кусок стекла: без вышки оператора он не может ни позвонить, ни отправить сообщение. Проект Meshtastic решает эту проблему принципиально другим способом, без всякой инфраструктуры оператора связи. Каждое устройство сети, обычно небольшой модуль на основе микроконтроллера ESP32 или nRF52 с радиочипом LoRa, само становится маленькой базовой станцией, способной принять сообщение от соседа и передать его дальше. Чем больше таких устройств рассредоточено по территории, тем шире зона покрытия сети, потому что сообщение путешествует от узла к узлу, пока не дойдёт до адресата. Разберём, на какой технологии строится эта передача, как узлы решают, кому и когда ретранслировать пакет, и какие практические ограничения сдерживают рост подобной сети.

На какой физической технологии строится связь между узлами Meshtastic

В основе сети лежит радиотехнология LoRa, название которой расшифровывается как Long Range, то есть дальняя связь. Особый вид модуляции сигнала, называемый расширением спектра методом линейной частотной модуляции, позволяет приёмнику уверенно выделять полезный сигнал даже там, где его уровень оказывается ниже уровня фонового шума эфира. За это приходится платить низкой скоростью передачи данных, обычно от нескольких сотен бит в секунду до нескольких десятков килобит, чего вполне достаточно для коротких текстовых сообщений, координат GPS и служебной телеметрии, но категорически мало для голоса или изображений в привычном понимании. Устройства работают в нелицензируемом ISM-диапазоне, для России это, как правило, участок около 868 мегагерц, и мощность передатчика ограничена сотней милливатт, что многократно меньше мощности базовой станции сотового оператора. Именно сочетание узкополосного, но устойчивого к помехам сигнала и крайне низкого энергопотребления позволяет устройству неделями работать от небольшого аккумулятора или солнечной панели, оставаясь при этом полноценным узлом сети.

Почему разработчики выбрали управляемую лавинную рассылку вместо построения маршрутов

Классические сетевые протоколы обычно стараются заранее вычислить оптимальный маршрут от отправителя до конкретного получателя и слать пакет именно по этому пути, экономя пропускную способность канала. Разработчики Meshtastic сознательно отказались от такого подхода в пользу метода, который называют управляемой лавинной рассылкой. Логика простая: узел, получивший новый пакет, ретранслирует его всем соседям в радиусе действия, а те, в свою очередь, передают его дальше, пока сообщение не разойдётся по всей достижимой части сети. Причина такого выбора в характере самого трафика и в ограничениях канала: построение и поддержание таблиц маршрутизации требует постоянного обмена служебными пакетами, а на канале с пропускной способностью в сотни бит в секунду каждый лишний байт служебной информации ощутимо съедает и без того скудный ресурс эфирного времени. Помимо служебных издержек, большая часть сообщений в подобной сети и так предназначена сразу всем участникам канала, а не одному конкретному адресату, поэтому выгода от вычисления единственного оптимального маршрута в таких условиях невелика, а цена за её получение оказывается слишком высокой.

Как именно происходит ретрансляция пакета внутри сети шаг за шагом

Чтобы лавинная рассылка не превратилась в бесконечный поток дублирующих друг друга пакетов, протокол вводит два защитных механизма. Первый: каждый пакет несёт уникальный идентификатор, и узел, уже видевший конкретный идентификатор, повторно его не ретранслирует, даже если получает копию сообщения от нескольких соседей одновременно. Второй: прежде чем начать собственную ретрансляцию, узел ненадолго прислушивается к эфиру, и если слышит, что кто-то из соседей уже начал передавать тот же самый пакет, отменяет собственную попытку, экономя место в канале и энергию батареи. Именно благодаря этой добавке простая лавинная рассылка превращается в управляемую: сеть по-прежнему не требует централизованного контроля и позволяет начать обмен сообщениями сразу после включения устройства, без этапа обнаружения маршрутов, но при этом заметно снижает число коллизий и повторных передач по сравнению с наивной реализацией той же идеи.

Зачем нужно поле счётчика прыжков и что будет при его завышении

Чтобы сообщение не циркулировало по сети бесконечно, каждый пакет несёт в заголовке значение, ограничивающее число ретрансляций. Под это поле в протоколе отведено всего три бита, что позволяет закодировать значения от нуля до семи, и на практике узлы обычно настраивают счётчик в диапазоне от трёх до семи прыжков в зависимости от плотности и площади конкретной сети. Каждый промежуточный узел, ретранслируя пакет, уменьшает значение счётчика на единицу, и когда оно достигает нуля, дальнейшая пересылка прекращается. Казалось бы, чем больше значение счётчика, тем шире итоговое покрытие, но у этого параметра есть обратная сторона: каждая дополнительная ретрансляция занимает эфирное время, а поскольку канал общий для всех узлов в радиусе слышимости, слишком большое значение счётчика на плотной сети из десятков устройств быстро приводит к перегрузке канала, росту задержек и потере части сообщений из-за столкновений передач. Разработчики сети рекомендуют подбирать значение счётчика исходя из реальной плотности узлов, а не выставлять максимум по умолчанию.

Какую роль в сети играют узлы с разными настройками поведения

Каждое устройство в сети Meshtastic можно настроить на одну из нескольких ролей, определяющих его поведение при ретрансляции чужих пакетов:

  1. Роль клиента используется большинством обычных устройств пользователей: узел участвует в ретрансляции наравне со всеми, но не выполняет никаких специальных функций сверх этого;
  2. Роль маршрутизатора назначают узлу с наилучшим положением и покрытием, например установленному на возвышенности или на крыше здания, чтобы именно он чаще становился связующим звеном между удалёнными частями сети;
  3. Роль повторителя предназначена для узлов без собственного экрана и клавиатуры, установленных исключительно для расширения зоны покрытия, и требует крайне аккуратного применения, потому что бездумная установка нескольких таких узлов рядом друг с другом резко увеличивает число коллизий в канале;
  4. Роль трекера используют для устройств, основная задача которых - периодически сообщать сети свои координаты, например при отслеживании перемещения группы в походе.

Опытные администраторы подобных сетей отдельно предупреждают: назначение роли маршрутизатора или повторителя устройству со слабым покрытием способно ухудшить работу сети сильнее, чем полное отсутствие такого узла, потому что оно добавляет лишний трафик ретрансляций, не принося взамен ощутимого прироста зоны действия.

Как устроено шифрование сообщений и разделение сети на каналы

Приватность в сети Meshtastic обеспечивается на уровне каналов: каждый канал защищён общим ключом шифрования по алгоритму AES256, и устройства, не знающие этот ключ, хотя физически и принимают радиосигнал вместе со всеми остальными узлами поблизости, не могут прочитать содержимое пакетов, адресованных этому каналу. Пользователи могут создавать собственные приватные каналы с уникальным ключом для узкого круга участников, оставляя публичный канал по умолчанию открытым для общего обмена служебной информацией вроде положения узлов на карте сети. Для личной переписки между двумя конкретными пользователями протокол дополнительно поддерживает шифрование на основе пары открытого и закрытого ключей, при котором даже участники того же самого канала не могут прочитать содержимое чужого личного сообщения, даже зная общий ключ канала целиком.

От чего реально зависит дальность связи между соседними узлами сети

Заявляемая дальность связи в десятки километров достижима лишь при определённых условиях, и разработчики подчёркивают, что реальный результат сильно зависит от рельефа местности, высоты установки антенны и выбранного режима работы радиомодуля. Протокол LoRa позволяет выбирать между несколькими предустановленными комбинациями параметров модуляции, где более медленные режимы с широким расширением спектра дают заметно большую дальность и устойчивость к помехам ценой снижения скорости передачи данных, а более быстрые режимы жертвуют дальностью ради возможности передавать больше сообщений в единицу времени на плотной городской сети. В условиях прямой видимости между возвышенностями связь способна сохраняться на дистанциях, измеряемых десятками километров, тогда как в плотной городской застройке с большим количеством препятствий та же самая пара устройств может связываться лишь на расстоянии в несколько километров, а иногда и меньше, из-за отражений и затенения сигнала зданиями.

Что сдерживает рост подобной сети при увеличении числа участников

Главное практическое ограничение сети Meshtastic - разделяемая природа радиоканала: сколько бы узлов ни находилось в радиусе слышимости друг друга, все они используют одну и ту же полосу частот и должны по очереди получать доступ к эфиру. При превышении определённого порога плотности, ориентировочно нескольких десятков активных узлов в зоне взаимной слышимости, канал начинает испытывать заметную перегрузку: сообщения задерживаются, часть пакетов теряется из-за коллизий, а собственная задержка каждой отдельной передачи, доходящая до нескольких секунд на пакет из-за особенностей модуляции LoRa, дополнительно усугубляет ситуацию. Регуляторные ограничения на мощность передатчика и допустимую долю времени, которую устройство вправе занимать эфир в нелицензируемом диапазоне, также напрямую ограничивают, насколько часто и насколько мощно узел способен ретранслировать чужие пакеты. Именно поэтому масштабирование подобной сети на большой город требует не простого увеличения числа устройств, а продуманного разделения территории на отдельные каналы и разумного распределения узлов с ролью маршрутизатора, чтобы избежать превращения общей зоны слышимости в перегруженный радиоэфир, где полезные сообщения тонут в потоке взаимных ретрансляций.

Понимание внутренней логики подобной сети объясняет её главное практическое свойство: она растёт снизу вверх, силами самих участников, а не сверху вниз, силами оператора связи, и качество итогового покрытия зависит не от одной мощной вышки, а от того, насколько разумно рассредоточены по территории десятки или сотни отдельных маломощных узлов.

Как выглядит типичный сценарий использования сети в условиях без связи

Представим группу из нескольких человек, отправившихся в многодневный поход по горной местности, где сотовая связь отсутствует на большей части маршрута. У каждого участника с собой небольшое устройство Meshtastic, подключённое по беспроводному интерфейсу к смартфону с установленным приложением. Пока группа держится компактно, все устройства слышат друг друга напрямую, и сообщения доходят за один шаг без единой ретрансляции. Как только часть группы уходит вперёд по маршруту и удаляется на расстояние, превышающее прямую дальность связи, устройства участников, оставшихся между двумя группами, автоматически начинают выполнять роль промежуточных ретрансляторов, даже если их владельцы никак специально не настраивали эту функцию. Сообщение от отставшей части группы доходит до ушедших вперёд через один или два промежуточных узла, и всё это происходит без какого-либо ручного вмешательства: сеть самостоятельно перестраивает пути прохождения сообщений по мере того, как меняется взаимное расположение участников на местности.

Чем такая сеть принципиально отличается от привычной сотовой связи

Пользователю, привыкшему к сотовой связи, важно понимать несколько фундаментальных отличий, чтобы не переносить на новую технологию ложные ожидания. Во-первых, скорость передачи данных здесь на много порядков ниже, поэтому речь идёт исключительно о текстовых сообщениях, координатах и небольших пакетах телеметрии, а не о голосовых звонках или передаче файлов в привычном смысле. Во-вторых, задержка доставки сообщения непредсказуема и может составлять от долей секунды при прямой связи до десятков секунд или даже минут, если сообщению приходится пройти через несколько промежуточных узлов с очередями и повторными попытками передачи. В-третьих, у сети попросту нет единого оператора, отвечающего за её работоспособность: если в конкретном районе оказалось слишком мало активных устройств, связь там просто не сложится, и никакая техническая поддержка эту проблему решить не сможет, кроме размещения дополнительных узлов силами самих пользователей. Эти ограничения делают технологию нишевым, а не универсальным решением: она отлично закрывает потребность в базовой связи там, где сотовая инфраструктура отсутствует или недоступна, но не претендует на замену привычной мобильной сети там, где та работает штатно.