Tester un réseau Thread avec la visualisation

1. Introduction

5abd22afa2f2ee9a.png

Que sont Thread, OpenThread, OTNS et Silk ?

Thread est un protocole de réseau maillé sans fil basse consommation basé sur les adresses IP, qui permet une communication sécurisée d'appareil à appareil et de cloud à appareil. Les réseaux Thread peuvent s'adapter aux changements de topologie pour éviter un point de défaillance unique.

OpenThread publié par Google est une implémentation Open Source de Thread. Malgré sa petite taille de code et son faible encombrement, OpenThread est compatible avec toutes les fonctionnalités définies dans la spécification Thread.

Vous pouvez utiliser le simulateur de réseau OpenThread (OTNS) pour simuler des réseaux Thread en exécutant des nœuds OpenThread simulés sur des plates-formes posix. Ce service fournit une interface Web facile à utiliser (OTNS-Web) pour visualiser et exploiter des réseaux Thread simulés.

Silk est une plate-forme de test entièrement automatisée qui permet de valider les fonctionnalités OpenThread, les fonctionnalités et les performances du système avec des appareils réels.

Points abordés

  • Framework de vérification des fonctionnalités d'OpenThread: Silk
  • Compiler OpenThread pour des appareils réels avec la fonctionnalité OTNS activée
  • Utiliser l'interface Web OTNS pour surveiller l'état du réseau Thread créé par des scénarios de test de la soie

Cet atelier de programmation porte sur l'utilisation de Silk avec OTNS. Les autres fonctionnalités de Silk et OTNS ne sont pas couvertes.

Ce dont vous avez besoin

Matériel :

  • 6 cartes de développement Nordic Semiconductor nRF52840
  • 6 câbles USB vers micro USB pour connecter les cartes
  • hub USB

Logiciel :

  • Linux x86_64
  • Git,
  • Go 1.11+.
  • Navigateur Web. OTNS-Web utilise un navigateur Web pour afficher les simulations.

Conditions préalables :

2. Prérequis

Terminer les ateliers de programmation précédents

Vérification des prérequis pour les packages

Vérifions que toutes les conditions préalables sont remplies.

  1. Exécutez which otns pour vérifier si l'exécutable otns est inclus dans l'index de recherche dans $PATH.
  2. Exécutez which wpantund pour vous assurer que wpantund est disponible.
  3. Assurez-vous que les chaînes d'outils ARM GNU, J-Link et nrfjprog sont toutes disponibles.

Remarque:Pour obtenir des conseils de configuration, veuillez consulter la documentation associée. La condition préalable 1 est de Simuler les réseaux Thread à l'aide de services OTNS et d'autres proviennent de Créer un réseau Thread avec des cartes nRF52840 et OpenThread.

3. Configuration de la soie

Pour cloner Silk et configurer l'environnement, exécutez les commandes suivantes dans votre répertoire source:

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

Définir le fichier de configuration matérielle

Pour permettre à Silk de rassembler les ressources matérielles de test disponibles connectées à votre ordinateur, définissez un fichier hwconfig.ini au format suivant:

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

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

Un outil appelé usbinfo intégré à Silk permet de trouver le numéro de série et le numéro d'interface USB. DutSerial est le numéro de série imprimé sur la puce ou affiché par usbinfo pour les produits J-Link.

Les champs LayoutCenter et LayoutRadius de la section [DEFAULT] définissent la forme de la mise en page lorsque les appareils sont visualisés dans l'interface utilisateur Web. Leurs valeurs peuvent être un bon point de départ.

Ensuite, il définit une section pour chaque appareil de test et fournit les informations matérielles pertinentes.

4. Compiler OpenThread avec l'OTNS activé

Création de l'image et du flash

Par défaut, les appareils OpenThread n'émettent pas de messages liés à OTNS. Pour permettre aux cartes de développement d'émettre des messages d'état dans des interfaces de journal essentielles à la visualisation OTNS, exécutez la commande suivante sous le répertoire source OpenThread pour créer une image FTD et la convertir au format hexadécimal.

$ 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

Pour flasher les cartes, suivez les instructions de l'étape 4 de l'atelier de programmation Créer un réseau Thread afin d'utiliser nrfjprog. Ensuite, connectez toutes les cartes via le port USB nRF à la machine hôte. Le même jeu de câbles USB et micro USB peut être déconnecté des ports J-Link et reliés aux ports USB nRF des cartes de développement nRF52840. Ainsi, il suffit d'exécuter ces six câbles pour effectuer des tests. Pour éviter tout problème, utilisez 12 câbles et connectez les deux ports.

5. Exécuter un serveur OTNS en mode réel

L'exécution de paramètres OTNS avec les paramètres par défaut permet à l'utilisateur de simuler un réseau Thread. Pour l'utiliser comme un outil de visualisation pour un réseau physique réel, exécutez avec:

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

Ces arguments indiquent à l'OTNS de s'attendre à des messages gRPC et UDP décrivant comment visualiser le réseau Thread, au lieu d'exécuter plusieurs processus ot-cli pour simuler le réseau. Votre navigateur devrait ouvrir automatiquement la page de visualisation avec un canevas vide.

4dd5b41bf7e71334.png

6. Exécuter des scénarios de test de la soie compatibles avec l'OTNS

Silk est une plate-forme de test entièrement automatisée qui permet de valider les fonctionnalités OpenThread, les fonctionnalités et les performances du système avec des appareils réels. Les instructions du fichier README du projet expliquent comment l'utiliser.

Le fichier silk_run_test.py situé dans silk/unit_tests vous permet de garder une longueur d'avance. Silk fournit une prise en charge OTNS lors de l'exécution d'un scénario de test. Étant donné que le service OTNS en mode réel s'exécute déjà en local, il nous suffit de modifier le fichier silk_run_test.py avec les emplacements souhaités pour un fichier journal de sortie, des scripts de test d'entrée et un fichier hwconfig.ini. L'argument -s localhost indique à Silk d'envoyer des messages OTNS à localhost.

Par exemple, vous pouvez exécuter le test nommé ot_test_form_network.py à l'aide des modifications suivantes dans le fichier silk_run_test.py. /opt/openthread_test/ est le chemin d'accès par défaut utilisé par Silk pour la sortie du journal et le fichier de configuration, mais vous pouvez utiliser n'importe quel chemin d'accès.

test_silk_run.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)

La visualisation de la topologie du réseau formé s'affichera dans l'UI Web OTNS.

ee443b66e0a6620b.png

L'angle supérieur gauche affiche les statistiques de visualisation, la version OT et le titre du test. En bas à gauche se trouvent les commandes de la fenêtre de journal, affichées à droite. Au départ, des nœuds sont ajoutés, mais aucun réseau n'est formé. À mesure que le test avance, les modes et les rôles de chaque nœud changent, et des liens sont créés.

5c38e2c72519e620.png

7. Félicitations

Félicitations, vous avez exécuté avec succès un test Silk sur les appareils Thread physiques et l'avez visualisé à l'aide d'OTNS

Vous avez exécuté un test de soie à l'aide de cartes de développement flashées avec des micrologiciels compatibles avec OTNS. Les cartes signalent leur état à un serveur Silk, qui les surveille et les agrège toutes, puis les envoie au service OTNS avec d'autres informations de test. Le service OTNS en mode réel visualise le réseau Thread sur l'interface Web.

Étape suivante

Essayez d'exécuter d'autres scénarios de test OpenThread inclus dans le package Silk.

Documentation complémentaire

Rendez-vous sur openthread.io et Silk pour découvrir diverses ressources OpenThread.

Documents de référence