1. Wstęp
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.
- Zainstaluj Go z https://golang.org/dl/.
- 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
- Uruchom polecenie
which otns
, aby sprawdzić, czy plik wykonywalnyotns
można wyszukać w$PATH.
. - 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
):
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
:
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:
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
:
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ę:
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:
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ą . 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 , aż prędkość osiągnie
MAX
: .
Symulacja spowolniona
Symulację można spowolnić, klikając przycisk .
Wstrzymanie symulacji
Kliknij przycisk , by wstrzymać symulację. Przycisk zostanie zmieniony na:
.
Wznów symulację
Kliknij przycisk , aby wznowić wstrzymaną symulację. Przycisk zostanie ponownie zmieniony na
.
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:
Wyłącz radio
Kliknij przycisk na pasku działań, aby wyłączyć radio węzła Lider:
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):
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 na urządzeniu
Action Bar
, aby przywrócić połączenie radiowe:
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:
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ą:
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:
Usuń węzły za pomocą węzła OTNS-Web
Wybierz węzeł 5 i kliknij przycisk na urządzeniu
Action Bar
, aby go usunąć:
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 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...
- Symulacja sieci wątków z OpenThread
- Symulacja sieci wątków przy użyciu OpenThread w Dockerze
- Tworzenie sieci wątków z tabelami nRF52840 i OpenThread