1. Введение
Что такое поток и OTNS
Thread — это протокол беспроводной ячеистой сети с низким энергопотреблением на основе IP, который обеспечивает безопасную связь между устройствами и между устройствами и облаком. Сети потоков могут адаптироваться к изменениям топологии, чтобы избежать единой точки отказа.
OpenThread , выпущенный Google, представляет собой реализацию Thread с открытым исходным кодом. Несмотря на небольшой размер кода и объем памяти, OpenThread поддерживает все функции, определенные в спецификации потока .
Симулятор сети OpenThread (OTNS) можно использовать для моделирования сетей потоков путем запуска имитируемых узлов OpenThread на платформах posix. OTNS предоставляет простой в использовании веб-интерфейс (OTNS-Web) для визуализации и управления смоделированными сетями потоков.
Что вы узнаете
- Установите OTNS и его зависимости.
- Сборка OpenThread для OTNS
- Как добавлять/перемещать/удалять узлы в OTNS-Web
- Используйте другие полезные функции OTNS-Web для моделирования сети.
- Убедитесь, что OpenThread не имеет единой точки отказа.
Эта лаборатория ориентирована на OTNS-CLI и OTNS-Web. Другие функции OTNS, такие как сценарии Python, не рассматриваются.
Что вам понадобится
- Linux x86_64 или Mac OS.
- Гит .
- Иди 1.13+ .
- Веб-браузер. OTNS-Web использует веб-браузер для отображения моделирования.
- Праймер по резьбе . Вам необходимо знать основные понятия Thread, чтобы понять, чему учит эта лаборатория.
2. Установка
Установить Го
Для сборки OTNS требуется Go 1.13+.
- Установите Go с https://golang.org/dl/.
- Добавьте
$(go env GOPATH)/bin
(обычно$HOME/go/bin
) в$PATH
:
$ export PATH=$PATH:$(go env GOPATH)/bin
Получить ОТНС-код
$ git clone https://github.com/openthread/ot-ns.git ./otns $ cd otns
Установить зависимости
$ ./script/install-deps grpcwebproxy installed: /usr/local/google/home/simonlin/go/bin/grpcwebproxy
Вас могут попросить ввести пароль для sudo
.
Установить отнс
Установите otns
в $GOPATH/bin
:
$ ./script/install otns installed: /usr/local/google/home/simonlin/go/bin/otns
Проверим, правильно ли установлен otns
- Запустите
which otns
чтобы проверить, доступен ли поиск исполняемого файлаotns
в$PATH.
- Если команда
otns
не найдена, убедитесь, что вы добавили$(go env GOPATH)/bin
в$PATH.
3. Создайте OpenThread для OTNS.
Получите код OpenThread с GitHub.
$ mkdir -p ~/src $ git clone https://github.com/openthread/openthread ~/src/openthread
Создайте OpenThread с OTNS=1
$ cd ~/src/openthread $ ./script/cmake-build simulation -DOT_OTNS=ON -DOT_SIMULATION_VIRTUAL_TIME=ON -DOT_SIMULATION_VIRTUAL_TIME_UART=ON -DOT_SIMULATION_MAX_NETWORK_SIZE=999
Вы можете найти исполняемые файлы OpenThread в каталоге build
:
$ ls ~/src/openthread/build/simulation/examples/apps/cli/ ot-cli-ftd ot-cli-mtd ot-cli-radio
Теперь пришло время запустить OTNS...
4. Запустите OTNS
Запускаем otns
:
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
При успешном запуске OTNS войдет в консоль CLI ( OTNS-CLI
) и запустит веб-браузер для визуализации и управления сетью ( OTNS-Web
):
Если вы видите только пустую страницу OTNS-Web, скорее всего, в вашем браузере не включен WebGL. Пожалуйста, обратитесь к https://superuser.com/a/836833 , чтобы узнать, как включить WebGL.
В следующих разделах вы научитесь управлять моделированием OTNS через OTNS-CLI
и OTNS-Web
.
5. Познакомьтесь с OTNS-CLI и OTNS-Web.
ОТНС-CLI
OTNS-CLI
предоставляет интерфейс командной строки (CLI) для управления моделированием OTNS.
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
Вы можете вводить команды через OTNS-CLI
. Полный список команд см. в справочнике по интерфейсу командной строки OTNS . Не волнуйтесь, в этой Codelab вы будете использовать лишь некоторые из этих команд.
ОТНС-Веб
OTNS-Web
— это инструмент визуализации и управления сетью OTNS. Он обеспечивает визуальное представление узлов, сообщений и ссылок моделируемой сети потоков. Обратите внимание на различные элементы OTNS-Web
:
6. Добавьте узлы
Добавляйте узлы через OTNS-CLI
Добавьте маршрутизатор в позицию (300, 100)
> add router x 300 y 100 1 Done
Вы должны увидеть узел, созданный в OTNS-Web
. Узел стартует как Маршрутизатор и через несколько секунд становится Лидером:
Добавьте больше узлов через OTNS-CLI
> add fed x 200 y 100 2 Done > add med x 400 y 100 3 Done > add sed x 300 y 200 4 Done
Подождите несколько секунд, пока узлы объединятся в один раздел. Вы должны увидеть узлы в OTNS-WEB
:
Добавить узлы с помощью OTNS-Web
Вы также можете добавлять узлы через OTNS-Web
. Нажмите кнопку New Router
на Action Bar
. Вы должны увидеть создаваемый узел прямо над кнопкой New Router
. Перетащите узел так, чтобы он оказался рядом с лидером, который вы создали с помощью OTNS-CLI
. Все узлы в конечном итоге должны объединиться в один раздел:
Также нажмите кнопки FED, MED и SED на панели действий, чтобы создать другие типы узлов. Перетащите их рядом с существующими узлами, чтобы прикрепить их к этой сети потоков:
Теперь вы создали сеть потоков из одного раздела, содержащую множество узлов. В следующем разделе мы собираемся настроить скорость моделирования, чтобы оно выполнялось быстрее.
7. Отрегулируйте скорость
В настоящее время моделирование должно выполняться со скоростью 1X
, а это означает, что время моделирования, прошедшее на данный момент, такое же, как фактическое время с момента создания первого узла.
Отрегулируйте скорость через OTNS-CLI
Вы можете настроить скорость моделирования через OTNS-CLI
.
Установите скорость моделирования на 100X
> speed 100 Done
Вы должны увидеть, что узлы отправляют сообщения гораздо чаще, чем раньше.
Установите скорость моделирования на MAX
> speed max Done
Теперь OTNS пытается провести симуляцию как можно быстрее, поэтому вы должны увидеть узлы, отправляющие большое количество сообщений.
Приостановить симуляцию
> speed 0 Done
Установка скорости моделирования на 0
приостанавливает моделирование.
Восстановить симуляцию на нормальной скорости
> speed 1 Done
Установка скорости моделирования на значение больше 0
возобновляет моделирование.
Отрегулируйте скорость через OTNS-Web
Кнопки управления скоростью
Найдите кнопки управления скоростью. на Action Bar
. Кнопки показывают текущую скорость моделирования и могут использоваться для регулировки скорости моделирования, а также приостановки/возобновления моделирования.
Ускорьте симуляцию
Вы можете ускорить симуляцию, нажав кнопку кнопку, пока скорость не достигнет MAX
: .
Замедлить симуляцию
Вы можете замедлить симуляцию, нажав кнопку кнопка.
Приостановить симуляцию
Нажмите кнопку Кнопка, чтобы приостановить симуляцию во время ее работы. Кнопка будет изменена на .
Возобновить моделирование
Нажмите кнопку Кнопка, чтобы возобновить симуляцию, когда она приостановлена. Кнопка снова изменится на .
Установите скорость моделирования на 10X
Для экономии времени используйте
OTNS-CLI
для настройки скорости моделирования
10X
, чтобы мы могли наблюдать изменения топологии в сети гораздо быстрее.
> speed 10 Done
8. Включить/выключить радио
Теперь симуляция должна содержать 2 маршрутизатора (шестиугольной формы) и множество дочерних элементов и работать на скорости 10X.
Найдите текущего лидера (красная рамка) из двух маршрутизаторов, щелкните один раз, чтобы выбрать его:
Выключить радио
Нажмите кнопку кнопка на панели действий, чтобы отключить радио узла Лидер:
Лидер не сможет отправлять или получать сообщения с выключенным радио.
Подождите около 12 секунд (120 секунд во время моделирования), чтобы другой маршрутизатор стал новым лидером:
Сеть потоков автоматически восстанавливается после сбоя лидера путем формирования нового раздела с новым лидером. Новый раздел также имеет новый цвет.
Включи радио
Выберите лидера, чье радио было выключено. Нажмите кнопку кнопка на Action Bar
для восстановления радиосвязи:
Лидер должен повторно подключиться к сети после восстановления радиосвязи.
9. Перемещение узлов
OTNS позволяет пользователям легко перемещать узлы через OTNS-CLI
или OTNS-Web
.
Переместить узел через OTNS-CLI
Переместите узел 5 в новое место:
> move 5 600 300 Done
Поскольку теперь узел 5 находится далеко от другого Маршрутизатора, они должны потерять связь друг с другом, и примерно через 12 с (120 с по времени моделирования) оба станут Лидерами своего собственного раздела:
Переместить узел через OTNS-Web
Переместите узел 5 обратно в исходное положение, перетащив его. Два раздела должны снова объединиться в один:
10. Удалить узлы
Удаление узлов через OTNS-CLI
Удалить узел 8:
> del 8 Done
Узел 8 должен исчезнуть из моделирования:
Удаление узлов через OTNS-Web
Выберите узел 5 и нажмите кнопку кнопку на Action Bar
, чтобы удалить узел 5:
Node 1
должен стать лидером, а Node 7
должен отсоединиться, поскольку он не может связаться ни с одним маршрутизатором.
Очистить симуляцию (удалить все узлы)
Вы можете очистить симуляцию, удалив все узлы через OTNS-Web
.
Нажмите кнопку на Action Bar.
Все узлы исчезнут сразу.
Прежде чем продолжить...
Добавьте несколько узлов в симуляцию самостоятельно, чтобы продолжить работу с этим уроком.
11. Контекст узла OTNS-CLI
OTNS-CLI
обеспечивает контекстный режим узла для простого взаимодействия с узлами, помогая разработчикам диагностировать состояние узла.
Войти в контекстный режим узла
Введите контекст узла 1:
> node 1 Done node 1>
Приглашение CLI изменилось на node 1>
, указывая текущий контекст узла. Вы можете вводить команды OpenThread CLI , которые будут выполняться на узле, как если бы вы напрямую взаимодействовали с узлом.
Выполнение команд в контексте узла
node 1> state leader Done node 1> channel 11 Done node 1> panid 0xface Done node 1> networkname OpenThread Done node 1> ipaddr fdde:ad00:beef:0:0:ff:fe00:fc00 fdde:ad00:beef:0:0:ff:fe00:d800 fdde:ad00:beef:0:2175:8a67:1000:6352 fe80:0:0:0:2075:82c2:e9e9:781d Done
Переключиться на другой контекст узла
node 1> node 2 Done node 2>
Выход из контекста узла
node 1> exit Done >
12. Поздравления
Поздравляем, вы успешно выполнили свою первую симуляцию OTNS!
Вы узнали, как установить OTNS и его зависимости. Вы создали OpenThread для OTNS и запустили моделирование OTNS с помощью экземпляров моделирования OpenThread. Вы узнали, как управлять симуляцией различными способами с помощью OTNS-CLI
и OTNS-Web
.
Теперь вы знаете, что такое OTNS и как можно использовать OTNS для моделирования сетей OpenThread.
Что дальше?
Посмотрите некоторые из этих кодовых лабораторий...
- Моделирование сети потоков с помощью OpenThread
- Моделирование сети потоков с использованием OpenThread в Docker
- Создайте сеть Thread с помощью плат nRF52840 и OpenThread.