1. Wprowadzenie
Co to jest Thread i OTNS
Thread to oparty na adresie IP protokół sieci bezprzewodowej sieci o niskiej mocy, który umożliwia bezpieczną komunikację między urządzeniami i między urządzeniami. Sieci wątków mogą dostosowywać się do zmian w topologii, aby uniknąć pojedynczego punktu awarii.
OpenThread to opracowany przez Google projekt open source oprogramowania Thread. Mimo małego rozmiaru kodu i zasięgu pamięci OpenThread obsługuje wszystkie funkcje określone w specyfikacji Thread.
Za pomocą symulatora sieci OpenThread (OTNS) można symulować sieci typu Thread, przeprowadzając symulowane węzły OpenThread na platformach POSIX. OTNS oferuje łatwy w użyciu interfejs internetowy (OTNS-Web), który umożliwia wizualizację i obsługę symulowanych sieci Thread.
Czego się nauczysz
- Instalowanie OTNS i jego zależności
- Tworzenie pakietu OpenThread dla OTNS
- Jak dodawać, przenosić i usuwać węzły w OTNS-Web
- Korzystaj z innych przydatnych funkcji OTNS-Web do obsługi symulacji sieci
- Weryfikowanie braku punktów końcowych w wątku OpenThread
Ćwiczenia z programowania skupiają się na OTNS-CLI i OTNS-Web. Inne funkcje OTNS, takie jak tworzenie skryptów Pythona, nie są brane pod uwagę.
Czego potrzebujesz
- Linux x86_64 lub Mac OS.
- Git (Git).
- Wersja 1.13 lub nowsza.
- Przeglądarka. OTNS-Web wyświetla symulacje w przeglądarce.
- Wprowadzenie do wątków. Musisz znać podstawowe zagadnienia związane z wątkami, aby lepiej zrozumieć, czego nauczasz w tym ćwiczeniu z programowania.
2. Instalacja
Zainstaluj Go
Do korzystania z OTNS wymagana jest wersja 1.13 lub nowsza.
- Zainstaluj aplikację 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 wpisanie hasła na koncie sudo
.
Instalowanie systemu operacyjnego
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 plik
which otns
, by sprawdzić, czy plik wykonywalnyotns
można wyszukać w$PATH.
- Jeśli nie znaleziono polecenia
otns
, sprawdź, czy pole$(go env GOPATH)/bin
zostało dodane do$PATH.
3. Tworzenie pakietu OpenThread dla OTNS
Pobierz kod OpenThread z GitHuba
$ mkdir -p ~/src $ git clone https://github.com/openthread/openthread ~/src/openthread
Utwórz OpenThread w 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 można znaleźć w katalogu build
:
$ ls ~/src/openthread/build/simulation/examples/apps/cli/ ot-cli-ftd ot-cli-mtd ot-cli-radio
Pora uruchomić OTNS...
4. Uruchom OTNS
Uruchom otns
:
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
Po uruchomieniu OTNS otworzy 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ę dla OTNS-Web, prawdopodobnie WebGL nie jest włączony w przeglądarce. Aby dowiedzieć się, jak włączyć WebGL, odwiedź stronęhttps://superuser.com/a/836833 .
W kolejnych sekcjach nauczysz się zarządzać symulacjami OTNS za pomocą funkcji OTNS-CLI
i OTNS-Web
.
5. Informacje o OTNS-CLI i OTNS-Web
Interfejs wiersza poleceń OTNS
OTNS-CLI
udostępnia interfejs wiersza poleceń do zarządzania symulacjami OTNS.
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
Polecenia można wprowadzać za pomocą polecenia OTNS-CLI
. Pełną listę poleceń znajdziesz w dokumentacji interfejsu wiersza poleceń OTNS. Nie martw się. Na potrzeby tego ćwiczenia wykorzystasz tylko kilka z tych poleceń.
OTNS – internet
OTNS-Web
to narzędzie do wizualizacji i zarządzania siecią OTNS. Zapewnia wizualną reprezentację węzłów, wiadomości i linków symulowanej sieci Thread. Zwróć uwagę na różne elementy elementu OTNS-Web
:
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
Zobaczysz węzeł utworzony w: OTNS-Web
. Węzeł zaczyna się jako router i za kilka sekund staje się liderem:
Dodaj więcej węzłów za pomocą 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 na scalenie węzłów w jedną partycję. Węzły powinny być widoczne w pliku OTNS-WEB
:
Dodaj węzły według: OTNS-Web
Możesz też dodawać węzły za pomocą typu OTNS-Web
. Kliknij przycisk New Router
na Action Bar
. Nad przyciskiem New Router
powinien być widoczny węzeł. Przeciągnij węzeł, aby znaleźć się w pobliżu lidera utworzonego za pomocą OTNS-CLI
. Wszystkie węzły powinny ostatecznie zostać połączone w jedną partycję:
Na pasku działań kliknij też przyciski FED, MED i SED, aby utworzyć inne węzły. Przeciągnij je do pozycji w pobliżu istniejących węzłów, aby przyłączyć je do sieci Thread:
Udało Ci się utworzyć sieć wątków na jednej partycji zawierającej wiele węzłów. W następnej sekcji dowiesz się, jak dostosować szybkość symulacji, aby przyspieszyć symulację.
7. Dostosuj prędkość
Obecnie symulacja powinna trwać 1X
, co oznacza, że symulacja czasu, który upłynął do tej pory, jest taki sam jak czas od momentu utworzenia pierwszego węzła.
Dostosuj prędkość za pomocą OTNS-CLI
Symulację można dostosować za pomocą OTNS-CLI
.
Ustaw szybkość symulowania na 100X
> speed 100 Done
Zobaczysz, że węzły będą wysyłać wiadomości znacznie częściej niż wcześniej.
Ustaw szybkość symulowania na MAX
> speed max Done
Obecnie OTNS stara się symulować jak najszybciej, więc węzły powinny wysyłać dużą liczbę wiadomości.
Wstrzymanie symulacji
> speed 0 Done
Ustawienie szybkości symulowania wartości 0
spowoduje wstrzymanie symulacji.
Przywróć symulację z normalną prędkością
> speed 1 Done
Ustawienie szybkości symulowania wartości większej niż 0
powoduje wznowienie symulacji.
Dostosuj prędkość za pomocą OTNS-Web
Przyciski sterowania prędkością
Znajdź przyciski sterowania prędkością () na: Action Bar
. Przyciski pokazują aktualną szybkość symulowania i pozwalają dostosować szybkość symulowania i wstrzymać lub wznowić symulację.
Symulacja przyspieszania
Możesz przyspieszyć symulację, klikając przycisk , dopóki szybkość nie osiągnie MAX
: .
Spowolnij symulację
Możesz spowolnić symulację, klikając przycisk .
Wstrzymanie symulacji
Kliknij przycisk , aby wstrzymać symulację. Przycisk zmieni się na .
Wznów symulację
Kliknij przycisk , aby wznowić symulację. Przycisk zmieni się z powrotem na .
Ustaw szybkość symulowania na 10X
Aby zaoszczędzić czas, skorzystaj z narzędzia
OTNS-CLI
, aby dostosować szybkość symulowania do:
10X
, aby szybciej zauważyć zmiany w topologii sieci.
> speed 10 Done
8. Włącz/wyłącz radio
Symulacja powinna teraz obejmować 2 routery (w kształcie sześciokąta) i wiele elementów podrzędnych, a także powinna działać z 10 razy większą szybkością.
Znajdź bieżącego lidera (czerwone obramowanie) 2 routerów, aby je wybrać: kliknij jeden z nich:
Wyłącz radio
Aby wyłączyć radio węzła lidera, kliknij przycisk na pasku działań:
Lider nie będzie mógł wysyłać ani odbierać wiadomości przy wyłączonym radiu.
Zaczekaj około 12 sekund (120 s w symulacji czasu) na drugi router, aby zostać nowym liderem.
Sieć Thread automatycznie przywraca informacje o niepowodzeniu lidera, tworząc nową partycję z nowym liderem. Nowa partycja ma też nowy kolor partycji.
Włącz radio
Wybierz lidera, którego radio było wyłączone. Kliknij przycisk na urządzeniu Action Bar
, aby przywrócić łączność radiową:
Lider powinien ponownie podłączyć się do sieci po przywróceniu połączenia radiowego.
9. Przenieś węzły
Dzięki OTNS użytkownicy mogą łatwo przenosić węzły 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 jest daleko od innego routera, powinien stracić połączenie ze sobą, a po około 12 sekundach (120 s w czasie symulacji) każdy z nich staje się liderem własnej partycji:
Przenoszenie węzła przez OTNS-Web
Przeciągnij węzeł 5 z powrotem do pierwotnej lokalizacji, przeciągając. Dwie partycje powinny się połączyć w jedną partycję:
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 urządzeniu Action Bar
, aby usunąć ten węzeł:
Strona Node 1
powinna zostać liderem, a Node 7
– odłączona, ponieważ nie może nawiązać połączenia z żadnym routerem.
Wyczyść symulację (usuń wszystkie węzły)
Możesz wyczyścić symulację, usuwając wszystkie węzły za pomocą zasady OTNS-Web
.
Kliknij przycisk na opcji Action Bar.
Wszystkie węzły znikną razem.
Zanim przejdziesz dalej...
Aby samodzielnie kontynuować eksperyment, w tym celu dodaj do symulacji niektóre węzły.
11. Kontekst węzła OTNS-CLI
OTNS-CLI
zapewnia tryb kontekstowy węzła, który ułatwia interakcję z węzłami, aby ułatwić deweloperom diagnozowanie stanu węzła.
Włącz tryb kontekstu węzła
Wpisz kontekst węzła węzła 1:
> node 1 Done node 1>
Komunikat wiersza poleceń zmienił się na node 1>
, wskazując bieżący kontekst węzła. Możesz wpisać polecenia OpenThread CLI, które mają być wykonywane w węźle, tak jakby wchodziliśmy w bezpośrednią interakcję z 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 się na kontekst innego 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ć serwer OTNS i jego zależności. Udało Ci się utworzyć konstrukcję OpenThread dla OTNS i rozpocząć symulację OTNS za pomocą instancji symulacji OpenThread. Wiesz już, jak symulować różne elementy w ramach metod OTNS-CLI
i OTNS-Web
.
Wiesz już, czym jest OTNS i jak za pomocą OTNS symulować sieci OpenThread.
Co dalej?
Sprawdź niektóre z tych ćwiczeń...
- Symulowanie sieci typu Thread przy użyciu OpenThread
- Symulowanie sieci typu Thread przy użyciu OpenThread w Dockerze
- Tworzenie sieci wątków przy użyciu tablic nRF52840 i OpenThread