Моделирование потоковых сетей с помощью OTNS

1. Введение

5abd22afa2f2ee9a.png

Что такое Thread & OTNS

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

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

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

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

  • Установите OTNS и его зависимости
  • Создайте OpenThread для OTNS
  • Как добавить / переместить / удалить узлы в OTNS-Web
  • Используйте другие полезные функции OTNS-Web для управления сетевым моделированием
  • Убедитесь, что у OpenThread нет единой точки отказа

Эта лаборатория кода ориентирована на OTNS-CLI и OTNS-Web. Другие функции OTNS, такие как сценарии Python, не рассматриваются.

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

  • Linux x86_64 или Mac OS.
  • Git .
  • Перейти 1.11+ .
  • Веб-браузер. OTNS-Web использует веб-браузер для отображения моделирования.
  • Автор Primer . Вам нужно будет знать основные концепции Thread, чтобы понять, что преподается в этой Codelab.

2. Установка

Установить Go

Для сборки OTNS требуется Go 1.11+.

  1. Установить Go от https://golang.org/dl/
  2. Добавить $(go env GOPATH)/bin (обычно $HOME/go/bin ) до $PATH :
$ export PATH=$PATH:$(go env GOPATH)/bin

Получить код OTNS

$ 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

Установите otns , в $GOPATH/bin :

$ ./script/install
otns installed: /usr/local/google/home/simonlin/go/bin/otns

Давайте проверим , если otns , правильно установлен

  1. Run , which otns , чтобы проверить , если otns , выполняемые для поиска в $PATH.
  2. Если 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 , OTNS=1

$ cd ~/src/openthread
$ ./script/bootstrap
$ ./bootstrap
$ make -f examples/Makefile-simulation OTNS=1

Вы можете найти исполняемые файлы OpenThread в output каталоге:

Linux

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

macOS

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

Пришло время запустить OTNS ...

4. Запустите OTNS.

Запуск otns , :

$ cd ~/src/openthread/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

После успешного начала, OTN , вступит в CLI консоль ( OTNS-CLI , OTNS-Web OTNS-CLI ) и запустить веб - браузер для визуализации и управления сетью ( OTNS-Web , OTNS-Web ):

a0e05178d66929b1.png

Если вы видите только пустую страницу для OTNS-Web, скорее всего, в вашем браузере не включен WebGL. Пожалуйста , обратитесь к https://superuser.com/a/836833 о том , как включить WebGL.

В следующих разделах вы собираетесь научиться управлять OTN , моделирование с помощью OTNS-CLI , OTNS-Web OTNS-CLI и OTNS-Web , OTNS-Web .

5. Познакомьтесь с OTNS-CLI и OTNS-Web

OTNS-CLI

OTNS-CLI , OTNS-CLI обеспечивает интерфейс командной строки (CLI) для управления OTN , моделированием.

$ cd ~/src/openthread/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

Вы можете ввести команды через OTNS-CLI , OTNS-CLI . Обратитесь к ссылке OTN , CLI для полного списка команд. Не волнуйтесь, вы собираетесь использовать только некоторые из этих команд в этой Codelab.

OTNS-Web

OTNS-Web , OTNS-Web является OTN , визуализация сети - х и инструмент управления. Он обеспечивает визуальное представление узлов, сообщений и ссылок смоделированной сети потоков. Обратите внимание на различные элементы OTNS-Web , OTNS-Web :

4c5b43509a2ca0d0.png

6. Добавить узлы

Добавить узлы через OTNS-CLI

Добавить маршрутизатор в позиции (300, 100)

> add router x 300 y 100
1
Done

Вы должны увидеть узел , созданный в OTNS-Web , OTNS-Web . Узел запускается как Маршрутизатор и становится Лидером через несколько секунд:

6ca8c2e63ed9818d.png

Добавьте больше узлов , через OTNS-CLI , 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 :

3ee67903c01aa612.png

Добавить узлы по OTNS-Web , OTNS-Web

Кроме того, можно добавлять узлы через OTNS-Web , OTNS-Web . Нажмите на New Router кнопку Action Bar . Вы должны увидеть узел создается прямо над New Router кнопки. Перетащите узел , чтобы быть рядом с лидером, созданного с помощью OTNS-CLI , OTNS-CLI . В конечном итоге все узлы должны объединиться в один раздел:

420258bb92561146.png

Также нажмите кнопки FED, MED и SED на панели действий, чтобы создать другие типы узлов. Перетащите их на позиции рядом с существующими узлами, чтобы присоединить их к этой сети потоков:

fe15d6f9726a099e.png

Теперь вы создали сеть потоков из одного раздела, содержащего множество узлов. В следующем разделе мы собираемся настроить скорость симуляции, чтобы симуляция работала быстрее.

7. Отрегулируйте скорость.

В настоящее время моделирование должно быть запущено на 1X скорости, а это означает , что время моделирования прошло до сих пор такая же , как фактическое время , так как мы создали первый узел.

Регулировка скорости через OTNS-CLI , OTNS-CLI

Вы можете регулировать скорость , имитируя через OTNS-CLI , OTNS-CLI .

Установите имитируя скорость 100X

> speed 100
Done

