Thread-Netzwerke mit OTNS simulieren

1. Einführung

5abd22afa2f2ee9a.png.

Was ist ein Thread?

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

OpenThread ist eine Open-Source-Implementierung von Thread. Trotz der geringen Codegröße und des geringen Speicherplatzes unterstützt OpenThread alle Funktionen, die in der Thread-Spezifikation definiert sind.

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) zur Visualisierung und zum Betrieb simulierter Thread-Netzwerke.

Lerninhalte

  • OTNS und zugehörige Abhängigkeiten installieren
  • OpenThread für OTNS erstellen
  • Knoten in OTNS-Web hinzufügen/verschieben/löschen
  • Netzwerksimulation mit OTNS-Web nutzen
  • Nicht-einmaligen OpenThread-Fehler prüfen

Dieses Codelab konzentriert sich auf OTNS-CLI und OTNS-Web. Andere Funktionen von OTNS wie Python-Skript werden nicht behandelt.

Voraussetzungen

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

2. Einrichtung

Go installieren

Für OTNS ist Go 1.13+ erforderlich.

  1. Installieren Sie Go über https://golang.org/dl/.
  2. Fügen Sie $(go env GOPATH)/bin (normalerweise $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 in $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 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

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

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

Jetzt OTNS ausführen...

4. OTNS ausführen

Führen Sie otns aus.

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

Nach dem erfolgreichen Start öffnet OTNS eine Befehlszeile (OTNS-CLI) und startet einen Webbrowser zur Netzwerkvisualisierung und -verwaltung (OTNS-Web):

a0e05178d66929b1.png

Wenn Sie nur eine leere Seite für OTNS-Web sehen, ist WebGL wahrscheinlich nicht für Ihren Browser aktiviert. Weitere Informationen zum Aktivieren von WebGL finden Sie unterhttps://superuser.com/a/836833.

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

5. OTNS-CLI kennenlernen OTNS-Web

OTNS-CLI

OTNS-CLI bietet eine Befehlszeile 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-Befehlszeile. Keine Sorge, Sie verwenden nur einige dieser Befehle in diesem Codelab.

OTNS-Web

OTNS-Web ist das OTNS-Tool zur Netzwerkvisualisierung und -verwaltung. Es stellt eine visuelle Darstellung der Knoten, Nachrichten und Links des simulierten Thread-Netzwerks dar. Beachten Sie die verschiedenen Elemente von OTNS-Web:

4c5b43509a2ca0d0.png

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

Sie sollten einen Knoten sehen, der in OTNS-Web erstellt wurde. Der Knoten startet als Router und wird innerhalb weniger Sekunden zu einem Leader:

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 Knoten in einer Partition zusammengeführt werden. Sie sollten die Knoten in OTNS-WEB sehen:

3ee67903c01aa612

Knoten bis OTNS-Web hinzufügen

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

420258bb92561146

Klicken Sie außerdem in der Aktionsleiste auf die Schaltflächen FED, MED und SED, um andere Knotentypen zu erstellen. Ziehen Sie sie an Positionen in der Nähe vorhandener Knoten, um sie diesem Thread-Netzwerk hinzuzufügen:

fe15d6f9726a099e.png

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

7. Geschwindigkeit anpassen

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

Geschwindigkeit über OTNS-CLI anpassen

Du kannst die Simulationsgeschwindigkeit über OTNS-CLI anpassen.

Simulierte Geschwindigkeit auf 100X festlegen

> speed 100
Done

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

Simulierte Geschwindigkeit auf MAX festlegen

> speed max
Done

OTNS versucht, dies so schnell wie möglich zu simulieren. Daher sollten Sie sehen, dass Knoten 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 Geschwindigkeit auf einen Wert größer als 0 festlegen, wird die Simulation fortgesetzt.

Geschwindigkeit über OTNS-Web anpassen

Schaltflächen für die Geschwindigkeitssteuerung

Suche die Schaltflächen für die Geschwindigkeitssteuerung 9329157c1bd12672 auf der Action Bar. Mit den Schaltflächen wird die aktuelle Simulationsgeschwindigkeit angezeigt. Mit ihnen können Sie die simulierte Geschwindigkeit anpassen und die Simulation pausieren oder fortsetzen.

Simulation beschleunigen

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

Simulation verlangsamen

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

Simulation anhalten

Klicken Sie auf die Schaltfläche 46cc2088c9aa7ab6, um die Simulation während der Ausführung zu pausieren. Die Schaltfläche wird zu ce25eda3496ffcd4 geändert.

Simulation fortsetzen

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

Simulierte Geschwindigkeit auf 10X festlegen

Um Zeit zu sparen, verwenden Sie

OTNS-CLI um die Simulationsgeschwindigkeit auf

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

> speed 10
Done

8. Radio einschalten/deaktivieren

Die Simulation sollte nun zwei Router (Sechseckform) und viele untergeordnete Objekte umfassen, die mit der zehnfachen Geschwindigkeit ausgeführt werden.

Suchen Sie den aktuellen Leader (roter Rahmen) der beiden Router und klicken Sie ihn an, um ihn auszuwählen:

8c6a2e191cdae0c7.png

Mobilfunkverbindung deaktivieren

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

a3bf58d9d125f95f.png

Der Leader kann bei ausgeschaltetem Radio keine Nachrichten senden oder empfangen.

Warten Sie etwa 12 Sekunden (120 Sekunden in der Simulation) bis der andere Router zum neuen Leader wird:

e3d32f85c4a1b990.png

Das Thread-Netzwerk wird automatisch von Leader-Fehlern wiederhergestellt, indem eine neue Partition mit einem neuen Leader gebildet wird. Die neue Partition hat auch eine neue Partitionsfarbe.

Mobilfunkverbindung aktivieren

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

7370a7841861aa3a

Der Leader sollte sich nach der Wiederherstellung der Mobilfunkverbindung wieder mit dem Netzwerk verbinden.

9. Knoten verschieben

Mit OTNS können Nutzer Knoten ganz 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 nun Knoten 5 weit vom anderen Router entfernt ist, sollten sie keine Verbindung mehr zueinander herstellen. Nach etwa 12 Sekunden (120 Sekunden simuliert) werden beide zu führenden Anbietern ihrer eigenen Partition:

c06b4d0a4f183299.png

Knoten über OTNS-Web verschieben

Verschieben Sie Knoten 5 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

Löschen Sie Knoten 8:

> del 8
Done

Knoten 8 sollte aus der Simulation verschwinden:

18156770d9f8bf83.png

Knoten bis OTNS-Web löschen

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

d4079cceea0105f0

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 bis OTNS-Web löschen.

Klicken Sie bei Action Bar. auf die Schaltfläche 89618191721e79a0. Alle Knoten verschwinden auf einmal.

Bevor Sie fortfahren...

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

11. Kontext von OTNS-CLI-Knoten

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

Knotenkontextmodus starten

Geben Sie den Knotenkontext von Knoten 1 ein:

> node 1
Done
node 1>

Die Befehlszeile hat sich 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, als ob Sie direkt mit dem Knoten interagieren würden.

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.

Sie haben gelernt, wie OTNS und seine Abhängigkeiten installiert werden. 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.

Jetzt wissen Sie, was OTNS ist und wie Sie mit OTNS OpenThread-Netzwerke simulieren können.

Nächste Schritte

Sehen Sie sich einige dieser Codelabs an.

Referenzdokumente