Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Test di una rete di thread con visualizzazione

5abd22afa2f2ee9a.png

Cosa sono Thread, OpenThread, OTNS e Silk?

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.

Silk è una piattaforma di test completamente automatizzata per la convalida di funzioni, caratteristiche e prestazioni del sistema OpenThread con dispositivi reali.

Cosa imparerai

  • Framework di verifica delle funzionalità di OpenThread: Silk
  • Crea OpenThread per dispositivi reali con la funzione OTNS abilitata
  • Usa l'interfaccia OTNS-Web per monitorare lo stato della rete Thread creata eseguendo i casi di test Silk

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

Di cosa avrai bisogno

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 1.11+ .
  • Programma di navigazione in rete. OTNS-Web utilizza un browser Web per visualizzare le simulazioni.

Prerequisiti:

Completare i Codelab di base precedenti

Verifica dei prerequisiti del pacchetto

Assicuriamoci che tutti i prerequisiti siano soddisfatti.

  1. Esegui which otns per verificare se l'eseguibile otns è ricercabile 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.
  4. Assicurati che possa essere creato un binario OpenThread, eseguendo make -f examples/Makefile-nrf52840 nella cartella openthread .

Nota: fare riferimento alla documentazione collegata per la guida alla configurazione. Il prerequisito n. 1 proviene da Simulate Thread Networks utilizzando OTNS e altri provengono da Build a Thread network con schede nRF52840 e OpenThread .

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

$ 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 prova 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 sull'interfaccia utente web. Impostarli sui valori qui presentati può essere un buon punto di partenza.

Successivamente, definisce una sezione per ciascun dispositivo di test e fornisce le informazioni hardware rilevanti.

Immagine dell'edificio e lampeggiante

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

$ cd openthread
$ make -f examples/Makefile-nrf52840 clean
$ make -f examples/Makefile-nrf52840 COMMISSIONER=1 JOINER=1 USB=1 OTNS=1
$ cd output/nrf52840/bin
$ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex

Per eseguire il nrfjprog delle schede, seguire le istruzioni nel passaggio 4 del Codelab di rete Build a 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 di sviluppo nRF52840. Quindi con solo questi 6 cavi è possibile eseguire l'esecuzione del test. Per evitare problemi, usa 12 cavi e connettiti a entrambe le porte.

L'esecuzione di OTNS con parametri predefiniti consente all'utente di simulare una rete Thread. Per usarlo 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 messaggi gRPC e UDP che descrivono come dovrebbe essere visualizzata la rete Thread, invece di eseguire più processi ot-cli per simulare la rete. Il tuo browser dovrebbe aprire automaticamente la pagina di visualizzazione con una tela vuota.

4dd5b41bf7e71334.png

Silk è una piattaforma di test completamente automatizzata per la convalida di funzioni, caratteristiche e prestazioni del sistema OpenThread con dispositivi reali. Le istruzioni nel progetto README spiegano come usarlo.

Il file silk_run_test.py situato in silk/unit_tests ti dà un vantaggio. Silk fornisce supporto OTNS durante l'esecuzione di un test case. Poiché il servizio OTNS in modalità reale è già in esecuzione localmente, è sufficiente modificare il file silk_run_test.py con le posizioni desiderate per un file di registro di output, script di test di input e file hwconfig.ini . L'argomento -s localhost dice a Silk di inviare messaggi OTNS a localhost .

Ad esempio, è possibile 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 che Silk usa per l'output del log e il file di configurazione, ma puoi usare qualsiasi percorso.

silk_run_test.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 sull'interfaccia utente web 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 ha i controlli della finestra di registro, che viene mostrata a destra. Inizialmente, i nodi vengono aggiunti ma non viene creata alcuna rete. Man mano che il test procede, le modalità e i ruoli di ciascun nodo cambiano e vengono creati i collegamenti.

5c38e2c72519e620.png

Congratulazioni, hai eseguito con successo un test Silk su dispositivi Thread fisici e l'hai visualizzato utilizzando OTNS!

Hai eseguito un test Silk utilizzando schede di sviluppo su cui sono installati firmware con supporto OTNS. Le schede segnalano il loro stato a un server Silk, che li monitora e li aggrega tutti e li invia al servizio OTNS insieme ad altre informazioni di test. OTNS in esecuzione in modalità reale visualizza la rete Thread sull'interfaccia web.

Qual è il prossimo?

Prova a eseguire altri casi di test OpenThread inclusi nel pacchetto Silk.

Ulteriore lettura

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

Documenti di riferimento