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

Здесь описаны расчёты сети, радиолиний и задержек.

база: Meshtastic 2.7.26

Точность расчётов

Тайминги окна конкуренции, SNR-зависимых задержек и тайм-аута повтора взяты из Meshtastic 2.7.26. Радиораспространение, вероятность приёма, занятость эфира и поиск маршрута рассчитывает симулятор. RSSI и SNR здесь расчётные, а не измеренные.
порт прошивкисмешанныймодельданные источника

Основные расчёты

ПоказательЧто означаетКак рассчитываетсяОснованиеТочность
Количество хоповЧисло радиопередач между исходной и конечной нодой.Каждый успешный переход к следующей ноде увеличивает номер хопа на 1. Передача останавливается при исчерпании лимита.Поля hop_start/hop_limit Meshtastic и логика маршрутизации прошивки.протокольная семантика
?

Для показанного пути A → B → C результат равен 2 хопам. В широковещательной передаче одновременно могут существовать несколько ветвей с разным числом хопов.

РасстояниеГеодезическое расстояние между двумя координатами.Формула гаверсинусов для широты и долготы двух нод.Стандартная геодезическая формула; используются координаты нод в сцене.геометрия
?d = 2R·asin(√a)

Рельеф не входит в геодезическое расстояние.

Потери распространенияОценка ослабления радиосигнала между нодами.Логарифмическая модель расстояния с коэффициентом среды: открытая местность, пригород, город или плотная застройка.Общепринятая log-distance path-loss model; подход сопоставим с упрощёнными режимами радиосимуляторов.модель
?PL(d)=PL(1м)+10·n·log10(d)

Коэффициент n зависит от выбранной среды. Если загружен DEM и включён учёт рельефа, к базовым потерям добавляется дифракционная оценка по профилю.

Рельеф / DEMРеальный профиль высот земли между двумя нодами.Профиль строится по 48 точкам Terrarium из Mapzen Terrain Tiles (AWS Open Data) с поправкой на эффективную кривизну Земли k=4/3.Mapzen Terrain Tiles / Tilezen Joerd; исходные DEM включают SRTM и другие открытые наборы.реальные DEM-данные + модель
?

Terrarium: h = R·256 + G + B/256 − 32768. DEM описывает высоты исходной цифровой модели рельефа.

Зона Френеля и дифракцияДополнительное ослабление при перекрытии радиотрассы рельефом.Для каждой точки профиля вычисляются прямая видимость, радиус первой зоны Френеля и параметр ножевого препятствия v. Берётся наиболее критичная точка; при v > −0,78 применяется аппроксимация ITU‑R P.526.Recommendation ITU‑R P.526-16 (2025), single knife-edge diffraction.стандарт + упрощение
?F1 = √(λ·d1·d2/(d1+d2))
J(v) ≈ 6,9 + 20log10(√((v−0,1)²+1)+v−0,1)

Модель использует одно наиболее критичное препятствие. Для сложного профиля с несколькими хребтами это не полный расчёт P.526.

Усиление направленной антенныКак азимут Yagi/Moxon/панели меняет связь.Из направления TX→RX и азимута антенны определяется угловая ошибка; текущая упрощённая диаграмма приложения ступенчато уменьшает усиление вне основного лепестка.Параметры усиления/ширины диаграммы, введённые пользователем; упрощённая диаграмма приложения.модель
?

Используется упрощённая диаграмма, а не паспортная диаграмма конкретной антенны.

RSSIОценка мощности принятого сигнала.Мощность TX + усиление обеих антенн − потери кабеля − потери распространения − дополнительные потери размещения.Классический link budget.модель
?RSSI ≈ Ptx + Gtx + Grx − PL − Ltx − Lrx − Lместа

Расчёт выполняется отдельно для каждого направления каждой пары нод.

SNRОтношение сигнала к шуму.Из расчётного RSSI вычитается шумовой фон сцены.Определение SNR; шумовой фон задаётся пользователем.модель
?SNR ≈ RSSI − NoiseFloor

Шумовой фон задаётся одним значением для всей сцены.

Запас связиНасколько рассчитанный SNR выше порога выбранного LoRa-шаблона.Из SNR вычитается порог чувствительности модели выбранного шаблона.Параметры SF/BW/CR и модель чувствительности.модель
?Margin = SNR − SNRпорог

Положительный запас не гарантирует доставку при коллизии или локальной помехе.

Вероятность приёмаОценка вероятности успешного приёма конкретного пакета.Плавная логистическая функция от запаса связи с детерминированной псевдослучайностью.Логистическая функция от запаса связи.модель
?

Одинаковая сцена и одинаковое «случайное зерно» дают повторяемый эксперимент. Эта вероятность не является паспортным PER конкретного радиочипа.

Время пакета в эфиреСколько времени LoRa-пакет занимает радиоэфир.Стандартная формула времени LoRa-пакета в эфире по SF, BW, CR, размеру нагрузки и преамбуле 16.Semtech LoRa + параметры RadioInterface Meshtastic 2.7.26.формула PHY
?

