FAQ - kilka pytań i odpowiedzi na temat sieci Meshtastic
Czym jest sieć kratowa (sieć mesh)?
Sieć kratowa, znana również jako sieć mesh, to system komunikacji bezprzewodowej (chociaż nie tylko), który składa się z wielu współpracujących ze sobą węzłów (urządzeń tworzących sieć). Kluczową cechą tej technologii jest to, że każdy węzeł może komunikować się z innymi węzłami, co pozwala na tworzenie elastycznej i odpornej na awarie struktury sieciowej.
W przeciwieństwie do tradycyjnych sieci, gdzie urządzenia łączą się z jednym centralnym urządzeniem, w sieciach mesh dane są przesyłane pośrednio przez różne węzły. Dzięki temu, jeśli jeden z węzłów ulegnie awarii, inne węzły mogą kontynuować przesyłanie danych, co zwiększa niezawodność całego systemu. Dzięki współpracy wielu węzłów, sieci mesh mogą skutecznie eliminować martwe strefy i zapewniać łączność na szerokim obszarze.
W ostatnich latach, sieci kratowe stały się bardzo popularne w sieciach Wi-Fi, ale koncepcja sieci kratowej nie ogranicza się tylko do tej technologii. Sieć Meshtastic jest siecią, która właśnie wykorzystuje koncept sieci mesh, ale do jej realizacji używa systemu radiowego LoRa.
O co chodzi z "hopami"? Czyli jak działa sieć kratowa.
Kluczową cechą sieci kratowej jest przekazywanie wiadomości przez kolejne węzły, aż do momentu, w którym wiadomość dotrze do odbiorcy. Jednak w sieci Meshtastic, z powodu wykorzystania systemu radiowego LoRa, mamy bardzo ograniczone przepustowości sieci, ale możemy uzyskiwać duże zasięgi. Z powodu ograniczonej przepływności sieci, nie ma możliwości zastosowania skomplikowanych protokołów ustalania ścieżek routingu i stosowany jest tzw. managed flood routing. Managed flood routing to protokół przekazywania wiadomości w sieci, w którym każda stacja, która słyszy wiadomość, dokonuje jej retransmisji. Dzięki retransmisji tej wiadomości kolejne stacje mogą ją usłyszeć i przekazać dalej. Należy jednak zwrócić uwagę, że to mogłoby oznaczać powtarzanie wiadomości w nieskończoność.
Żeby uniknąć nieskończonego powtarzania wiadomości, w sieci Meshtastic została ograniczona liczba powtórzeń każdej wiadomości. W każdej wiadomości ustala się maksymalną liczbę skoków ("hopów"), jakie wiadomość może wykonać. Węzły, które otrzymały wiadomość, odczytują liczbę skoków, która w niej jest zapisana, zmniejszają tę liczbę o jeden i przesyłają taką wiadomość dalej. Jeśli otrzymana wiadomość ma już liczbę skoków równą zero, oznacza to, że osiągnęła limit swoich powtórzeń i nie należy jej już przesyłać dalej. W ten sposób wiadomości nie są przekazywane w nieskończoność.
W sieci Meshtastic domyślną liczbą skoków (limitem skoków), które może pokonać wiadomość to 3. Maksymalna wartość to 7.
Przeanalizujmy sytuację, w której węzeł nr 8 wysyła wiadomość do węzła nr 7. Oryginalna wiadomość ma ustawiony limit skoków równy 3. Analizując najkrótszą ścieżkę (niebieskie strzałki):
- Węzeł nr 2 odbiera wiadomość, zmniejsza liczbę skoków do 2 i przekazuje dalej.
- Węzeł nr 4 odbiera wiadomość od węzła nr 2, zmniejsza liczbę skoków do 1 i przekazuje dalej.
- Węzeł nr 6 odbiera wiadomość od węzła nr 4, zmniejsza liczbę skoków do 0 i przekazuje dalej.
- Węzeł nr 7 odbiera wiadomość od węzła nr 6. Wiadomość nie jest przekazywana dalej z dwóch przyczyn: węzeł nr 7 jest docelowym węzłem dla wiadomości oraz liczba skoków w wiadomości nie może być już zmniejszona, bo wynosi 0.
Ale wiadomość, którą nadał węzeł nr 8 usłyszał też węzeł nr 1. Zmniejszył liczbę skoków do 2 i przekazał wiadomość dalej. Tę wiadomość otrzymał węzeł nr 2, ale otrzymał ją wcześniej bezpośrednio od węzła nr 8, więc nie powtarza jej po raz drugi.
Węzeł nr 3 otrzymał wiadomość od węzła nr 1 oraz od węzła nr 2. W obu przypadkach liczba skoków zapisana w wiadomości wynosiła 2. Węzeł zmniejszył tę liczbę i przekazał wiadomość dalej, ale tylko raz.
Wiadomość przekazana przez węzeł nr 3 dotarła do węzła nr 4 (który dostał ją wcześniej, więc jej nie powtarza) oraz do węzła nr 5. Węzeł nr 5 otrzymuje tę wiadomość dwa razy (wcześniej od węzła nr 4). Zmniejsza liczbę skoków do 0 i przesyła wiadomość dalej.
Węzeł nr 6 otrzymuje wiadomość od węzła nr 5, ale nie retransmituje jej. Zrobił to wcześniej. Ponadto ta wiadomość już ma liczbę skoków równą 0.
A skąd węzły wiedzą, że dostały tę samą wiadomość kilka razy? Każda wiadomość w sieci Meshtastic ma swój losowy 32-bitowy identyfikator. Węzły pamiętają identyfikatory wiadomości, które otrzymały w przeszłości (wystarczy kilka minut), więc nie dokonują ponownych retransmisji.
Jak widać, węzły nie muszą znać dokładnych tras, żeby się między sobą skomunikować. I chociaż sposób powtarzania wiadomości przez każdą stację wydaje się być naiwnym (tzw. flood routing), to z użyciem limitowania liczby skoków oraz weryfikacji identyfikatorów znacznie minimalizuje się liczbę retransmisji, a skuteczność dostarczenia wiadomości jest nadal wysoka.
Słyszę inny węzeł, ale on mnie nie słyszy. Dlaczego?
Ten problem jest bardzo częsty w sieciach bezprzewodowych. Łącze radiowe (tzw. link) może mieć inne warunki w zależności od kierunku komunikacji. Powodów takiej sytuacji może być wiele:
- Różne moce nadajników - stacja A nadaje z mocą 20 dBm (100 mW), a stacja B nadaje z mocą 30 dBm (1W). Zasięg słyszalności stacji B będzie dużo większy niż stacji A. Stacja A usłyszy stację B, ale stacja B nie usłyszy stacji A. Należy tutaj pamiętać, że znaczenie ma nie tylko sama moc nadajnika, ale również zysk anteny oraz straty na przewodach antenowych.
- Różnica w wysokości węzłów - ogólna zasada jest taka, że im wyżej umiejscowiona jest antena tym większy jest jej zasięg tak samo odbiorczy jak i nadawczy. Ale odbiór możliwy jest tylko wtedy, kiedy antena umiejscowiona wysoko słyszy jeden nadający węzeł w danym momencie, a nie wiele. Możemy wyobrazić sobie sytuację, w której kilka węzłów oddalonych od siebie, nadaje w tym samym momencie wiadomości. Wiadomości w ich najbliższej okolicy są prawidłowo odbierane, ale stacja umiejscowiona wysoko słyszy je obie jednocześnie i nie może zdemodulować nadawanych informacji - wiadomości wzajemnie się zagłuszają. Ten problem nosi nazwę zjawiska stacji ukrytej.
- Różnica w poziomie szumów tła - nawet jeśli węzły odbierają wzajemnie swoje sygnały na podobnym poziomie mocy, to może się zdarzyć, że sygnału nie da się prawidłowo zdemodulować i zdekodować, ponieważ poziom szumów tła jest na jednej ze stacji zbyt wysoki i "przykrywa" sygnał odbierany. Wystarczy, że w niedalekiej odległości od węzła pracuje źródło zakłóceń, np. elektronika użytkowa, telefon komórkowy, stacja bazowa telefonii komórkowej itp.
Zjawisko stacji ukrytej - czyli kolizje
Przeanalizujmy przypadek trzech węzłów: węzła nr 1, węzła nr 2 oraz węzła nr 3:
- węzeł nr 2 jest słyszany przez węzły nr 1, 4 oraz 5,
- węzeł nr 3 jest słyszany przez węzły nr 1, 3 oraz 7.
Węzeł nr 1 znajduje się w zasięgu węzła nr 2 oraz węzła nr 3. Załóżmy sytuację, że w tym samym momencie węzeł nr 2 oraz węzeł nr 3 nadają swoje wiadomości. Wiadomość od węzła nr 2 bez problemów jest odbierana przez węzły nr 4 oraz 5. Wiadomość od węzła nr 3 jest bez problemu odbierana przez węzły nr 6 oraz 7. Natomiast obie wiadomości "nakładają się", czyli wzajemnie się zakłócają podczas odbioru przez węzeł nr 1. Węzeł nr 1 w rezultacie nie jest w stanie zdemodulować i zdekodować żadnej z tych wiadomości. Taki przypadek nazywa się kolizją. Węzeł nr 2 oraz *węzeł nr 3 są dla siebie stacjami ukrytymi - nie mają wiedzy o tym czy nadają i mogą wzajemnie się zagłuszać na wspólnym obszarze zasięgu.
Zjawisko to ma miejscie w sieciach radiowych z podziałem czasowym, czyli w sieciach, które korzystają tylko z jednej częstotliwości i muszą "dzielić się czasem" przeznaczonym na odbiór. Taką siecią jest Meshtastic, w której mamy niedeterministyczny podział czasowy (CSMA-CA).
W sieci Meshtastic jest kilka mechanizmów, które ograniczają częstość występowania tego zjawiska, ale nie likwidują go w całości:
- Protokół dostępu do medium CSMA-CA (Carrier Sensing Multiple Access - Collision Avoidance) - stacje zanim zaczną nadawanie przez losowy czas "słuchają" czy medium (żargonowo eter) nie jest zajęte. Jeśli w tym czasie nie wykryją innej stacji, to rozpoczynają nadawanie.
- Podczas powtarzania wiadomości, losowany czas nasłuchiwania zależny jest od roli węzła (CLIENT, ROUTER itp.) oraz odległości od węzła, od którego wiadomość przyszła (na podstawie mocy odebranego sygnału). Preferowane są węzły na krawędziach sieci (czyli oddalone od węzła, od którego przyszła wiadomość) - takie węzły nasłuchują przez krótszy czas i rozpoczynają transmisję wcześniej.
- Powtarzanie wiadomości przez różne węzły w sieci również częściowo minimalizuje wpływ zjawiska stacji ukrytej. Nawet jeśli wiadomość nie została odebrana przez węzeł, z powodu kolizji*, to istnieje szansa, że ta sama wiadomość przyjdzie chwilę później przekazana przez inny węzeł.
Problem kolizji występuje również wtedy, kiedy jeden z węzłów nadaje z większą mocą niż pozostałe węzły. Podczas nasłuchu, czy medium jest wolne, nie "słyszy" stacji pracujących z mniejszymi mocami i rozpoczyna nadawanie. Ponieważ jego moc jest większa, to jego sygnał zagłusza transmisję stacji o mniejszej mocy - przykład na poniższym obrazku, w którym węzeł nr 1 zagłusza transmisję węzła nr 2, ponieważ w trakcie nasłuchiwania medium nie "słyszał" go.