1. Wprowadzenie
Czym jest Thread & OTNS
Thread to oparty na adresach IP protokół sieci bezprzewodowej typu mesh o niskim poborze energii, który umożliwia bezpieczną komunikację między urządzeniami i chmurą. Sieci Thread mogą dostosowywać się do zmian topologii, aby uniknąć awarii pojedynczego punktu.
Opublikowana przez Google implementacja OpenThread to implementacja Thread typu open source. Pomimo niewielkiego rozmiaru kodu i ilości pamięci OpenThread obsługuje wszystkie funkcje zdefiniowane w specyfikacji wątków.
Symulator sieci OpenThread (OTNS) umożliwia symulowanie sieci Thread przez uruchamianie symulowanych węzłów OpenThread na platformach POSix. OTNS zapewnia łatwy w użyciu interfejs internetowy (OTNS-Web) do wizualizacji i obsługi symulowanych sieci Thread.
Czego się nauczysz
- Zainstaluj OTNS i jego zależności
- Kompilacja OpenThread dla OTNS
- Dodawanie, przenoszenie i usuwanie węzłów w trybie OTNS-Web
- Używanie innych przydatnych funkcji OTNS-Web do obsługi symulacji sieci
- Weryfikowanie pojedynczego punktu awarii OpenThread
To ćwiczenia w programie koncentrują się na OTNS-CLI i OTNS-Web. Inne funkcje OTNS, takie jak skrypty w języku Python, nie są uwzględnione.
Czego potrzebujesz
- Linux x86_64 lub Mac OS.
- Git
- Wersja 1.13 lub nowsza
- Przeglądarka. OTNS-Web używa przeglądarki do wyświetlania symulacji.
- Podstawy do malowania wątków. Aby zrozumieć, czego dotyczą te ćwiczenia z programowania, musisz znać podstawowe pojęcia dotyczące Thread.
2. Instalacja
Zainstaluj Go
OTNS wymaga do tworzenia aplikacji Go w wersji 1.13 lub nowszej.
- Zainstaluj Go ze strony https://golang.org/dl/
- Dodaj
$(go env GOPATH)/bin
(zwykle$HOME/go/bin
) do$PATH
:
$ export PATH=$PATH:$(go env GOPATH)/bin
Pobierz kod OTNS
$ git clone https://github.com/openthread/ot-ns.git ./otns $ cd otns
Zainstaluj 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 OUN
Zainstaluj aplikację otns
w aplikacji $GOPATH/bin
:
$ ./script/install otns installed: /usr/local/google/home/simonlin/go/bin/otns
Sprawdźmy, czy aplikacja otns
jest prawidłowo zainstalowana
- Uruchom
which otns
, aby sprawdzić, czy plik wykonywalnyotns
można wyszukać w folderze$PATH.
- Jeśli polecenie
otns
nie zostanie znalezione, sprawdź, czy do$PATH.
dodano polecenie$(go env GOPATH)/bin
3. Kompilacja OpenThread dla OTNS
Pobierz kod OpenThread z GitHuba
$ mkdir -p ~/src $ git clone https://github.com/openthread/openthread ~/src/openthread
Kompilowanie OpenThread w narzędziu OTNS=1
$ cd ~/src/openthread $ ./script/cmake-build simulation -DOT_OTNS=ON -DOT_SIMULATION_VIRTUAL_TIME=ON -DOT_SIMULATION_VIRTUAL_TIME_UART=ON -DOT_SIMULATION_MAX_NETWORK_SIZE=999
Pliki wykonywalne OpenThread znajdują się w katalogu build
:
$ ls ~/src/openthread/build/simulation/examples/apps/cli/ ot-cli-ftd ot-cli-mtd ot-cli-radio
Czas uruchomić OTNS...
4. Uruchom OTNS
Uruchomienie otns
:
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
Po uruchomieniu OTNS włączy konsolę interfejsu wiersza poleceń (OTNS-CLI
) i uruchomi przeglądarkę internetową do wizualizacji sieci i zarządzania nią (OTNS-Web
):
Jeśli widzisz tylko pustą stronę OTNS-Web, możliwe, że interfejs WebGL nie jest włączony w Twojej przeglądarce. Informacje o włączaniu WebGL znajdziesz na stroniehttps://superuser.com/a/836833 .
W kolejnych sekcjach dowiesz się, jak zarządzać symulacjami OTNS za pomocą narzędzi OTNS-CLI
i OTNS-Web
.
5. Podstawowe informacje o interfejsie OTNS-CLI OTNS – sieć
OTNS-CLI
OTNS-CLI
udostępnia interfejs wiersza poleceń (interfejs wiersza poleceń) do zarządzania symulacjami OTNS.
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
Polecenia możesz wpisywać za pomocą OTNS-CLI
. Pełną listę poleceń znajdziesz w dokumentacji interfejsu wiersza poleceń OTNS. Bez obaw. W tym ćwiczeniu z programowania użyjesz tylko kilku z tych poleceń.
OTNS – sieć
OTNS-Web
to narzędzie OTNS do wizualizacji sieci i zarządzania nimi. Stanowi wizualną reprezentację węzłów, komunikatów i linków symulowanej sieci Thread. Zwróć uwagę na różne elementy OTNS-Web
:
6. Dodaj węzły
Dodawanie węzłów za pomocą interfejsu OTNS-CLI
Dodaj router w pozycji (300, 100)
> add router x 300 y 100 1 Done
Zobaczysz węzeł utworzony w zadaniu OTNS-Web
. Węzeł jest uruchamiany jako router i po kilku sekundach staje się liderem:
Dodaj więcej węzłów do 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
Odczekaj kilka sekund, aż węzły scalą się w jedną partycję. Węzły powinny być widoczne w elemencie OTNS-WEB
:
Dodaj węzły według: OTNS-Web
Węzły możesz też dodawać za pomocą interfejsu OTNS-Web
. Kliknij przycisk New Router
w sekcji Action Bar
. Tworzenie węzła powinno być widoczne tuż nad przyciskiem New Router
. Przeciągnij węzeł w pobliżu lidera utworzonego do OTNS-CLI
. Wszystkie węzły powinny zostać ostatecznie scalone w jedną partycję:
Możesz też tworzyć węzły innego typu, klikając przyciski FED, MED i SED na pasku działań. Przeciągnij je w pobliżu istniejących węzłów, aby dołączyć je do tej sieci Thread:
Masz już sieć Thread z jedną partycją zawierającą wiele węzłów. W następnej sekcji dostosujemy symulowaną szybkość, aby przyspieszyć symulację.
7. Dostosuj prędkość
Obecnie symulacja powinna działać z prędkoś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 szybkość przez: OTNS-CLI
Symulatorowaną szybkość możesz zmienić w OTNS-CLI
.
Ustaw symulowaną szybkość na 100X
> speed 100 Done
Węzły powinny wysyłać wiadomości znacznie częściej niż wcześniej.
Ustaw symulowaną szybkość na MAX
> speed max Done
Obecnie OTNS stara się przeprowadzać symulację tak szybko, jak jest to możliwe, więc powinny być widoczne węzły wysyłające dużą liczbę wiadomości.
Wstrzymanie symulacji
> speed 0 Done
Ustawienie symulowanej prędkości na 0
wstrzymuje symulację.
Przywróć symulację z normalną prędkością
> speed 1 Done
Ustawienie symulowanej szybkości na wartość większą niż 0
wznawia symulację.
Dostosuj szybkość przez: OTNS-Web
Przyciski sterowania prędkością
Przyciski sterowania prędkością znajdziesz na: Action Bar
. Przyciski pokazują aktualną symulowaną prędkość i można ich użyć do dostosowania symulowanej prędkości oraz wstrzymania/wznowienia symulacji.
Przyspiesz symulację
Możesz przyspieszyć symulację, klikając przycisk , aż prędkość osiągnie MAX
: .
Symulacja spowolnienia
Aby spowolnić symulację, kliknij przycisk .
Wstrzymanie symulacji
Kliknij przycisk , aby wstrzymać symulację podczas jej uruchamiania. Przycisk zostanie zmieniony na .
Wznów symulację
Kliknij przycisk , aby wznowić wstrzymaną symulację. Przycisk zostanie zmieniony z powrotem na .
Ustaw symulowaną szybkość na 10X
Aby oszczędzać czas, używaj
OTNS-CLI
, aby dostosować symulowaną szybkość do
10X
dzięki temu możemy znacznie szybciej obserwować zmiany topologii w sieci.
> speed 10 Done
8. Włącz/wyłącz radio
Teraz symulacja powinna obejmować 2 routery (w kształcie sześciokąta) i wiele elementów podrzędnych. Symulacja działa z 10-krotnie większą prędkością.
Znajdź obecnego lidera (czerwone obramowanie) jednego z 2 routerów. Kliknij go, aby go wybrać:
Wyłącz radio
Kliknij przycisk na pasku działań, aby wyłączyć radio węzła Leader:
Lider nie będzie mógł wysyłać ani odbierać wiadomości przy wyłączonym radio.
Poczekaj około 12 s (120 s w czasie symulacji), aż drugi router zostanie nowym liderem:
Sieć Thread automatycznie regeneruje się po awarii lidera, tworząc nową partycję z nowym liderem. Nowa partycja ma też nowy kolor.
Włącz radio
Wybierz lidera, którego radio było wyłączone. Kliknij przycisk na urządzeniu Action Bar
, by przywrócić połączenie radiowe:
Lider powinien ponownie podłączyć się do sieci po przywróceniu połączenia radiowego.
9. Przenoszenie węzłów
OTNS umożliwia użytkownikom łatwe przenoszenie węzłów przez OTNS-CLI
lub OTNS-Web
.
Przenieś węzeł przez: OTNS-CLI
Przenieś węzeł 5 do nowej lokalizacji:
> move 5 600 300 Done
Ponieważ węzeł 5 znajduje się teraz daleko od drugiego routera, powinny one utracić połączenie i po około 12 s (120 s w czasie symulacji) obaj staną się liderami własnej partycji:
Przenieś węzeł przez OTNS-Web
Przenieś węzeł 5 z powrotem do pierwotnej lokalizacji, przeciągając go. Dwie partycje powinny się połączyć z powrotem w jedną:
10. Usuń węzły
Usuń węzły przez OTNS-CLI
Usuń węzeł 8:
> del 8 Done
Węzeł 8 powinien zniknąć z symulacji:
Usuń węzły przez OTNS-Web
Wybierz węzeł 5 i kliknij przycisk na węźle Action Bar
, aby usunąć węzeł 5:
Parametr Node 1
powinien stać się liderem, a Node 7
powinien zostać odłączony, ponieważ nie może dotrzeć do żadnego routera.
Wyczyść symulację (usuń wszystkie węzły)
Aby wyczyścić symulację, usuń wszystkie węzły do OTNS-Web
.
Kliknij przycisk w obszarze Action Bar.
Wszystkie węzły znikną jednocześnie.
Zanim przejdziesz dalej...
Samodzielnie dodaj do symulacji kilka węzłów, aby móc kontynuować naukę w tym samouczku.
11. Kontekst węzła OTNS-CLI
OTNS-CLI
udostępnia tryb kontekstu węzła, który umożliwia łatwą interakcję z węzłami, ułatwiając programistom diagnozowanie stanu węzła.
Otwórz tryb kontekstu węzła
Wpisz kontekst węzła dla węzła 1:
> node 1 Done node 1>
Prompt interfejsu wiersza poleceń został zmieniony na node 1>
, co wskazuje bieżący kontekst węzła. Możesz wpisywać polecenia interfejsu wiersza poleceń OpenThread, które są wykonywane w węźle w taki sposób, jak podczas bezpośredniej interakcji z tym węzłem.
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 kontekst węzła
node 1> node 2 Done node 2>
Zamknij kontekst węzła
node 1> exit Done >
12. Gratulacje
Gratulacje! Udało Ci się wykonać pierwszą symulację OTNS.
Wiesz już, jak zainstalować plik OTNS i jego zależności. Udało Ci się utworzyć aplikację OpenThread dla OTNS i rozpocząć symulację OTNS przy użyciu instancji symulacyjnych OpenThread. Już wiesz, jak manipulować symulacją na różne sposoby, korzystając z usług OTNS-CLI
i OTNS-Web
.
Wiesz już, czym jest OTNS i jak za jego pomocą symulować sieci OpenThread.
Co dalej?
Zapoznaj się z tymi ćwiczeniami z programowania...
- Symulowanie sieci Thread przy użyciu OpenThread
- Symulowanie sieci Thread przy użyciu OpenThread w Dockerze
- Tworzenie sieci Thread przy użyciu tablic nRF52840 i OpenThread