1. Einführung
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.
- 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
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
- Führen Sie
which otns
aus, um zu prüfen, ob die ausführbareotns
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
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
):
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
:
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:
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:
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:
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:
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 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 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 zu
geändert.
Simulation fortsetzen
Klicken Sie auf die Schaltfläche , um die Simulation fortzusetzen, wenn sie pausiert wurde. Die Schaltfläche wird dann wieder in
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:
Mobilfunkverbindung deaktivieren
Klicken Sie in der Aktionsleiste auf die Schaltfläche , um das Radio des Leader-Knotens zu deaktivieren:
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:
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 auf
Action Bar
, um die Mobilfunkverbindung wiederherzustellen:
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:
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:
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:
Knoten bis OTNS-Web
löschen
Wählen Sie Knoten 5 aus und klicken Sie auf die Schaltfläche auf der
Action Bar
, 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 bis OTNS-Web
löschen.
Klicken Sie bei Action Bar.
auf die Schaltfläche . 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.
- Thread-Netzwerk mit OpenThread simulieren
- Thread-Netzwerk mit OpenThread in Docker simulieren
- Thread-Netzwerk mit nRF52840-Boards und OpenThread erstellen