Thread-Netzwerk mit Visualisierung testen

1. Einführung

5abd22afa2f2ee9a.png

Was ist Thread, OpenThread, OTNS und Silk?

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.

Silk ist eine vollständig automatisierte Testplattform zur Validierung von Funktions-, Funktions- und Systemleistungen von OpenThread auf echten Geräten.

Lerninhalte

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

In diesem Codelab dreht sich alles um die Verwendung von Silk mit OTNS. Andere Funktionen von Seide und OTNS sind nicht abgedeckt.

Voraussetzungen

Hardware:

  • 6 Entwicklungsplatinen für den nordischen Halbleiter nRF52840
  • 6 USB-zu-Micro-USB-Kabel zum Verbinden der Karten
  • USB-Hub

Software:

  • Linux x86_64.
  • Git.
  • Go 1.11 und höher
  • Web browser. OTNS-Web verwendet einen Webbrowser, um Simulationen anzuzeigen.

Voraussetzungen:

2. Vorbereitung

Vervollständige vorherige grundlegende Codelabs

Voraussetzungen für Pakete 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 gesucht werden kann.
  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.
  4. Prüfen Sie, ob eine OpenThread-Binärdatei erstellt werden kann und make -f examples/Makefile-nrf52840 im Ordner openthread ausgeführt wird.

Hinweis:Informationen zur Einrichtung finden Sie in den verlinkten Dokumentationen. Die Voraussetzung 1 ist von Thread-Netzwerke mit OTNS simulieren und andere stammen von Thread-Netzwerk mit nRF52840-Boards und OpenThread erstellen.

3. Einrichtung der Seide

Führen Sie die folgenden Befehle in Ihrem 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

Hardwarekonfigurationsdatei definieren

Damit Silk die verfügbaren Testhardwareressourcen abrufen kann, die mit Ihrem Computer verbunden sind, definieren Sie eine hwconfig.ini-Datei im folgenden Format:

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

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

Das Tool usbinfo wird als Teil von Silk installiert, mit dem die Seriennummer der 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 in der Web-UI visualisiert werden. Diese Werte können als guter Ausgangspunkt dienen.

Im Anschluss werden für jedes Testgerät ein Abschnitt und die relevanten Hardwareinformationen definiert.

4. OpenThread mit aktiviertem OTNS kompilieren

Image erstellen und blinkend

Standardmäßig geben OpenThread-Geräte keine OTNS-bezogenen Nachrichten aus. Damit die Entwicklungs-Boards Statusmeldungen an Log-Schnittstellen ausgeben, die für die OTNS-Visualisierung unverzichtbar sind, führen Sie den folgenden Befehl im OpenThread-Quellverzeichnis aus, um ein FTD-Image zu erstellen, und konvertieren Sie es in das Hex-Format.

$ 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

Folgen Sie der Anleitung in Schritt 4 des Codelab zum Erstellen eines Thread-Netzwerks, um die Boards zu verwenden und nrfjprog zu verwenden. Schließen Sie anschließend alle Boards über den nRF-USB-Port an den Hostcomputer an. Die USB-zu-Micro-USB-Kabel können mit den J-Link-Ports getrennt und mit den nRF-USB-Ports der nRF52840-Entwickler-Boards verbunden werden. Du kannst also nur mit diesen sechs Kabeln Tests durchführen. Verwenden Sie für lästige Probleme 12 Kabel und verbinden Sie beide Ports.

5 OTNS-Server mit Real-Modus ausführen

Wenn Sie OTNS mit Standardparametern ausführen, können Nutzer ein Thread-Netzwerk simulieren. Wenn Sie es als Visualisierungstool für ein echtes physisches Netzwerk verwenden möchten, können Sie es mit der folgenden Methode ausführen:

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

Mit diesen Argumenten wird OTNS angewiesen, gRPC- und UDP-Nachrichten zu erwarten, die beschreiben, wie das Thread-Netzwerk visualisiert werden soll, anstatt mehrere ot-cli-Prozesse auszuführen, um das Netzwerk zu simulieren. Im Browser sollte die Visualisierungsseite automatisch mit einem leeren Canvas geöffnet werden.

Bild: 4dd5b41bf7e71334.png

6. Silk-Testläufe mit OTNS-Unterstützung ausführen

Silk ist eine vollständig automatisierte Testplattform zur Überprüfung der Funktions-, Funktions- und Systemleistung von OpenThread auf echten Geräten. Die Anleitung in der README-Datei des Projekts beschreibt, wie Sie sie verwenden.

Die Datei silk_run_test.py unter silk/unit_tests ist der Startpunkt. Silk bietet OTNS-Unterstützung beim Ausführen eines Testfalls. Da der OTNS-Real-Service-Dienst bereits lokal ausgeführt wird, muss nur die Datei silk_run_test.py mit den gewünschten Speicherorten für eine Ausgabe-Log-Datei, Eingabe-Testskripts und hwconfig.ini-Datei geändert werden. Das Argument -s localhost weist Silk an, OTNS-Nachrichten an localhost zu senden.

Beispielsweise kann der Test ot_test_form_network.py mit den folgenden Änderungen an der Datei silk_run_test.py ausgeführt werden. /opt/openthread_test/ ist der Standardpfad, den Silk für die Logausgabe und die Konfigurationsdatei verwendet. Sie können jedoch 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 geformten Netzwerks wird in der OTNS-Web-UI angezeigt.

ee443b66e0a6620b.png

Links oben sehen Sie Visualisierungsstatistiken, OT-Version und Testtitel. Links unten finden Sie die Steuerelemente des Protokollfensters, das auf der rechten Seite zu sehen ist. Anfangs werden Knoten hinzugefügt, aber es wird kein Netzwerk gebildet. Im Verlauf des Tests ändern sich die Modi und Rollen der einzelnen Knoten und die Verknüpfungen werden erstellt.

5C38E2C72519e620.png

7. Glückwunsch

Sie haben einen Silk-Test erfolgreich auf physischen Thread-Geräten durchgeführt und ihn mit OTNS visualisiert.

Sie haben einen Silk-Test mit Entwicklungsplatinen durchgeführt, auf denen Firmwares mit OTNS-Unterstützung geladen wurden. Der Status wird vom Board an einen Silk-Server gesendet, der alle Server überwacht und zusammenfasst. Anschließend werden sie zusammen mit anderen Testinformationen an den OTNS-Dienst gesendet. Im Echtzeitmodus wird in OTNS das Thread-Netzwerk in der Weboberfläche visualisiert.

Nächste Schritte

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

Weitere Informationen

Eine Vielzahl von OpenThread-Ressourcen finden Sie unter openthread.io und Silk.

Referenzdokumente