Test di una rete di thread con visualizzazione

1. Introduzione

5abd22afa2f2ee9a.png

Che cos'è Thread, OpenThread, OTNS e Silk?

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.

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

Cosa scoprirai

  • Framework di verifica delle funzionalità di OpenThread: Silk
  • Creare OpenThread per dispositivi reali con la funzionalità OTNS attivata
  • Usa l'interfaccia di OTNS-Web per monitorare lo stato della rete Thread formata dagli scenari di test Silk

Questo codelab è dedicato all'utilizzo di Silk con OTNS. Altre funzionalità di Silk e OTNS non sono coperte.

Che cosa ti serve

Hardware:

  • 6 schede per sviluppatori nRF52840 Nordic Semiconductor
  • 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

Verifica dei prerequisiti del pacchetto

Ci assicuriamo che tutti i prerequisiti siano soddisfatti.

  1. Esegui which otns per controllare 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 toolchain RMU ARM, J-Link e nrfjprog siano tutti disponibili.
  4. Assicurati che sia possibile creare un file binario OpenThread eseguendo make -f examples/Makefile-nrf52840 nella cartella openthread.

Nota: consulta la documentazione collegata per istruzioni sulla configurazione. Il prerequisito n. 1 proviene da Simulate Thread Networks using OTNS (Simula reti di thread mediante OTNS) mentre altri provengono da Build a Thread network with nRF52840 boards and OpenThread.

3. Configurazione seta

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

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

Definisci file di configurazione hardware

Per consentire a Silk di raccogliere le risorse hardware di test disponibili collegate al tuo computer, 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 chiamatousbinfo viene 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 riportati può essere un buon punto di partenza.

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

4. Compila OpenThread con OTNS abilitato

Creazione di immagini e lampeggianti

Per impostazione predefinita, i dispositivi OpenThread non emettono messaggi relativi a OTNS. Per consentire alle schede di sviluppo di emettere messaggi di stato alle interfacce log essenziali per la visualizzazione OTNS, esegui il comando seguente nella directory di origine OpenThread per creare un'immagine FTD e convertila 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 riportate nel passaggio 4 della sezione Creare un codelab sulla rete Thread per utilizzare nrfjprog. Successivamente, 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 nRF52840 dev. Di conseguenza, con questi sei cavi è possibile eseguire il test. Per risolvere il problema, utilizza 12 cavi e collegati a entrambe le porte.

5. Esecuzione del 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 reale, eseguilo con:

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

Questi argomenti indicano a OTNS di aspettarsi che i messaggi gRPC e UDP 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 convalidare le funzioni, le funzionalità e le prestazioni del sistema OpenThread con dispositivi reali. Le istruzioni nel progetto README illustrano come utilizzarlo.

Il file silk_run_test.py che si trova all'indirizzo silk/unit_tests ti offre un vantaggio. Silk fornisce il supporto OTNS durante l'esecuzione di uno scenario di test. Il servizio in modalità reale OTNS è già in esecuzione a livello locale, pertanto 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, una può eseguire il test denominatoot_test_form_network.py usando le seguenti modifiche asilk_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.

test_prova_da_silk

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à visualizzata nell'interfaccia utente web di OTNS.

ee443b66e0a6620b.png

L'angolo in alto a sinistra mostra le statistiche di visualizzazione, la versione OT e il titolo del test. L'angolo in basso a sinistra offre i controlli della finestra del log, che viene mostrata a destra. Inizialmente vengono aggiunti nodi, ma non è presente 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. Complimenti

Congratulazioni, hai eseguito correttamente un test della seta sui dispositivi Thread fisici e lo hai visualizzato utilizzando OTNS.

Hai eseguito un test della seta utilizzando schede di sviluppo lampeggiate con firmware che supportano OTNS. Il consiglio di amministrazione segnala il proprio stato a un server Silk, che lo monitora e li aggrega e lo 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 nel pacchetto Silk.

Per approfondire

Dai un'occhiata a openthread.io e Silk per consultare una serie di risorse di OpenThread.

Documentazione di riferimento