为了让休眠终端设备 (SED) 能够以节能高效的方式验证自己是否仍连接到其父设备(列在父设备的子设备表中),请启用子设备监督功能。
Thread 规范要求 SED 定期与其父设备执行 MLE 子设备更新请求和响应交换,以验证连接性。儿童监督是另一种验证 SED 与家长设备之间连接的解决方案,它将消息传输的负担转移到家长设备上,而不是由能耗受限的 SED 来承担。
运作方式
此功能以两种方式运行,具体取决于节点类型和配置的参数:
在父级
如果父级未在 OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL 内向子级 SED 传输 SED,则父级会将子级监督消息加入队列并发送给子级 SED。儿童监督消息是一个 MAC 帧,包含以下信息:
- 作为 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 Attach 进程以重新连接到网络。
启用方式
此功能默认处于停用状态。
按定义
如需启用儿童监督功能,请在构建 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 命令。