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 для мониторинга состояния сети Thread, сформированной путем запуска тестовых примеров Silk.
Эта лаборатория ориентирована на использование Silk с OTNS. Другие функции Silk и OTNS не рассматриваются.
Что вам понадобится
Аппаратное обеспечение:
- 6 плат разработки Nordic Semiconductor nRF52840
- 6 кабелей USB-Micro-USB для подключения плат.
- USB-концентратор
Программное обеспечение:
- Линукс х86_64.
- Гит .
- Иди 1.11+ .
- Веб-браузер. OTNS-Web использует веб-браузер для отображения моделирования.
Предпосылки:
2. Предварительные условия
Завершите предыдущие базовые Codelabs.
- Праймер по резьбе . Вам необходимо знать основные понятия Thread, чтобы понять, чему учит эта лаборатория.
- Создайте сеть Thread с помощью плат nRF52840 и OpenThread . В этой лаборатории кода предполагается, что вы успешно создали сеть потоков.
- Моделируйте сети потоков с помощью OTNS . В этой Codelab предполагается, что вы успешно запустили инструмент OTNS.
Проверка предварительных условий пакета
Давайте убедимся, что все предпосылки соблюдены.
- Запустите
which otns
чтобы проверить, доступен ли поиск исполняемого файлаotns
в$PATH
. - Запустите
which wpantund
чтобы убедиться, чтоwpantund
доступен. - Убедитесь, что доступны пакеты инструментов 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
для моделирования сети. Ваш браузер должен автоматически открыть страницу визуализации с пустым холстом.
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, работающая в реальном режиме, визуализирует сеть потоков в веб-интерфейсе.
Что дальше?
Попробуйте запустить другие тестовые примеры OpenThread, включенные в пакет Silk.
Дальнейшее чтение
Посетите openthread.io и Silk , чтобы найти различные ресурсы OpenThread.