Посмотреть исходный код на 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
.
Сформировать сеть и настроить префикс
Создайте новую конфигурацию сети.
dataset init new
DoneОтобразите конфигурацию сети.
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Зафиксируйте новый набор данных в активном рабочем наборе данных в энергонезависимом хранилище.
dataset commit active
DoneВключить интерфейс потока
ifconfig up
Donethread start
DoneОтображение адресов 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Зарегистрируйте префикс IPv6, назначенный сети Thread.
prefix add fd00:dead:beef:cafe::/64 paros med
Donenetdata register
DoneОтобразить данные сети потоков.
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 также добавляется в конец записи.Отобразить текущую длину (в байтах) данных сети потоков раздела.
netdata length
23 DoneОтображение адресов 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, оно получает полный набор активных рабочих данных.
Создайте частичный активный набор операционных данных.
dataset networkkey dfd34f0f05cad978ec4e32b0413038ff
Donedataset commit active
DoneВключите интерфейс Thread.
ifconfig up
Donethread start
DoneПосле подключения к существующей сети отобразите данные сети потоков.
netdata show
Prefixes: fd00:dead:beef:cafe::/64 paros med dc00 Routes: Services: DoneОтобразить текущую длину (в байтах) данных сети потоков раздела.
netdata length
23 DoneОтображение адресов 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
получает максимальную наблюдаемую длину, а также может сбросить отслеживаемую максимальную длину.