Symulacja sieci wątków za pomocą OTNS

1. Wstęp

5abd22afa2f2ee9a.png

Co to jest wątek i OTNS?

Thread to bezprzewodowy protokół sieci typu mesh oparty na adresach IP, który umożliwia bezpieczną komunikację między urządzeniami i chmurą. Sieci wątków mogą dostosowywać się do zmian topologii, aby uniknąć jednego punktu awarii.

OpenThread to nowe rozwiązanie wprowadzone przez Google jako open source. Mimo małego rozmiaru kodu i pamięci operacyjnej OpenOpen obsługuje wszystkie funkcje zdefiniowane w specyfikacji wątku.

Symulator sieci OpenThread (OTNS) może służyć do symulowania sieci wątkowych przez uruchamianie symulowanych węzłów OpenThread na platformach posix. OTNS zapewnia łatwy w użyciu interfejs internetowy (OTNS-Web), który umożliwia wizualizację i obsługowanie symulowanych sieci sieciowych.

Czego się dowiesz

  • Instalowanie OTNS i jego zależności
  • Kompilacja OpenThread dla OTNS
  • Jak dodawać, przenosić i usuwać węzły w OTNS-Web
  • Używanie innych przydatnych funkcji OTNS-Web do prowadzenia symulacji sieci
  • Potwierdzanie nieudanego wdrożenia OpenThread z punktu końcowego

To zadanie skupia się na OTNS-CLI i OTNS-Web. Inne funkcje OTNS, takie jak skrypty w języku Python, nie zostały uwzględnione.

Niezbędne elementy

  • Linux x86_64 lub Mac OS.
  • Git.
  • Przejdź na wersję 1.11 lub nowszą.
  • Przeglądarka. OTNS-Web używa przeglądarki do symulacji.
  • Grunt nici. Naucz się podstawowych zagadnień związanych z wątkiem, by zrozumieć, co znajduje się w tym module.

2. Montaż

Zainstaluj Go

OTNS wymaga kompilacji 1.11 lub nowszej.

  1. Zainstaluj Go z https://golang.org/dl/.
  2. Dodaj $(go env GOPATH)/bin (zwykle $HOME/go/bin) do $PATH:
$ export PATH=$PATH:$(go env GOPATH)/bin

Uzyskiwanie kodu OTNS

$ git clone https://github.com/openthread/ot-ns.git ./otns
$ cd otns

Instalacja zależności

$ ./script/install-deps
grpcwebproxy installed: /usr/local/google/home/simonlin/go/bin/grpcwebproxy

Może pojawić się prośba o podanie hasła do konta sudo.

Instalowanie OOT

Zainstaluj aplikację otns w aplikacji $GOPATH/bin:

$ ./script/install
otns installed: /usr/local/google/home/simonlin/go/bin/otns

Sprawdź, czy narzędzie otns jest prawidłowo zainstalowane

  1. Uruchom polecenie which otns, aby sprawdzić, czy plik wykonywalny otns można wyszukać w $PATH..
  2. Jeśli polecenie otns nie zostanie znalezione, sprawdź, czy zostało przez Ciebie dodane narzędzie $(go env GOPATH)/bin do: $PATH.

3. Kompilacja OpenThread dla OTNS

Pobieranie kodu OpenThread z GitHuba

$ mkdir -p ~/src
$ git clone https://github.com/openthread/openthread ~/src/openthread

Kompilacja OpenThread z: OTNS=1

$ cd ~/src/openthread
$ ./script/bootstrap
$ ./bootstrap
$ make -f examples/Makefile-simulation OTNS=1

Pliki wykonywalne OpenThread znajdziesz w katalogu output:

Linux

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

macOS

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

Teraz czas na uruchomienie OTNS...

4. Uruchom OTNS

Uruchom otns:

$ cd ~/src/openthread/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

Po uruchomieniu OTNS wchodzi do konsoli interfejsu wiersza poleceń (OTNS-CLI) i otwiera przeglądarkę internetową w celu wizualizacji sieci i zarządzania nią (OTNS-Web):

a0e55178d66929b1.png

Jeśli widzisz tylko pustą stronę OTNS-Web, prawdopodobnie przeglądarka nie jest włączona w przeglądarce. Więcej informacji o włączaniu WebGL znajdziesz nahttps://superuser.com/a/836833 .

Z następujących sekcji dowiesz się, jak zarządzać symulacjami OTNS za pomocą OTNS-CLI i OTNS-Web.

5. Poznaj OTNS-CLI i OTNS-Web

OTNS-CLI

OTNS-CLI udostępnia interfejs wiersza poleceń służący do zarządzania symulacjami OTNS.

$ cd ~/src/openthread/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

