Protokół routingu

MeshCore algorytmy routingu

Dowiedz się, jak MeshCore Messages automatycznie znajduje najlepszą trasę przez sieć mesh. Techniczne wyjaśnienie dotyczące powodzi, ograniczeń przeskoków i odkrywania tras.

W jaki sposób wiadomość trafia przez sieć mesh?

W sieci mesh nie ma centralnego routera, który określałby trasę wiadomości. Zamiast tego MeshCore wykorzystuje inteligentne algorytmy routingu, które zapewniają, że wiadomości automatycznie znajdują najbardziej efektywną trasę do miejsca przeznaczenia.

MeshCore stosuje model hybrydowy: flood discovery przez repeatery, a następnie bardziej kierunkowe przekazywanie po nauczonej trasie.

W tym przewodniku technicznym wyjaśniamy, jak działa algorytm routingu MeshCore, jakie optymalizacje są stosowane i jak można skonfigurować routing dla konkretnego przypadku użycia.

Podstawowe mechanizmy protokołu routingu

MeshCore wykorzystuje cztery podstawowe mechanizmy routingu:

Trasa powodziowa

Pierwsza dostawa może użyć flood discovery przez repeatery. Kolejne wiadomości mogą iść po znanej trasie zamiast szerokiego floodu.

Transmisja → Wszyscy sąsiedzi → Retransmisja → Cel

Wykrywanie duplikatów

Każda wiadomość ma unikalny identyfikator. Węzły zapamiętują ostatnio oglądane wiadomości i ignorują duplikaty, aby uniknąć niekończących się pętli.

Identyfikator wiadomości: 0x4A3F2B → Już widziałem → Upuść

Ograniczenie liczby przeskoków

Kontrola przeskoków ogranicza niekontrolowaną propagację. MeshCore ma wysoki pułap protokołu (do 64), a praktyczny zasięg reguluje się na repeaterach (np. flood.max).

Ocena siły sygnału

Forwarding to rola repeaterów/relay, a nie wszystkich klientów. Dzięki temu ruch jest bardziej przewidywalny.

Jak działa routing zalewany

Algorytm zalewania jest rdzeniem routingu MeshCore. Tak to działa krok po kroku:

Krok 1: Wiadomość została wysłana

Węzeł A wysyła wiadomość do celu bez znanej trasy. Pakiet jest przygotowany i wysłany przez LoRa.

Krok 2: Pierwszy przeskok - odbierz sąsiadów

Węzły B, C i D odbierają wiadomość. Sprawdzają: „Czy widziałem już tę wiadomość?” Jeśli tak → zignoruj. Jeśli nie → zapisz w pamięci podręcznej ostatnich wiadomości i przekaż dalej. Licznik przeskoków zostaje zwiększony do 1.

Krok 3: Drugi przeskok – dalsza propagacja

Węzły E, F, G odbierają komunikat od B, C, D. Dokonują tej samej kontroli. Niektóre węzły mogą otrzymywać duplikaty od różnych sąsiadów - są one ignorowane. Licznik przeskoków staje się 2.

Krok 4: Osiągnięto cel lub maksymalne przeskoki

Po udanej dostawie kolejne wiadomości mogą iść po nauczonej trasie, ograniczając niepotrzebną propagację.

Optymalizacja powodzi

Aby zapobiec przeciążeniu sieci, MeshCore stosuje następujące optymalizacje:

  • Duplikacja wiadomości: Wiadomości, które już odsłuchano, nie zostaną ponownie przesłane dalej, nawet jeśli dotrą inną trasą.
  • Niejawne potwierdzenie: Gdy węzeł usłyszy, że jego sąsiad przekazał wiadomość, wie, że transmisja się powiodła.
  • Losowe opóźnienie: Węzły czekają przez krótki, losowy czas przed przesłaniem dalej, aby uniknąć burz kolizyjnych.
  • Priorytetyzacja oparta na RSSI: Węzły z silniejszymi sygnałami mają priorytet w przekazywaniu.

Mechanizm ograniczający przeskok

64

Standardowy chmiel

Dokumentacja MeshCore wskazuje wewnętrzny pułap do 64 przeskoków na poziomie protokołu.

flood.max

Maksymalne przeskoki

Praktyczne zachowanie reguluje się głównie na repeaterach (np. flood.max), zależnie od gęstości sieci i budżetu airtime.

RF teren

Zasięg na przeskok

Zasięg na przeskok zależy od terenu, anteny, zakłóceń RF i rozmieszczenia repeaterów.

Jak działa liczenie przeskoków

Każdy pakiet zawiera w nagłówku pole hop_limit. Każdy węzeł, który przekazuje pakiet, zwiększa licznik przeskoków o 1:

