Thread-Netzwerke mit OTNS simulieren

1) Einführung

5abd22afa2f2ee9a.png

Was ist Thread und OTNS?

Thread ist ein IP-basiertes drahtloses Mesh-Netzwerkprotokoll mit geringem Stromverbrauch, das eine sichere Kommunikation zwischen Geräten und Clouds ermöglicht. Thread-Netzwerke können sich an Topologieänderungen anpassen, um Single Point of Failure zu vermeiden.

OpenThread von Google ist eine Open-Source-Implementierung von Thread. Trotz seiner geringen Codegröße und Arbeitsspeichergröße unterstützt OpenThread alle in der Thread-Spezifikation definierten Funktionen.

Mit dem OpenThread Network Simulator (OTNS) können Thread-Netzwerke simuliert werden, indem simulierte OpenThread-Knoten auf POSIX-Plattformen ausgeführt werden. OTNS bietet eine nutzerfreundliche Weboberfläche (OTNS-Web) zum Visualisieren und Betreiben simulierter Thread-Netzwerke.

Lerninhalte

  • OTNS und seine Abhängigkeiten installieren
  • OpenThread für OTNS erstellen
  • Knoten in OTNS-Web hinzufügen, verschieben oder löschen
  • Weitere nützliche Funktionen von OTNS-Web für die Durchführung der Netzwerksimulation verwenden
  • No-Single-Point of Failure von OpenThread prüfen

In diesem Codelab liegt der Fokus auf OTNS-CLI und OTNS-Web. Die anderen Funktionen von OTNS wie Python-Scripting sind nicht abgedeckt.

Voraussetzungen

  • Linux x86_64 oder Mac OS.
  • Git:
  • Version 1.13 oder höher.
  • Web browser. OTNS-Web verwendet einen Webbrowser zur Anzeige von Simulationen.
  • Thread-Primer Sie müssen die grundlegenden Konzepte von Thread verstehen und verstehen, was in diesem Codelab gelehrt wird.

2. Installation

Go installieren

Für OTNS ist Go 1.13 oder höher erforderlich.

  1. Installieren Sie Go unter https://golang.org/dl/.
  2. Fügen Sie $(go env GOPATH)/bin (in der Regel $HOME/go/bin) zu $PATH hinzu:
$ export PATH=$PATH:$(go env GOPATH)/bin

OTNS-Code abrufen

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

Abhängigkeiten installieren

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

Sie werden möglicherweise aufgefordert, ein Passwort für sudo einzugeben.

OTN installieren

Installieren Sie otns unter $GOPATH/bin:

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

Prüfen, ob otns korrekt installiert ist

  1. Führen Sie which otns aus, um zu prüfen, ob die ausführbare Datei otns in $PATH. suchbar ist
  2. Wenn der Befehl otns nicht gefunden wird, prüfen Sie, ob Sie $(go env GOPATH)/bin zu $PATH. hinzugefügt haben.

3. OpenThread für OTNS erstellen

OpenThread-Code von GitHub abrufen

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

OpenThread mit OTNS=1 erstellen

$ 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

Sie finden die ausführbaren OpenThread-Dateien im Verzeichnis build:

$ ls ~/src/openthread/build/simulation/examples/apps/cli/
ot-cli-ftd        ot-cli-mtd        ot-cli-radio

Es ist Zeit, OTNS auszuführen...

4. OTNS ausführen

Führen Sie otns aus.

$ cd ~/src/openthread/build/simulation/examples/apps/cli
$ otns
> ← OTNS-CLI prompt

Nach dem Start öffnet OTNS eine Befehlszeile (OTNS-CLI) und startet einen Webbrowser für die Netzwerkvisualisierung und -verwaltung (OTNS-Web):

a0e05178d66929b1.png

Wenn Sie nur eine leere Seite für OTNS-Web sehen, ist WebGL wahrscheinlich in Ihrem Browser nicht aktiviert. Unterhttps://superuser.com/a/836833 erfahren Sie, wie Sie WebGL aktivieren.

In den folgenden Abschnitten erfahren Sie, wie Sie OTNS-Simulationen über OTNS-CLI und OTNS-Web verwalten.

5. Einführung in OTNS-CLI und OTNS-Web

OTNS-CLI

OTNS-CLI bietet eine Befehlszeile (Command Line Interface, CLI) zum Verwalten von OTNS-Simulationen.

$ cd ~/src/openthread/build/simulation/examples/apps/cli
$ otns
> ← OTNS-CLI prompt

Sie können Befehle über OTNS-CLI eingeben. Eine vollständige Liste der Befehle finden Sie in der Referenz zur OTNS-CLI. Keine Sorge, Sie verwenden in diesem Codelab nur einige dieser Befehle.

OTNS-Web

