1. Einführung
Was ist Thread & OTNS?
Thread ist ein IP-basiertes stromsparendes Mesh-Netzwerk-Protokoll für sichere Geräte-zu-Gerät- und Geräte-zu-Cloud-Kommunikation. 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 seiner geringen Größe und des geringen Speicherbedarfs 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 benutzerfreundliche Weboberfläche (OTNS-Web) zum Visualisieren und Betreiben 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
- Andere nützliche Funktionen von OTNS-Web für die Netzwerksimulation verwenden
- ThreadNo-Single-Point-of-Failure“ von OpenThread prüfen
Dieses Codelab befasst sich mit OTNS-CLI und OTNS-Web. Andere Funktionen von OTNS wie Python-Skripts sind nicht abgedeckt.
Voraussetzungen
- Linux x86_64 oder Mac OS.
- Git.
- Go 1.11 und höher
- Web browser. OTNS-Web verwendet einen Webbrowser, um Simulationen anzuzeigen.
- Thread Primer. Sie müssen die grundlegenden Konzepte von Thread kennen, um zu verstehen, was in diesem Codelab gelehrt wird.
2. Installation
Go installieren
Für das Erstellen von OTNS ist Go 1.11+ erforderlich.
- Installieren Sie Go über https://golang.org/dl/.
- 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
Möglicherweise werden Sie aufgefordert, ein Passwort für sudo
einzugeben.
OTNs installieren
Installieren Sie otns
in $GOPATH/bin
:
$ ./script/install otns installed: /usr/local/google/home/simonlin/go/bin/otns
Prüfen, ob otns
ordnungsgemäß installiert ist
- Führen Sie
which otns
aus, um zu prüfen, ob die ausführbare Dateiotns
in$PATH.
gesucht werden kann. - 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/bootstrap $ ./bootstrap $ make -f examples/Makefile-simulation OTNS=1
Die ausführbare OpenOpen-Datei des Threads finden Sie im Verzeichnis 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
Jetzt ist es an der Zeit, OTNS auszuführen...
4. OTNS ausführen
Führen Sie otns
aus.
$ cd ~/src/openthread/output/simulation/bin $ otns > ← OTNS-CLI prompt
Wenn OTNS erfolgreich gestartet wurde, wird eine Befehlszeilenkonsole (OTNS-CLI
) geöffnet und ein Webbrowser für die Netzwerkvisualisierung und -verwaltung (OTNS-Web
) gestartet:
Wenn Sie nur eine leere Seite für OTNS-Web sehen, ist WebGL in Ihrem Browser wahrscheinlich nicht aktiviert. Unterhttps://superuser.com/a/836833 finden Sie weitere Informationen zum Aktivieren von WebGL.
In den folgenden Abschnitten erfahren Sie, wie Sie OTNS-Simulationen über OTNS-CLI
und OTNS-Web
verwalten.
5 OTNS-CLI und OTNS-Web
OTNS-Befehlszeile
OTNS-CLI
bietet eine Befehlszeile zur Verwaltung von OTNS-Simulationen.
$ cd ~/src/openthread/output/simulation/bin $ 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. Aber keine Sorge, Sie werden nur einige dieser Befehle in diesem Codelab verwenden.
OTNS-Web
OTNS-Web
ist das Netzwerkvisualisierungs- und Verwaltungstool von OTNS. Sie bietet eine visuelle Darstellung der Knoten, Nachrichten und Links des simulierten Thread-Netzwerks. Beachten Sie die verschiedenen Elemente von OTNS-Web
:
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
In OTNS-Web
sollte ein Knoten erstellt werden. Der Knoten startet als Router und wird in wenigen Sekunden zu einem Leader:
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. Die Knoten sollten in OTNS-WEB
angezeigt werden:
Knoten hinzufügen bis OTNS-Web
Sie können Knoten auch über OTNS-Web
hinzufügen. Klicken Sie auf die Schaltfläche New Router
von Action Bar
. Ein Knoten wird direkt über der Schaltfläche New Router
erstellt. Ziehen Sie den Knoten so, dass er sich in der Nähe des führenden Anbieters befindet, den Sie über OTNS-CLI
erstellt haben. Alle Knoten sollten zu einer Partition zusammengeführt werden:
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 der vorhandenen Knoten, um sie an dieses Thread-Netzwerk anzuhängen:
Sie haben jetzt ein Thread-Netzwerk mit einer Partition erstellt, die viele Knoten enthält. Im nächsten Abschnitt passen wir die simulierte Geschwindigkeit an, damit die Simulation schneller läuft.
7. Geschwindigkeit anpassen
Derzeit sollte die Simulation mit einer Geschwindigkeit von 1X
ausgeführt werden. Das bedeutet, dass die bisher simulierte Zeit mit der tatsächlichen Zeit seit der Erstellung des ersten Knotens übereinstimmt.
Geschwindigkeit über OTNS-CLI
anpassen
Du kannst die simulierte Geschwindigkeit bis OTNS-CLI
anpassen.
Simulationsgeschwindigkeit auf 100X
festlegen
> speed 100 Done
Die Knoten senden Nachrichten viel häufiger als zuvor.
Simulationsgeschwindigkeit auf MAX
festlegen
> speed max Done
OTNS versucht jetzt, so schnell wie möglich zu simulieren. Knoten sollten eine große Anzahl von Nachrichten senden.
Simulation anhalten
> speed 0 Done
Wenn Sie die Simulationsgeschwindigkeit auf 0
festlegen, wird die Simulation pausiert.
Simulation mit normaler Geschwindigkeit wiederherstellen
> speed 1 Done
Wenn Sie die Simulationsgeschwindigkeit auf einen Wert größer als 0
festlegen, wird die Simulation fortgesetzt.
Geschwindigkeit über OTNS-Web
anpassen
Tasten für Geschwindigkeitsbegrenzung
Suchen Sie die Geschwindigkeitssteuerungsschaltflächen auf der
Action Bar
. Auf den Schaltflächen wird die aktuelle simulierte Geschwindigkeit angezeigt. Sie können die Simulationsgeschwindigkeit einstellen und die Simulation anhalten bzw. fortsetzen.
Simulation beschleunigen
Sie können die Simulation beschleunigen, indem Sie auf klicken, bis die Geschwindigkeit
MAX
erreicht hat: .
Simulation verlangsamen
Sie können die Simulation verlangsamen, indem Sie auf die Schaltfläche klicken.
Simulation anhalten
Klicken Sie auf die Schaltfläche , um die Simulation während der Ausführung zu pausieren. Die Schaltfläche wird in
geändert.
Simulation fortsetzen
Klicken Sie auf die Schaltfläche , um die Simulation wieder zu starten, wenn sie pausiert ist. Die Schaltfläche wird wieder in
geändert.
Simulationsgeschwindigkeit auf 10X
festlegen
Zeit sparen mit
OTNS-CLI
, um die simulierte Geschwindigkeit auf anzupassen
10X
Damit können wir Topologieänderungen im Netzwerk viel schneller beobachten.
> speed 10 Done
8. Radio ein-/ausschalten
Die Simulation sollte nun zwei Router (Hexagon-Form) und viele untergeordnete Elemente enthalten, die mit zehnfacher Geschwindigkeit ausgeführt werden.
Klicken Sie zum Auswählen auf den aktuellen Leader (rote Umrandung) der beiden Router:
Mobilfunkverbindung deaktivieren
Klicken Sie in der Aktionsleiste auf die Schaltfläche , um das Optionsfeld des Leader-Knotens zu deaktivieren:
Der Leader kann keine Nachrichten mit deaktiviertem Radio senden oder empfangen.
Warten Sie etwa 12 s (120 s in der Simulationszeit), bis der andere Router zum neuen führenden Anbieter wird:
Im Thread-Netzwerk wird nach dem Fehlschlagen des Leaders automatisch eine neue Partition mit einem neuen Leader erstellt. Außerdem hat die neue Partition eine neue Partitionsfarbe.
Mobilfunkverbindung aktivieren
Wählen Sie den Leader aus, dessen Radio deaktiviert wurde. Klicken Sie auf die Schaltfläche auf
Action Bar
, um die Funkverbindung wiederherzustellen:
Der Leader sollte sich wieder mit dem Netzwerk verbinden, nachdem die Funkverbindung wiederhergestellt wurde.
9. Knoten verschieben
Mit OTNS können Nutzer Knoten schnell ü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 Knoten 5 weit von dem anderen Router entfernt ist, sollten sie die Verbindung zueinander trennen. Nach etwa 12 Sekunden (120 Sekunden) werden beide Knoten zu den führenden Anbietern ihrer eigenen Partition:
Knoten über OTNS-Web verschieben
Verschieben Sie Knoten 5 zurück an den ursprünglichen Speicherort. Die beiden Partitionen sollten wieder zu einer Partition zusammengeführt werden:
10. Knoten löschen
Knoten über OTNS-CLI
löschen
Löschen Sie Knoten 8:
> del 8 Done
Knoten 8 sollte aus der Simulation verschwinden:
Knoten über OTNS-Web
löschen
Wählen Sie Knoten 5 aus und klicken Sie auf die Schaltfläche auf dem
Action Bar
, um Knoten 5 zu löschen:
Node 1
sollte zu "Leader" werden und Node 7
sollte getrennt werden, da es keine Verbindung zum Router herstellen kann.
Simulation löschen (alle Knoten löschen)
Sie können die Simulation löschen. Löschen Sie dazu alle Knoten über OTNS-Web
.
Klicken Sie auf die Schaltfläche auf
Action Bar.
. Alle Knoten werden gleichzeitig ausgeblendet.
Bevor Sie fortfahren...
Fügen Sie der Simulation einige Knoten selbst hinzu, damit Sie mit dieser Anleitung fortfahren können.
11. OTNS-CLI-Knotenkontext
OTNS-CLI
bietet einen Knotenkontextmodus für die einfache Interaktion mit Knoten, damit Entwickler den Status eines Knotens diagnostizieren können.
Knotenkontextmodus aktivieren
Geben Sie den Knotenkontext für Knoten 1 ein:
> node 1 Done node 1>
Die Befehlszeilen-Eingabeaufforderung wurde in node 1>
geändert , was den aktuellen Knotenkontext angibt. Sie können OpenThread-Befehlszeilenbefehle eingeben, die auf dem Knoten ausgeführt werden, so als würden 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
Sie haben die erste OTNS-Simulation erfolgreich durchgeführt.
Sie haben nun erfahren, wie OTNS und dessen Abhängigkeiten installiert werden. Sie haben OpenThread für OTNS erstellt und die OTNS-Simulation mit OpenThread-Simulationsinstanzen gestartet. Sie haben gelernt, wie die Simulation mit OTNS-CLI
und OTNS-Web
auf unterschiedliche Weise bearbeitet werden kann.
Sie wissen jetzt, was OTNS ist und wie Sie OTNS verwenden können, um OpenThread-Netzwerke zu simulieren.
Nächste Schritte
Dann sieh dir ein paar dieser Codelabs an...
- Thread-Netzwerk mit OpenThread simulieren
- Thread-Netzwerk mit OpenThread in Docker simulieren
- Thread-Netzwerk mit nRF52840-Boards und OpenThread erstellen