Polecenia możesz wpisywać za pomocą OTNS-CLI. Pełną listę poleceń znajdziesz w dokumentacji interfejsu wiersza poleceń OTNS. W tym ćwiczeniu wykorzystamy tylko niektóre z tych poleceń.

OTNS-Internet

OTNS-Web to narzędzie OTNS do wizualizacji danych i zarządzania nimi. Przedstawia wizualizację węzłów, wiadomości i linków symulowanej sieci wątków. Zwróć uwagę na różne elementy OTNS-Web:

4c5b43509a2ca0d0.png

6. Dodaj węzły

Dodaj węzły za pomocą OTNS-CLI

Dodaj router w pozycji (300, 100)

> add router x 300 y 100
1
Done

Powinien wyświetlić się węzeł utworzony w OTNS-Web. Węzeł uruchamia się jako router i po kilku sekundach staje się liderem:

6ca8c2e63ed9818d.png

Dodaj więcej węzłów przez: OTNS-CLI

> add fed x 200 y 100
2
Done
> add med x 400 y 100
3
Done
> add sed x 300 y 200
4
Done

Poczekaj kilka sekund, aż węzły zostaną scalone w jedną partycję. Węzły powinny być widoczne w OTNS-WEB:

3ee67903c01aa612.png

Dodaj węzły według OTNS-Web

Węzły możesz też dodawać za pomocą OTNS-Web. Kliknij przycisk New Router w aplikacji Action Bar. Powinien się on pojawić tuż nad przyciskiem New Router. Przeciągnij węzeł w pobliżu lidera utworzonego za pomocą funkcji OTNS-CLI. Ostatecznie wszystkie węzły powinny zostać scalone w jedną partycję:

420258bb92561146.png

Możesz też kliknąć przyciski FED, MED i SED na pasku działań, aby utworzyć inne typy węzłów. Przeciągnij je do pozycji w pobliżu istniejących węzłów, aby połączyć je z tą siecią wątków:

fe15d6f9726a099e.png

Udało Ci się utworzyć sieć wątków z jedną partycją zawierającą wiele węzłów. W następnej sekcji dostosujemy symulowaną prędkość, by symulacja działała szybciej.

7. Dostosuj szybkość

Obecnie symulacja powinna przebiegać z szybkością 1X, co oznacza, że symulowany czas, który upłynął do tej pory, jest taki sam jak rzeczywisty czas od momentu utworzenia pierwszego węzła.

Dostosuj prędkość do OTNS-CLI

Prędkość symulowania można dostosować za pomocą OTNS-CLI.

Ustaw symulację szybkości na 100X

> speed 100
Done

Węzły powinny być wysyłane znacznie częściej niż wcześniej.

Ustaw symulację szybkości na MAX

> speed max
Done

Obecnie OTNS próbuje jak najszybciej przeprowadzić symulację, dzięki czemu węzły powinny wysyłać dużą liczbę wiadomości.

Wstrzymanie symulacji

> speed 0
Done

Ustawienie symulacji do 0 spowoduje wstrzymanie symulacji.

Przywróć symulację z normalną prędkością

> speed 1
Done

Ustawienie symulacji szybkości na wartość większą niż 0 powoduje wznowienie symulacji.

Dostosuj prędkość do OTNS-Web

Przyciski sterowania szybkością

Na przycisku Action Bar znajdź przyciski sterowania szybkością 9329157c1bd12672.png. Przyciski pokazują bieżącą szybkość symulacji i mogą służyć do dostosowywania prędkości symulacji oraz wstrzymania/wznowienia symulacji.

Symulacja przyspieszania

Symulację można przyspieszyć, klikając przycisk 39b88331779277ad.png, aż prędkość osiągnie MAX: F5F460B2586D299B.png.

Symulacja spowolniona

Symulację można spowolnić, klikając przycisk 31cca8d5b52fa900.png.

Wstrzymanie symulacji

Kliknij przycisk 46cc2088c9aa7ab6.png, by wstrzymać symulację. Przycisk zostanie zmieniony na: ce25eda3496ffcd4.png.

Wznów symulację

Kliknij przycisk ce25eda3496ffcd4.png, aby wznowić wstrzymaną symulację. Przycisk zostanie ponownie zmieniony na 46cc2088c9aa7ab6.png.

Ustaw symulację szybkości na 10X

Aby zaoszczędzić czas, użyj

OTNS-CLI , aby dostosować symulowaną prędkość do

10X aby można było szybciej obserwować topologię sieci.

> speed 10
Done

8. Włącz/wyłącz radio

Teraz symulacja powinna zawierać 2 routery (w formacie sześciokąta) i wiele elementów podrzędnych, a wszystko działa z prędkością 10x.

