Pakiety w MeshCom

1. MeshCom od strony technicznej – jak pakiet przechodzi przez sieć

W pierwszej części opisaliśmy ideę sieci MeshCom. Teraz przyjrzyjmy się temu, co dzieje się z pakietem podczas jego przechodzenia pomiędzy węzłami.

W tym przypadku nie będziemy posługiwać się ogólnymi definicjami sieci mesh. Opis opiera się na dokumentacji protokołu MeshCom 4.0 oraz na kodzie źródłowym firmware publikowanym przez twórców projektu.

MeshCom wykorzystuje elementy protokołu APRS

Pierwsza rzecz może być zaskakująca: MeshCom nie stworzył całkowicie niezależnego formatu radiowego.

Oficjalna dokumentacja MeshCom 4.0 mówi wprost, że projekt wykorzystuje APRS Protocol Reference dla pól źródła, celu, digipeaterów i danych. Pakiet zawiera również elementy związane z AX.25/APRS.

Nie oznacza to jednak, że MeshCom jest po prostu APRS z inną modulacją.

To właśnie sposób wykorzystania tych danych oraz mechanizm przekazywania pakietów w sieci MeshCom tworzy odmienny sposób pracy.

 


2. Pakiet MeshCom ma własny identyfikator

Każda wiadomość MeshCom posiada Message ID.

Według dokumentacji protokołu jest to wartość 32-bitowa. Oprócz niej pakiet zawiera między innymi informację MAX-HOP, adres źródłowy, adres docelowy oraz dane użytkowe.

Uproszczony schemat można przedstawić następująco:

Źródło → Message ID → MAX-HOP → cel → dane

Message ID jest szczególnie istotny w sieci, w której pakiety mogą być przekazywane przez wiele węzłów. Pozwala rozróżnić konkretną wiadomość od innych transmisji.

 


3. Ile hopów ma MeshCom?

Tutaj możemy podać konkretną wartość wynikającą z dokumentacji projektu.

W protokole MeshCom 4.0 pole MAX-HOP wykorzystuje 3 bity. Maksymalna wartość tego pola wynosi 7, natomiast dokumentacja podaje 5 jako wartość domyślną.

Co ważne, dokumentacja opisuje wartość domyślną 5 jako pozwalającą na kolejne 4 przekazania (transfers).

Dlatego na stronie warto mówić precyzyjnie:

MeshCom 4.0 ma pole MAX-HOP o maksymalnej wartości 7, a domyślna wartość wynosi 5 i pozwala na kolejne cztery przekazania pakietu.

Nie należy natomiast pisać po prostu „MeshCom ma 5 hopów”, ponieważ dokumentacja rozróżnia wartość MAX-HOP od liczby kolejnych transferów.

 


4. Co dzieje się z pakietem?

Załóżmy, że stacja A wysyła wiadomość do stacji E.

W pobliżu znajdują się:

A → B → C → D → E

Jeżeli kolejne urządzenia znajdują się w swoim zasięgu radiowym, pakiet może zostać przekazany przez kolejne węzły.

W uproszczeniu:

A wysyła pakiet

↓

B odbiera pakiet i może przekazać go dalej

↓

C odbiera pakiet i może przekazać go dalej

↓

D odbiera pakiet i może przekazać go dalej

↓

E odbiera wiadomość

Każde takie przejście przez kolejny węzeł jest kolejnym transferem/hopem.

 


5. Dlaczego pakiet nie krąży po sieci bez końca?

Właśnie tutaj pojawia się MAX-HOP.

Pakiet nie otrzymuje prawa do nieskończonego przekazywania.

Liczba możliwych dalszych przekazań jest ograniczona wartością znajdującą się w pakiecie. W dokumentacji MeshCom pole to jest opisane jako MAX-HOP i zajmuje 3 bity, dzięki czemu może przyjmować wartości do 7.

Wartość domyślna 5 została dobrana tak, aby wiadomość mogła przejść przez kilka kolejnych węzłów, ale jednocześnie nie powodowała nieograniczonego zalewania sieci retransmisjami.

 


6. MeshCom nie wykorzystuje klasycznego routingu IP

To bardzo ważne dla zrozumienia całego systemu.

W klasycznej sieci IP router posiada informacje o dostępnych sieciach i na ich podstawie podejmuje decyzję, gdzie wysłać pakiet.

MeshCom należy rozumieć inaczej.

