1. Введение
Что такое 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
- Праймер для резьбы . Вам нужно будет знать основные концепции Thread, чтобы понять, чему учат в этой Codelab.
- Создайте сеть Thread с платами nRF52840 и OpenThread . В этой Codelab предполагается, что вы успешно построили сеть потоков.
- Смоделируйте сети потоков с помощью OTNS . В этой Codelab предполагается, что вы успешно запустили инструмент OTNS.
Проверка предварительных требований к пакету
Давайте удостоверимся, что все предпосылки соблюдены.
- Запустите
which otns
, чтобы проверить, доступен ли для поиска исполняемый файлotns
в$PATH
. - Запустите
which wpantund
, чтобы убедиться, чтоwpantund
доступен. - Убедитесь, что доступны пакеты инструментов 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
для имитации сети. Ваш браузер должен автоматически открыть страницу визуализации с пустым холстом.
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.
В верхнем левом углу отображается статистика визуализации, версия OT и название теста. В левом нижнем углу находятся элементы управления окном журнала, которое показано справа. Первоначально узлы добавляются, но сеть не формируется. По мере прохождения теста режимы и роли каждого узла меняются, и формируются связи.
7. Поздравления
Поздравляем, вы успешно запустили тест Silk на физических устройствах Thread и визуализировали его с помощью OTNS!
Вы выполнили тест Silk с использованием отладочных плат с прошивкой, поддерживающей OTNS. Платы сообщают о своем статусе серверу Silk, который отслеживает и объединяет их все и отправляет их в службу OTNS вместе с другой тестовой информацией. OTNS, работающий в реальном режиме, визуализирует сеть Thread в веб-интерфейсе.
Что дальше?
Попробуйте запустить другие тестовые случаи OpenThread, включенные в пакет Silk.
дальнейшее чтение
Посетите openthread.io и Silk , чтобы найти множество ресурсов OpenThread.