OTNS-Web ist das Netzwerkvisualisierungs- und Managementtool von OTNS. Sie bietet eine visuelle Darstellung der Knoten, Nachrichten und Links des simulierten Thread-Netzwerks. Beachten Sie die verschiedenen Elemente von OTNS-Web:

4C5b43509a2ca0d0

6. Knoten hinzufügen

Knoten über OTNS-CLI hinzufügen

Router an Position hinzufügen (300, 100)

> add router x 300 y 100
1
Done

Es sollte ein Knoten in OTNS-Web erstellt werden. Der Knoten startet als Router und wird in wenigen Sekunden zu einem führenden Anbieter:

6ca8c2e63ed9818d.png

Weitere Knoten über OTNS-CLI hinzufügen

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

Warten Sie einige Sekunden, bis die Knoten in einer Partition zusammengeführt werden. Sie sollten die Knoten in OTNS-WEB sehen:

3ee67903c01aa612.png

Knoten von OTNS-Web hinzufügen

Sie können Knoten auch über OTNS-Web hinzufügen. Klicken Sie auf die Schaltfläche New Router für Action Bar. Ein Knoten sollte direkt über der Schaltfläche New Router erstellt werden. Ziehen Sie den Knoten in die Nähe des Leaders, den Sie über OTNS-CLI erstellt haben. Alle Knoten sollten schließlich in einer Partition zusammengeführt werden:

420258bb92561146

Klicken Sie außerdem auf die Schaltflächen FED, MED und SED in der Aktionsleiste, um andere Knotentypen zu erstellen. Ziehen Sie sie an Positionen in der Nähe von vorhandenen Knoten, um sie an dieses Thread-Netzwerk anzuhängen:

fe15d6f9726a099e.png

Sie haben jetzt ein Thread-Netzwerk mit einer Partition erstellt, das viele Knoten enthält. Im nächsten Abschnitt passen wir die Simulationsgeschwindigkeit an, um die Simulation zu beschleunigen.

7. Geschwindigkeit anpassen

Die Simulation sollte momentan mit einer Geschwindigkeit von 1X ausgeführt werden. Das bedeutet, dass die bisher verstrichene Zeit mit der tatsächlichen Zeit seit der Erstellung des ersten Knotens identisch ist.

Geschwindigkeit um OTNS-CLI anpassen

Du kannst die Simulierungsgeschwindigkeit über OTNS-CLI anpassen.

Simulierte Geschwindigkeit auf 100X festlegen

> speed 100
Done

Die Knoten sollten jetzt viel häufiger Nachrichten als zuvor senden.

Simulierte Geschwindigkeit auf MAX festlegen

> speed max
Done

OTNS versucht jetzt, so schnell wie möglich zu simulieren. Daher sollten Sie Knoten sehen, die eine große Anzahl von Nachrichten senden.

Simulation anhalten

> speed 0
Done

Wenn Sie die simulierte Geschwindigkeit auf 0 festlegen, wird die Simulation pausiert.

Simulation mit normaler Geschwindigkeit wiederherstellen

> speed 1
Done

Wenn Sie die simulierte Geschwindigkeit auf einen Wert größer als 0 festlegen, wird die Simulation fortgesetzt.

Geschwindigkeit um OTNS-Web anpassen

Tasten für die Geschwindigkeitssteuerung

Suche nach den Tasten zur Geschwindigkeitskontrolle 9329157c1bd12672.png auf der Action Bar. Mit den Schaltflächen wird die aktuelle Simulationsgeschwindigkeit angezeigt. Damit können Sie die simulierte Geschwindigkeit anpassen und die Simulation pausieren/fortsetzen.

Beschleunigungssimulation

Sie können die Simulation beschleunigen, indem Sie auf die Schaltfläche 39b88331779277ad.png. klicken, bis die Geschwindigkeit MAX erreicht: f5f460b2586d299b.png.

Langsame Simulation

Sie können die Simulation verlangsamen, indem Sie auf die Schaltfläche 31cca8d5b52fa900.png klicken.

Simulation anhalten

Klicken Sie auf die Schaltfläche 46cc2088c9aa7ab6.png, um die Simulation anzuhalten. Die Schaltfläche wird in ce25eda3496ffcd4.png geändert.

Simulation fortsetzen

Klicken Sie auf die Schaltfläche ce25eda3496ffcd4.png, um die Simulation fortzusetzen, wenn sie pausiert ist. Die Schaltfläche wird wieder in 46cc2088c9aa7ab6.png geändert.

Simulierte Geschwindigkeit auf 10X festlegen

Wenn Sie Zeit sparen möchten, nutzen Sie

OTNS-CLI um die simulierte Geschwindigkeit auf

10X damit wir Topologieänderungen im Netzwerk viel schneller beobachten können.

> speed 10
Done

8. Radio ein-/ausschalten

Die Simulation sollte jetzt zwei Router (Sechseckform) und viele untergeordnete Elemente umfassen und mit einer zehnfachen Geschwindigkeit ausgeführt werden.