Węzły radiowe współpracują poprzez mechanizm przekazywania pakietów MeshCom. Oficjalny opis projektu mówi również wprost, że każdy węzeł powinien działać jako repeater dla pozostałych wiadomości MeshCom znajdujących się w eterze.

Dlatego istotą MeshCom jest nie tyle stworzenie jednej stałej trasy pomiędzy A i E, ile umożliwienie pakietowi dotarcia dalej poprzez inne węzły znajdujące się w zasięgu.

 


7. Dlaczego Message ID jest tak ważny?

Wyobraźmy sobie, że stacja A wysyła pakiet, który odbierają jednocześnie B i C.

Oba węzły mogą być w stanie przekazać go dalej.

Powstaje więc możliwość, że ten sam pakiet dotrze do kolejnego węzła więcej niż jedną drogą.

Bez mechanizmu rozpoznawania wcześniej odebranego pakietu moglibyśmy otrzymać lawinę powtórzeń:

A → B → D

oraz jednocześnie:

A → C → D

a następnie D mógłby próbować ponownie przekazywać tę samą wiadomość.

Dlatego identyfikator wiadomości jest jednym z podstawowych elementów protokołu MeshCom. Dokumentacja definiuje 32-bitowy Message ID jako element pakietu.

To pozwala urządzeniom rozpoznawać konkretną wiadomość i ograniczać niepotrzebne powielanie ruchu.

 


8. MeshCom może również zapisywać drogę pakietu

Protokół MeshCom przewiduje również możliwość dodania informacji o drodze, którą przeszedł pakiet.

W dokumentacji znajduje się specjalny bit:

0x40 – Insert path into mesh

Dla wiadomości tekstowych dokumentacja pokazuje również przykład pakietu, w którym pojawia się lista stacji:

OE0XXX-99,OE3XXX-12,OE3YYY-12

czyli informacja o kolejnych węzłach uczestniczących w przekazaniu.

Dzięki temu system może nie tylko dostarczyć wiadomość, ale również uzyskać informację o tym, przez jakie węzły wiadomość przeszła.

Ma to duże znaczenie diagnostyczne, ponieważ pozwala obserwować rzeczywistą strukturę radiowej sieci.

 


9. Nie każda wiadomość musi przejść maksymalną liczbę hopów

MAX-HOP jest limitem, a nie obowiązkową długością drogi.

Jeżeli odbiorca znajduje się bezpośrednio w zasięgu nadawcy:

A → B

nie ma potrzeby wykorzystywania kolejnych węzłów.

Jeżeli potrzebne są dwa przekazania:

A → C → D

pakiet może dotrzeć do D bez wykorzystywania maksymalnego limitu.

MAX-HOP określa więc, jak daleko pakiet może być przekazywany w ramach mechanizmu mesh, a nie ile razy musi zostać przekazany.

 


10. Co się dzieje, kiedy w sieci jest wiele węzłów?

To jedna z najważniejszych cech MeshCom.

Jeżeli wiele urządzeń odbiera tę samą transmisję, część z nich może być w stanie przekazać ją dalej. Z punktu widzenia użytkownika nie musi więc istnieć jeden wcześniej zaprogramowany „przemiennik MeshCom”, przez który zawsze przechodzi każda wiadomość.

Węzły tworzą wspólnie radiową strukturę sieci.

Oficjalny opis projektu określa docelową architekturę MeshCom jako selfbuilding and selfhealing Mesh-Network – sieć, która ma się budować i być zdolna do odtwarzania działania po zmianach dostępności węzłów.

Nie należy jednak interpretować tego jako gwarancji, że dla każdego pakietu zostanie zawsze wyznaczona optymalna alternatywna trasa. Ostatecznie wszystko zależy od tego, jakie węzły są aktualnie osiągalne radiowo.

 


11. Dlaczego ograniczenie hopów chroni sieć?

Każde przekazanie pakietu jest kolejną transmisją LoRa.

A więc:

1 wiadomość = 1 transmisja

ale przy przekazywaniu:

1 wiadomość → kilka transmisji

Jeżeli wiele węzłów zaczyna przekazywać wiele wiadomości, liczba transmisji rośnie bardzo szybko.

Dlatego MAX-HOP pełni nie tylko funkcję techniczną, ale również pomaga ograniczać obciążenie wspólnego kanału radiowego.

W przypadku sieci LoRa jest to szczególnie ważne, ponieważ nie dysponujemy dużą przepustowością znaną z sieci Wi-Fi czy Ethernet.

 


