Тестирование сети потоков с визуализацией

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-Web для мониторинга состояния сети 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 относится к Simulate Thread Networks с использованием OTNS, а другие — к Build a Thread Network с платами 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 с параметрами по умолчанию позволяет пользователю имитировать сеть потоков. Чтобы использовать его в качестве инструмента визуализации реальной физической сети, запустите его с помощью:

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, работающий в реальном режиме, визуализирует сеть Thread в веб-интерфейсе.

Что дальше?

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

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

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

Справочные документы