Simula reti di thread utilizzando OTNS

1. Introduzione

5abd22afa2f2ee9a.png

Che cos'è Thread e OTNS

Thread è un protocollo di rete mesh wireless a basso consumo basato su IP che consente comunicazioni protette da dispositivo a dispositivo e da dispositivo a cloud. Le reti di thread possono adattarsi alle modifiche della topologia per evitare un singolo punto di errore.

OpenThread rilasciato da Google è un'implementazione open source di Thread. Nonostante le dimensioni ridotte del codice e l'ingombro della memoria, OpenThread supporta tutte le funzionalità definite nella specifica del thread.

È possibile utilizzare OpenThread Network Simulator (OTNS) per simulare reti Thread eseguendo nodi OpenThread simulati sulle piattaforme posix. OTNS fornisce un'interfaccia web di facile utilizzo (OTNS-Web) per visualizzare e gestire le reti Thread simulate.

Cosa scoprirai

  • Installare OTNS e relative dipendenze
  • Creare OpenThread per OTNS
  • Come aggiungere/spostare/eliminare i nodi in OTNS-Web
  • Usa altre utili funzionalità di OTNS-Web per eseguire la simulazione di rete
  • Verifica se il punto di accesso non è abilitato da un singolo thread di OpenThread

Questo codelab è incentrato su OTNS-CLI e OTNS-Web. Le altre funzionalità di OTNS, come lo script Python, non sono trattate.

Che cosa ti serve

  • Linux x86_64 o Mac OS.
  • Git.
  • Vai a 1.11+.
  • Browser web. OTNS-Web utilizza un browser web per visualizzare le simulazioni.
  • Thread Primer. Per comprendere cosa è insegnato in questo codelab, avrai bisogno di conoscere i concetti di base di Thread.

2. Installazione

Installa Go

Per la realizzazione di OTNS è necessario Go 1.11+.

  1. Installa Go da https://golang.org/dl/
  2. Aggiungi $(go env GOPATH)/bin (normalmente $HOME/go/bin) a $PATH:
$ export PATH=$PATH:$(go env GOPATH)/bin

Recupera codice OTNS

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

Dipendenze installazione

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

Ti potrebbe essere chiesto di inserire una password per sudo.

Installare BigQuery

Installa otns su $GOPATH/bin:

$ ./script/install
otns installed: /usr/local/google/home/simonlin/go/bin/otns

È il momento di verificare se otns è installato correttamente

  1. Esegui which otns per controllare se l'eseguibile otns è disponibile per la ricerca in $PATH.
  2. Se non trovi il comando otns, verifica di aver aggiunto $(go env GOPATH)/bin a $PATH.

3. Creare OpenThread per OTNS

Recupero del codice OpenThread da GitHub

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

Crea OpenThread con OTNS=1

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

Puoi trovare gli eseguibili OpenThread nella directory output:

Linux

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

macOS

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

È il momento di eseguire OTNS...

4. Esegui OTNS

Esegui otns:

$ cd ~/src/openthread/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

Una volta avviato, OTNS inserirà una console CLI (OTNS-CLI) e avvierà un browser web per la visualizzazione e la gestione della rete (OTNS-Web):

a0e05178d66929b1.png

Se riesci a visualizzare solo una pagina vuota per OTNS-Web, è probabile che WebGL non sia abilitato nel tuo browser. Fai riferimento ahttps://superuser.com/a/836833 per informazioni su come abilitare WebGL.

Nelle sezioni seguenti imparerai a gestire le simulazioni OTNS tramite OTNS-CLI e OTNS-Web.

5. Scopri OTNS-CLI e OTNS-Web

Interfaccia a riga di comando OTNS

OTNS-CLI fornisce un'interfaccia a riga di comando (CLI) per la gestione delle simulazioni OTNS.

$ cd ~/src/openthread/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

Puoi digitare i comandi tramite OTNS-CLI. Consulta il riferimento interfaccia a riga di comando OTNS per un elenco completo dei comandi. Non preoccuparti, in questo codelab utilizzerai solo alcuni di questi comandi.

OTNS-Web