Suchen Sie nach dem aktuellen Leader (roter Rahmen) der beiden Router, um ihn mit einem einzigen Klick auszuwählen:

8c6a2e191cdae0c7.png

Mobilfunkverbindung deaktivieren

Klicken Sie in der Aktionsleiste auf die Schaltfläche 7ca085f470491dd4, um das Optionsfeld des Leader-Knotens zu deaktivieren:

a3bf58d9d125f95f.png

Wenn der Radiosender das Radio deaktiviert, können keine Nachrichten gesendet oder empfangen werden.

Warten Sie ca. 12 Sekunden (120 Sekunden in der Simulierungszeit) bis der andere Router zum neuen Leader wird:

e3d32f85c4a1b990.png.

Das Thread-Netzwerk wird nach einem Ausfall des Leaders automatisch wiederhergestellt, indem eine neue Partition mit einem neuen Leader gebildet wird. Die neue Partition erhält ebenfalls eine neue Partitionsfarbe.

Mobilfunkverbindung aktivieren

Wählen Sie den Leader aus, dessen Radio deaktiviert wurde. Klicken Sie auf die Schaltfläche 2d9cecb8612b42aa.png auf Action Bar, um die Radioverbindung wiederherzustellen:

7370a7841861aa3a

Nachdem die Funkverbindung wiederhergestellt wurde, sollte der Leiter wieder mit dem Netzwerk verbunden sein.

9. Knoten verschieben

Mit OTNS können Nutzer Knoten einfach über OTNS-CLI oder OTNS-Web verschieben.

Knoten durch OTNS-CLI verschieben

Verschieben Sie Knoten 5 an einen neuen Speicherort:

> move 5 600 300
Done

Da sich Knoten 5 inzwischen weit vom anderen Router entfernt befindet, sollte er die Verbindung zueinander trennen. Nach ungefähr 12 Sekunden (bei 120 s simulierter Zeit) werden beide zu Leitern der eigenen Partition:

c06b4d0a4f183299.png

Knoten durch OTNS-Web verschieben

Verschieben Sie Knoten 5 durch Ziehen an die ursprüngliche Position. Die beiden Partitionen sollten wieder zu einer Partition zusammengeführt werden:

9ba305c4c5a5f892.png

10. Knoten löschen

Knoten bis OTNS-CLI löschen

Knoten 8 löschen:

> del 8
Done

Knoten 8 sollte aus der Simulation entfernt werden:

18156770d9f8bf83.png

Knoten bis OTNS-Web löschen

Wählen Sie Knoten 5 aus und klicken Sie auf Action Bar auf 7ff6afd565f4eafc.png, um Knoten 5 zu löschen:

d4079cceea0105f0.png

Node 1 sollte zu Leader werden und Node 7 sollte getrennt werden, da er keinen Router erreichen kann.

Simulation löschen (alle Knoten löschen)

Sie können die Simulation löschen, indem Sie alle Knoten über OTNS-Web löschen.

Klicken Sie auf Action Bar. auf 89618191721e79a0.png.. Alle Knoten verschwinden dann gleichzeitig.

Bevor Sie fortfahren...

Fügen Sie der Simulation selbst einige Knoten hinzu, damit Sie in dieser Anleitung fortfahren können.

11. OTNS-CLI-Knotenkontext

OTNS-CLI bietet einen Knotenkontextmodus für eine einfache Interaktion mit Knoten, mit denen Entwickler den Status eines Knotens diagnostizieren können.

Knotenkontextmodus aktivieren

Geben Sie den Knotenkontext von Knoten 1 ein:

> node 1
Done
node 1>

Die Befehlszeile wurde in node 1> geändert und gibt den aktuellen Knotenkontext an. Sie können OpenThread CLI-Befehle eingeben, die auf dem Knoten ausgeführt werden sollen, so als ob Sie direkt mit dem Knoten interagieren.

Befehle im Knotenkontext ausführen

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

Zu einem anderen Knotenkontext wechseln

node 1> node 2
Done
node 2> 

Knotenkontext beenden

node 1> exit
Done
>

12. Glückwunsch

Glückwunsch, Sie haben Ihre erste OTNS-Simulation erfolgreich ausgeführt!

Jetzt wissen Sie, wie Sie OTNS und die zugehörigen Abhängigkeiten installieren. Sie haben OpenThread für OTNS erstellt und die OTNS-Simulation mit OpenThread-Simulationsinstanzen gestartet. Sie haben gelernt, wie Sie die Simulation mithilfe von OTNS-CLI und OTNS-Web bearbeiten.

Sie wissen jetzt, was OTNS ist und wie Sie OTNS verwenden können, um OpenThread-Netzwerke zu simulieren.

Nächste Schritte

Sehen Sie sich einige dieser Codelabs an...

Referenzdokumente