1. Introduzione
Che cos'è Thread e OTNS
Thread è un protocollo di rete mesh wireless a basso consumo basato su IP che consente comunicazioni sicure tra dispositivi e cloud. Le reti Thread possono adattarsi alle modifiche della topologia per evitare il single point of failure.
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 Thread.
È possibile utilizzare OpenThread Network Simulator (OTNS) per simulare reti Thread eseguendo nodi OpenThread simulati sulle piattaforme posix. OTNS fornisce un'interfaccia web (OTNS-web) di facile utilizzo per visualizzare e utilizzare le reti Thread simulate.
Obiettivi didattici
- Installare OTNS e le rispettive dipendenze
- Creare OpenThread per OTNS
- Come aggiungere/spostare/eliminare nodi in OTNS-Web
- Utilizzare altre utili funzionalità di OTNS-Web per gestire la simulazione di rete
- Verificare il 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 trattate.
Che cosa ti serve
- Linux x86_64 o Mac OS.
- Git.
- Passa a 1.13 e versioni successive.
- Browser web. OTNS-Web utilizza un browser web per la visualizzazione delle simulazioni.
- Thread Primer. Per capire cosa viene insegnato in questo codelab, devi conoscere i concetti di base di Thread.
2. Installazione
Installa Go
OTNS richiede Go 1.13 o versioni successive per creare.
- Installa Go da https://golang.org/dl/
- Aggiungi
$(go env GOPATH)/bin
(di solito$HOME/go/bin
) a$PATH
:
$ export PATH=$PATH:$(go env GOPATH)/bin
Richiedi codice OTNS
$ git clone https://github.com/openthread/ot-ns.git ./otns $ cd otns
Installa le dipendenze
$ ./script/install-deps grpcwebproxy installed: /usr/local/google/home/simonlin/go/bin/grpcwebproxy
Ti potrebbe essere chiesto di inserire una password per sudo
.
Installare Otns
Installa otns
in $GOPATH/bin
:
$ ./script/install otns installed: /usr/local/google/home/simonlin/go/bin/otns
Verifica che l'app otns
sia installata correttamente
- Esegui
which otns
per verificare se l'eseguibileotns
è disponibile per la ricerca in$PATH.
- Se il comando
otns
non viene trovato, verifica di aver aggiunto$(go env GOPATH)/bin
a$PATH.
3. Creare OpenThread per OTNS
Recupera 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/cmake-build simulation -DOT_OTNS=ON -DOT_SIMULATION_VIRTUAL_TIME=ON -DOT_SIMULATION_VIRTUAL_TIME_UART=ON -DOT_SIMULATION_MAX_NETWORK_SIZE=999
Puoi trovare gli eseguibili OpenThread nella directory build
:
$ ls ~/src/openthread/build/simulation/examples/apps/cli/ ot-cli-ftd ot-cli-mtd ot-cli-radio
Ora è il momento di eseguire OTNS...
4. Esegui OTNS
Corsa di otns
:
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
Una volta avviato correttamente, OTNS accede a una console dell'interfaccia a riga di comando (OTNS-CLI
) e avvia un browser web per la visualizzazione e la gestione della rete (OTNS-Web
):
Se visualizzi solo una pagina vuota per OTNS-Web, è probabile che WebGL non sia attivo nel browser. Visita la paginahttps://superuser.com/a/836833 per scoprire come attivare WebGL.
Nelle sezioni seguenti imparerai a gestire le simulazioni OTNS tramite OTNS-CLI
e OTNS-Web
.
5. Scopri OTNS-CLI e OTNS-web
OTNS-CLI
OTNS-CLI
fornisce un'interfaccia a riga di comando (CLI) per la gestione delle simulazioni OTNS.
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
Puoi digitare i comandi tramite OTNS-CLI
. Per un elenco completo dei comandi, consulta il riferimento per l'interfaccia a riga di comando OTNS. Non preoccuparti, utilizzerai solo pochi di questi comandi in questo codelab.
OTNS-web
OTNS-Web
è lo strumento di visualizzazione e gestione della rete di OTNS. Fornisce una rappresentazione visiva di nodi, messaggi e link della rete Thread simulata. Osserva i vari elementi di OTNS-Web
:
6. Aggiungi nodi
Aggiungi nodi tramite OTNS-CLI
Aggiungi un router nella 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:
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 qualche secondo affinché i nodi vengano uniti in una partizione. Dovresti vedere i nodi in OTNS-WEB
:
Aggiungi nodi per OTNS-Web
Puoi anche aggiungere nodi tramite OTNS-Web
. Fai clic sul pulsante New Router
di Action Bar
. Dovresti vedere un nodo in fase di creazione sopra il pulsante New Router
. Trascina il nodo in modo che sia vicino al leader creato tramite OTNS-CLI
. Tutti i nodi alla fine dovrebbero unirsi in un'unica partizione:
Fai anche 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:
Ora hai creato una rete Thread di una partizione che contiene molti nodi. Nella sezione successiva regoleremo la velocità di simulazione per velocizzare l'esecuzione della simulazione.
7. Regola velocità
Attualmente, la simulazione dovrebbe essere in esecuzione a una velocità pari a 1X
, il che significa che il tempo di simulazione trascorso finora è uguale al tempo effettivo dalla creazione del primo nodo.
Regola la velocità di OTNS-CLI
Puoi regolare la velocità di simulazione tramite OTNS-CLI
.
Imposta la velocità di simulazione su 100X
> speed 100 Done
Dovresti vedere che i nodi inviano messaggi molto più spesso rispetto a prima.
Imposta la velocità di simulazione su MAX
> speed max Done
Ora, OTNS sta facendo il possibile per simulare il più rapidamente possibile, quindi dovresti vedere i nodi che inviano un grande numero di messaggi.
Interrompi simulazione
> speed 0 Done
L'impostazione della velocità di simulazione su 0
mette in pausa la simulazione.
Ripristina la simulazione a velocità normale
> speed 1 Done
L'impostazione della velocità di simulazione su un valore superiore a 0
riprende la simulazione.
Regola la velocità di OTNS-Web
Pulsanti per il controllo della velocità
Trova i pulsanti di controllo della velocità su 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
Puoi velocizzare la simulazione facendo clic sul pulsante finché la velocità non raggiunge MAX
: .
Simulazione rallentata
Puoi rallentare la simulazione facendo clic sul pulsante .
Interrompi simulazione
Fai clic sul pulsante per mettere in pausa la simulazione mentre è in esecuzione. Il pulsante verrà modificato in .
Riprendi la simulazione
Fai clic sul pulsante per riprendere la simulazione quando è in pausa. Il pulsante verrà reimpostato su .
Imposta la velocità di simulazione su 10X
Per risparmiare tempo, usa
OTNS-CLI
per regolare la velocità di simulazione su
10X
in modo da poter osservare i cambiamenti nella topologia nella rete molto più velocemente.
> speed 10 Done
8. Accendere/spegnere la radio
Ora la simulazione dovrebbe contenere 2 router (a forma esagonale) e molti figli e funzionare a una velocità 10X.
Trova il Leader (bordo rosso) corrente dei 2 Router, fai clic con un singolo clic per selezionarlo:
Disattiva segnale cellulare
Fai clic sul pulsante nella barra delle azioni per disattivare la radio del nodo leader:
Il leader non potrà inviare o ricevere messaggi con la radio disattivata.
Attendi circa 12 secondi (120 secondi in tempo simulato) affinché l'altro router diventi il nuovo leader:
La rete Thread si riprende automaticamente da un errore del leader creando una nuova partizione con un nuovo leader. La nuova partizione ha anche un nuovo colore.
Attiva segnale cellulare
Seleziona il leader con la radio spenta. Fai clic sul pulsante su Action Bar
per ripristinare la connettività radio:
Il Leader deve riconnettersi alla rete dopo aver ripristinato la connettività radio.
9. Sposta nodi
OTNS consente agli utenti di spostare facilmente i nodi attraverso OTNS-CLI
o OTNS-Web
.
Sposta nodo tramite OTNS-CLI
Sposta il nodo 5 in una nuova posizione:
> move 5 600 300 Done
Dato che ora il nodo 5 è lontano dall'altro router, dovrebbero perdere la connettività l'uno all'altro e dopo circa 12 secondi (120 secondi in tempo di simulazione) entrambi diventano leader della propria partizione:
Sposta il nodo tramite OTNS-Web
Sposta il nodo 5 nella posizione originale trascinandolo. Le due partizioni devono unirsi di nuovo in un'unica partizione:
10. Elimina nodi
Elimina nodi tramite OTNS-CLI
Elimina il nodo 8:
> del 8 Done
Il nodo 8 dovrebbe scomparire dalla simulazione:
Elimina nodi tramite OTNS-Web
Seleziona il nodo 5 e fai clic sul pulsante in Action Bar
per eliminare il nodo 5:
Node 1
deve diventare leader e Node 7
deve staccarsi perché non può raggiungere nessun router.
Cancella simulazione (elimina tutti i nodi)
Puoi cancellare la simulazione eliminando tutti i nodi tramite OTNS-Web
.
Fai clic sul pulsante in Action Bar.
Tutti i nodi scompaiono contemporaneamente.
Prima di continuare...
Aggiungi personalmente alcuni nodi alla simulazione per continuare con questo tutorial.
11. Contesto del nodo OTNS-CLI
OTNS-CLI
fornisce la modalità contesto dei nodi per interagire facilmente con i nodi e aiutare gli sviluppatori a diagnosticare lo stato di un nodo.
Inserisci la modalità contestuale del nodo
Inserisci il contesto del nodo 1:
> node 1 Done node 1>
Il prompt dell'interfaccia a riga di comando è cambiato in node 1>
, che indica il contesto attuale del nodo. Puoi digitare comandi dell'interfaccia a riga di comando OpenThread da eseguire sul nodo come se stessi 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 >
12. Complimenti
Congratulazioni, hai eseguito correttamente 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 le istanze di simulazione OpenThread. Hai imparato a manipolare la simulazione in vari modi utilizzando OTNS-CLI
e OTNS-Web
.
Ora sai cos'è OTNS e come puoi utilizzarlo per simulare le reti OpenThread.
Passaggi successivi
Dai un'occhiata ad alcuni di questi codelab...
- Simulare una rete Thread con OpenThread
- Simulare una rete Thread utilizzando OpenThread in Docker
- Crea una rete Thread con schede nRF52840 e OpenThread