1. Introduction
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 :
- Linux x86_64
- Git :
- Go 1.11 ou version ultérieure
- Navigateur Web. OTNS-Web utilise un navigateur Web pour afficher des simulations.
Conditions préalables :
2. Prérequis
Terminer les ateliers de programmation de base précédents
- Apprêt Thread : Vous devez connaître les concepts de base de Thread pour comprendre ce qui est enseigné dans cet atelier de programmation.
- Créer un réseau Thread avec des cartes nRF52840 et OpenThread Cet atelier de programmation suppose que vous avez réussi à créer un réseau Thread.
- Simuler des réseaux Thread à l'aide d'OTNS Pour cet atelier de programmation, nous partons du principe que vous avez réussi à exécuter l'outil OTNS.
Vérification des prérequis pour les packages...
Vérifions que toutes les conditions préalables sont remplies.
- Exécutez
which otns
pour vérifier si l'exécutableotns
peut faire l'objet d'une recherche dans$PATH
. - Exécutez
which wpantund
pour vous assurer quewpantund
est disponible. - 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.
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.
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.
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.