Simuler des réseaux Thread à l'aide d'OTNS

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

1. Introduction

5abd22afa2f2ee9a.png

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.

  1. Installez Go à l'adresse https://golang.org/dl/.
  2. 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é

  1. Exécutez which otns pour vérifier si l'exécutable otns est inclus dans l'index de recherche dans $PATH..
  2. 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):

A0E05178D66929B1.png

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:

4c5b43509a2ca0d0.png

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:

6ca8c2e63ed9818d.png

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:

3ee67903c01aa612.png

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:

420258bb92561146.png

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:

Fed15d6f9726a099e.png

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 9329157c1bd12672.png 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 39b88331779277ad.png jusqu'à ce que la vitesse soit égale à MAX: f5f460b2586d299b.png.

Simulation de ralentissement

Vous pouvez ralentir la simulation en cliquant sur le bouton 31cca8d5b52fa900-png.

Mettre en pause de la simulation

Cliquez sur le bouton 46cc2088c9aa7ab6.png pour suspendre la simulation lorsqu'elle est en cours d'exécution. Le bouton sera remplacé par ce25eda3496ffcd4.png.

Reprendre la simulation

Cliquez sur le bouton ce25eda3496ffcd4.png pour reprendre la simulation lorsqu'elle est en pause. Le bouton redeviendra 46cc2088c9aa7ab6.png.

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:

8c6a2e191cdae0c7.png

Éteindre le signal radio

Cliquez sur le bouton 7ca085f470491dd4.png de la barre d'action pour désactiver la radio du nœud Leader:

A3bf58d9d125f95f.png

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:

e3d32f85c3a1b990.png

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 2d9cecb8612b42aa.png sur Action Bar pour rétablir la connectivité radio:

7370a7841861aa3a.png

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:

C06b4d0a4f183299.png

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:

9ba305c4c5a5f892.png

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:

18156770d9f8bf83.png

Supprimer des nœuds via OTNS-Web

Sélectionnez le nœud 5 et cliquez sur le bouton 7ff6afd565f4eafc.png sur le Action Bar pour supprimer le nœud 5:

D4079cceea0105f0.png

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 89618191721e79a0.png 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...

Documents de référence