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

1. Введение

5abd22afa2f2ee9a.png

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

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

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

OpenThread Network Simulator (OTN , ) может быть использован для моделирования сетей темы, запустив моделируемые узлы OpenThread на Posix платформ. OTNS предоставляет простой в использовании веб-интерфейс (OTNS-Web) для визуализации и управления смоделированными сетями потоков.

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

Что ты узнаешь

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

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

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

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

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

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

  • Linux x86_64.
  • Git .
  • Перейти 1.11+ .
  • Веб-браузер. OTNS-Web использует веб-браузер для отображения моделирования.

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

2. Предпосылки

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

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

Убедимся, что выполнены все предпосылки.

  1. Run , which otns , чтобы проверить , если otns , выполняемые для поиска в $PATH .
  2. Run , which wpantund , чтобы убедиться , что wpantund доступен.
  3. Убедитесь , что ARM GNU, набор инструментов J-Link, и nrfjprog пакеты доступны.
  4. Убедитесь , что двоичный OpenThread можно сделать, бегая make -f examples/Makefile-nrf52840 под openthread папки.

Примечание: Пожалуйста , обратитесь к документации , связанной для созданного руководства. Предпосылкой # 1 от Simulate Networks темы с использованием OTN , а другие от построить сеть Thread с nRF52840 досками и OpenThread .

3. Шелковая установка

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

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

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

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

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

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

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

В LayoutCenter и LayoutRadius поля в [DEFAULT] по [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 Строить сеть Thread Codelab использовать nrfjprog . После этого подключите все платы через порт USB nRF к хост-машине. Тот же набор кабелей USB-Micro-USB можно отсоединить от портов J-Link и подключить к портам USB nRF на платах разработки nRF52840. Таким образом, всего с этими 6 кабелями можно провести тест. Чтобы избежать хлопот, используйте 12 кабелей и подключайтесь к обоим портам.

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

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

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

Эти аргументы говорят OTN , ожидать КПГРЫ и UDP сообщения , которые описывают , как следует визуализировать сеть Thread, вместо запуска несколько ot-cli процессов для моделирования сети. Ваш браузер должен автоматически открывать страницу визуализации с пустым холстом.

4dd5b41bf7e71334.png

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

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

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

Например, можно запустить тест с именем ot_test_form_network.py используя следующие изменения silk_run_test.py файла. /opt/openthread_test/ по умолчанию является путь Шелковые ИСПОЛЬЗУЕТ для вывода журнала и конфигурационный файл, но вы можете использовать любой путь.

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 и шелк для различных OpenThread ресурсов.

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