Thread-Netzwerk mit Visualisierung testen

1) Einführung

5abd22afa2f2ee9a.png

Was sind Thread, OpenThread, OTNS und Silk?

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.

Silk ist eine vollständig automatisierte Testplattform zur Validierung von OpenThread-Funktion, -Funktion und -Systemleistung mit echten Geräten.

Lerninhalte

  • Framework zur Funktionsüberprüfung von OpenThread: Seide
  • OpenThread für echte Geräte mit aktivierter OTNS-Funktion erstellen
  • Mit der OTNS-Web-Oberfläche den Status des Thread-Netzwerks überwachen, das durch das Ausführen von Silk-Testläufen gebildet wurde

In diesem Codelab wird die Verwendung von Silk mit OTNS behandelt. Andere Funktionen von Seide und OTNS sind nicht abgedeckt.

Voraussetzungen

Hardware:

  • 6 Nordic Semiconductor nRF52840 Entwicklungsplatten
  • 6 USB-auf-Micro-USB-Kabel zum Verbinden der Boards
  • USB-Hub

Software:

  • Linux x86_64.
  • Git:
  • Go 1.11+.
  • Web browser. OTNS-Web verwendet einen Webbrowser zur Anzeige von Simulationen.

Voraussetzungen:

2. Voraussetzungen

Frühere grundlegende Codelabs abschließen

Paketvoraussetzungen prüfen

Prüfen Sie, ob alle Voraussetzungen erfüllt sind.

  1. Führen Sie which otns aus, um zu prüfen, ob die ausführbare Datei otns in $PATH suchbar ist.
  2. Führen Sie which wpantund aus, um sicherzustellen, dass wpantund verfügbar ist.
  3. Achten Sie darauf, dass alle ARM GNU-Toolchains, J-Link- und nrfjprog-Pakete verfügbar sind.

Hinweis:Informationen zum Einrichten finden Sie in den verlinkten Dokumenten. Voraussetzung 1 ist von Simulate Thread Networks with OTNS (Andere Netzwerke mit OTNS simulieren) und andere nutzen Threads mit nRF52840-Boards und OpenThread.

3. Seideneinrichtung

Führen Sie die folgenden Befehle unter dem Quellverzeichnis aus, um Silk zu klonen und die Umgebung einzurichten:

$ git clone https://github.com/openthread/silk.git
$ cd silk
$ ./bootstrap.sh
$ sudo make install-cluster

Datei für die Hardwarekonfiguration definieren

Definieren Sie eine hwconfig.ini-Datei im folgenden Format, damit Silk die verfügbaren Testhardware, die mit Ihrem Computer verbunden ist, erfassen kann:

[DEFAULT]
ClusterID: 0
LayoutCenter: 300, 300
LayoutRadius: 100

[Dev-8A7D]
HwModel: Nrf52840
HwRev: 1.0
InterfaceSerialNumber: E1A5012E8A7D
USBInterfaceNumber: 1
DutSerial: 683536778

Als Teil von Silk ist ein Tool mit dem Namen usbinfo installiert, mit dem die Seriennummer der USB-Schnittstelle und die Nummer der USB-Schnittstelle ermittelt werden können. DutSerial ist die SN-Nummer, die auf dem Chip aufgedruckt oder von usbinfo für J-Link-Produkte angezeigt wird.

Die Felder LayoutCenter und LayoutRadius im Abschnitt [DEFAULT] definieren die Form des Layouts, wenn die Geräte auf der Weboberfläche visualisiert werden. Sie können die hier angegebenen Werte als Ausgangspunkt verwenden.

Danach wird für jedes Testgerät ein Abschnitt definiert und die relevanten Hardwareinformationen bereitgestellt.

4. OpenThread mit aktiviertem OTNS kompilieren

Gebäudebild und blinkende Bilder

Standardmäßig geben OpenThread-Geräte keine OTNS-bezogenen Nachrichten aus. Führen Sie den folgenden Befehl unter dem OpenThread-Quellverzeichnis aus, um ein FTD-Image zu erstellen und in das Hexadezimalformat zu konvertieren, damit die Entwicklungsboards Statusmeldungen an die Schnittstellen senden können, die für die OTNS-Visualisierung erforderlich sind.

$ git clone https://github.com/openthread/ot-nrf528xx.git --recursive
$ cd ot-nrf528xx
$ ./script/bootstrap
$ ./script/build nrf52840 USB_trans -DOT_COMMISSIONER=ON -DOT_JOINER=ON -DOT_OTNS=ON
$ cd ./build/bin
$ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex

