Tester un réseau de threads avec visualisation

1. Présentation

5abd22afa2f2ee9a.png

Que signifient Thread, OpenThread, OTNS et Silk ?

Thread est un protocole de mise en réseau sans fil basé sur l'adresse IP, qui permet de sécuriser les communications d'appareil à cloud et entre appareils. Les réseaux Thread peuvent s'adapter aux modifications de la topologie pour éviter les points de défaillance uniques.

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

Le simulateur de réseau OpenThread (OTNS Network Simulator) 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 OTNS-Web facile à utiliser pour visualiser et exploiter des réseaux Thread simulés.

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

Ce que vous allez apprendre

  • Framework de validation des fonctionnalités d'OpenThread: Soie
  • Créer OpenThread pour les appareils réels avec la fonctionnalité OTNS activée
  • Utiliser l'interface Web OTNS pour surveiller l'état du réseau Thread formé par l'exécution de scénarios de test Silk

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

Prérequis

Matériel:

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

Logiciels :

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

Prérequis :

2. Prérequis

Terminer les ateliers de programmation précédents

Vérifier les conditions préalables des 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 de $PATH.
  2. Exécutez which wpantund pour vous assurer que wpantund est disponible.
  3. Assurez-vous que la chaîne d'outils GNU ARM, le package J-Link et les packages nrfjprog sont tous disponibles.
  4. Assurez-vous qu'un binaire OpenThread peut être créé en exécutant make -f examples/Makefile-nrf52840 sous le dossier openthread.

Remarque:Pour obtenir des conseils de configuration, veuillez consulter la documentation associée. La condition préalable 1 est de Simuler des réseaux Thread à l'aide d'OTNS. 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 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 Silk, qui permet de déterminer le numéro de série et le numéro d'interface USB. DutSerial est le numéro SN 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. Elles 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 appropriées.

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 OTNS. Pour permettre aux cartes de développement d'émettre des messages d'état vers les interfaces essentielles à la visualisation OTNS, exécutez la commande suivante dans le répertoire source OpenThread pour créer une image FTD, puis convertissez-la 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 utiliser les cartes, procédez comme indiqué à l'étape 4 de l'atelier de programmation sur la création d'un réseau Thread pour utiliser nrfjprog. Ensuite, connectez tous les tableaux via le port USB nRF à la machine hôte. Le même ensemble de câbles USB vers micro USB peut être déconnecté des ports J-Link et raccordé aux ports USB nRF des cartes de développement nRF52840. Vous pouvez donc exécuter seulement ces six 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 OTNS avec des 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 à OTNS de s'attendre à des messages gRPC et UDP décrivant le mode de visualisation du 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 une toile vide.

4dd5b41bf7e71334.png

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

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

Le fichier silk_run_test.py situé à l'emplacement silk/unit_tests vous donne une longueur d'avance. Silk fournit une assistance OTNS lors de l'exécution d'un scénario de test. Comme le service OTNS en mode réel fonctionne déjà localement, 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 en utilisant les modifications suivantes sur le fichier silk_run_test.py. /opt/openthread_test/ est le chemin par défaut que Silk utilise pour la sortie des journaux 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é apparaîtra sur l'interface utilisateur Web OTNS.

EE443b66e0a6620b.png

L'angle supérieur gauche contient des statistiques de visualisation, la version de l'OT et le titre du test. L'angle inférieur gauche contient les commandes de la fenêtre de journal, qui s'affiche à droite. Dans un premier temps, les nœuds sont ajoutés, mais aucun réseau n'est créé. À mesure que le test progresse, les modes et les rôles de chaque nœud changent, et des liens se créent.

5c38e2c72519e620.png

7. Félicitations

Félicitations, vous avez réussi un test de la soie sur les appareils Thread physiques et l'avez visualisée avec OTNS.

Vous avez exécuté un test de la soie à l'aide de cartes de développement qui clignotent avec des micrologiciels compatibles OTNS. Les tableaux envoient leur statut à un serveur de soie, qui surveille et regroupe tous les messages, puis les envoie au service OTNS en même temps que d'autres informations de test. Le service 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 obtenir diverses ressources OpenThread.

Documentation de référence