儿童监管

在 GitHub 上查看源代码

要为休眠的终端设备 (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
默认值
129 秒
说明
指定父级使用的监督间隔(以秒为单位)。将其设置为 0 可在父级设备上停用监督流程。
OPENTHREAD_CONFIG_SUPERVISION_CHECK_TIMEOUT
默认值
190 秒
说明
指定处于子级状态的设备使用的监督检查超时间隔(以秒为单位)。将其设置为 0 可停用对子账号的监督检查流程。
OPENTHREAD_CONFIG_SUPERVISION_MSG_NO_ACK_REQUEST
默认值
0(已启用 ACK 请求)
说明
设置为 1 可清除/停用监督消息 MAC 标头中的 802.15.4 ACK 请求。

API

您可以使用 Child Supervision API 直接在 OpenThread 应用中管理监督并检查超时间隔。

CLI

没有与此功能相关的 CLI 命令。