Исторически в сетях MeshCore использовалось построение маршрутов по однобайтным префиксам публичных ключей репитеров (2 первых символа hex-представления ключа), потому что сеть проектировалась под жёсткие ограничения LoRa: минимальный размер пакета и максимальную дальность. Один хоп занимал всего 1 байт, поэтому маршрут мог содержать до 64 переходов без сильного раздувания пакета. Для ранних небольших mesh-сетей этого хватало.
Проблема появилась с ростом сетей. Один байт даёт лишь 254 уникальных префикса (0x00 и 0xFF зарезервированы). Начали регулярно возникать коллизии — разные репитеры получали одинаковый префикс. Сама сеть при этом обычно продолжала работать, потому что криптография использует полный ключ устройства, но маршрутизация и анализ путей становились менее надёжными и предсказуемыми. Появлялись неоднозначные маршруты, сложности с директами и диагностикой сети.
В версии прошивки начиная с 1.14 появилась поддержка разных длин префиксов пути – 1, 2 или 3 байта.
‼️ Переход на двухбайтные адреса решает именно проблему масштабирования. Вместо 254 префиксов сеть получает уже 65535. Вероятность коллизий резко падает, маршруты становятся стабильнее, а крупные региональные mesh-сети перестают «спотыкаться» о совпадающие префиксы.
Есть и минус перехода на 2 байта: теперь доступно меньше хопов в маршруте - максимум 32, потому что максимальный размер пакета не изменился, а префиксы стали в два раза больше.
Используем официальное приложение MeshCore. Действуем так:
Experimental Settings;2-byte в поле Default Path Hash Size;Используем официальное приложение MeshCore или подключаемся к репитеру иным способом. Действуем так:
Command Line;set path.hash.mode 1 и дожидаемся ответа OK.