Thread-Netzwerk mit Visualisierung testen

1. Einführung

5abd22afa2f2ee9a.png

Was sind Thread, OpenThread, OTNS und Silk?

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.

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

Lerninhalte

  • Das OpenThread-Framework zur Überprüfung der Funktionalität: Silk
  • OpenThread für echte Geräte mit aktiviertem OTNS-Feature erstellen
  • OTNS-Web-Schnittstelle verwenden, um den Status des Thread-Netzwerks zu überwachen, das durch Ausführen von Silk-Testfällen gebildet wurde

In diesem Codelab geht es um die Verwendung von Silk mit OTNS. Andere Funktionen von Silk und OTNS werden nicht abgedeckt.

Voraussetzungen

Hardware:

  • 6 Entwicklungsboards von Nordic Semiconductor nRF52840
  • 6 USB-auf-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 zum Anzeigen von Simulationen.

Voraussetzungen:

2. Vorbereitung

Vorherige grundlegende Codelabs absolvieren

Paketvoraussetzungen prüfen

Stellen Sie sicher, dass alle Voraussetzungen erfüllt sind.

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

Hinweis:Einrichtungsanleitungen finden Sie in den verlinkten Dokumentationen. Voraussetzung Nr. 1 ist von Simulate Thread Networks using OTNS und andere von Build a Thread network with nRF52840 Boards und OpenThread.

3. 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

Ein Tool namens usbinfo ist als Teil von Silk installiert, mit dem Sie die Seriennummer und die USB-Schnittstellennummer der Schnittstelle ermitteln können. DutSerial ist die SN auf dem Chip oder die von usbinfo für J-Link-Produkte angezeigt wird.

Mit den Feldern LayoutCenter und LayoutRadius im Abschnitt [DEFAULT] wird die Form des Layouts definiert, wenn die Geräte in der Web-UI dargestellt werden. Es kann ein guter Ausgangspunkt sein, sie auf die hier vorgestellten Werte festzulegen.

Anschließend definiert er einen Abschnitt für jedes Testgerät und stellt die relevanten Hardwareinformationen bereit.

4. OpenThread mit aktiviertem OTNS kompilieren

Image wird erstellt und blinken

Standardmäßig geben OpenThread-Geräte keine OTNS-bezogenen Nachrichten aus. Damit die Entwicklungsplattformen Statusmeldungen an Protokollschnittstellen ausgeben können, die für die OTNS-Visualisierung wichtig sind, führen Sie den folgenden Befehl im OpenThread-Quellverzeichnis aus, um ein FTD-Image zu erstellen, und konvertieren es in das Hexadezimalformat.

$ 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 flashen und nrfjprog zu verwenden. Verbinden Sie dann alle Karten über den nRF-USB-Port mit dem Hostcomputer. Dieselben USB-auf-Micro-USB-Kabel können von den J-Link-Ports getrennt und an die nRF-USB-Ports der nRF52840-Entwicklungsboards angeschlossen werden. Daher kann mit nur diesen sechs Kabeln eine Testausführung durchgeführt werden. Um dies zu vermeiden, verwenden Sie 12 Kabel und verbinden Sie diese mit beiden Anschlüssen.

5. OTNS-Server im Realmodus ausführen

Wenn OTNS mit Standardparametern ausgeführt wird, kann der Nutzer ein Thread-Netzwerk simulieren. Wenn Sie es als Visualisierungstool für ein tatsächliches physisches Netzwerk verwenden möchten, führen Sie es mit folgendem Befehl aus:

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

Diese Argumente teilen OTNS mit, 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 automatisch die Visualisierungsseite mit einem leeren Canvas geöffnet werden.

4dd5b41bf7e71334.png

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

Silk ist eine vollständig automatisierte Testplattform zur Validierung der Funktion, Funktion und Systemleistung von OpenThread mit echten Geräten. Die Verwendung wird in der README des Projekts beschrieben.

Mit der silk_run_test.py-Datei unter silk/unit_tests haben Sie einen Vorsprung. Silk bietet OTNS-Unterstützung beim Ausführen eines Testlaufs. Da der OTNS-Dienst für den echten Modus bereits lokal ausgeführt wird, müssen wir nur die Datei silk_run_test.py mit den gewünschten Speicherorten für die Ausgabe-Logdatei, die Eingabetestskripts und die hwconfig.ini-Datei ändern. Das Argument -s localhost weist Silk an, OTNS-Nachrichten an localhost zu senden.

Sie können beispielsweise den Test mit dem Namen 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 Konfigurationsdatei verwendet. Sie können aber 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 erstellten Netzwerks wird auf der OTNS-Web-UI angezeigt.

ee443b66e0a6620b.png

Oben links werden Visualisierungsstatistiken, die OT-Version und der Testtitel angezeigt. Unten links finden Sie Steuerelemente für das Logfenster (rechts). Zu Beginn werden Knoten hinzugefügt, aber es wird kein Netzwerk gebildet. Im Verlauf des Tests ändern sich die Modi und Rollen jedes Knotens und es werden Verbindungen gebildet.

5c38e2c72519e620.png

7. Glückwunsch

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

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

Nächste Schritte

Versuche, andere OpenThread-Testfälle auszuführen, die im Silk-Paket enthalten sind.

Weitere Informationen

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

Referenzdokumente