Тестирование сети потоков с помощью визуализации

1. Введение

5abd22afa2f2ee9a.png

Что такое Thread, OpenThread, OTNS и Silk?

Thread — это протокол беспроводной ячеистой сети с низким энергопотреблением на основе IP, который обеспечивает безопасную связь между устройствами и между устройствами и облаком. Сети потоков могут адаптироваться к изменениям топологии, чтобы избежать единой точки отказа.

OpenThread , выпущенный Google, представляет собой реализацию Thread с открытым исходным кодом. Несмотря на небольшой размер кода и объем памяти, OpenThread поддерживает все функции, определенные в спецификации потока .

Симулятор сети OpenThread (OTNS) можно использовать для моделирования сетей потоков путем запуска имитируемых узлов OpenThread на платформах posix. OTNS предоставляет простой в использовании веб-интерфейс (OTNS-Web) для визуализации и управления смоделированными сетями потоков.

Silk — это полностью автоматизированная тестовая платформа для проверки функций, функций и производительности системы OpenThread на реальных устройствах.

Что вы узнаете

  • Платформа проверки функциональности OpenThread: Silk
  • Создайте OpenThread для реальных устройств с включенной функцией OTNS.
  • Используйте веб-интерфейс OTNS для мониторинга состояния сети Thread, сформированной путем запуска тестовых примеров Silk.

Эта лаборатория ориентирована на использование Silk с OTNS. Другие функции Silk и OTNS не рассматриваются.

Что вам понадобится

Аппаратное обеспечение:

  • 6 плат разработки Nordic Semiconductor nRF52840
  • 6 кабелей USB-Micro-USB для подключения плат.
  • USB-концентратор

Программное обеспечение:

  • Линукс х86_64.
  • Гит .
  • Иди 1.11+ .
  • Веб-браузер. OTNS-Web использует веб-браузер для отображения моделирования.

Предпосылки:

2. Предварительные условия

Завершите предыдущие базовые Codelabs.

Проверка предварительных условий пакета

Давайте убедимся, что все предпосылки соблюдены.

  1. Запустите which otns чтобы проверить, доступен ли поиск исполняемого файла otns в $PATH .
  2. Запустите which wpantund чтобы убедиться, что wpantund доступен.
  3. Убедитесь, что доступны пакеты инструментов ARM GNU, J-Link и nrfjprog .

Примечание. Инструкции по настройке см. в связанной документации. Предварительное условие № 1 — из раздела «Моделирование сетей потоков с использованием OTNS» , а другие — из раздела «Создание сети потоков с платами nRF52840 и OpenThread» .

3. Настройка Шелка

Чтобы клонировать Silk и настроить среду, выполните следующие команды в исходном каталоге:

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

Определить файл конфигурации оборудования

Чтобы позволить Silk собирать доступные тестовые аппаратные ресурсы, подключенные к вашему компьютеру, определите файл hwconfig.ini в следующем формате:

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

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

Инструмент под названием usbinfo устанавливается как часть Silk, и его можно использовать для определения серийного номера интерфейса и номера интерфейса USB. DutSerial — это серийный номер, напечатанный на чипе или отображаемый usbinfo для продуктов J-Link.

Поля LayoutCenter и LayoutRadius в разделе [DEFAULT] определяют форму макета при визуализации устройств в веб-интерфейсе. Установка их значений, представленных здесь, может стать хорошей отправной точкой.

После этого он определяет раздел для каждого тестового устройства и предоставляет соответствующую информацию об оборудовании.

4. Скомпилируйте OpenThread с включенным OTNS.

Сборка образа и прошивка

По умолчанию устройства OpenThread не отправляют сообщения, связанные с OTNS. Чтобы позволить платам разработки отправлять сообщения о состоянии в интерфейсы журналов, которые необходимы для визуализации OTNS, выполните следующую команду в исходном каталоге OpenThread, чтобы создать образ FTD и преобразовать его в шестнадцатеричный формат.

$ 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

Чтобы прошить платы, следуйте инструкциям в шаге 4 Codelab Build a Thread network, чтобы использовать nrfjprog . После этого подключите все платы через USB-порт nRF к хост-машине. Тот же набор кабелей USB-Micro-USB можно отсоединить от портов J-Link и подключить к USB-портам nRF на платах разработки nRF52840. Таким образом, можно провести тестирование только с помощью этих 6 кабелей. Чтобы избежать хлопот, используйте 12 кабелей и подключайтесь к обоим портам.

5. Запуск OTNS-сервера в реальном режиме.

Запуск OTNS с параметрами по умолчанию позволяет пользователю моделировать сеть Thread. Чтобы использовать его в качестве инструмента визуализации реальной физической сети, запустите его с помощью:

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

Эти аргументы сообщают OTNS ожидать сообщений gRPC и UDP, описывающих, как следует визуализировать сеть потоков, вместо запуска нескольких процессов ot-cli для моделирования сети. Ваш браузер должен автоматически открыть страницу визуализации с пустым холстом.

4dd5b41bf7e71334.png

6. Запуск тестовых случаев Silk с поддержкой OTNS

Silk — это полностью автоматизированная тестовая платформа для проверки функций, возможностей и производительности системы OpenThread на реальных устройствах. Инструкции в README проекта описывают, как его использовать.

Файл silk_run_test.py , расположенный по адресу silk/unit_tests дает вам преимущество. Silk обеспечивает поддержку OTNS при запуске тестового примера. Поскольку служба реального режима OTNS уже работает локально, нам просто нужно изменить файл silk_run_test.py указав нужные местоположения для выходного файла журнала, входных тестовых сценариев и файла hwconfig.ini . Аргумент -s localhost сообщает Silk отправлять сообщения OTNS на localhost .

Например, можно запустить тест с именем ot_test_form_network.py используя следующие изменения в файле silk_run_test.py . /opt/openthread_test/ — это путь по умолчанию, который Silk использует для вывода журнала и файла конфигурации, но вы можете использовать любой путь.

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)

Визуализация топологии сформированной сети отобразится в веб-интерфейсе OTNS.

ee443b66e0a6620b.png

В верхнем левом углу отображается статистика визуализации, версия OT и название теста. В левом нижнем углу расположены элементы управления окном журнала, которое показано справа. Первоначально узлы добавляются, но сеть не формируется. По ходу теста меняются режимы и роли каждого узла, формируются связи.

5c38e2c72519e620.png

7. Поздравления

Поздравляем, вы успешно провели тест Silk на физических устройствах Thread и визуализировали его с помощью OTNS!

Вы выполнили тест Silk с использованием плат разработки, на которые установлена ​​прошивка с поддержкой OTNS. Платы сообщают о своем статусе серверу Silk, который отслеживает и объединяет их все и отправляет в службу OTNS вместе с другой тестовой информацией. OTNS, работающая в реальном режиме, визуализирует сеть потоков в веб-интерфейсе.

Что дальше?

Попробуйте запустить другие тестовые примеры OpenThread, включенные в пакет Silk.

Дальнейшее чтение

Посетите openthread.io и Silk , чтобы найти различные ресурсы OpenThread.

Справочная документация