Зачем MeshCore нужны регионы?

Простое объяснение

Как работает MeshCore

MeshCore - это радиосеть, состоящая из множества небольших ретрансляторов. Когда вы отправляете сообщение, происходит следующее:

  1. Ваше устройство передаёт сообщение по радиоканалу LoRa.
  2. Каждый ретранслятор, который получает сообщение, пересылает его дальше - ровно один раз.
  3. Сообщение передаётся от ретранслятора к ретранслятору, пока не достигнет всех участников сети.

Это называется лавинной маршрутизацией (flooding). Такой подход надёжен и прост, но у него есть особенность: каждое сообщение от каждого пользователя повторяется каждым ретранслятором в сети.

Посчитаем: сколько на самом деле "стоит" одно сообщение?

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

Конфигурация Передач на одно сообщение
Один компаньон, один ретранслятор 2
Один компаньон, два ретранслятора 3
Один компаньон, четыре ретранслятора 5

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

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

Шаг 1: сколько времени в среднем занимает один пакет?

Среднее время передачи одного пакета можно вычислить по статистике ретрансляторов:

Среднее время передачи = общее время TX ÷ количество отправленных пакетов

Ретранслятор Общее время TX Отправлено пакетов Среднее время TX на пакет
Flower 132 455 с 247 165 536 мс
RatSchen 112 575 с 221 376 509 мс
MU2 133 516 с 257 796 518 мс
Silo3 124 073 с 246 581 503 мс
GHETTO 238 985 с 407 917 586 мс

Таким образом, один пакет занимает радиоканал примерно на полсекунды.

Шаг 2: сколько пакетов помещается в 1 час?

В Meshcore существует параметр duty cycle (начиная с прошивки 1.15 используется вместо аналогичного по смыслу параметра airtime factor). Duty Cycle ограничивает, какую долю времени в процентах узел может занимать радиоэфир передачей. По умолчанию установлено значение 50% (эквивалент airtime factor 1.0).

Простыми словами, Duty Cycle = 50% означает, что из 1 часа устройство может передавать суммарно около 30 минут. Остальное время оно должно молчать и только принимать.

Это нужно для:

Макс. пакетов в час = 3600 секунд * ограничение ÷ среднее время передачи одного пакета

Пример расчёта для Flower:

3600 с * 50% ÷ 0,536 с = 3358 пакетов/час

Ретранслятор Среднее время TX на пакет Макс. пакетов/час
Flower 536 мс 3358
RatSchen 509 мс 3536
MU2 518 мс 3475
Silo3 503 мс 3579
GHETTO 586 мс 3072

То есть в среднем около 3400 пакетов в час - и это абсолютный максимум.

Ключевой момент

Эти 3400 пакетов в час - не на одного пользователя, а на всех пользователей вместе взятых.

Неважно, 5 человек в сети или 500: каждый ретранслятор может переслать только этот общий объём пакетов. Если одновременно пишут 50 человек, они делят между собой один и тот же ресурс.

Аналогия: представьте телефонную будку, в которой доступен только один час разговоров в день. Пользуется ею один человек или сто - этот час всё равно только один.

Почему регионы - это решение

Когда сеть растёт, существует только один способ увеличить её пропускную способность: разделить сеть.

Регион - это ограниченная территория со своими ретрансляторами. Сообщения из региона A не пересылаются в регион B. В результате:

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

Как разумно организовать регионы

Регионы работают лучше всего, когда они построены как концентрические круги - от меньшего к большему:

Иерархия, а не лоскутное одеяло

🌍 Родительский регион (например, Россия)  
   └─ 🏙️ Город/район/регион (например, Московская агломерация)  
      └─ 🏘️ Город (например, Москва)  
         └─ 🏠 Городской округ (например, Северный Административный Округ)  

У каждого уровня есть собственные ретрансляторы и собственный ресурс эфирного времени. Если кто-то общается в САО, это не нагружает ни всю Москву, ни соседей в ЗАО.

Практические правила для хороших регионов

Внимание: несколько регионов на одном ретрансляторе

Ретранслятор содержит список регионов. Но его ресурс эфирного времени - примерно 3400 пакетов в час - это всего лишь один общий ресурс. Этот ресурс делится между всеми регионами, которые обслуживает ретранслятор.

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

Когда это происходит повсеместно - многие владельцы ретрансляторов назначают своим ретрансляторам сразу несколько регионов - эти регионы фактически снова объединяются в одну большую сеть. Именно это и произошло в широком масштабе после введения регионов: намерение («быть доступным везде») понятно, но результат противоположен самой идее регионов - трафик регионов снова смешивается.

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

Золотое правило: всегда используйте наименьший подходящий регион

Для каждого сообщения выбирайте самый маленький регион, который охватывает всех нужных получателей.

Три примера:

Что вы хотите сделать? Правильный регион
Написать соседу за углом 🏠 Локальная группа
Задать вопрос всем жителям вашего города 🏘️ Город
Передать предупреждение всему сообществу 🌍 Родительский регион

Почему это так важно

Если вы публикуете сообщение, относящееся только к вашему району, в большом регионе, тогда:

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

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

Кратко

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


Основано на материалах оригинальной статьи - https://kiekr.app/why-regions © 2026 Marcel Verdult · kiekr.app