Google is committed to advancing racial equity for Black communities. See how.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Simuler des réseaux de threads à l'aide d'OTNS

5abd22afa2f2ee9a.png

Qu'est-ce que Thread & OTNS

Thread est un protocole de réseau maillé sans fil à faible puissance basé sur IP qui permet des communications sécurisées appareil à appareil et appareil à cloud. Les réseaux de threads 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 encombrement mémoire, OpenThread prend en charge toutes les fonctionnalités définies dans la spécification Thread 1.1.1 .

OpenThread Network Simulator (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.

Ce que tu apprendras

  • Installez OTNS et ses dépendances
  • Construire OpenThread pour OTNS
  • Comment ajouter / déplacer / supprimer des nœuds dans OTNS-Web
  • Utilisez les autres fonctionnalités utiles d'OTNS-Web pour faire fonctionner la simulation de réseau
  • Vérifiez le point de défaillance unique d'OpenThread

Ce laboratoire de codes 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 aurez besoin

  • Linux x86_64 ou Mac OS.
  • Git .
  • Passez à la version 1.11+ .
  • Navigateur Web. OTNS-Web utilise un navigateur Web pour afficher les simulations.
  • Thread Primer . Vous aurez besoin de connaître les concepts de base de Thread pour comprendre ce qui est enseigné dans ce Codelab.

Installez Go

OTNS nécessite Go 1.11+ pour la construction.

  1. Installez Go depuis https://golang.org/dl/
  2. Ajoutez $(go env GOPATH)/bin (normalement $HOME/go/bin ) à $PATH :
$ export PATH=$PATH:$(go env GOPATH)/bin

Obtenez le code OTNS

$ git clone https://github.com/openthread/ot-ns.git ./otns
$ cd otns

Installer les dépendances

$ ./script/install-deps
grpcwebproxy installed: /usr/local/google/home/simonlin/go/bin/grpcwebproxy

Vous devrez peut-être entrer un mot de passe pour sudo .

Installer des otns

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 peut être recherché dans $PATH.
  2. Si la commande otns n'est pas trouvée, vérifiez que vous avez ajouté $(go env GOPATH)/bin à $PATH.

Obtenez le code OpenThread de GitHub

$ mkdir -p ~/src
$ git clone https://github.com/openthread/openthread ~/src/openthread

Construisez OpenThread avec OTNS=1

$ cd ~/src/openthread
$ ./script/bootstrap
$ ./bootstrap
$ make -f examples/Makefile-simulation OTNS=1

Vous pouvez trouver les exécutables OpenThread dans le répertoire de output :

Linux

$ ls ~/src/openthread/output/x86_64-unknown-linux-gnu/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

macOS

$ ls ~/src/openthread/output/x86_64-apple-darwin/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

Il est maintenant temps d'exécuter OTNS ...

Exécutez otns :

$ cd ~/src/openthread/output/x86_64-unknown-linux-gnu/bin
$ otns
> ← OTNS-CLI prompt

Une fois démarré avec succès, OTNS entrera dans une console CLI ( OTNS-CLI ) et lancera un navigateur Web pour la visualisation et la gestion du réseau ( OTNS-Web ):

a0e05178d66929b1.png

Si vous ne voyez qu'une page vierge pour OTNS-Web, il est probable que WebGL n'est pas activé dans votre navigateur. Veuillez consulter https://superuser.com/a/836833 pour savoir comment activer WebGL.

Dans les sections suivantes, vous allez apprendre à gérer les simulations OTNS-CLI via 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/output/x86_64-unknown-linux-gnu/bin
$ otns
> ← OTNS-CLI prompt

Vous pouvez taper des commandes via OTNS-CLI . Reportez-vous à la référence OTNS CLI pour une liste complète des commandes. Ne vous inquiétez pas, vous n'utiliserez que quelques-unes de ces commandes dans ce Codelab.

OTNS-Web

OTNS-Web est l'outil de visualisation et de gestion de 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 d' OTNS-Web :

4c5b43509a2ca0d0.png

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 leader en quelques secondes:

6ca8c2e63ed9818d.png

Ajouter plus de 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 seule partition. Vous devriez voir les nœuds dans OTNS-WEB :

3ee67903c01aa612.png

Ajouter des nœuds par OTNS-Web

Vous pouvez également ajouter des nœuds via OTNS-Web . Cliquez sur le bouton New Router de la 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 qu'il soit proche du leader que vous avez créé via OTNS-CLI . Tous les nœuds devraient finalement fusionner en une seule partition:

420258bb92561146.png

Cliquez également 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 positions proches des nœuds existants pour les attacher à ce réseau Thread:

fe15d6f9726a099e.png

Vous avez maintenant créé un réseau Thread d'une partition contenant plusieurs nœuds. Dans la section suivante, nous allons ajuster la vitesse de simulation pour accélérer la simulation.

Actuellement, la simulation doit s'exécuter à une vitesse de 1X , ce qui signifie que le temps de simulation écoulé jusqu'à présent est le même que le 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 .

Réglez la vitesse de simulation sur 100X

> speed 100
Done

Vous devriez voir les nœuds envoyer des messages beaucoup plus fréquemment qu'auparavant.

Réglez la vitesse de simulation sur MAX

> speed max
Done

Maintenant, OTNS essaie qu'il est préférable de simuler aussi vite que possible, vous devriez donc voir des nœuds envoyer un grand nombre de messages.

Mettre la simulation en pause

> speed 0
Done

La définition de la vitesse de simulation sur 0 met la simulation en pause.

Restaurer la simulation à vitesse normale

> speed 1
Done

Le réglage de la vitesse de simulation sur une valeur supérieure à 0 reprend la simulation.

Ajustez la vitesse via OTNS-Web

Boutons de contrôle de vitesse

Trouvez les boutons de contrôle de vitesse9329157c1bd12672.png sur l' Action Bar . Les boutons indiquent la vitesse de simulation actuelle et peuvent être utilisés pour régler la vitesse de simulation et mettre en pause / reprendre la simulation.

Accélérez la simulation

Vous pouvez accélérer la simulation en cliquant sur le39b88331779277ad.png jusqu'à ce que la vitesse atteigne MAX :f5f460b2586d299b.png .

Simulation de ralentissement

Vous pouvez ralentir la simulation en cliquant sur le31cca8d5b52fa900.png bouton.

Mettre la simulation en pause

Clique le46cc2088c9aa7ab6.png bouton pour mettre la simulation en pause lorsqu'elle est en cours d'exécution. Le bouton deviendrace25eda3496ffcd4.png .

Reprendre la simulation

Clique lece25eda3496ffcd4.png pour reprendre la simulation lorsqu'elle est en pause. Le bouton redeviendra46cc2088c9aa7ab6.png .

Réglez la vitesse de simulation sur 10X

Afin de gagner du temps, utilisez OTNS-CLI pour ajuster la vitesse de simulation à 10X afin que nous puissions observer les changements de topologie dans le réseau beaucoup plus rapidement.

> speed 10
Done

Maintenant, la simulation doit contenir 2 routeurs (forme hexagonale) et de nombreux enfants, et s'exécute à une vitesse 10X.

Trouvez le leader actuel (bordure rouge) des 2 routeurs, un seul clic pour le sélectionner:

8c6a2e191cdae0c7.png

Éteignez la radio

Clique le7ca085f470491dd4.png bouton de la barre d'action pour désactiver la radio du nœud Leader:

a3bf58d9d125f95f.png

Le leader ne pourra pas envoyer ni recevoir de messages avec la radio éteinte.

Attendez environ 12 secondes (120 secondes en temps de simulation) pour que l'autre routeur devienne le nouveau leader:

e3d32f85c4a1b990.png

Le réseau Thread récupère automatiquement de l'échec de Leader en formant une nouvelle partition avec un nouveau Leader. La nouvelle partition a également une nouvelle couleur de partition.

Allumer la radio

Sélectionnez le chef dont la radio a été désactivée. Clique le2d9cecb8612b42aa.png bouton sur la Action Bar pour restaurer la connectivité radio:

7370a7841861aa3a.png

Le leader doit se reconnecter au réseau une fois la connectivité radio rétablie.

OTNS permet aux utilisateurs de déplacer facilement des 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

Puisque maintenant le nœud 5 est loin de l'autre routeur, ils devraient perdre la connectivité l'un avec l'autre, et après environ 12 secondes (120 secondes en temps de simulation), les deux deviennent les leaders de leur propre partition:

c06b4d0a4f183299.png

Déplacer le nœud via OTNS-Web

Remettez le nœud 5 à son emplacement d'origine en le faisant glisser. Les deux partitions doivent fusionner en une seule partition:

9ba305c4c5a5f892.png

Supprimer les nœuds via OTNS-CLI

Supprimer le nœud 8:

> del 8
Done

Le nœud 8 devrait disparaître de la simulation:

18156770d9f8bf83.png

Supprimer des nœuds via OTNS-Web

Sélectionnez le nœud 5 et cliquez sur le7ff6afd565f4eafc.png bouton de la Action Bar pour supprimer le nœud 5:

d4079cceea0105f0.png

Node 1 doit devenir leader et le Node 7 doit se détacher 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 sur89618191721e79a0.png bouton sur la Action Bar. Tous les nœuds disparaîtront en même temps.

Avant de continuer ...

Ajoutez vous-même quelques nœuds à la simulation afin de pouvoir continuer dans ce didacticiel.

OTNS-CLI fournit un mode contextuel de nœud pour une interaction facile avec les nœuds afin d'aider les développeurs à diagnostiquer l'état d'un nœud.

Entrer en mode contextuel de nœud

Entrez le contexte de nœud du nœud 1:

> node 1
Done
node 1>

L'invite de l'interface de ligne de commande est devenue le node 1> , indiquant le contexte de nœud actuel. 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

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
>

Félicitations, vous avez exécuté avec succès votre première simulation OTNS!

Vous avez appris à installer OTNS et ses dépendances. Vous avez créé OpenThread pour OTNS et lancé 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 savez maintenant ce qu'est OTNS et comment vous pouvez utiliser OTNS pour simuler des réseaux OpenThread.

Et après?

Découvrez quelques-uns de ces codelabs ...

Documents de référence