1) Einführung
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.
- Installieren Sie Go unter https://golang.org/dl/.
- 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
- Führen Sie
which otns
aus, um zu prüfen, ob die ausführbare Dateiotns
in$PATH.
suchbar ist - 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
):
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
:
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:
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:
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:
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:
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 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 klicken, bis die Geschwindigkeit MAX
erreicht: .
Langsame Simulation
Sie können die Simulation verlangsamen, indem Sie auf die Schaltfläche klicken.
Simulation anhalten
Klicken Sie auf die Schaltfläche , um die Simulation anzuhalten. Die Schaltfläche wird in geändert.
Simulation fortsetzen
Klicken Sie auf die Schaltfläche , um die Simulation fortzusetzen, wenn sie pausiert ist. Die Schaltfläche wird wieder in 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:
Mobilfunkverbindung deaktivieren
Klicken Sie in der Aktionsleiste auf die Schaltfläche , um das Optionsfeld des Leader-Knotens zu deaktivieren:
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:
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 auf Action Bar
, um die Radioverbindung wiederherzustellen:
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:
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:
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:
Knoten bis OTNS-Web
löschen
Wählen Sie Knoten 5 aus und klicken Sie auf Action Bar
auf , um Knoten 5 zu löschen:
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 . 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...
- Thread-Netzwerk mit OpenThread simulieren
- Thread-Netzwerk mit OpenThread in Docker simulieren
- Thread-Netzwerk mit nRF52840-Boards und OpenThread erstellen