1. Einführung
Was ist Thread und OTNS
Thread ist ein IP-basiertes, energiesparendes drahtloses Mesh-Netzwerkprotokoll, das eine sichere Kommunikation zwischen Geräten und der Cloud ermöglicht. Thread-Netzwerke können sich an Topologieänderungen anpassen, um Single Point of Failure zu vermeiden.
OpenThread, das von Google veröffentlicht wurde, ist eine Open-Source-Implementierung von Thread. Trotz der geringen Codegröße und des geringen Arbeitsspeicherbedarfs unterstützt OpenThread alle in der Thread-Spezifikation definierten Funktionen.
Mit dem OpenThread Network Simulator (OTNS) können Thread-Netzwerke durch die Ausführung simulierter OpenThread-Knoten auf POSix-Plattformen simuliert werden. OTNS bietet eine nutzerfreundliche 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
- Weitere nützliche Funktionen von OTNS-Web für die Netzwerksimulation nutzen
- No-Single-Point-of-Failureure von OpenThread prüfen
Dieses Codelab konzentriert sich auf OTNS-CLI und OTNS-Web. Andere OTNS-Funktionen, z. B. die Python-Skripterstellung, werden nicht behandelt.
Voraussetzungen
- Linux x86_64 oder Mac OS
- Git:
- Go 1.13 oder höher
- Web browser. OTNS-Web verwendet einen Webbrowser zum Anzeigen von Simulationen.
- Thread-Primer Sie müssen die grundlegenden Konzepte von Thread kennen, um zu verstehen, was in diesem Codelab behandelt wird.
2. Installation
Go installieren
Zum Erstellen von OTNS ist Go 1.13+ erforderlich.
- Go von https://golang.org/dl/ installieren
- 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 wir, ob otns
richtig 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
Jetzt ist es 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 erfolgreichen Start öffnet OTNS eine CLI-Konsole (OTNS-CLI
) und startet einen Webbrowser für die Netzwerkvisualisierung und -verwaltung (OTNS-Web
):
Wenn Sie für OTNS-Web nur eine leere Seite sehen, ist WebGL in Ihrem Browser wahrscheinlich nicht 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 und 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 OTNS-CLI-Referenz. Keine Sorge, Sie werden in diesem Codelab nur einige dieser Befehle 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
Fügen Sie einen Router an Position (300, 100) hinzu
> add router x 300 y 100 1 Done
Sie sollten einen Knoten sehen, der in OTNS-Web
erstellt wurde. Der Knoten wird als Router gestartet 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 zu einer Partition zusammengeführt wurden. Die Knoten sollten in OTNS-WEB
angezeigt werden:
Knoten bis zum 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
. Direkt über der Schaltfläche New Router
sollte ein Knoten erstellt werden. Ziehen Sie den Knoten an die Führungslinie, die Sie über OTNS-CLI
erstellt haben. Alle Knoten sollten schließlich zu einer Partition zusammengeführt werden:
Sie können auch auf die Schaltflächen FED, MED und SED in der Aktionsleiste klicken, um andere Knotentypen zu erstellen. Ziehen Sie sie an Positionen in der Nähe vorhandener Knoten, um sie mit dem Thread-Netzwerk zu verbinden:
Jetzt haben Sie ein Thread-Netzwerk aus 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
Derzeit sollte die Simulation mit der 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 über OTNS-CLI
anpassen
Über OTNS-CLI
kannst du die Simulationsgeschwindigkeit anpassen.
Simulationsgeschwindigkeit auf 100X
festlegen
> speed 100 Done
Sie sollten sehen, dass die Knoten viel häufiger als zuvor Nachrichten senden.
Simulationsgeschwindigkeit auf MAX
festlegen
> speed max Done
OTNS versucht jetzt, so schnell wie möglich zu simulieren. Daher sollten Knoten eine große Anzahl von Nachrichten senden.
Simulation anhalten
> speed 0 Done
Wird die Simulationsgeschwindigkeit auf 0
festgelegt, 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
Tasten für die Geschwindigkeitssteuerung
Suche auf der Action Bar
nach den Tasten zum Einstellen der Geschwindigkeit . Die Schaltflächen zeigen die aktuelle simulierte Geschwindigkeit an und können verwendet werden, um die simulierte Geschwindigkeit anzupassen und die Simulation anzuhalten oder fortzusetzen.
Simulation beschleunigen
Sie können die Simulation beschleunigen, indem Sie auf die Schaltfläche klicken, bis die Geschwindigkeit MAX
erreicht: .
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 geändert in .
Simulation fortsetzen
Klicken Sie auf die Schaltfläche , um die Simulation fortzusetzen. Die Schaltfläche wird wieder zu geändert.
Simulationsgeschwindigkeit auf 10X
festlegen
Mit
OTNS-CLI
um die Simulationsgeschwindigkeit auf
10X
sodass wir Topologieänderungen im Netzwerk viel schneller beobachten können.
> speed 10 Done
8. Radio ein-/ausschalten
Jetzt sollte die Simulation zwei Router (Sechseckform) und viele untergeordnete Router enthalten und mit zehnfacher Geschwindigkeit ausgeführt werden.
Suchen Sie den aktuellen Leader (rote Umrandung) der beiden Router. Klicken Sie darauf, um ihn auszuwählen:
Mobilfunkverbindung deaktivieren
Klicken Sie in der Aktionsleiste auf die Schaltfläche , um das Optionsfeld des Leader-Knotens zu deaktivieren:
Der Leader kann keine Nachrichten senden oder empfangen, wenn das Radio ausgeschaltet ist.
Warten Sie etwa 12 Sekunden (120 Sekunden in der Simulationszeit), bis der andere Router zum neuen Leader wird:
Das Thread-Netzwerk stellt sich nach einem Leader-Ausfall automatisch wieder her, indem eine neue Partition mit einem neuen Leader erstellt wird. Die neue Partition hat auch eine neue Partitionsfarbe.
Mobilfunkverbindung aktivieren
Wählen Sie den Leader aus, dessen Radio ausgeschaltet war. Klicken Sie auf die Schaltfläche auf Action Bar
, um die Funkverbindung wiederherzustellen:
Der Leader sollte sich wieder mit dem Netzwerk verbinden, sobald die Funkverbindung wiederhergestellt wurde.
9. Knoten verschieben
OTNS ermöglicht Nutzern, Knoten einfach über OTNS-CLI
oder OTNS-Web
zu verschieben.
Knoten durch OTNS-CLI
verschieben
Verschieben Sie Knoten 5 an einen neuen Ort:
> move 5 600 300 Done
Da nun Knoten 5 weit vom anderen Router entfernt ist, sollte die Verbindung zueinander unterbrochen werden. Nach etwa 12 Sekunden (120 Sekunden in der Simulationszeit) werden beide zu Leader ihrer eigenen Partition:
Knoten über OTNS-Web verschieben
Verschieben Sie Knoten 5 durch Ziehen zurück an die ursprüngliche Position. 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 in Action Bar
, um Knoten 5 zu löschen:
Node 1
sollte ein Leader werden und Node 7
sollte getrennt werden, da keine Verbindung zu einem Router hergestellt werden 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 die Schaltfläche auf Action Bar.
. Alle Knoten verschwinden auf einmal.
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 den Knotenkontextmodus für eine einfache Interaktion mit Knoten, um Entwicklern die Diagnose des Knotenstatus zu erleichtern.
Knotenkontextmodus aktivieren
Geben Sie den Knotenkontext von Knoten 1 ein:
> node 1 Done node 1>
Die CLI-Eingabeaufforderung wurde zu node 1>
geändert , was den aktuellen Knotenkontext angibt. Sie können OpenThread-Befehlszeilenbefehle eingeben, die auf dem Knoten ausgeführt werden sollen, 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 verlassen
node 1> exit Done >
12. Glückwunsch
Glückwunsch, Sie haben Ihre erste OTNS-Simulation erfolgreich ausgeführt.
Sie haben gelernt, wie Sie OTNS und die zugehörigen Abhängigkeiten installieren. Sie haben OpenThread für OTNS erstellt und eine OTNS-Simulation mit OpenThread-Simulationsinstanzen gestartet. Sie haben gelernt, wie Sie die Simulation mithilfe von OTNS-CLI
und OTNS-Web
auf verschiedene Arten bearbeiten können.
Sie wissen jetzt, was OTNS ist und wie Sie mit OTNS OpenThread-Netzwerke simulieren können.
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