1. Introduction
Thread et OTNS
Thread est un protocole de réseau maillé sans fil basse consommation basé sur les adresses IP, qui permet une communication sécurisée d'appareil à appareil et de cloud à appareil. 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 faible encombrement, OpenThread est compatible avec toutes les fonctionnalités définies dans la spécification Thread.
Vous pouvez utiliser le simulateur de réseau OpenThread (OTNS) pour simuler des réseaux Thread en exécutant des nœuds OpenThread simulés sur des plates-formes posix. Ce service 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
- Compiler OpenThread pour OTNS
- Ajouter, déplacer et supprimer des nœuds dans OTNS-Web
- Utiliser les autres fonctionnalités utiles d'OTNS-Web pour simuler le réseau
- Vérifier l'absence de point de défaillance d'OpenThread
Cet atelier de programmation est axé sur OTNS-CLI et OTNS-Web. Les autres fonctionnalités d'OTNS, telles que les scripts Python, ne sont pas couvertes.
Ce dont vous avez besoin
- Linux x86_64 ou Mac OS.
- Git,
- Go 1.13+
- Navigateur Web. OTNS-Web utilise un navigateur Web pour afficher les simulations.
- Primaire Thread Vous devez connaître les concepts fondamentaux de Thread pour comprendre les concepts présentés dans cet atelier de programmation.
2. Installation
Installer Go
OTNS nécessite Go 1.13+ pour compiler.
- Installez Go depuis le site 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'OTT
Installez otns
sur $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
peut faire l'objet de recherches dans$PATH.
. - Si la commande
otns
est introuvable, vérifiez que vous avez ajouté$(go env GOPATH)/bin
à$PATH.
.
3. Compiler 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 les OTNS...
4. Exécuter OTNS
Exécutez otns
:
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
Une fois lancée, 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, cela signifie probablement que WebGL n'est pas activé dans votre navigateur. Pour savoir comment activer WebGL, consultez la pagehttps://superuser.com/a/836833 .
Dans les sections suivantes, vous apprendrez à gérer les simulations OTNS via OTNS-CLI
et OTNS-Web
.
5. Découvrir 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 du réseau d'OTNS. Il fournit une représentation visuelle des nœuds, messages et 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:
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 se fusionnent en une seule partition. Les nœuds devraient 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
. Un nœud doit être créé juste au-dessus du bouton New Router
. Faites glisser le nœud pour qu'il se trouve à proximité du leader que vous avez créé via OTNS-CLI
. À terme, tous les nœuds devraient être fusionnés en une seule partition:
Vous pouvez également cliquer 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 à proximité de nœuds existants pour les associer à ce réseau Thread:
Vous venez de créer un réseau Thread sur une partition contenant de nombreux nœuds. Dans la section suivante, nous allons ajuster la vitesse de simulation pour accélérer l'exécution de la simulation.
7. Ajuster la vitesse
Actuellement, la simulation doit s'exécuter à la vitesse de 1X
, ce qui signifie que le temps de simulation écoulé jusqu'à présent est identique au temps réel depuis la création du premier nœud.
Ajuster la vitesse via OTNS-CLI
Vous pouvez régler 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'auparavant.
Définir la vitesse de simulation sur MAX
> speed max Done
Le service de distribution par contournement (OTNS, over-the-top) tente 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 à vitesse normale
> speed 1 Done
Définir la vitesse de simulation sur une valeur supérieure à 0
reprend la simulation.
Ajuster la vitesse via OTNS-Web
Boutons de contrôle de la vitesse
Recherchez les boutons de contrôle de la vitesse sur la
Action Bar
. Les boutons indiquent la vitesse de simulation actuelle et peuvent être utilisés pour ajuster la vitesse de simulation et suspendre/reprendre la simulation.
Simulation d'accélération
Pour accélérer la simulation, cliquez sur le bouton jusqu'à atteindre la vitesse
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 mettre en pause la simulation pendant son exécution. Le bouton est remplacé par
.
Reprendre la simulation
Cliquez sur le bouton pour reprendre la simulation lorsqu'elle est en veille. Le bouton va être redé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 observer les changements de topologie dans le réseau beaucoup plus rapidement.
> speed 10 Done
8. Activer/Désactiver la radio
À présent, la simulation doit contenir 2 routeurs (hexagonaux) et de nombreux enfants, et fonctionne 10 fois plus vite.
Identifiez la bordure supérieure des deux routeurs, en un 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 pourra plus envoyer ni recevoir de messages lorsque la radio sera désactivée.
Attendez environ 12 s (120 s en simulation) pour que l'autre routeur devienne le leader:
Le réseau Thread récupère automatiquement les instances défaillantes en formant une nouvelle partition avec une nouvelle variante optimale. La nouvelle partition a également une nouvelle couleur de partition.
Allumer le signal radio
Sélectionnez le responsable 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
Le service 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 loin de l'autre routeur, ils doivent perdre la connectivité les uns aux autres. Au bout d'environ 12 secondes (simulant un temps de 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 ensuite fusionner 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 la
Action Bar
pour supprimer le nœud 5:
Node 1
devrait devenir leader et Node 7
doit se dissocier, car il ne peut accéder à 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 en même temps.
Avant de continuer...
Ajoutez vous-même des nœuds à la simulation pour continuer ce tutoriel.
PCI 11. Contexte des nœuds OTNS-CLI
OTNS-CLI
fournit un mode de contexte de nœud pour permettre aux développeurs d'interagir facilement avec les nœuds afin de 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 a été remplacée par node 1>
, indiquant le contexte actuel du nœud. Vous pouvez saisir des commandes de CLI OpenThread à exécuter sur le nœud comme si vous interagissez directement avec lui.
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
Basculer vers 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 avez exécuté votre première simulation OTNS !
Vous avez appris à installer un service OTNS et ses dépendances. Vous avez créé OpenThread pour OTNS et commencé la simulation OTNS avec des instances de simulation OpenThread. Vous avez appris à manipuler la simulation de différentes manières à travers OTNS-CLI
et OTNS-Web
.
Vous savez maintenant ce qu'est un service de distribution par contournement et comment l'utiliser pour simuler des réseaux OpenThread.
Étape suivante
Explorez ces 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