要为休眠的终端设备 (SED) 提供一种节能机制以验证其是否仍连接到其父级路由器(列在父级路由器的子表中),请启用子级监管功能。
线程规范要求 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 Attach 进程以重新连接到父路由器。
启用方式
此功能默认处于停用状态。
按定义
如需启用儿童监督功能,请先在 openthread/src/core/config/child_supervision.h
文件中将 OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE
定义为 1
,然后再构建 OpenThread:
#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 命令。