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 l'adresse IP, qui permet des communications sécurisées d'appareil à appareil et d'appareil à cloud. Les réseaux Thread peuvent s'adapter aux changements de topologie pour éviter le 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 empreinte mémoire, OpenThread prend en charge toutes les fonctionnalités définies dans la spécification de thread.

Le simulateur de réseau OpenThread (OTNS) peut être utilisé pour simuler des réseaux Thread en exécutant des nœuds OpenThread simulés sur des plates-formes Posix. OTNS 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 la fonction, la fonctionnalité et les performances du système OpenThread sur des appareils réels.

Points abordés

  • Framework de vérification des fonctionnalités d'OpenThread: Silk
  • Création d'OpenThread pour les appareils réels avec la fonctionnalité OTNS activée
  • Utiliser l'interface OTNS-Web pour surveiller l'état du réseau Thread formé en exécutant des scénarios de test Silk

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

Prérequis

Matériel :

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

Logiciels :

Conditions préalables :

2. Prérequis

Terminer les ateliers de programmation de base 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 peut faire l'objet d'une recherche dans $PATH.
  2. Exécutez which wpantund pour vous assurer que wpantund est disponible.
  3. Assurez-vous que la chaîne d'outils ARM GNU, J-Link et les packages nrfjprog sont tous disponibles.

Remarque:Veuillez consulter les documentations associées pour obtenir des conseils de configuration. La condition préalable n° 1 provient de Simuler des réseaux de threads à l'aide d'OTNS, et d'autres proviennent de la section Créer un réseau Thread avec des cartes nRF52840 et OpenThread.

3. Configuration en 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 et connectées à votre machine, 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 est installé dans le cadre de Silk. Il peut être utilisé pour trouver le numéro de série de l'interface 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'UI Web. Les valeurs que vous définissez ici peuvent constituer 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 OTNS activé

Création d'une image et clignotement

Par défaut, les appareils OpenThread n'émettent pas de messages liés à l'OTNS. Pour permettre aux cartes de développement d’émettre des messages d’état pour enregistrer les interfaces 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 tableaux, suivez les instructions de l'étape 4 de l'atelier de programmation sur la création d'un réseau Thread afin d'utiliser nrfjprog. Ensuite, connectez toutes les cartes à la machine hôte via le port USB nRF. Le même jeu de câbles USB vers micro-USB peut être débranché des ports J-Link et connecté aux ports USB nRF des cartes de développement nRF52840. Il est donc possible d'exécuter des tests avec ces six câbles uniquement. Pour éviter les désagréments, utilisez 12 câbles et connectez-les aux deux ports.

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

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

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

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

4dd5b41bf7e71334.png

6. Exécuter des scénarios de test Silk compatible avec OTNS

Silk est une plate-forme de test entièrement automatisée pour valider la fonction, la fonctionnalité et les performances du système OpenThread sur des appareils réels. Les instructions figurant dans le fichier README du projet expliquent comment l'utiliser.

Le fichier silk_run_test.py, situé dans silk/unit_tests, vous donne une longueur d'avance. Silk prend en charge OTNS lors de l'exécution d'un scénario de test. Comme le service OTNS en mode réel s'exécute déjà localement, il nous suffit de modifier le fichier silk_run_test.py en indiquant 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 en utilisant les modifications suivantes apportées au 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.

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)

La visualisation de la topologie du réseau formé s'affiche dans l'interface utilisateur Web OTNS.

ee443b66e0a6620b.png

Le coin supérieur gauche montre les statistiques de visualisation, la version de l'OT et le titre du test. Les commandes de la fenêtre de journal, illustrée à droite, sont affichées dans l'angle inférieur gauche. Au départ, des nœuds sont ajoutés, mais aucun réseau n'est formé. À mesure que le test progresse, 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 effectué avec succès un test Silk sur des appareils Thread physiques et l'avez visualisé à l'aide d'OTNS.

Vous avez exécuté un test Silk à l'aide de cartes de développement qui disposent de micrologiciels compatibles OTNS. Les conseils indiquent leur état à un serveur Silk, qui les surveille et les regroupe tous, puis les envoie au service OTNS avec d'autres informations de test. L'exécution du protocole OTNS en mode réel permet de visualiser 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

Consultez openthread.io et Silk pour une grande variété de ressources OpenThread.

Documents de référence