Che cos'è Thread e OTNS
Thread è un protocollo di rete mesh wireless a bassa potenza basato su IP che consente comunicazioni sicure da dispositivo a dispositivo e da dispositivo a cloud. Le reti di thread possono adattarsi alle modifiche della topologia per evitare single point of failure.
OpenThread rilasciato da Google è un'implementazione open source di Thread. Nonostante le dimensioni ridotte del codice e il footprint di memoria, OpenThread supporta tutte le funzionalità definite nella specifica Thread 1.1.1 .
OpenThread Network Simulator (OTNS) può essere utilizzato per simulare reti di thread eseguendo nodi OpenThread simulati su piattaforme posix. OTNS fornisce un'interfaccia Web di facile utilizzo (OTNS-Web) per visualizzare e utilizzare reti Thread simulate.
Cosa imparerai
- Installa OTNS e le sue dipendenze
- Crea OpenThread per OTNS
- Come aggiungere / spostare / eliminare nodi in OTNS-Web
- Usa le altre utili funzioni di OTNS-Web per gestire la simulazione di rete
- Verifica l'assenza di un singolo punto di errore di OpenThread
Questo codelab è incentrato su OTNS-CLI e OTNS-Web. Le altre funzionalità di OTNS, come lo scripting Python, non sono coperte.
Di cosa avrai bisogno
- Linux x86_64 o Mac OS.
- Git .
- Vai 1.11+ .
- Programma di navigazione in rete. OTNS-Web utilizza un browser Web per visualizzare le simulazioni.
- Thread Primer . Avrai bisogno di conoscere i concetti di base di Thread per capire cosa viene insegnato in questo Codelab.
Installa Go
OTNS richiede Go 1.11+ per essere compilato.
- Installa Go da https://golang.org/dl/
- Aggiungi
$(go env GOPATH)/bin
(normalmente$HOME/go/bin
) a$PATH
:
$ export PATH=$PATH:$(go env GOPATH)/bin
Ottieni il codice OTNS
$ git clone https://github.com/openthread/ot-ns.git ./otns $ cd otns
Installa dipendenze
$ ./script/install-deps grpcwebproxy installed: /usr/local/google/home/simonlin/go/bin/grpcwebproxy
Potrebbe esserti chiesto di inserire una password per sudo
.
Installa otns
Installa otns
su $GOPATH/bin
:
$ ./script/install otns installed: /usr/local/google/home/simonlin/go/bin/otns
Controlliamo se otns
è installato correttamente
- Esegui
which otns
per verificare se l'eseguibileotns
è ricercabile in$PATH.
- Se il comando
otns
non viene trovato, verificare di aver aggiunto$(go env GOPATH)/bin
a$PATH.
Ottieni il 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 di OpenThread nella directory di output
:
Linux
$ ls ~/src/openthread/output/simulation/bin ot-cli-ftd ot-cli-mtd ot-ncp-ftd ot-ncp-mtd ot-rcp
Mac OS
$ ls ~/src/openthread/output/simulation/bin ot-cli-ftd ot-cli-mtd ot-ncp-ftd ot-ncp-mtd ot-rcp
Ora è il momento di eseguire OTNS ...
Esegui otns
:
$ cd ~/src/openthread/output/simulation/bin $ otns > ← OTNS-CLI prompt
Una volta avviato correttamente, OTNS accederà a una console CLI ( OTNS-CLI
) e avvierà un browser Web per la visualizzazione e la gestione della rete ( OTNS-Web
):
Se puoi vedere solo una pagina vuota per OTNS-Web, è probabile che WebGL non sia abilitato nel tuo browser. Fare riferimento a https://superuser.com/a/836833 su come abilitare WebGL.
Nelle sezioni seguenti imparerai a gestire le simulazioni OTNS-CLI
tramite OTNS-CLI
e OTNS-Web
.
OTNS-CLI
OTNS-CLI
fornisce una Command Line Interface (CLI) per la gestione delle simulazioni OTNS.
$ cd ~/src/openthread/output/simulation/bin $ otns > ← OTNS-CLI prompt
È possibile digitare i comandi tramite OTNS-CLI
. Fare riferimento al riferimento OTNS CLI per un elenco completo dei comandi. Non preoccuparti, utilizzerai solo alcuni di questi comandi in questo Codelab.
OTNS-Web
OTNS-Web
è lo strumento di visualizzazione e gestione della rete di OTNS. Fornisce una rappresentazione visiva dei nodi, dei messaggi e dei collegamenti della rete Thread simulata. Nota i vari elementi di OTNS-Web
:
Aggiungi nodi tramite OTNS-CLI
Aggiungi un router alla posizione (300, 100)
> add router x 300 y 100 1 Done
Dovresti vedere un nodo creato in OTNS-Web
. Il nodo parte come Router e in pochi secondi diventa Leader:
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 affinché i nodi si uniscano in una partizione. Dovresti vedere i nodi in OTNS-WEB
:
Aggiungi nodi tramite OTNS-Web
Puoi anche aggiungere nodi tramite OTNS-Web
. Fare clic sul pulsante New Router
barra delle Action Bar
. Dovresti vedere un nodo creato proprio sopra il pulsante New Router
. Trascina il nodo per essere vicino al Leader che hai creato tramite OTNS-CLI
. Tutti i nodi dovrebbero alla fine fondersi in una partizione:
Fare anche clic sui pulsanti FED, MED e SED sulla barra delle azioni per creare altri tipi di nodi. Trascinali nelle posizioni vicino ai nodi esistenti per collegarli a quella rete di thread:
Ora hai creato una rete di thread di una partizione che contiene molti nodi. Nella prossima sezione, regoleremo la velocità di simulazione per rendere la simulazione più veloce.
Attualmente, la simulazione dovrebbe essere eseguita a velocità 1X
, il che significa che il tempo di simulazione trascorso finora è lo stesso del tempo effettivo da quando abbiamo creato il primo nodo.
Regola la velocità tramite OTNS-CLI
È possibile regolare la velocità di simulazione tramite OTNS-CLI
.
Imposta la velocità di simulazione su 100X
> speed 100 Done
Dovresti vedere i nodi inviare messaggi molto più frequentemente di prima.
Imposta la velocità di simulazione su MAX
> speed max Done
Ora OTNS sta cercando di simulare il più velocemente possibile, quindi dovresti vedere i nodi che inviano un gran numero di messaggi.
Metti in pausa la simulazione
> speed 0 Done
L'impostazione della velocità di simulazione su 0
interrompe la simulazione.
Ripristina la simulazione a velocità normale
> speed 1 Done
L'impostazione della velocità di simulazione su un valore maggiore di 0
riprende la simulazione.
Regola la velocità tramite OTNS-Web
Pulsanti di controllo della velocità
Trova i pulsanti di controllo della velocità sulla
Action Bar
. I pulsanti mostrano la velocità di simulazione corrente e possono essere utilizzati per regolare la velocità di simulazione e mettere in pausa / riprendere la simulazione.
Velocizza la simulazione
È possibile accelerare la simulazione facendo clic su fino a quando la velocità non raggiunge
MAX
: .
Rallenta la simulazione
È possibile rallentare la simulazione facendo clic su pulsante.
Metti in pausa la simulazione
Clicca il per mettere in pausa la simulazione quando è in esecuzione. Il pulsante verrà modificato in
.
Riprendi la simulazione
Clicca il pulsante per riprendere la simulazione quando è in pausa. Il pulsante verrà nuovamente modificato in
.
Imposta la velocità di simulazione su 10X
Per risparmiare tempo, usa
OTNS-CLI
per regolare la velocità di simulazione
10X
modo da poter osservare i cambiamenti della topologia nella rete molto più velocemente.
> speed 10 Done
Ora, la simulazione dovrebbe contenere 2 router (forma esagonale) e molti bambini e funziona a una velocità 10X.
Trova il Leader corrente (bordo rosso) dei 2 Router, fai clic per selezionarlo:
Spegni la radio
Clicca il pulsante sulla barra delle azioni per spegnere la radio del nodo Leader:
Il Leader non potrà inviare o ricevere messaggi con la radio spenta.
Attendi circa 12 secondi (120 secondi nel tempo di simulazione) affinché l'altro router diventi il nuovo Leader:
La rete Thread si ripristina automaticamente dall'errore di Leader formando una nuova partizione con un nuovo Leader. La nuova partizione ha anche un nuovo colore della partizione.
Accendi la radio
Seleziona il Leader la cui radio è stata spenta. Clicca il pulsante sulla
Action Bar
per ripristinare la connettività radio:
Il Leader dovrebbe ricollegarsi alla rete dopo il ripristino della connettività radio.
OTNS consente agli utenti di spostare facilmente i nodi tramite OTNS-CLI
o OTNS-Web
.
Sposta il nodo tramite OTNS-CLI
Sposta il nodo 5 in una nuova posizione:
> move 5 600 300 Done
Poiché ora il nodo 5 è lontano dall'altro Router, dovrebbero perdere la connettività tra loro e dopo circa 12s (120s nel tempo di simulazione) entrambi diventano Leader della propria partizione:
Sposta il nodo tramite OTNS-Web
Riportare il nodo 5 nella posizione originale trascinando. Le due partizioni dovrebbero unirsi di nuovo in una partizione:
Elimina i nodi tramite OTNS-CLI
Elimina nodo 8:
> del 8 Done
Il nodo 8 dovrebbe scomparire dalla simulazione:
Elimina i nodi tramite OTNS-Web
Seleziona il nodo 5 e fai clic su pulsante sulla barra delle
Action Bar
per eliminare il nodo 5:
Node 1
dovrebbe diventare Leader e il Node 7
dovrebbe staccarsi poiché non può raggiungere alcun Router.
Cancella simulazione (elimina tutti i nodi)
È possibile cancellare la simulazione eliminando tutti i nodi tramite OTNS-Web
.
Clic pulsante sulla
Action Bar.
Tutti i nodi scompariranno contemporaneamente.
Prima di continuare ...
Aggiungi alcuni nodi alla simulazione da solo in modo da poter continuare in questo tutorial.
OTNS-CLI
fornisce la modalità contesto del nodo per una facile interazione con i nodi per aiutare gli sviluppatori a diagnosticare lo stato di un nodo.
Entra in modalità contesto nodo
Immettere il contesto del nodo del nodo 1:
> node 1 Done node 1>
Il prompt della CLI è stato modificato in node 1>
, a indicare il contesto del nodo corrente. È possibile digitare i comandi della CLI OpenThread da eseguire sul nodo come se si stesse interagendo direttamente con il nodo.
Esegui 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 di nodo
node 1> node 2 Done node 2>
Esci dal contesto del nodo
node 1> exit Done >
Congratulazioni, hai eseguito con successo la tua prima simulazione OTNS!
Hai imparato come installare OTNS e le sue dipendenze. Hai creato OpenThread per OTNS e 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 cos'è OTNS e come puoi utilizzare OTNS per simulare reti OpenThread.
Qual è il prossimo?
Dai un'occhiata ad alcuni di questi codelab ...
- Simulazione di una rete di thread con OpenThread
- Simulazione di una rete di thread utilizzando OpenThread in Docker
- Crea una rete di thread con schede nRF52840 e OpenThread