Como testar uma rede Thread com visualização

1. Introdução

5abd22afa2f2ee9a.png

O que é Thread, OpenThread, OTNS e Silk?

O Thread é um protocolo de rede mesh sem fio de baixo consumo e baseado em IP que permite a comunicação segura entre dispositivos e na nuvem. As redes de linhas de execução podem se adaptar às mudanças de topologia para evitar pontos únicos de falha.

O OpenThread lançado pelo Google é uma implementação de código aberto do Thread. Apesar do tamanho reduzido do código e da memória, o OpenThread é compatível com todos os recursos definidos na Especificação do Thread.

O simulador de rede do OpenThread (OTNS, na sigla em inglês) pode ser usado para simular redes do Thread executando nós simulados do OpenThread em plataformas posix. O OTNS oferece uma interface da Web fácil de usar (OTNS-Web) para visualizar e operar redes Thread simuladas.

O Silk é uma plataforma de testes totalmente automatizada para validar funções, recursos e desempenho do sistema OpenThread com dispositivos reais.

O que você vai aprender

  • Framework de verificação de funcionalidade do OpenThread: seda
  • Criar o OpenThread para dispositivos reais com o recurso de OTNS ativado
  • Use a interface OTNS da Web para monitorar o status da rede Thread formada pela execução de casos de teste de seda

O foco deste codelab é o uso da seda com OTNS. Outros recursos de seda e OTNS não são cobertos.

Pré-requisitos

Hardware:

  • 6 placas de desenvolvedor Nordic Semiconductor nRF52840
  • Seis cabos USB para micro USB para conectar as placas
  • hub USB

Software:

  • Linux x86_64
  • Git (em inglês).
  • Go 1.11+
  • Navegador da Web. O OTNS-Web usa um navegador da Web para exibir simulações.

Pré-requisitos:

2. Pré-requisitos

Concluir os codelabs básicos anteriores

Como verificar os pré-requisitos do pacote

Verifique se todos os pré-requisitos foram atendidos.

  1. Execute which otns para verificar se o executável otns é pesquisável em $PATH.
  2. Execute which wpantund para garantir que wpantund esteja disponível.
  3. Verifique se os conjuntos de ferramentas ARM GNU, J-Link e nrfjprog estão disponíveis.

Observação: consulte as documentações vinculadas para orientações de configuração. O pré-requisito no 1 é Simular redes Thread usando OTNS e outros são Criar uma rede Thread com placas nRF52840 e OpenThread.

3. Configuração da seda

Para clonar a seda e configurar o ambiente, execute os seguintes comandos no diretório de origem:

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

Definir arquivo de configuração de hardware

Para permitir que a Silk colete os recursos de hardware de teste disponíveis conectados à máquina, defina um arquivo hwconfig.ini no seguinte formato:

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

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

Uma ferramenta chamada usbinfo está instalada como parte da Silk, que pode ser usada para descobrir o número de série da interface e o número da interface USB. DutSerial é o número do SN impresso no chip ou exibido pelo usbinfo para produtos do J-Link.

Os campos LayoutCenter e LayoutRadius na seção [DEFAULT] definem a forma do layout quando os dispositivos são visualizados na IU da Web. Definir esses valores para os valores apresentados aqui pode ser um bom ponto de partida.

Em seguida, ele define uma seção para cada dispositivo de teste e fornece as informações de hardware relevantes.

4. Compilar OpenThread com OTNS ativado

Como criar e atualizar imagens

Por padrão, os dispositivos OpenThread não emitem mensagens relacionadas a OTNS. Para permitir que os painéis dev emitem mensagens de status para interfaces de registro essenciais para a visualização OTNS, execute o seguinte comando no diretório de origem do OpenThread para criar uma imagem FTD e convertê-la para o formato hexadecimal.

$ 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

Para atualizar as placas, siga as instruções da etapa 4 do Codelab de como criar uma rede Thread para usar nrfjprog. Depois disso, conecte todas as placas pela porta USB nRF à máquina host. O mesmo conjunto de cabos USB para micro USB pode ser desconectado das portas J-Link e conectado às portas nRF USB das placas de desenvolvimento nRF52840. Assim, com apenas esses seis cabos, a execução do teste pode ser realizada. Para evitar problemas, use 12 cabos e conecte as duas portas.

5. Como executar o servidor OTNS com o modo real

Executar o OTNS com parâmetros padrão permite que o usuário simule uma rede Thread. Para usá-lo como uma ferramenta de visualização em uma rede física real, execute-o com:

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

Esses argumentos informam ao OTNS esperar mensagens gRPC e UDP que descrevem como a rede Thread deve ser visualizada, em vez de executar vários processos ot-cli para simular a rede. O navegador abrirá automaticamente a página de visualização com uma tela vazia.

4dd5b41bf7e71334.png

6. Como executar casos de teste de seda compatíveis com OTNS

A Silk é uma plataforma de teste totalmente automatizada para validar funções, recursos e o desempenho do sistema OpenThread com dispositivos reais. As instruções no README do projeto abrangem como usá-lo.

O arquivo silk_run_test.py localizado em silk/unit_tests oferece uma vantagem. A seda oferece suporte a OTNS ao executar um caso de teste. Como o serviço OTNS em modo real já está em execução localmente, basta modificar o arquivo silk_run_test.py com os locais desejados para um arquivo de registro de saída, scripts de teste de entrada e arquivo hwconfig.ini. O argumento -s localhost diz à Silk para enviar mensagens OTNS para localhost.

Por exemplo, é possível executar o teste com o nome ot_test_form_network.py usando as seguintes modificações no arquivo silk_run_test.py. /opt/openthread_test/ é o caminho padrão que a Silk usa para a saída de registro e o arquivo de configuração, mas é possível usar qualquer caminho.

silk_run_test.py (em inglês)

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)

A visualização da topologia da rede formada será exibida na IU da Web do OTNS.

ee443b66e0a6620b.png

O canto superior esquerdo mostra as estatísticas de visualização, a versão do OT e o título do teste. O canto inferior esquerdo tem controles da janela de registro, que é exibida à direita. Inicialmente, os nós são adicionados, mas nenhuma rede é formada. À medida que o teste avança, os modos e papéis de cada nó são alterados e os links são formados.

5c38e2c72519e620.png

7. Parabéns

Parabéns! Você executou um teste de seda em dispositivos Thread físicos e o visualizou usando OTNS.

Você executou um teste de seda usando placas de desenvolvimento que são atualizadas com firmwares com suporte a OTNS. Os quadros informam o status para um servidor de seda, que monitora e agrega todos eles, e os envia para o serviço OTNS junto com outras informações de teste. O OTNS em execução no modo real visualiza a rede Thread na interface da Web.

A seguir

Execute outros casos de teste do OpenThread incluídos no pacote Silk.

Leia mais

Confira openthread.io e Silk para conhecer diversos recursos do OpenThread.

Documentos de referência