儿童监管

在 GitHub 上查看源代码

为了让休眠终端设备 (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
默认值
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 命令。