Thread Network Data 包含有关线程路由器和 Thread 网络中可用的其他服务器的信息。边界路由器和服务提供服务的设备向主要副本注册其信息。Leader 在 Thread Network 数据中收集和构建这些信息,并将信息分发给 Thread 网络中的所有设备。
边界路由器可能会注册分配给 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
命令
网络数据发布商提供监控网络数据并管理何时添加或移除条目的机制,以限制线程网络数据中类似服务和前缀( On-Mesh 前缀或外部路由)条目的数量。
发布商需要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启用 Thread 接口
ifconfig up
Donethread start
Done显示分配给 Thread 接口的 IPv6 地址。
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注册分配给 Thread 网络的 IPv6 前缀。
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 也会附加到记录的末尾。显示 Partition 的线程网络数据的当前长度(以字节为单位)。
netdata length
23 Done显示分配给 Thread 接口的 IPv6 地址,包括添加的前缀。
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连接到现有网络后,显示 Thread 网络数据。
netdata show
Prefixes: fd00:dead:beef:cafe::/64 paros med dc00 Routes: Services: Done显示 Partition 的线程网络数据的当前长度(以字节为单位)。
netdata length
23 Done显示分配给 Thread 接口的 IPv6 地址。
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
命令用于该标志用于跟踪是否调用了“净数据完整”回调。这些命令可以报告标志或重置标志状态。
对于 Thread 的典型使用场景,网络数据不太可能会完整使用,即使在存在许多边界路由器且它们全部添加路由前缀的情况下也是如此。
从技术层面来讲,网络数据可能会完全可用,但这通常是由于边界路由器配置错误或问题造成的。netdata length
和 netdata maxlength
命令可帮助调试网络数据完整错误。
length
可获取网络数据的当前长度(以字节为单位),maxlength
可获取观察到的最大长度,还可以重置所跟踪的最大长度。