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.
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.
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
Standardowy chmiel
Dokumentacja MeshCore wskazuje wewnętrzny pułap do 64 przeskoków na poziomie protokołu.
Maksymalne przeskoki
Praktyczne zachowanie reguluje się głównie na repeaterach (np. flood.max), zależnie od gęstości sieci i budżetu airtime.
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ą.