12. MeshCom wykorzystuje więc mechanizm „store and forward”?

Trzeba tutaj zachować ostrożność z terminologią.

Nie należy opisywać MeshCom jako klasycznego systemu store-and-forward, w którym węzeł przechowuje wiadomość przez dłuższy czas i później przekazuje ją, gdy pojawi się odpowiednia trasa.

Podstawowy mechanizm MeshCom polega na radiowym przekazywaniu pakietów pomiędzy dostępnymi węzłami, z kontrolą liczby dalszych transferów.

To istotne rozróżnienie.

 


13. MeshCom i APRS – techniczna różnica

Co ciekawe, oba systemy mają wspólny element.

MeshCom korzysta z elementów struktury APRS/AX.25.

Różnica pojawia się na poziomie sposobu wykorzystania tych danych.

APRS

Typowa komunikacja APRS wykorzystuje:

stacja → digipeater → digipeater → odbiorca/IGate

Ścieżka jest określana przez mechanizm APRS path/digipeatingu.

MeshCom

MeshCom wykorzystuje:

stacja → dostępne węzły MeshCom → kolejne dostępne węzły → odbiorca

i posiada dodatkowe mechanizmy związane z Message ID oraz MAX-HOP.

Dlatego samo wykorzystanie AX.25/APRS przez MeshCom nie oznacza, że MeshCom jest zwykłym APRS.

 


14. MeshCom nie tworzy „superdigipeatera”

To częsty błąd w opisywaniu sieci MeshCom.

Digipeater APRS jest przede wszystkim elementem infrastruktury APRS, który retransmituje pakiety zgodnie z regułami APRS.

W MeshCom każdy węzeł jest projektowany jako uczestnik wspólnej sieci mesh. Oficjalny opis firmware mówi wręcz:

„Each Node should act as a repeater for all other MESHCOM messages on air.”

To właśnie ta zasada sprawia, że wiele urządzeń może wspólnie tworzyć rozproszoną sieć radiową.

 


15. Przykład

Załóżmy następujący układ:

SP1 → SP2 → SP3 → SP4 → SP5

SP1 wysyła wiadomość do SP5.

Pakiet otrzymuje między innymi:

  • identyfikator Message ID,
  • informację MAX-HOP,
  • źródło,
  • cel,
  • dane wiadomości.

Jeżeli SP2 może przekazać pakiet dalej, wykonuje kolejny transfer.

Następnie może zrobić to SP3.

Potem SP4.

SP5 otrzymuje wiadomość.

Jeżeli limit dalszego przekazywania zostanie wyczerpany, pakiet nie powinien być dalej przekazywany.

Wartość domyślna MAX-HOP wynosi 5, a dokumentacja MeshCom określa ją jako pozwalającą na kolejne cztery transfery. Maksymalna wartość pola może wynosić 7.

 


16. Co to oznacza dla użytkownika?

Użytkownik MeshCom nie musi wiedzieć, który konkretnie węzeł przekaże jego wiadomość.

Wystarczy, że w jego otoczeniu radiowym istnieje odpowiednio rozmieszczona sieć aktywnych węzłów.

Przykładowo:

Użytkownik A

↓ radio

Węzeł B

↓ radio

Węzeł C

↓ radio

Węzeł D

↓ radio

Użytkownik E

Dzięki temu pojedynczy użytkownik może korzystać z infrastruktury stworzonej przez wiele innych urządzeń.

 


17. Wnioski

Techniczna zasada działania MeshCom można więc sprowadzić do kilku najważniejszych punktów:

1. MeshCom wykorzystuje elementy protokołu APRS/AX.25.

2. Każdy pakiet posiada 32-bitowy Message ID.

3. Pakiet posiada pole MAX-HOP kontrolujące liczbę dalszych przekazań.

4. Pole MAX-HOP ma maksymalną wartość 7, a wartość domyślna to 5. Dokumentacja określa ją jako pozwalającą na kolejne cztery transfery.

5. Węzły MeshCom mogą przekazywać wiadomości innych użytkowników, tworząc wspólną radiową sieć mesh.

6. Protokół może również zapisywać informację o drodze pakietu poprzez mechanizm „Insert path into mesh”.

7. Ograniczenie liczby hopów jest ważne, ponieważ każde przekazanie oznacza kolejną transmisję radiową i dodatkowe obciążenie kanału.