O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Como testar uma rede Thread com visualização

1. Introdução

5abd22afa2f2ee9a.png.

O que são Thread, OpenThread, OTNS e Silk?

A Thread é um protocolo de rede mesh sem fio de baixo consumo baseado em IP que permite a comunicação segura de dispositivo para dispositivo e de nuvem para dispositivo. As redes Thread podem se adaptar a mudanças de topologia para evitar pontos únicos de falha.

A OpenThread lançada pelo Google é uma implementação de código aberto da Thread. Apesar do tamanho pequeno do código e da presença de memória, o OpenThread é compatível com todos os recursos definidos na Especificação de linha de execução.

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

O Silk é uma plataforma de teste 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 OpenThread para dispositivos reais com o recurso de OTNS ativado
  • Use a interface OTNS-Web para monitorar o status da rede Thread formada ao executar casos de teste de seda.

Este codelab se concentra no uso da seda com OTNS. Outros recursos da seda e do OTNS não são cobertos.

Pré-requisitos

Hardware:

  • 6 placas de desenvolvedor nórdica sem fio nRF52840
  • Seis cabos USB para micro USB para conectar as placas
  • hub USB

Software:

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

Pré-requisitos:

2. Prerequisites

Preencher os Codelabs básicos anteriores

Como verificar os pré-requisitos do pacote

Vamos garantir que todos os pré-requisitos sejam atendidos.

  1. Execute which otns para verificar se o executável otns pode ser pesquisado em $PATH.
  2. Execute which wpantund para verificar se wpantund está disponível.
  3. Verifique se os conjuntos de ferramentas ARM GNU, J-Link e nrfjprog estão todos disponíveis.
  4. Verifique se é possível criar um binário do OpenThread executando make -f examples/Makefile-nrf52840 na pasta openthread.

Observação: consulte as documentações vinculadas para orientações de configuração. O pré-requisito 1 é de Simular redes de linhas de execução usando OTNS e outros são da seçã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 Seda 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 é instalada como parte da seda, 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 SN impresso no ícone ou exibido pelo usbinfo para produtos J-Link.

Os campos LayoutCenter e LayoutRadius na seção [DEFAULT] definem o formato do layout quando os dispositivos são visualizados na IU da Web. Definir esses valores como os 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 uma imagem

Por padrão, os dispositivos OpenThread não emitem mensagens relacionadas a OTNS. Para permitir que os painéis de desenvolvimento emitam mensagens de status para interfaces de registro que são 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 no 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 realizar a atualização, siga as instruções da etapa 4 do codelab Criar uma rede Thread para usar nrfjprog. Depois disso, conecte todas as placas por meio da 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 USB nRF das placas de desenvolvimento nRF52840. Assim, com apenas esses seis cabos, é possível executar a execução do teste. Para evitar problemas, use 12 cabos e conecte-os às duas portas.

5. Como executar o servidor OTNS com o modo real

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

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

Esses argumentos fazem com que os OTNS esperem mensagens gRPC e UDP que descrevam 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 Seda é uma plataforma de teste totalmente automatizada para validar funções, recursos e desempenho do sistema OpenThread com dispositivos reais. As instruções no projeto README abordam como usá-lo.

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

Por exemplo, é possível executar o teste chamado 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 você pode 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 de 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 registros, que é mostrada à direita. Inicialmente, os nós são adicionados, mas nenhuma rede é formada. À medida que o teste avança, os modos e os papéis de cada nó mudam 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 o OTNS.

Você executou um teste de seda usando placas de desenvolvimento atualizadas com firmwares compatíveis com OTNS. Os boards relatam o status em um servidor de seda, que monitora e agrega todos eles e 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

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

Leitura adicional

Acesse openthread.io e Silk para ver vários recursos do OpenThread.

Documentos de referência