Wenn Sie die Boards freischalten möchten, folgen Sie der Anleitung in Schritt 4 des Codelabs zum Thread-Netzwerk erstellen, um nrfjprog zu verwenden. Verbinden Sie danach alle Boards über den nRF-USB-Port mit dem Hostcomputer. Die gleichen USB-zu-Micro-USB-Kabel können von den J-Link-Ports getrennt und an die nRF-USB-Ports der nRF52840-Entwicklungsplatinen angeschlossen werden. Aus diesem Grund können nur diese 6 Kabel getestet werden. Um Ärger zu vermeiden, verwenden Sie 12 Kabel und verbinden Sie beide Ports.

5. OTNS-Server mit echtem Modus ausführen

Wenn OTNS mit Standardparametern ausgeführt wird, kann der Nutzer ein Thread-Netzwerk simulieren. Um das Tool zur Visualisierung für ein tatsächliches physisches Netzwerk zu verwenden, führen Sie es aus:

otns -raw -real -ot-cli otns-silk-proxy

Diese Argumente weisen OTNS darauf an, gRPC- und UDP-Nachrichten zu erwarten, die beschreiben, wie das Thread-Netzwerk visualisiert werden soll, anstatt mehrere ot-cli-Prozesse zur Simulation des Netzwerks auszuführen. Ihr Browser sollte die Visualisierungsseite automatisch mit einem leeren Canvas öffnen.

4dd5b41bf7e71334.png

6. Seiden-Testläufe mit OTNS-Unterstützung

Silk ist eine vollautomatische Testplattform zur Validierung von OpenThread-Funktion, -Funktion und -Systemleistung mit echten Geräten. In der Anleitung im Projekt README finden Sie Informationen zur Verwendung.

Die Datei silk_run_test.py unter silk/unit_tests bietet Ihnen einen Vorsprung. Silk bietet OTNS-Unterstützung beim Ausführen eines Testlaufs. Da der OTNS-Echtzeitmodus bereits lokal ausgeführt wird, müssen wir einfach die Datei silk_run_test.py mit den gewünschten Speicherorten für eine Ausgabeprotokolldatei, Eingabetestskripts und eine hwconfig.ini-Datei ändern. Das Argument -s localhost weist Silk an, OTNS-Nachrichten an localhost zu senden.

Sie können beispielsweise den Test ot_test_form_network.py mit den folgenden Änderungen an der Datei silk_run_test.py ausführen. /opt/openthread_test/ ist der Standardpfad, den Silk für die Logausgabe und die Konfigurationsdatei verwendet. Sie können aber auch einen beliebigen Pfad verwenden.

silk_run_test.py

import datetime
import os

from silk.tests import silk_run

RESULT_LOG_PATH = '/opt/openthread_test/results/' + 'silk_run_' + \
                  datetime.datetime.today().strftime('%m-%d') + '/'
CONFIG_PATH = '/opt/openthread_test/'

os.chdir('~/src/silk/silk/tests/')

timestamp = datetime.datetime.today().strftime('%m-%d-%H:%M')

run_log_path = RESULT_LOG_PATH + 'test_run_on_' + timestamp + '/'

argv = [
    'tests/silk_run.py',
    '-v2',
    '-c', CONFIG_PATH + 'hwconfig.ini',
    '-d', run_log_path,
    '-s', 'localhost',
    'ot_test_form_network.py'
]

silk_run.SilkRunner(argv=argv)

Die Topologievisualisierung des gebildeten Netzwerks wird auf der OTNS-Web-UI angezeigt.

ee443b66e0a6620b.png

Links oben werden Statistik, OT-Version und Testtitel angezeigt. Links unten befinden sich Steuerelemente für das Protokollfenster, die rechts angezeigt werden. Anfangs werden Knoten hinzugefügt, es wird jedoch kein Netzwerk gebildet. Im Verlauf des Tests ändern sich die Modi und Rollen der einzelnen Knoten. Anschließend werden die Links gebildet.

5c38e2c72519e620.png

7. Glückwunsch

Glückwunsch, Sie haben einen Seidentest auf physischen Thread-Geräten erfolgreich ausgeführt und ihn mit OTNS visualisiert.

Sie haben einen Silk-Test mit Entwicklungsplatinen durchgeführt, die mit Firmwareen mit OTNS-Unterstützung ausgestattet sind. Die Boards melden ihren Status an einen Seidenserver, der alle überwacht und aggregiert und sie zusammen mit anderen Testinformationen an den OTNS-Dienst sendet. Mit OTNS im Realmodus wird das Thread-Netzwerk auf der Weboberfläche visualisiert.

Nächste Schritte

Führen Sie andere OpenThread-Testläufe aus, die im Seidenpaket enthalten sind.

Weitere Informationen

Unter openthread.io und Silk finden Sie eine Vielzahl von OpenThread-Ressourcen.

Referenzdokumente