OTNS-Web è lo strumento di gestione e visualizzazione della rete di OTNS. Fornisce una rappresentazione visiva dei nodi, dei messaggi e dei link della rete Thread simulata. Nota i vari elementi di OTNS-Web:

4c5b43509a2ca0d0.png

6. Aggiungi nodi

Aggiungi nodi tramite interfaccia a riga di comando OTNS

Aggiungi un router in posizione (300, 100)

> add router x 300 y 100
1
Done

Dovresti vedere un nodo creato in OTNS-Web. Il nodo inizia come router e diventa leader in pochi secondi:

6ca8c2e63ed9818d.png

Aggiungi altri nodi tramite 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

Attendi alcuni secondi in cui i nodi vengono uniti in una partizione. Dovresti vedere i nodi in OTNS-WEB:

3ee67903c01aa612.png

Aggiungi nodi entro il giorno OTNS-Web

Puoi anche aggiungere nodi tramite OTNS-Web. Fai clic sul pulsante New Router dell'elemento Action Bar. Dovresti vedere un nodo in fase di creazione subito sopra il pulsante New Router. Trascina il nodo vicino al leader che hai creato tramite OTNS-CLI. Tutti i nodi devono essere uniti in un'unica partizione:

420258bb92561146.png

Inoltre, fai clic sui pulsanti FED, MED e SED sulla barra delle azioni per creare altri tipi di nodi. Trascinali in posizioni vicine ai nodi esistenti per collegarli alla rete Thread:

fe15d6f9726a099e.png

Ora hai creato una rete Thread di una partizione contenente molti nodi. Nella sezione successiva modificheremo la velocità di simulazione per rendere più rapida la simulazione.

7. Regola la velocità

Attualmente, la simulazione deve essere eseguita a velocità 1X, il che significa che il tempo simulato trascorso finora è uguale al tempo effettivo dalla creazione del primo nodo.

Regola la velocità fino al giorno OTNS-CLI

Puoi regolare la velocità di simulazione tramite OTNS-CLI.

Imposta velocità di simulazione su 100X

> speed 100
Done

Dovresti vedere i nodi inviare i messaggi molto più spesso di prima.

Imposta velocità di simulazione su MAX

> speed max
Done

Ora OTNS cerca di simulare il più rapidamente possibile, pertanto dovresti vedere i nodi che inviano un numero elevato di messaggi.

Sospendi simulazione

> speed 0
Done

L'impostazione della simulazione di velocità su 0 mette in pausa la simulazione.

Ripristina la simulazione alla velocità normale

> speed 1
Done

L'impostazione della simulazione di velocità su un valore maggiore di 0 riprende la simulazione.

Regola la velocità fino al giorno OTNS-Web

Pulsanti del controllo velocità

Cerca i pulsanti di controllo della velocità 9329157c1bd12672.png sul dispositivo Action Bar. I pulsanti mostrano la velocità di simulazione attuale e possono essere utilizzati per regolarla e mettere in pausa/ripristinare la simulazione.

Accelera la simulazione

Puoi accelerare la simulazione facendo clic sul pulsante 39b88331779277ad.png fino a raggiungere la velocità MAX: f5f460b2586d299b.png.

Simulazione rallentata

Puoi rallentare la simulazione facendo clic sul pulsante 31cca8d5b52fa900.png.

Sospendi simulazione

Fai clic sul pulsante 46cc2088c9aa7ab6.png per mettere in pausa la simulazione quando è in esecuzione. Il pulsante verrà modificato in ce25eda3496ffcd4.png.

Riprendi simulazione

Fai clic sul pulsante ce25eda3496ffcd4.png per riprendere la simulazione quando è in pausa. Il pulsante verrà reimpostato su 46cc2088c9aa7ab6.png.

Imposta velocità di simulazione su 10X

Per risparmiare tempo, utilizza

OTNS-CLI per impostare la velocità di simulazione su

10X in modo da poter osservare i cambiamenti della topologia nella rete molto più velocemente.

> speed 10
Done

8. Attivare/disattivare la radio

Ora, la simulazione dovrebbe contenere due router (forma esagonale) e molti bambini ed è eseguita a una velocità 10X.

