Отображение сетевых данных и управление ими с помощью OT CLI

Посмотреть исходный код на GitHub

Данные сети потоков содержат информацию о пограничных маршрутизаторах и других серверах, доступных в сети потоков. Пограничные маршрутизаторы и устройства, предлагающие услуги, регистрируют свою информацию у Лидера. Лидер собирает и структурирует эту информацию в рамках данных сети потоков и распространяет ее на все устройства в сети потоков.

Пограничные маршрутизаторы могут регистрировать префиксы, назначенные сети потоков, и префиксы, для которых они предлагают маршруты. Сервисы могут регистрировать любую информацию, относящуюся к самому сервису.

Пограничный маршрутизатор и служебная информация могут быть стабильными или временными. Данные сети Stable Thread распространяются на все устройства, включая спящие конечные устройства (SED). Временные сетевые данные распространяются на все узлы, кроме SED.

Команды сетевых данных

Чтобы получить список команд netdata , введите help :

netdata help
help
full
length
maxlength
publish
register
show
steeringdata
unpublish
Done

full команды

full команды сообщают о состоянии флага или сбрасывают флаг, отслеживая, был ли вызван обратный вызов «полные чистые данные».

Для этой команды требуется OPENTHREAD_CONFIG_BORDER_ROUTER_SIGNAL_NETWORK_DATA_FULL.

Команды length и maxlength

Команда length получает текущую длину сетевых данных потока, выраженную в количестве байтов. Команды maxlength получают максимальную наблюдаемую длину или сбрасывают отслеживаемую максимальную длину.

publish команды

Публикатор сетевых данных предоставляет механизмы для ограничения количества похожих записей службы и префикса (префикс внутри сети или внешний маршрут) в сетевых данных потока путем мониторинга сетевых данных и управления моментами добавления или удаления записей.

Издателю требуется OPENTHREAD_CONFIG_NETDATA_PUBLISHER_ENABLE .

Сформировать сеть и настроить префикс

  1. Создайте новую конфигурацию сети.

    dataset init new
    Done
    
  2. Отобразите конфигурацию сети.

    dataset
    Active Timestamp: 1
    Channel: 13
    Channel Mask: 0x07fff800
    Ext PAN ID: d63e8e3e495ebbc3
    Mesh Local Prefix: fd3d:b50b:f96d:722d::/64
    Network Key: dfd34f0f05cad978ec4e32b0413038ff
    Network Name: OpenThread-8f28
    PAN ID: 0x8f28
    PSKc: c23a76e98f1a6483639b1ac1271e2e27
    Security Policy: 0, onrcb
    Done
    
  3. Зафиксируйте новый набор данных в активном рабочем наборе данных в энергонезависимом хранилище.

    dataset commit active
    Done
    
  4. Включить интерфейс потока

    ifconfig up
    Done
    thread start
    Done
    
  5. Отображение адресов IPv6, назначенных интерфейсу Thread.

    ipaddr
    fd3d:b50b:f96d:722d:0:ff:fe00:fc00
    fd3d:b50b:f96d:722d:0:ff:fe00:dc00
    fd3d:b50b:f96d:722d:393c:462d:e8d2:db32
    fe80:0:0:0:a40b:197f:593d:ca61
    Done
    
  6. Зарегистрируйте префикс IPv6, назначенный сети Thread.

    prefix add fd00:dead:beef:cafe::/64 paros med
    Done
    netdata register
    Done
    
  7. Отобразить данные сети потоков.

    netdata show
    Prefixes:
    fd00:dead:beef:cafe::/64 paros med dc00
    Routes:
    fd49:7770:7fc5:0::/64 s med 4000
    Services:
    44970 5d c000 s 4000
    44970 01 9a04b000000e10 s 4000
    Done
    

    Префиксы и маршруты включают сопоставления аргументов и значение RLOC.

    Записи службы включают значения otServiceConfig , включая mEnterpriseNumber , mServiceData , otServerConfig::mServerData и s для обозначения otServerConfig::mStable . RLOC также добавляется в конец записи.

  8. Отобразить текущую длину (в байтах) данных сети потоков раздела.

    netdata length
    23
    Done
    
  9. Отображение адресов IPv6, назначенных интерфейсу Thread, включая добавленный префикс.

    ipaddr
    fd00:dead:beef:cafe:4da8:5234:4aa2:4cfa
    fd3d:b50b:f96d:722d:0:ff:fe00:fc00
    fd3d:b50b:f96d:722d:0:ff:fe00:dc00
    fd3d:b50b:f96d:722d:393c:462d:e8d2:db32
    fe80:0:0:0:a40b:197f:593d:ca61
    Done
    

Подключиться к существующей сети

Для подключения устройства к сети Thread требуется только сетевой ключ.

Хотя это и не обязательно, указание канала позволяет избежать необходимости поиска по нескольким каналам, улучшая как задержку, так и эффективность процесса подключения.

После того как устройство успешно подключается к сети Thread, оно получает полный набор активных рабочих данных.

  1. Создайте частичный активный набор операционных данных.

    dataset networkkey dfd34f0f05cad978ec4e32b0413038ff
    Done
    dataset commit active
    Done
    
  2. Включите интерфейс Thread.

    ifconfig up
    Done
    thread start
    Done
    
  3. После подключения к существующей сети отобразите данные сети потоков.

    netdata show
    Prefixes:
    fd00:dead:beef:cafe::/64 paros med dc00
    Routes:
    Services:
    Done
    
  4. Отобразить текущую длину (в байтах) данных сети потоков раздела.

    netdata length
    23
    Done
    
  5. Отображение адресов IPv6, назначенных интерфейсу Thread.

    ipaddr
    fd00:dead:beef:cafe:4da8:5234:4aa2:4cfa
    fd3d:b50b:f96d:722d:0:ff:fe00:fc00
    fd3d:b50b:f96d:722d:0:ff:fe00:dc00
    fd3d:b50b:f96d:722d:393c:462d:e8d2:db32
    fe80:0:0:0:a40b:197f:593d:ca61
    Done
    

Отладка и диагностика

Сетевые данные имеют ограниченный размер — 254 байта. Если пограничные маршрутизаторы продолжают добавлять записи (например, префиксы, маршруты или записи служб) в сетевые данные, они могут переполниться. Когда это произойдет, новые запросы от пограничного маршрутизатора на добавление новых элементов будут отклонены или проигнорированы лидером. Лидер не обязательно сигнализирует об отказе пограничному маршрутизатору, поэтому пограничный маршрутизатор может не сразу осознать, что сетевые данные переполнены. Однако существует метод, позволяющий определить, когда сетевые данные заполняются.

Метод обнаружения, реализованный как на пограничных маршрутизаторах, так и на лидере, использует механизм обратного вызова API и позволяет пользователям получать уведомления о заполнении сетевых данных. Обратный вызов можно использовать для выполнения действий, например удаления устаревших префиксов или служебных записей. Команды netdata full используются для флага, который отслеживает, был ли вызван обратный вызов «net dataful». Эти команды могут сообщать о состоянии флага или сбрасывать его.

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

Технически возможно переполнение сетевых данных, однако это часто происходит из-за неправильной конфигурации или проблемы на пограничном маршрутизаторе. Команды netdata length и netdata maxlength могут помочь в отладке полных ошибок сетевых данных. length получает текущую длину сетевых данных, представленную в байтах, а maxlength получает максимальную наблюдаемую длину, а также может сбросить отслеживаемую максимальную длину.