Test di una rete Thread con visualizzazione

1. Introduzione

5abd22afa2f2ee9a.png

Che cosa sono Thread, OpenThread, OTNS e Silk?

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.

Silk è una piattaforma di test completamente automatica per la convalida di funzionalità, funzionalità e prestazioni del sistema OpenThread con dispositivi reali.

Obiettivi didattici

  • Framework di verifica della funzionalità di OpenThread: Silk
  • Creazione di OpenThread per dispositivi reali con la funzionalità OTNS abilitata
  • Utilizza l'interfaccia OTNS-Web per monitorare lo stato della rete Thread formata eseguendo scenari di test Silk

Questo codelab è incentrato sull'uso di Silk con OTNS. Altre caratteristiche di Silk e OTNS non sono coperte.

Che cosa ti serve

Hardware:

  • 6 schede di sviluppo Nordic Semiconductor nRF52840
  • 6 cavi da USB a micro USB per collegare le schede
  • hub USB

Software:

  • Linux x86_64.
  • Git.
  • Vai a 1.11+.
  • Browser web. OTNS-Web utilizza un browser web per visualizzare le simulazioni.

Prerequisiti:

2. Prerequisiti

Completa i codelab di base precedenti

Verifica dei prerequisiti del pacchetto

Verifichiamo che tutti i prerequisiti siano soddisfatti.

  1. Esegui which otns per verificare se l'eseguibile otns è disponibile per la ricerca in $PATH.
  2. Esegui which wpantund per assicurarti che wpantund sia disponibile.
  3. Assicurati che i pacchetti ARM GNU toolchain, J-Link e nrfjprog siano tutti disponibili.

Nota: consulta la documentazione collegata per indicazioni sulla configurazione. Il prerequisito 1 è Simulare reti Thread utilizzando OTNS, mentre altri appartengono a Creare una rete Thread con schede nRF52840 e OpenThread.

3. Configurazione di seta

Per clonare Silk e configurare l'ambiente, esegui i comandi seguenti nella directory di origine:

$ git clone https://github.com/openthread/silk.git
$ cd silk
$ ./bootstrap.sh
$ sudo make install-cluster

Definisci il file di configurazione hardware

Per consentire a Silk di raccogliere le risorse hardware di test disponibili collegate alla tua macchina, definisci un file hwconfig.ini nel seguente formato:

[DEFAULT]
ClusterID: 0
LayoutCenter: 300, 300
LayoutRadius: 100

[Dev-8A7D]
HwModel: Nrf52840
HwRev: 1.0
InterfaceSerialNumber: E1A5012E8A7D
USBInterfaceNumber: 1
DutSerial: 683536778

Uno strumento chiamato usbinfo è installato come parte di Silk, che può essere utilizzato per scoprire il numero di serie dell'interfaccia e il numero dell'interfaccia USB. DutSerial è il numero SN stampato sul chip o visualizzato da usbinfo per i prodotti J-Link.

I campi LayoutCenter e LayoutRadius nella sezione [DEFAULT] definiscono la forma del layout quando i dispositivi vengono visualizzati nell'interfaccia utente web. Impostare i valori qui presentati può essere un buon punto di partenza.

Successivamente, definisce una sezione per ogni dispositivo di test e fornisce le informazioni hardware pertinenti.

4. Compila OpenThread con OTNS abilitato

Immagine dell'edificio e lampeggiante

Per impostazione predefinita, i dispositivi OpenThread non emettono messaggi relativi a OTNS. Per consentire alle bacheche di emissione di emettere messaggi di stato per registrare le interfacce essenziali per la visualizzazione OTNS, esegui il comando seguente nella directory di origine di OpenThread per creare un'immagine FTD e convertirla in formato esadecimale.

$ git clone https://github.com/openthread/ot-nrf528xx.git --recursive
$ cd ot-nrf528xx
$ ./script/bootstrap
$ ./script/build nrf52840 USB_trans -DOT_COMMISSIONER=ON -DOT_JOINER=ON -DOT_OTNS=ON
$ cd ./build/bin
$ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex

Per eseguire il flashing delle lavagne, segui le istruzioni del passaggio 4 del codelab sulla creazione di una rete Thread per utilizzare nrfjprog. Dopodiché, collega tutte le schede tramite la porta USB nRF alla macchina host. Lo stesso set di cavi da USB a micro USB può essere scollegato dalle porte J-Link e collegato alle porte USB nRF delle schede di sviluppo nRF52840. Pertanto, con questi 6 cavi è possibile eseguire l'esecuzione del test. Per evitare problemi, utilizza 12 cavi e collegali a entrambe le porte.

5. Esecuzione di un server OTNS in modalità reale

L'esecuzione di OTNS con parametri predefiniti consente all'utente di simulare una rete Thread. Per utilizzarlo come strumento di visualizzazione per una rete fisica effettiva, eseguilo con:

otns -raw -real -ot-cli otns-silk-proxy

Questi argomenti indicano a OTNS di aspettarsi messaggi gRPC e UDP che descrivano la modalità di visualizzazione della rete Thread, anziché eseguire più processi ot-cli per simulare la rete. Il browser dovrebbe aprire automaticamente la pagina di visualizzazione con una tela vuota.

4dd5b41bf7e71334.png

6. Esecuzione di scenari di test Silk con supporto OTNS

Silk è una piattaforma di test completamente automatica per la convalida di funzionalità, funzionalità e prestazioni del sistema OpenThread con dispositivi reali. Le istruzioni nel progetto README illustra come utilizzarle.

Il file silk_run_test.py che si trova all'indirizzo silk/unit_tests ti consente di iniziare. Silk fornisce supporto OTNS quando si esegue uno scenario di test. Poiché il servizio in modalità reale OTNS è già in esecuzione in locale, dobbiamo semplicemente modificare il file silk_run_test.py con le posizioni desiderate per un file di log di output, script di test di input e file hwconfig.ini. L'argomento -s localhost indica a Silk di inviare messaggi OTNS a localhost.

Ad esempio, si può eseguire il test denominato ot_test_form_network.py utilizzando le seguenti modifiche al file silk_run_test.py. /opt/openthread_test/ è il percorso predefinito utilizzato da Silk per l'output del log e il file di configurazione, ma puoi utilizzare qualsiasi percorso.

seta_test_corsa_seta.py

import datetime
import os

from silk.tests import silk_run

RESULT_LOG_PATH = '/opt/openthread_test/results/' + 'silk_run_' + \
                  datetime.datetime.today().strftime('%m-%d') + '/'
CONFIG_PATH = '/opt/openthread_test/'

os.chdir('~/src/silk/silk/tests/')

timestamp = datetime.datetime.today().strftime('%m-%d-%H:%M')

run_log_path = RESULT_LOG_PATH + 'test_run_on_' + timestamp + '/'

argv = [
    'tests/silk_run.py',
    '-v2',
    '-c', CONFIG_PATH + 'hwconfig.ini',
    '-d', run_log_path,
    '-s', 'localhost',
    'ot_test_form_network.py'
]

silk_run.SilkRunner(argv=argv)

La visualizzazione della topologia della rete formata verrà mostrata nell'UI web OTNS.

ee443b66e0a6620b.png

L'angolo in alto a sinistra mostra le statistiche di visualizzazione, la versione OT e il titolo del test. Nell'angolo in basso a sinistra sono presenti i controlli della finestra di log, che viene mostrata a destra. Inizialmente vengono aggiunti nodi, ma non viene creata alcuna rete. Man mano che il test avanza, le modalità e i ruoli di ciascun nodo cambiano e vengono creati i link.

5c38e2c72519e620.png

7. Congratulazioni

Congratulazioni, hai eseguito correttamente un test Silk su dispositivi Thread fisici e lo hai visualizzato utilizzando OTNS.

Hai eseguito un test Silk utilizzando schede di sviluppo con flashing dei firmware che supportano OTNS. Le bacheche segnalano il loro stato a un server Silk, che le monitora e le aggrega e le invia al servizio OTNS insieme ad altre informazioni di test. OTNS in esecuzione in modalità reale mostra la rete Thread sull'interfaccia web.

Passaggi successivi

Prova a eseguire altri scenari di test OpenThread inclusi nella confezione Silk.

Per approfondire

Dai un'occhiata a openthread.io e Silk per una varietà di risorse OpenThread.

Documentazione di riferimento