Individua la variante leader (bordo rosso) dei due router, con un solo clic per selezionarla:

8c6a2e191cdae0c7.png

Disattiva segnale cellulare

Fai clic sul pulsante 7ca085f470491dd4.png nella barra delle azioni per disattivare la radio del nodo Leader:

a3bf58d9d125f95f.png

Il responsabile non potrà inviare o ricevere messaggi con la radio disattivata.

Attendi circa 12 secondi (120 secondi in simulazione) affinché l'altro router diventi il nuovo leader:

e3d32f85c4a1b990.png

La rete Thread si ripristina automaticamente dall'errore dei leader formando una nuova partizione con un nuovo leader. Anche la nuova partizione ha un nuovo colore.

Attiva segnale cellulare

Seleziona il leader la cui radio è stata disattivata. Fai clic sul pulsante 2d9cecb8612b42aa.png su Action Bar per ripristinare la connettività radio:

7370a7841861aa3a.png

Il leader deve ricollegarsi alla rete dopo il ripristino della connettività radio.

9. Sposta nodi

OTNS consente agli utenti di spostare facilmente i nodi tramite OTNS-CLI o OTNS-Web.

Sposta il nodo attraverso OTNS-CLI

Sposta il nodo 5 in una nuova posizione:

> move 5 600 300
Done

Ora che il nodo 5 è distante dall'altro router, dovrebbe perdersi la connettività l'uno con l'altro, e dopo circa 12 secondi (120 secondi nel simulare tempo) diventeranno entrambi leader della propria partizione:

c06b4d0a4f183299.png

Sposta il nodo tramite OTNS-Web

Sposta il nodo 5 nella posizione originale trascinandolo. Le due partizioni devono essere unite in un'unica partizione:

9ba305c4c5a5f892.png

10 Eliminazione nodi

Elimina i nodi tramite OTNS-CLI

Elimina il nodo 8:

> del 8
Done

Il nodo 8 dovrebbe scomparire dalla simulazione:

18156770d9f8bf83.png

Elimina i nodi tramite OTNS-Web

Seleziona il nodo 5 e fai clic sul pulsante 7ff6afd565f4eafc.png in Action Bar per eliminare il nodo 5:

d4079cceea0105f0.png

Node 1 deve diventare Leader, mentre Node 7 dovrebbe scollegarsi perché non può raggiungere alcun router.

Cancella simulazione (elimina tutti i nodi)

Puoi cancellare la simulazione eliminando tutti i nodi tramite OTNS-Web.

Fai clic sul pulsante 89618191721e79a0.png su Action Bar. Tutti i nodi scompariranno contemporaneamente.

Prima di continuare...

Aggiungi alcuni nodi alla simulazione autonomamente in modo da poter continuare in questo tutorial.

11 Contesto del nodo OTNS-CLI

OTNS-CLI fornisce la modalità contesto nodo per una facile interazione con i nodi per aiutare gli sviluppatori a diagnosticare lo stato dei nodi.

Accedi alla modalità contesto nodo

Inserisci il contesto del nodo 1:

> node 1
Done
node 1>

Il prompt dell'interfaccia a riga di comando è cambiato in node 1> , a indicare il contesto attuale del nodo. Puoi digitare comandi dell'interfaccia a riga di comando di OpenThread da eseguire sul nodo come se interagisci direttamente con il nodo.

Esegui i comandi nel contesto del nodo

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

Passa a un altro contesto del nodo

node 1> node 2
Done
node 2> 

Esci dal contesto del nodo

node 1> exit
Done
>

12 Complimenti

Congratulazioni, hai eseguito la tua prima simulazione OTNS.

Hai imparato a installare OTNS e le sue dipendenze. Hai creato OpenThread per OTNS e hai avviato la simulazione OTNS con istanze di simulazione OpenThread. Hai imparato a manipolare la simulazione in vari modi tramite OTNS-CLI e OTNS-Web.

Ora sai cosa sono OTNS e come puoi utilizzare OTNS per simulare le reti OpenThread.

Passaggi successivi

Dai un'occhiata ad alcuni di questi codelab...

Documentazione di riferimento