Як працює мережа
Радіо LoRa
Section titled “Радіо LoRa”LoRa — це спосіб радіопередачі, який жертвує швидкістю заради дальності та завадостійкості. Повідомлення передаються повільно (сотні байтів за секунду), зате їх можна прийняти на відстані кілометрів при потужності передавача в десятки міліват.
Три параметри визначають, як саме звучить сигнал:
- Частота — на якій «хвилі» працює мережа (у нас 869.618 МГц).
- Смуга (BW) — ширина каналу. Вужча смуга — нижчий рівень шуму і краща чутливість.
- Коефіцієнт розширення (SF) — наскільки «повільно» передається кожен символ. Вищий SF — більша дальність, але довша передача.
Щоб пристрої чули одне одного, ці параметри мають збігатися в усіх. Тому в мережі України використовується один пресет — див. Радіопараметри мережі.
Адверти: «я тут»
Section titled “Адверти: «я тут»”Кожен вузол має пару криптографічних ключів. Публічний ключ — це його «адреса». Щоб інші дізналися про вузол, він надсилає адверт (оголошення): ім’я, публічний ключ і, за бажанням, координати. Адверт підписаний, тож його не можна підробити.
- Адверт на нуль переходів чують лише вузли в прямій досяжності.
- Флуд-адверт ретранслятори передають далі по мережі.
Пристрої користувачів надсилають адверт лише за вашою командою. Ретранслятори — автоматично, раз на кілька десятків годин.
Як повідомлення знаходить адресата
Section titled “Як повідомлення знаходить адресата”MeshCore поєднує два способи доставки:
- Флуд (заливка). Перше повідомлення до нового співрозмовника йде «всім»: кожен ретранслятор, що його почув, передає далі. Так воно гарантовано знаходить адресата, якщо той досяжний.
- Прямий маршрут. Отримавши повідомлення, адресат надсилає підтвердження зі списком ретрансляторів, через які воно пройшло. Відправник запам’ятовує цей шлях, і наступні повідомлення йдуть лише через ці ретранслятори.
Завдяки цьому мережа не захлинається: ефір зайнятий лише тими ретрансляторами, що справді потрібні.
Якщо знайомий маршрут перестав працювати (ретранслятор вимкнули), застосунок кілька разів спробує старий шлях, а потім знову надішле повідомлення флудом і знайде новий.
Хто пересилає повідомлення
Section titled “Хто пересилає повідомлення”Лише ретранслятори (і кімнати з увімкненим режимом ретрансляції). Пристрої користувачів чужі повідомлення не пересилають — це свідоме рішення: сотні кишенькових пристроїв, що повторюють усе підряд, забили б ефір.
Звідси головне правило мережі: покриття створюють ретранслятори. Один ретранслятор на даху багатоповерхівки відкриває зв’язок для цілого району.
Канали
Section titled “Канали”Повідомлення в канал адресоване не одній людині, а всім, хто знає ключ каналу. Тому канали завжди поширюються
флудом. Ретранслятори можуть обмежувати, на скільки переходів поширюється флуд (flood.max), щоб віддалені частини
мережі не заважали одна одній.
Обмеження
Section titled “Обмеження”- До 64 переходів на одне повідомлення (у режимі хешу шляху 1 байт).
- Повідомлення — до ~150 символів. Кирилиця в UTF-8 займає по 2 байти на літеру, тож вміщується менше тексту, ніж латиницею.
- Ефір спільний: поки один вузол передає, інші поруч чекають. Чим менше зайвих передач, тим краще мережа працює для всіх.