Wiadomość wysłana: hop_count = 0
Pierwszy przekaźnik: hop_count = 1
Drugi przekaźnik: liczba przeskoków = 2
Trzeci przekaźnik: hop_count = 3
→ Osiągnięto maksimum, zatrzymaj przekazywanie

Zapobiega to nieskończonemu krążeniu wiadomości w sieci i oszczędza cenną energię baterii oraz czas antenowy.

Zalety routingu MeshCore

🔄

Samoorganizowanie się

Nie wymaga konfiguracji. Węzły automatycznie znajdują najlepsze trasy bez centralnej kontroli.

Energooszczędny

Inteligentne optymalizacje zapewniają, że tylko niezbędne węzły przekazują wiadomości, oszczędzając żywotność baterii.

🛡️

Odporny na awarie

Jeśli jedna trasa zawiedzie, wiadomości automatycznie znajdą alternatywną ścieżkę w sieci.

📡

Skalowalny zasięg

Dodanie większej liczby węzłów zwiększa zasięg wykładniczo bez dodatkowej konfiguracji.

🔧

Prosty protokół

Protokół oparty na zalewaniu jest łatwy do wdrożenia i debugowania w porównaniu ze złożonymi tablicami routingu.

🌐

Nie ma pojedynczego punktu awarii

Brak centralnego routera oznacza, że nie ma pojedynczego punktu, który mógłby spowodować awarię całej sieci.

Przykłady konfiguracji routingu

Możesz dostosować zachowanie routingu za pomocą MeshCore CLI lub Pythona API:

CLI: Ustaw limit przeskoków

Zwiększ limit przeskoków, aby uzyskać większy zasięg (uwaga: większe zużycie baterii i opóźnienia):

MeshCore --ustaw router.hop_limit 5
MeshCore --ustaw router.rebroadcast_mode ALL_SKIP_DECODING

Python API: Konfiguracja routingu

Skonfiguruj routing za pomocą języka Python w celu zautomatyzowanych wdrożeń:

importuj MeshCore

interfejs = MeshCore.SerialInterface()
węzeł = interfejs.getNode("^local")

# Ustaw parametry routingu
węzeł.router.hop_limit = 4
node.router.rebroadcast_mode = MeshCore.Router.ALL_SKIP_DECODING
węzeł.writeConfig()

Zaawansowane: próg RSSI

Ustaw minimalny RSSI dla retransmisji, aby ignorować słabe łącza:

MeshCore --ustaw router.rebroadcast_min_rssi -120
# -120 dBm = bardzo słaby sygnał
# -100 dBm = sygnał średni (zalecane)
# -80 dBm = silny sygnał

Często zadawane pytania dotyczące routingu

Dlaczego MeshCore używa routingu zalewania, a nie opartego na tabelach?

Zalanie jest znacznie prostsze i bardziej niezawodne w sieciach komórkowych, w których węzły stale się włączają i wyłączają. Routing oparty na tabelach wymaga wykrywania tras i utrzymywania tablic routingu, co jest złożone i energochłonne w przypadku urządzeń LoRa.

Co się stanie, jeśli dwa węzły przekażą wiadomość w tym samym czasie?

MeshCore wykorzystuje losowe opóźnienia, aby zminimalizować kolizje. Jeśli dojdzie do kolizji, inne węzły w sieci pomyślnie przekażą wiadomość dzięki zasadzie zalewania.

Czy mogę ustawić różne limity przeskoków dla każdego typu wiadomości?

Tak, w konfiguracji routingu możesz ustawić różne limity przeskoków dla aktualizacji pozycji, wiadomości tekstowych i telemetrii. Optymalizuje to ruch sieciowy według typu wiadomości.

W jaki sposób MeshCore zapobiega tworzeniu się pętli tras?

Dzięki połączeniu ograniczenia przeskoków i deduplikacji wiadomości. Każdy węzeł zapamiętuje identyfikatory ostatnich wiadomości i nie przekazuje dalej duplikatów, nawet jeśli docierają one inną trasą.

Jakiego opóźnienia można oczekiwać?

Opóźnienie zależy od warunków RF, spreading factor, obciążenia kolejki i polityki repeaterów. Najlepszą referencją są pomiary terenowe.

Czy mogę wyłączyć routing dla mojego węzła?

Tak, możesz wyłączyć routing, ustawiając tryb rebroadcast_mode na „NONE” przez MeshCore CLI. Twój węzeł następnie odbiera wiadomości, ale ich nie przekazuje dalej. Jest to przydatne w przypadku urządzeń mobilnych, aby oszczędzać baterię.

Zacznij od opracowania routingu MeshCore

Algorytm routingu MeshCore zapewnia solidny i energooszczędny sposób kierowania komunikatów bez infrastruktury centralnej. Idealny do komunikacji awaryjnej i sieci poza siecią.

Powiązane artykuły