儿童监管

在 GitHub 上查看源代码

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