Tester un réseau Thread avec la visualisation

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

1. Introduction

5abd22afa2f2ee9a.png

Que sont Thread, OpenThread, OTNS et Silk ?

Thread est un protocole de mise en réseau sans fil à faible consommation d'énergie basé sur l'adresse IP, qui permet de sécuriser les communications entre les appareils et les appareils. 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 empreinte mémoire, OpenThread est compatible avec toutes les fonctionnalités définies dans la spécification Thread.

Le simulateur de réseau OpenThread (OTNS) permet de 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 les performances des fonctions, des fonctionnalités et du système OpenThread auprès de vrais appareils.

Points abordés

  • Framework de vérification des fonctionnalités d'OpenThread: Soie
  • Créer OpenThread pour de vrais appareils avec la fonctionnalité OTNS activée
  • Utiliser l'interface OTNS-Web pour surveiller l'état du réseau Thread formé à l'aide de 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 abordées.

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

Logiciel :

  • 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 de base

Vérification des prérequis pour les packages

Assurez-vous 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 tous les packages ARM GNU, J-Link et nrfjprog sont 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 du service OTNS et d'autres concernent 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

L'outil usbinfo, qui fait partie de Silk, permet d'identifier le numéro de série et le numéro d'interface USB de l'interface. DutSerial est le numéro de série affiché 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. Leur attribuer les valeurs présentées ici peut ê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 OTNS activé

Création d'image et de flash

Par défaut, les appareils OpenThread n'émettent aucun message OTNS. Pour permettre aux cartes de développement d'émettre des messages d'état pour consigner les interfaces essentielles à la visualisation OTNS, exécutez la commande suivante dans 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 sur la création d'un réseau Thread pour utiliser nrfjprog. Ensuite, connectez toutes les cartes 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 connecté aux ports USB nRF des cartes de développement nRF52840. Ces six câbles permettent donc d'exécuter des tests. Pour éviter tout problème, utilisez 12 câbles et connectez-les aux deux ports.

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

L'exécution du service 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 aux OTNS de s'attendre à des messages gRPC et UDP décrivant la façon dont le réseau Thread doit être visualisé, au lieu d'exécuter plusieurs processus ot-cli pour simuler le réseau. Votre navigateur devrait ouvrir automatiquement la page de visualisation avec une toile vide.

4dd5b41bf7e71334.png

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

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

Le fichier silk_run_test.py situé à l'emplacement silk/unit_tests vous donne une longueur d'avance. Silk fournit une compatibilité OTNS lors de l'exécution d'un scénario de test. Étant donné que le service en mode réel OTNS s'exécute 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 dans le fichier silk_run_test.py. /opt/openthread_test/ est le chemin par défaut que Silk utilise pour la sortie du journal et le fichier de configuration, mais vous pouvez utiliser n'importe quel chemin.

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

L'angle supérieur gauche affiche les statistiques de visualisation, la version OT et le titre du test. L'angle inférieur gauche contient des 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 réussi à exécuter un test de la soie sur les appareils Thread physiques et à les avoir visualisés à l'aide d'OTNS !

Vous avez exécuté un test Silk à l'aide de cartes de développement flashées avec des micrologiciels compatibles OTNS. Les cartes signalent leur état à un serveur Silk, qui les surveille et les agrège, puis les envoie au service OTNS avec d'autres informations de test. Le service OTNS s'exécutant 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.

Complément d'informations

Consultez le site openthread.io et Silk pour accéder à diverses ressources OpenThread.

Documents de référence