1. Introduction
Thread et OTNS
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.
Points abordés
- Installer OTNS et ses dépendances
- Créer OpenThread pour OTNS
- Ajouter, déplacer et supprimer des nœuds dans OTNS-Web
- Utiliser d'autres fonctionnalités OTNS-Web pour exécuter la simulation de réseau
- Valider l'absence de point d'échec OpenThread
Cet atelier de programmation porte sur OTNS-CLI et OTNS-Web. Les autres fonctionnalités d'OTNS, comme les scripts Python, ne sont pas couvertes.
Prérequis
- Linux x86_64 ou Mac OS
- Git :
- Go 1.13+.
- Navigateur Web. OTNS-Web utilise un navigateur Web pour afficher les simulations.
- Apprêt pour fils de discussion. Vous devez connaître les concepts de base de Thread pour comprendre ce qui est enseigné dans cet atelier de programmation.
2. Installation
Installer Go
OTNS nécessite Go 1.13+ pour compiler.
- Installez Go à l'adresse https://golang.org/dl/.
- Ajoutez
$(go env GOPATH)/bin
(normalement$HOME/go/bin
) à$PATH
:
$ export PATH=$PATH:$(go env GOPATH)/bin
Obtenir le code OTNS
$ git clone https://github.com/openthread/ot-ns.git ./otns $ cd otns
Installer des dépendances
$ ./script/install-deps grpcwebproxy installed: /usr/local/google/home/simonlin/go/bin/grpcwebproxy
Vous serez peut-être invité à saisir un mot de passe pour sudo
.
Installation d'OTN
Installez otns
dans $GOPATH/bin
:
$ ./script/install otns installed: /usr/local/google/home/simonlin/go/bin/otns
Vérifions si otns
est correctement installé
- Exécutez
which otns
pour vérifier si l'exécutableotns
est inclus dans l'index de recherche dans$PATH.
. - Si la commande
otns
est introuvable, vérifiez que vous avez ajouté$(go env GOPATH)/bin
à$PATH.
.
3. Créer OpenThread pour OTNS
Obtenir le code OpenThread depuis GitHub
$ mkdir -p ~/src $ git clone https://github.com/openthread/openthread ~/src/openthread
Compiler OpenThread avec OTNS=1
$ cd ~/src/openthread $ ./script/cmake-build simulation -DOT_OTNS=ON -DOT_SIMULATION_VIRTUAL_TIME=ON -DOT_SIMULATION_VIRTUAL_TIME_UART=ON -DOT_SIMULATION_MAX_NETWORK_SIZE=999
Vous trouverez les exécutables OpenThread dans le répertoire build
:
$ ls ~/src/openthread/build/simulation/examples/apps/cli/ ot-cli-ftd ot-cli-mtd ot-cli-radio
Il est maintenant temps d'exécuter OTNS...
4. Exécuter OTNS
Exécutez otns
:
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
Une fois l'opération réussie, OTNS accède à une console CLI (OTNS-CLI
) et lance un navigateur Web pour la visualisation et la gestion du réseau (OTNS-Web
):
Si vous ne pouvez voir qu'une page vierge pour OTNS-Web, il est probable que WebGL n'est pas activé dans votre navigateur. Pour savoir comment activer WebGL, consultez la page https://superuser.com/a/836833.
Dans les sections suivantes, vous allez apprendre à gérer les simulations OTNS via OTNS-CLI
et OTNS-Web
.
5. Découvrir OTNS-CLI & OTNS-Web
OTNS – CLI
OTNS-CLI
fournit une interface de ligne de commande (CLI) pour gérer les simulations OTNS.
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
Vous pouvez saisir des commandes via OTNS-CLI
. Reportez-vous à la documentation de référence de la CLI OTNS pour obtenir la liste complète des commandes. Ne vous inquiétez pas, vous n'utiliserez que quelques-unes de ces commandes dans cet atelier de programmation.
OTNS-Web
OTNS-Web
est l'outil de gestion et de visualisation du réseau d'OTNS. Il fournit une représentation visuelle des nœuds, des messages et des liens du réseau Thread simulé. Notez les différents éléments de OTNS-Web
:
6. Ajouter des nœuds
Ajouter des nœuds via OTNS-CLI
Ajouter un routeur à la position (300, 100)
> add router x 300 y 100 1 Done
Vous devriez voir un nœud créé dans OTNS-Web
. Le nœud démarre en tant que routeur et devient un leader en quelques secondes:
Ajouter des nœuds via OTNS-CLI
> add fed x 200 y 100 2 Done > add med x 400 y 100 3 Done > add sed x 300 y 200 4 Done
Attendez quelques secondes que les nœuds soient fusionnés en une seule partition. Les nœuds doivent s'afficher dans OTNS-WEB
:
Ajouter des nœuds d'ici le OTNS-Web
Vous pouvez également ajouter des nœuds via OTNS-Web
. Cliquez sur le bouton New Router
du Action Bar
. Un nœud doit être créé juste au-dessus du bouton New Router
. Faites glisser le nœud pour qu'il se trouve à proximité de la variante optimale que vous avez créée via OTNS-CLI
. Tous les nœuds doivent à terme fusionner en une seule partition:
Cliquez sur les boutons FED, MED et SED de la barre d'action pour créer d'autres types de nœuds. Faites-les glisser vers des emplacements proches de nœuds existants pour les associer à ce réseau Thread:
Vous venez de créer un réseau Thread d'une partition contenant de nombreux nœuds. Dans la section suivante, nous allons ajuster la vitesse de simulation pour accélérer la simulation.
7. Ajuster la vitesse
Actuellement, la simulation doit s'exécuter à une vitesse de 1X
, ce qui signifie que le temps de simulation passé jusqu'à présent est identique à la durée réelle depuis la création du premier nœud.
Ajustez la vitesse via OTNS-CLI
Vous pouvez ajuster la vitesse de simulation via OTNS-CLI
.
Définir la vitesse de simulation sur 100X
> speed 100 Done
Les nœuds doivent envoyer des messages beaucoup plus fréquemment qu'avant.
Définir la vitesse de simulation sur MAX
> speed max Done
Le service OTNS s'efforce de simuler le plus vite possible. Les nœuds doivent donc envoyer un grand nombre de messages.
Mettre en pause de la simulation
> speed 0 Done
Définir la vitesse de simulation sur 0
suspend la simulation.
Restaurer la simulation à une vitesse normale
> speed 1 Done
Définir une vitesse de simulation sur une valeur supérieure à 0
reprend la simulation.
Ajustez la vitesse via OTNS-Web
Boutons de contrôle de la vitesse
Recherchez les boutons de contrôle de la vitesse sur le
Action Bar
. Ces boutons indiquent la vitesse de simulation actuelle et peuvent être utilisés pour ajuster la vitesse de simulation et mettre en pause/reprendre la simulation.
Simulation d'accélération
Pour accélérer la simulation, cliquez sur le bouton jusqu'à ce que la vitesse soit égale à
MAX
: .
Simulation de ralentissement
Vous pouvez ralentir la simulation en cliquant sur le bouton .
Mettre en pause de la simulation
Cliquez sur le bouton pour suspendre la simulation lorsqu'elle est en cours d'exécution. Le bouton sera remplacé par
.
Reprendre la simulation
Cliquez sur le bouton pour reprendre la simulation lorsqu'elle est en pause. Le bouton redeviendra
.
Définir la vitesse de simulation sur 10X
Pour gagner du temps, utilisez
OTNS-CLI
pour régler la vitesse de simulation sur
10X
afin de pouvoir observer les changements de topologie beaucoup plus rapidement dans le réseau.
> speed 10 Done
8. Activer/Désactiver la radio
La simulation devrait maintenant contenir 2 routeurs (de forme hexagonale) et de nombreux enfants, avec une vitesse 10 fois supérieure.
Repérez la direction actuelle (bordure rouge) des deux routeurs en un seul clic:
Éteindre le signal radio
Cliquez sur le bouton de la barre d'action pour désactiver la radio du nœud Leader:
Le responsable ne peut plus envoyer ni recevoir de messages lorsque la radio est désactivée.
Attendez environ 12 s (120 s pour la simulation) pour que l'autre routeur devienne le nouveau leader:
Le réseau Thread se rétablit automatiquement en cas de défaillance du leader en formant une nouvelle partition avec un nouveau leader. La nouvelle partition a également une nouvelle couleur.
Allumer le signal radio
Sélectionnez le meneur dont la radio a été désactivée. Cliquez sur le bouton sur
Action Bar
pour rétablir la connectivité radio:
Le leader doit se reconnecter au réseau une fois la connectivité radio rétablie.
9. Déplacer des nœuds
OTNS permet aux utilisateurs de déplacer facilement les nœuds via OTNS-CLI
ou OTNS-Web
.
Déplacer le nœud vers OTNS-CLI
Déplacer le nœud 5 vers un nouvel emplacement:
> move 5 600 300 Done
Comme le nœud 5 est loin de l'autre routeur, ils doivent perdre la connectivité les uns aux autres. Au bout d'environ 12 secondes (120 s pour la simulation), ils deviennent tous deux des leaders de leur propre partition:
Déplacer un nœud via OTNS-Web
Replacez le nœud 5 à son emplacement d'origine en le faisant glisser. Les deux partitions doivent être fusionnées en une seule:
10. Supprimer des nœuds
Supprimer des nœuds via OTNS-CLI
Supprimez le nœud 8:
> del 8 Done
Le nœud 8 doit disparaître de la simulation:
Supprimer des nœuds via OTNS-Web
Sélectionnez le nœud 5 et cliquez sur le bouton sur le
Action Bar
pour supprimer le nœud 5:
Node 1
devrait devenir leader et Node 7
doit se dissocier, car il ne peut pas atteindre de routeur.
Effacer la simulation (supprimer tous les nœuds)
Vous pouvez effacer la simulation en supprimant tous les nœuds via OTNS-Web
.
Cliquez sur le bouton sur
Action Bar.
. Tous les nœuds disparaîtront en même temps.
Avant de continuer...
Ajoutez vous-même des nœuds à la simulation pour pouvoir continuer ce tutoriel.
11. Contexte du nœud OTNS-CLI
OTNS-CLI
fournit le mode de contexte des nœuds pour faciliter l'interaction avec les nœuds afin d'aider les développeurs à diagnostiquer l'état d'un nœud.
Accéder au mode de contexte du nœud
Saisissez le contexte du nœud 1:
> node 1 Done node 1>
L'invite de la CLI a été remplacée par node 1>
, indiquant le contexte actuel du nœud. Vous pouvez saisir des commandes CLI OpenThread à exécuter sur le nœud comme si vous interagissiez directement avec lui.
Exécuter des commandes dans un contexte de nœud
node 1> state leader Done node 1> channel 11 Done node 1> panid 0xface Done node 1> networkname OpenThread Done node 1> ipaddr fdde:ad00:beef:0:0:ff:fe00:fc00 fdde:ad00:beef:0:0:ff:fe00:d800 fdde:ad00:beef:0:2175:8a67:1000:6352 fe80:0:0:0:2075:82c2:e9e9:781d Done
Passer à un autre contexte de nœud
node 1> node 2 Done node 2>
Contexte du nœud de sortie
node 1> exit Done >
12. Félicitations
Félicitations, votre première simulation OTNS a bien été exécutée !
Vous avez appris à installer OTNS et ses dépendances. Vous avez créé OpenThread pour OTNS et démarré la simulation OTNS avec des instances de simulation OpenThread. Vous avez appris à manipuler la simulation de différentes manières via OTNS-CLI
et OTNS-Web
.
Vous connaissez maintenant le service OTNS et savez comment l'utiliser pour simuler des réseaux OpenThread.
Étape suivante
Découvrez quelques-uns des ateliers de programmation...
- Simuler un réseau Thread avec OpenThread
- Simuler un réseau Thread à l'aide d'OpenThread dans Docker
- Créer un réseau Thread avec des cartes nRF52840 et OpenThread