1. Introduzione
Che cosa sono Thread e OTNS
Thread è un protocollo di rete mesh wireless a basso consumo basato su IP che consente comunicazioni sicure tra dispositivi. Le reti Thread possono adattarsi ai cambiamenti di topologia per evitare single point of failure.
OpenThread rilasciato da Google è un'implementazione open source di Thread. Nonostante le dimensioni ridotte del codice e l'impatto della memoria, OpenThread supporta tutte le funzionalità definite nella specifica dei thread.
Il Simulatore di rete OpenThread (OTNS) può essere utilizzato per simulare reti Thread eseguendo nodi OpenThread simulati su piattaforme posix. OTNS offre un'interfaccia web (OTNS-Web) facile da usare per visualizzare e utilizzare le reti Thread simulate.
Obiettivi didattici
- Installa OTNS e le sue dipendenze
- Creazione di OpenThread per OTNS
- Come aggiungere/spostare/eliminare i nodi in OTNS-Web
- Utilizza le altre utili funzionalità di OTNS-Web per gestire la simulazione della rete
- Verificare il mancato single-point-of-failing 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.13+.
- Browser web. OTNS-Web utilizza un browser web per visualizzare le simulazioni.
- Thread Primer: Dovrai conoscere i concetti di base di Thread per capire cosa insegna in questo codelab.
2. Installazione
Installa Go
La build di OTNS richiede Go 1.13+.
- 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
Ottieni il 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
Verifichiamo se l'app otns
è 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. Creazione di OpenThread per OTNS
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/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
Esegui otns
:
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
Una volta avviato, OTNS accederà a una console dell'interfaccia a riga di comando (OTNS-CLI
) e avvierà un browser web per la visualizzazione e la gestione della rete (OTNS-Web
):
Se vedi una pagina vuota solo per OTNS-Web, è probabile che WebGL non sia abilitato nel tuo browser. Fai riferimento alla paginahttps://superuser.com/a/836833 su 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
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/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
Puoi digitare i comandi tramite OTNS-CLI
. Per un elenco completo dei comandi, consulta la documentazione di riferimento sull'interfaccia a riga di comando OTNS. 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 link della rete Thread simulata. Prendi nota dei vari elementi di OTNS-Web
:
6. Aggiungi nodi
Aggiungi nodi tramite OTNS-CLI
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 parte da 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 che i nodi vengano uniti in una partizione. Dovresti vedere i nodi in OTNS-WEB
:
Aggiungi nodi entro il giorno OTNS-Web
Puoi anche aggiungere nodi tramite OTNS-Web
. Fai clic sul pulsante New Router
di Action Bar
. Dovresti vedere un nodo creato subito sopra il pulsante New Router
. Trascina il nodo in modo che si trovi vicino al leader creato tramite OTNS-CLI
. Tutti i nodi alla fine dovrebbero essere uniti in un'unica partizione:
Fai clic anche 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 Thread:
Ora hai creato una rete Thread di una partizione che contiene molti nodi. Nella sezione successiva, modificheremo la velocità di simulazione per velocizzare la simulazione.
7. Regola velocità
Attualmente, la simulazione deve essere eseguita alla velocità 1X
, il che significa che il tempo simulato trascorso finora corrisponde all'ora effettiva da quando abbiamo creato il primo nodo.
Regola la velocità con 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 con maggiore frequenza rispetto a prima.
Imposta la velocità di simulazione su MAX
> speed max Done
Ora, OTNS cerca di simulare il più velocemente possibile, quindi dovresti vedere i nodi che inviano un numero elevato di messaggi.
Sospendi simulazione
> speed 0 Done
Se imposti la velocità di simulazione su 0
, la simulazione viene messa in pausa.
Ripristina simulazione a velocità normale
> speed 1 Done
L'impostazione della velocità di simulazione per un valore superiore a 0
riprende la simulazione.
Regola la velocità con OTNS-Web
Pulsanti del controllo di velocità
Trova i pulsanti di controllo della velocità su Action Bar
. I pulsanti mostrano la velocità di simulazione attuale e possono essere utilizzati per regolare la velocità di simulazione e mettere in pausa/riprendere la simulazione.
Accelera la simulazione
Per velocizzare la simulazione, fai clic sul pulsante finché la velocità non raggiunge MAX
: .
Rallentamento simulazione
Puoi rallentare la simulazione facendo clic sul pulsante .
Sospendi simulazione
Fai clic sul pulsante per mettere in pausa la simulazione quando è in esecuzione. Il pulsante diventerà .
Riprendi la simulazione
Fai clic sul pulsante per riprendere la simulazione quando è in pausa. Il pulsante verrà modificato di nuovo in .
Imposta la velocità di simulazione su 10X
Per risparmiare tempo, utilizza
OTNS-CLI
per regolare la velocità di simulazione su
10X
in modo da poter osservare molto più velocemente i cambiamenti nella topologia della rete.
> speed 10 Done
8. Attiva/Disattiva la radio
Ora, la simulazione dovrebbe contenere 2 router (forma esagonale) e molti figli ed essere eseguita a una velocità 10X.
Trova l'attuale leader (bordo rosso) dei due router, fai 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 fase di simulazione) affinché l'altro router diventi il nuovo leader:
La rete Thread recupera automaticamente dagli errori di Leader formando una nuova partizione con un nuovo leader. La nuova partizione ha anche un nuovo colore di partizione.
Attiva segnale cellulare
Seleziona il leader la cui radio è stata disattivata. Fai clic sul pulsante su Action Bar
per ripristinare la connettività radio:
Il leader dovrebbe ricollegarsi alla rete dopo il ripristino della connettività radio.
9. Spostamento nodi
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 connettività tra loro e, dopo circa 12s (120s in tempo di simulazione), entrambi diventano leader della propria partizione:
Sposta il nodo tramite OTNS-Web
Riporta il nodo 5 nella posizione originale trascinandolo. Le due partizioni devono essere unite nuovamente in un'unica partizione:
10. Elimina nodi
Elimina nodi tramite OTNS-CLI
Elimina 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 su Action Bar
per eliminare il nodo 5:
Node 1
dovrebbe diventare leader e Node 7
dovrebbe disconnettersi perché non può raggiungere alcun router.
Cancella la simulazione (elimina tutti i nodi)
Puoi cancellare la simulazione eliminando tutti i nodi tramite OTNS-Web
.
Fai clic sul pulsante su Action Bar.
Tutti i nodi scompariranno contemporaneamente.
Prima di continuare...
Aggiungi alcuni nodi alla simulazione in modo da poter continuare nel tutorial.
11. Contesto del nodo OTNS-CLI
OTNS-CLI
fornisce la modalità contesto del nodo per semplificare l'interazione con i nodi al fine di aiutare gli sviluppatori a diagnosticare lo stato di un nodo.
Entra in modalità contesto nodo
Inserisci il contesto del nodo 1:
> node 1 Done node 1>
La richiesta dell'interfaccia a riga di comando è stata modificata in node 1>
e indica il contesto del nodo attuale. Puoi digitare i comandi dell'interfaccia a riga di comando di OpenThread da eseguire sul nodo come se interagissi direttamente con il nodo.
Eseguire 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 nodo
node 1> node 2 Done node 2>
Esci dal contesto del nodo
node 1> exit Done >
12. Congratulazioni
Complimenti, hai eseguito con successo 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 sia su OTNS-CLI
che su OTNS-Web
.
Ora sai cos'è OTNS e come utilizzare OTNS per simulare reti OpenThread.
Passaggi successivi
Dai un'occhiata ad alcuni di questi codelab...
- Simulare una rete Thread con OpenThread
- Simulazione di una rete Thread mediante OpenThread in Docker
- Crea una rete Thread con schede nRF52840 e OpenThread