Как это работает
Здесь описаны расчёты сети, радиолиний и задержек.
Точность расчётов
Основные расчёты
| Показатель | Что означает | Как рассчитывается | Основание | Точность | |
|---|---|---|---|---|---|
| Количество хопов | Число радиопередач между исходной и конечной нодой. | Каждый успешный переход к следующей ноде увеличивает номер хопа на 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)Коэффициент |
| Рельеф / DEM | Реальный профиль высот земли между двумя нодами. | Профиль строится по 48 точкам Terrarium из Mapzen Terrain Tiles (AWS Open Data) с поправкой на эффективную кривизну Земли k=4/3. | Mapzen Terrain Tiles / Tilezen Joerd; исходные DEM включают SRTM и другие открытые наборы. | реальные DEM-данные + модель | ?Terrarium: |
| Зона Френеля и дифракция | Дополнительное ослабление при перекрытии радиотрассы рельефом. | Для каждой точки профиля вычисляются прямая видимость, радиус первой зоны Френеля и параметр ножевого препятствия 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 | ?
|
| Время слота 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. | данные источника | ?Исходные координаты сохраняются, поэтому после тестового перемещения ноду можно вернуть на место. |
Ограничения модели
- CAD и конкуренция передатчиков. Занятость радио оценивается по заданной загрузке канала.
- Коллизии. Временное перекрытие отдельных радиопакетов и capture effect не моделируются.
- TX-очередь и duty cycle. Время пакета учитывается, состояние радиоочереди упрощено.
- Дифракция. Для загруженного DEM используется одно критическое препятствие по ITU‑R P.526, а не полный многопрепятственный расчёт.
- NextHopRouter. Логика изученного следующего хопа воспроизводится, но начальный поиск маршрута выполняет алгоритм симулятора.