Вы должны увидеть, что узлы отправляют сообщения гораздо чаще, чем раньше.

Установить имитируя скорость MAX

> speed max
Done

Теперь OTNS пытается моделировать как можно быстрее, поэтому вы должны увидеть узлы, отправляющие большое количество сообщений.

Приостановить симуляцию

> speed 0
Done

Установка имитирующей скорости 0 паузы моделирования.

Восстановить симуляцию на нормальной скорости

> speed 1
Done

Установка имитируя скорости до значения большего , чем 0 возобновляет моделирование.

Регулировка скорости через OTNS-Web , OTNS-Web

Кнопки управления скоростью

Найдите кнопки управления скоростью 9329157c1bd12672.png на Action Bar . Кнопки показывают текущую скорость моделирования и могут использоваться для настройки скорости моделирования и приостановки / возобновления моделирования.

Ускорить симуляцию

Вы можете ускорить симуляцию, нажав кнопку 39b88331779277ad.png Кнопка до скорости достигает MAX : f5f460b2586d299b.png .

Замедление моделирования

Вы можете замедлить симуляцию, нажав кнопку 31cca8d5b52fa900.png кнопка.

Приостановить симуляцию

Щелкните значок 46cc2088c9aa7ab6.png кнопку, чтобы приостановить симуляцию во время ее работы. Кнопка изменится на ce25eda3496ffcd4.png .

Возобновить симуляцию

Щелкните значок ce25eda3496ffcd4.png кнопку, чтобы возобновить симуляцию, когда она приостановлена. Кнопка снова изменится на 46cc2088c9aa7ab6.png .

Установите имитируя скорость 10X

Чтобы сэкономить время, используйте

OTNS-CLI , OTNS-CLI для настройки имитирующей скорости

10X так , что мы можем наблюдать изменения топологии в сети гораздо быстрее.

> speed 10
Done

8. Включение / выключение радио.

Теперь симуляция должна содержать 2 маршрутизатора (в форме шестиугольника) и множество дочерних элементов и работать с 10-кратной скоростью.

Найдите текущий лидер (красная граница) 2 маршрутизаторов, щелкните его одним щелчком мыши:

8c6a2e191cdae0c7.png

Выключить радио

Щелкните значок 7ca085f470491dd4.png кнопку на панели действий, чтобы выключить радио узла Leader:

a3bf58d9d125f95f.png

Лидер не сможет отправлять или получать сообщения при выключенном радио.

Подождите примерно 12 секунд (120 секунд в моделирующем времени), чтобы другой маршрутизатор стал новым лидером:

e3d32f85c4a1b990.png

Сеть потоков восстанавливается после сбоя лидера автоматически, формируя новый раздел с новым лидером. Новая перегородка также имеет новый цвет перегородки.

Включи радио

Выберите лидера, радио которого было выключено. Щелкните значок 2d9cecb8612b42aa.png Кнопка на Action Bar , чтобы восстановить связь по радио:

7370a7841861aa3a.png

Лидер должен повторно подключиться к сети после восстановления радиосвязи.

9. Перемещение узлов

OTN , позволяет пользователям перемещать узлы легко через OTNS-CLI , OTNS-Web OTNS-CLI или OTNS-Web , OTNS-Web .

Перемещение узла через OTNS-CLI , OTNS-CLI

Переместите узел 5 в новое место:

> move 5 600 300
Done

Поскольку теперь узел 5 находится далеко от другого маршрутизатора, они должны потерять связь друг с другом, и примерно через 12 секунд (120 секунд в моделирующем времени) оба становятся лидерами своего собственного раздела:

c06b4d0a4f183299.png

Переместить узел через OTNS-Web

Переместите узел 5 обратно в исходное место, перетащив его. Два раздела должны снова объединиться в один раздел:

9ba305c4c5a5f892.png

10. Удалить узлы

Удаление узлов через OTNS-CLI , OTNS-CLI

Удалить узел 8:

> del 8
Done

Узел 8 должен исчезнуть из симуляции:

18156770d9f8bf83.png

Удаление узлов через OTNS-Web , OTNS-Web

Выберите узел 5 и щелкните 7ff6afd565f4eafc.png Кнопка на Action Bar для удаления узла 5:

d4079cceea0105f0.png

Node 1 должен стать лидером и Node 7 следует отключить , так как он не может добраться до любого маршрутизатора.

Очистить симуляцию (удалить все узлы)

Вы можете очистить моделирование, удалив все узлы через OTNS-Web , OTNS-Web .

Нажмите 89618191721e79a0.png Кнопка на Action Bar. Все узлы исчезнут сразу.

Прежде чем продолжить ...

Добавьте несколько узлов в симуляцию самостоятельно, чтобы продолжить изучение этого урока.

11. Контекст узла OTNS-CLI

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 для OTN , и начал OTN , моделирование с экземплярами моделирования OpenThread. Вы научились манипулировать моделирования различными способами через как OTNS-CLI , OTNS-Web OTNS-CLI и OTNS-Web , OTNS-Web .

Теперь вы знаете, что такое OTNS и как можно использовать OTNS для моделирования сетей OpenThread.

Что дальше?

Посмотрите некоторые из этих кодовых лабораторий ...

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