如需为处于休眠状态的设备 (SED) 提供节能机制,以验证其是否仍连接到其父路由器(在父路由器的子表中列出),请启用子监管功能。
线程规范需要 SED 定期与其父路由器执行 MLE 子更新请求和响应响应,以验证连接。子级监管是一种验证 SED 路由器连接的备用解决方案,它会将信息传输的负担置于父路由器而非能耗 SED 上。
运作方式
此功能可通过以下两种方式运行,具体取决于节点类型以及配置哪些参数:
家长
如果父路由器未在 OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL
内传输到其子 SED,则父路由器会加入子监管消息并将其发送到子 SED。子监管消息是一个 MAC 帧,其中包含以下信息:
- SED 中 MAC 标头中 SED 的 RLOC16。
- 载荷为空。
默认情况下,MAC 标头包含 802.15.4 ACK 请求。如需在子监管消息中停用此请求,请将 OPENTHREAD_CONFIG_CHILD_SUPERVISION_MSG_NO_ACK_REQUEST
参数设置为 1。
儿童
如果 SED 未从其父路由器内的OPENTHREAD_CONFIG_CHILD_SUPERVISION_CHECK_TIMEOUT
时,它会假定自己已断开与父路由器的连接,并启动了MLE 附加重新连接到父路由器的流程。
如何启用
此功能默认处于停用状态。
通过定义
如需启用子监管,请在构建 OpenThread 之前,在 openthread/src/core/config/child_supervision.h
文件中将 OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE
定义为 1
。 :
#ifndef OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE
#define OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE 1
#endif
按选项
或者,在构建 OpenThread 时使用 -DOT_CHILD_SUPERVISION=ON
构建选项:
./script/build -DOT_CHILD_SUPERVISION=ON
参数
使用 openthread/src/core/config/child_supervision.h
中的以下参数来自定义此功能:
参数 | |||||
---|---|---|---|---|---|
OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL |
|
||||
OPENTHREAD_CONFIG_SUPERVISION_CHECK_TIMEOUT |
|
||||
OPENTHREAD_CONFIG_SUPERVISION_MSG_NO_ACK_REQUEST |
|
API
使用 Child Supervision API 直接在 OpenThread 应用中管理监管功能并检查超时间隔。
CLI
没有与此功能相关的 CLI 命令。