如需为休眠的终端设备 (SED) 提供节能机制以验证其仍连接到其父路由器(列在父路由器的子表中),请启用儿童监督功能。
Thread 规范要求 SED 定期与其父路由器执行 MLE 子更新请求和响应交换,以验证连接。子监管是验证 SED 路由器连接情况的替代解决方案,它会将消息传输负担在父路由器上,而不是在能量有限的 SED 上。
工作原理
此功能以两种方式发挥作用,具体取决于节点类型和配置的参数:
父级
如果父路由器未在 OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL
中向其子 SED 传输数据,父路由器就会将子监管消息加入队列并发送到子 SED。“儿童监管”消息是包含以下信息的 MAC 帧:
- 将 SED 的 RLOC16 用作 MAC 标头中的目标。
- 载荷为空。
默认情况下,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 命令。