1. Introduction
Qu'est-ce que Thread et OTNS
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.
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 les autres fonctionnalités utiles d'OTNS-Web pour exécuter la simulation de réseau
- Vérifier l'absence de point de défaillance unique d'OpenThread
Cet atelier de programmation est consacré à OTNS-CLI et OTNS-Web. Les autres fonctionnalités d'OTNS, telles que les scripts Python, ne sont pas abordées.
Prérequis
- Linux x86_64 ou Mac OS
- Git :
- Version 1.13 ou ultérieure.
- Navigateur Web. OTNS-Web utilise un navigateur Web pour afficher des simulations.
- Apprêt Thread : 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 pouvoir être compilé.
- Installez Go depuis 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 que otns
est correctement installé
- Exécutez
which otns
pour vérifier si l'exécutableotns
est inclus dans l'index de recherche de$PATH.
. - Si la commande
otns
est introuvable, vérifiez que vous avez bien ajouté$(go env GOPATH)/bin
à$PATH.
.
3. Créer OpenThread pour OTNS
Obtenir le code OpenThread à partir de 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 pouvez trouver 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
Maintenant, il est 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 démarré, l'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 voyez qu'une page vierge pour OTNS-Web, il est probable que WebGL ne soit pas activé dans votre navigateur. Pour savoir comment activer WebGL, consultezhttps://superuser.com/a/836833 .
Dans les sections suivantes, vous allez apprendre à gérer les simulations OTNS via OTNS-CLI
et OTNS-Web
.
5. Découvrez OTNS-CLI et 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
. Consultez 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 des réseaux 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
Ajoutez 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, puis devient leader en quelques secondes:
Ajoutez 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 fusionnent en une partition. Les nœuds doivent s'afficher dans OTNS-WEB
:
Ajoutez des nœuds d'ici le OTNS-Web
Vous pouvez également ajouter des nœuds via OTNS-Web
. Cliquez sur le bouton New Router
de Action Bar
. Vous devriez voir un nœud en cours de création juste au-dessus du bouton New Router
. Faites glisser le nœud pour le placer à proximité de la direction que vous avez créée via OTNS-CLI
. À terme, tous les nœuds devraient fusionner en une seule partition:
Cliquez également sur les boutons FED, MED et SED dans la barre d'action pour créer d'autres types de nœuds. Faites-les glisser vers les nœuds existants pour les associer à ce réseau Thread:
Vous avez maintenant créé un réseau Thread composé d'une partition contenant de nombreux nœuds. Dans la section suivante, nous allons ajuster la vitesse de simulation pour qu'elle s'exécute plus rapidement.
7. Ajuster la vitesse
Actuellement, la simulation doit s'exécuter à une vitesse de 1X
, ce qui signifie que le temps écoulé jusqu'à présent est identique au temps écoulé depuis la création du premier nœud.
Ajuster la vitesse dans OTNS-CLI
Vous pouvez ajuster la vitesse de simulation via OTNS-CLI
.
Définir la vitesse de simulation sur 100X
> speed 100 Done
Vous devriez constater que les nœuds envoient des messages beaucoup plus fréquemment qu'auparavant.
Définir la vitesse de simulation sur MAX
> speed max Done
Maintenant, OTNS tente de simuler le plus vite possible. Vous devriez donc voir des nœuds qui envoient un grand nombre de messages.
Mise 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 la vitesse de simulation sur une valeur supérieure à 0
reprend la simulation.
Ajuster la vitesse dans OTNS-Web
Boutons de contrôle de la vitesse
Repérez les boutons de contrôle de la vitesse sur l'écran Action Bar
. Les boutons affichent la vitesse de simulation actuelle et permettent d'ajuster la vitesse de simulation, et de mettre en pause/reprendre la simulation.
Accélérer la simulation
Vous pouvez accélérer la simulation en cliquant sur le bouton jusqu'à ce que la vitesse atteigne MAX
: .
Ralentir la simulation
Vous pouvez ralentir la simulation en cliquant sur le bouton .
Mise 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 mise en pause. Le bouton sera à nouveau défini sur .
Définir la vitesse de simulation sur 10X
Pour gagner du temps, utilisez
OTNS-CLI
pour régler la vitesse de simulation sur
10X
pour pouvoir observer les changements de topologie du réseau beaucoup plus rapidement.
> speed 10 Done
8. Activer/Désactiver la radio
La simulation doit maintenant contenir deux routeurs (de forme hexagonale) et de nombreux enfants, et s'exécuter à une vitesse 10 fois supérieure.
Recherchez la variante optimale actuelle (bordure rouge) des deux routeurs, puis cliquez une fois pour la sélectionner:
Éteindre le signal radio
Cliquez sur le bouton dans la barre d'action pour désactiver la case d'option du nœud "Leader" :
Il ne peut pas envoyer ni recevoir de messages lorsque la case est désactivée.
Attendez environ 12 s (120 s en temps de simulation) pour que l'autre routeur devienne la nouvelle variante optimale:
Le réseau Thread se remet automatiquement de l'échec de la variante optimale en formant une nouvelle partition avec une nouvelle partition principale. La nouvelle partition a également une nouvelle couleur de partition.
Allumer le signal radio
Sélectionnez le dirigeant dont la radio a été désactivée. Cliquez sur le bouton sur Action Bar
pour restaurer la connectivité radio:
Il doit se reconnecter au réseau une fois la connexion 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 via OTNS-CLI
Déplacez le nœud 5 vers un nouvel emplacement:
> move 5 600 300 Done
Étant donné que le nœud 5 est maintenant éloigné de l'autre routeur, ils devraient perdre la connectivité l'un avec l'autre. Au bout de 12 s (120 s en temps de simulation), tous deux deviennent des leaders de leur propre partition:
Déplacer le nœud via OTNS-Web
Replacer le nœud 5 à son emplacement d'origine en le faisant glisser Les deux partitions devraient à nouveau fusionner en une seule:
10. Supprimer les nœuds
Supprimer les nœuds via OTNS-CLI
Supprimez le nœud 8:
> del 8 Done
Le nœud 8 doit disparaître de la simulation:
Supprimer les nœuds via OTNS-Web
Sélectionnez le nœud 5 et cliquez sur le bouton du Action Bar
pour supprimer le nœud 5:
Node 1
doit devenir "Leader" et Node 7
doit être dissocié, car il ne peut atteindre aucun 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 disparaissent d'un coup.
Avant de continuer...
Ajoutez vous-même quelques nœuds à la simulation pour pouvoir continuer ce tutoriel.
11. Contexte du nœud OTNS-CLI
OTNS-CLI
fournit un mode contexte de nœud pour faciliter l'interaction avec les nœuds afin d'aider les développeurs à diagnostiquer l'état d'un nœud.
Passer en mode contexte du nœud
Saisissez le contexte du nœud 1:
> node 1 Done node 1>
L'invite de la CLI est passée à 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 le nœud.
Exécuter des commandes dans le contexte du 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>
Quitter le contexte du nœud
node 1> exit Done >
12. Félicitations
Félicitations, vous venez d'exécuter votre première simulation OTNS !
Vous avez appris à installer OTNS et ses dépendances. Vous avez créé OpenThread pour OTNS et démarré une simulation OTNS avec des instances de simulation OpenThread. Vous avez appris à manipuler la simulation de différentes manières avec OTNS-CLI
et OTNS-Web
.
Vous savez maintenant ce qu’est OTNS et 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