Child Supervision

View source on GitHub

To provide an energy-efficient mechanism for a sleepy end device (SED) to verify that it is still connected to its parent router (listed in the parent router's child table), enable the Child Supervision feature.

The Thread Specification requires an SED to periodically perform an MLE Child Update Request and Response exchange with its parent router to verify connectivity. Child Supervision is an alternate solution for verification of SED-router connectivity that places the burden of message transmission on the parent router instead of on the energy-constrained SED.

How it works

This feature works in two ways, depending on the node type and which parameters are configured:

On the parent

If a parent router does not transmit to its child SED within the OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL, the parent router enqueues and sends a Child Supervision message to the child SED. The Child Supervision message is a MAC frame containing the following information:

  • The RLOC16 of the SED as the destination in the MAC header.
  • An empty payload.

By default, a MAC header contains an 802.15.4 ACK request. To disable this request in the Child Supervision message, set the OPENTHREAD_CONFIG_CHILD_SUPERVISION_MSG_NO_ACK_REQUEST parameter to 1.

On the child

If an SED does not hear from its parent router within the OPENTHREAD_CONFIG_CHILD_SUPERVISION_CHECK_TIMEOUT, it assumes that it has lost its connection to the parent router and initiates the MLE Attach process to reattach to the parent router.

How to enable

This feature is disabled by default.

By define

To enable Child Supervision, define OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE as 1 in the openthread/src/core/config/child_supervision.h file, prior to building OpenThread:

#ifndef OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE
#define OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE 1
#endif

By option

Alternatively, use the -DOT_CHILD_SUPERVISION=ON build option when building OpenThread:

./script/build -DOT_CHILD_SUPERVISION=ON

Parameters

Use the following parameters in openthread/src/core/config/child_supervision.h to customize this feature:

Parameters
OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL
Default value
129 seconds
Description
Specifies the supervision interval in seconds used by parent. Set to 0 to disable the supervision process on the parent.
OPENTHREAD_CONFIG_SUPERVISION_CHECK_TIMEOUT
Default value
190 seconds
Description
Specifies the supervision check timeout interval in seconds used by a device in child state. Set to 0 to disable the supervision check process on the child.
OPENTHREAD_CONFIG_SUPERVISION_MSG_NO_ACK_REQUEST
Default value
0 (ACK request enabled)
Description
Set to 1 to clear/disable the 802.15.4 ACK request in the MAC header of a supervision message.

API

Use the Child Supervision API to manage the supervision and check timeout intervals directly in your OpenThread application.

CLI

There are no CLI commands related to this feature.