Tsymbol=2^SF/BW; затем рассчитываются символы преамбулы и полезной нагрузки. Симулятор добавляет 16 байт заголовка Meshtastic к указанной пользователем нагрузке.

Время слота CSMA/CAМинимальный шаг окна конкуренции перед передачей.2,5 LoRa-символа для CAD + 7,6 мс, заложенные прошивкой на распространение, переключение и обработку MAC.RadioInterface::computeSlotTimeMsec(), Meshtastic 2.7.26.порт прошивки
?slot = 2,5·(2^SF/BWкГц) + 7,6 мс
Окно конкуренции по загрузкеДиапазон случайного ожидания для локальной передачи.Загрузка канала 0…100% целочисленно отображается в CW 3…8; затем выбирается случайное число слотов от 0 до 2^CW−1.getTxDelayMsec(), CWmin=3, CWmax=8.порт прошивки
?CW = map(util,0..100,3..8)
delay=random(0,2^CW)·slot
Окно конкуренции по SNRПочему более дальняя нода обычно получает шанс ретрансляции раньше.SNR от −20 до +10 dB целочисленно отображается в CW 3…8.RadioInterface::getCWsize().порт прошивки
?CWsnr=map(SNR,−20..+10,3..8)

Низкий SNR → меньший CW → короче потенциальное ожидание.

Задержка ROUTERРаннее окно инфраструктурного маршрутизатора.Только роль ROUTER получает раннее SNR-зависимое окно.shouldRebroadcastEarlyLikeRouter() и getTxDelayMsecWeighted().порт прошивки
?delay=random(0,2·CWsnr)·slot

Задержка обычной ретрансляцииОкно CLIENT и остальных ролей, не являющихся ROUTER.Сначала резервируется окно ранних маршрутизаторов, затем применяется SNR-зависимое случайное ожидание.getTxDelayMsecWeighted().порт прошивки
?delay=2·CWmax·slot + random(0,2^CWsnr)·slot
ROUTER_LATE / CLIENT_BASE для избранной нодыПоздняя страховочная ретрансляция.Такая нода не отменяет запланированную передачу при дубликате; при необходимости событие переносится в позднее окно.FloodingRouter::roleAllowsCancelingDupe() и late-rebroadcast logic Meshtastic 2.7.26.порт поведения
?late ≥ now + 2·CWmax·slot + 2^CWsnr·slot

Для CLIENT_BASE это применяется только к трафику, связанному с избранными нодами.

Подавление дубликатовПочему все слышащие ноды не ретранслируют один пакет.Обычная нода отменяет ожидающую ретрансляцию, если раньше услышала тот же Packet ID от другого ретранслятора. ROUTER/ROUTER_LATE и CLIENT_BASE для избранного трафика являются исключениями.FloodingRouter.cpp.порт поведения
?

Это основа управляемое широковещательное распространение (Managed Flooding). Прошивка дополнительно учитывает состояние радиоочереди и фактический момент приёма.

Тайм-аут повторной передачиСколько ждать ACK/неявный ACK до очередной попытки.Учитываются двойное время пакета, CW текущей загрузки, зарезервированное окно ретрансляторов и 4500 мс обработки.RadioInterface::getRetransmissionMsec().порт формулы
?2·airtime + (2^CW + 2·CWmax + 2^5)·slot + 4500 мс
Маршрут личного сообщенияКакая цепочка используется от источника до назначения.Если сохранённый маршрут всё ещё работоспособен, используется он. Иначе приложение ищет достижимую цепочку по совместимым радиолиниям, лимиту хопов и способности промежуточных нод ретранслировать.Семантика NextHopRouter; сам поиск цепочки — алгоритм приложения.смешанный
?

Прошивка хранит и обновляет состояние next-hop; поиск цепочки в симуляторе реализован отдельно.

Повторы и возврат к floodingЧто происходит при отказе изученного следующего хопа.Исходный отправитель делает до 3 попыток; промежуточный хоп получает одну дополнительную попытку. На финальной попытке неработающий изученный маршрут сбрасывается.NextHopRouter + ReliableRouter.порт семантики
?

Тайм-аут берётся из формулы прошивки; состояние TX-очереди упрощено.

Канал и PSKРазличие между «радио услышало» и «пакет расшифрован».LoRa-совместимость проверяется отдельно от имени канала и PSK. При ALL физически полученный, но не расшифрованный пакет может участвовать в ретрансляции.Meshtastic Channels + Rebroadcast Mode.протокольная семантика
?

Пунктирная фиолетовая линия означает совместимое радио при отличающемся канале/PSK.

Реальные ноды Санкт-ПетербургаСнимок публичных Meshtastic-нод для добавления в сцену.По нажатию кнопки загружаются ID, имя, координаты, роль, модель устройства и шаблон модема. Загруженные ноды добавляются выключенными для симуляции.EtoHost.ru.данные источника
?

Исходные координаты сохраняются, поэтому после тестового перемещения ноду можно вернуть на место.

Ограничения модели

Источники