Znajdź bieżącego lidera (czerwone obramowanie) dwóch routerów, jednym kliknięciem:

8c6a2e191cdae0c7.png

Wyłącz radio

Kliknij przycisk 7ca085f470491dd4.png na pasku działań, aby wyłączyć radio węzła Lider:

a3bf58d9d125f95f.png

Lider nie będzie mógł wysyłać ani odbierać wiadomości po wyłączeniu radia.

Poczekaj, aż inny router stanie się nowym liderem po około 12 s (120 s: symulowaniu czasu):

e3d32f85c4a1b990.png

Sieć wątków automatycznie odzyskuje sprawność po wystąpieniu lidera przez utworzenie nowej partycji z nowym liderem. Nowa partycja ma też nowy kolor partycji.

Włącz radio

Wybierz Lidera, którego radio było wyłączone. Kliknij przycisk 2d9cecb8612b42aa.png na urządzeniu Action Bar, aby przywrócić połączenie radiowe:

7370a7841861aa3a.png

Lider grupy powinien ponownie połączyć się z siecią po przywróceniu połączenia radiowego.

9. Przenoszenie węzłów

OTNS pozwala użytkownikom łatwo przenosić węzły za pomocą OTNS-CLI lub OTNS-Web.

Przenieś węzeł przez: OTNS-CLI

Przenieś węzeł 5 do nowej lokalizacji:

> move 5 600 300
Done

Teraz gdy węzeł 5 znajduje się daleko od innego routera, powinien on tracić połączenie między sobą, a po około 12 s (symulowanym czasie) staje się liderem własnej partycji:

c06b4d0a4f183299.png

Przenoszenie węzła przez OTNS-Web

Przeciągnij węzeł 5 z powrotem do pierwotnej lokalizacji, przeciągając go. Dwie partycje powinny zostać scalone z powrotem w jedną:

9ba305c4c5a5f892.png

10. Usuń węzły

Usuń węzły za pomocą węzła OTNS-CLI

Usuń węzeł 8:

> del 8
Done

Węzeł 8 powinien zniknąć z symulacji:

18156770d9f8bf83.png

Usuń węzły za pomocą węzła OTNS-Web

Wybierz węzeł 5 i kliknij przycisk 7ff6afd565f4eafc.png na urządzeniu Action Bar, aby go usunąć:

D4079cceea0105f0.png

Node 1 powinien stać się liderem, a Node 7 powinien odłączać, bo nie może dotrzeć do żadnego routera.

Wyczyść symulację (usuń wszystkie węzły)

Symulację można wyczyścić, usuwając wszystkie węzły przez OTNS-Web.

Kliknij przycisk 89618191721e79a0.png na stronie Action Bar. Wszystkie węzły jednocześnie znikną.

Zanim przejdziesz dalej...

Dodaj samodzielnie niektóre symulacje do symulacji, aby kontynuować ten samouczek.

11. Kontekst węzła OTNS-CLI

OTNS-CLI udostępnia tryb kontekstu węzła umożliwiający łatwą interakcję z węzłami, co ułatwia programistom diagnozowanie ich stanu.

Włącz tryb kontekstu węzła

Wpisz kontekst węzła węzła 1:

> node 1
Done
node 1>

Wiersz interfejsu wiersza poleceń został zmieniony na node 1> , co wskazuje bieżący kontekst węzła. Możesz wpisać polecenia wiersza poleceń OpenThread, które będą wykonywane w węźle, tak jakby wykonywał je bezpośrednio w nim.

Wykonywanie poleceń w kontekście węzła

node 1> state
leader
Done
node 1> channel
11
Done
node 1> panid
0xface
Done
node 1> networkname
OpenThread
Done
node 1> ipaddr
fdde:ad00:beef:0:0:ff:fe00:fc00
fdde:ad00:beef:0:0:ff:fe00:d800
fdde:ad00:beef:0:2175:8a67:1000:6352
fe80:0:0:0:2075:82c2:e9e9:781d
Done

Przełącz na inny węzeł

node 1> node 2
Done
node 2> 

Kontekst węzła wyjścia

node 1> exit
Done
>

12. Gratulacje

Gratulujemy, udało Ci się wykonać pierwszą symulację OTNS.

Wiesz już, jak zainstalować OTNS i jego zależności. Udało Ci się utworzyć OpenThread dla OTNS i uruchomić symulację OTNS z symulacjami w OpenThread. Wiesz już, jak na różne sposoby obsługiwać symulację – zarówno przez OTNS-CLI, jak i OTNS-Web.

Wiesz już, czym są OTNS i jak OTNS mogą symulować sieci OpenThread.

Co dalej?

Zapoznaj się z tymi ćwiczeniami z programowania...

Dokumenty referencyjne