Some questions about Child Supervision

82 views
Skip to first unread message

yinzhou tao

unread,
Feb 24, 2022, 4:28:19 AM2/24/22
to openthread-users

I am using nrf52833 to make a Thread end device as SED and RCP. All firmware versions use NCS V1.8.0.

The compilation options for OTBR is:
CMAKE_OPTIONS += \
-DOT_THREAD_VERSION="1.2" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DBUILD_TESTING=OFF \
-DOT_READLINE=OFF \
-DOTBR_MDNS=OFF \
-DOT_CHILD_SUPERVISION=ON \
-DOT_POSIX_SETTINGS_PATH="\"/usr/lib/thread\"" \
-DOTBR_OPENWRT=ON

The RCP firmware code path is nrf\samples\openthread\coprocessor.

SED and RCP add CONFIG_OPENTHREAD_CHILD_SUPERVISION=y in prj.config, and define OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE as 1 in the openthread/src/core/config/child_supervision.h file
All other options use the default values:
#define OPENTHREAD_CONFIG_CHILD_SUPERVISION_CHECK_TIMEOUT 170
#define OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL 129

I use the sniffer to capture packets during the process to observe.I noticed that if there is no transmission to the child within the supervision intervalthe ,OTBR would not send a supervision message to child.

Fortunately, the child supervision functioning is normal on SED: SED initiates the re-attach process when it not hear from its parent within the specified timeout interval.

Addresses of OTBE is:
fd11:22:0:0:2da2:4c5d:7782:e9fd
fdb4:c194:4e7d:12c7:0:ff:fe00:fc00
fdb4:c194:4e7d:12c7:0:ff:fe00:7000
fdb4:c194:4e7d:12c7:5c06:a2d9:ba14:3838
fe80:0:0:0:64a4:f937:a29:c5f2

In addition, the sniffer caught child_supervision.pcap and OTBR corresponding output logs, but the packet was not seen in the captured packet at the time when OTBR prompted the packet to be sent.

Mon Dec 27 14:45:58 2021 user.info otbr-agent[3703]: 00:10:44.962 [INFO]-PLAT----: > childsupervision interval
Mon Dec 27 14:45:58 2021 user.notice otbr-agent[3703]: 00:10:44.962 [NOTE]-CLI-----: Input: childsupervision interval
Mon Dec 27 14:45:59 2021 user.info otbr-agent[3703]: 00:10:46.098 [INFO]-PLAT----: > childsupervision interval
Mon Dec 27 14:45:59 2021 user.notice otbr-agent[3703]: 00:10:46.098 [NOTE]-CLI-----: Input: childsupervision interval
Mon Dec 27 14:48:04 2021 user.info otbr-agent[3703]: 00:12:51.238 [INFO]-UTIL----: Sending supervision message to child 0x7003
Mon Dec 27 14:48:18 2021 user.info otbr-agent[3703]: 00:13:05.188 [INFO]-PLAT----: > childsupervision interval
Mon Dec 27 14:48:18 2021 user.notice otbr-agent[3703]: 00:13:05.188 [NOTE]-CLI-----: Input: childsupervision interval
Mon Dec 27 14:51:14 2021 user.info otbr-agent[3703]: 00:16:01.182 [INFO]-UTIL----: Sending supervision message to child 0x7003
Mon Dec 27 14:54:24 2021 user.info otbr-agent[3703]: 00:19:11.171 [INFO]-UTIL----: Sending supervision message to child 0x7003

I met some problems.

1. Thread has the OPENTHREAD_CONFIG_MLE_CHILD_TIMEOUT_DEFAULT macro, which has a timer to let the child and router know whether the device is still connected. Superchildvision is similar to it. Is there a relationship between the two? Or are they completely separate?
2. The documentation from openthread description of OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL: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.  However, after the router exceeds the macro time, the captured packet does not see the router sending the packet.
3. The thing with SEDs is that they are Sleeping, and while they are sleeping the radio is off. Hence, there is no way to reach the SED when it is sleeping. The above mentioned packets sent by the router should not be received by SED, which I think is contradictory.

Thanks in advance.

Best,

tao

child_supervision.pcap

yinzhou tao

unread,
Feb 24, 2022, 5:56:22 AM2/24/22
to openthread-users

Does the use of child supervision require the cooperation of CSL functions?  CSL seems to make SEDsimply wake up and listen for a short duration to  

determine if there are any buffered messages .

Jonathan Hui

unread,
Feb 24, 2022, 9:53:44 AM2/24/22
to yinzhou tao, openthread-users
On Thu, Feb 24, 2022 at 1:28 AM yinzhou tao <taoyi...@gmail.com> wrote:

1. Thread has the OPENTHREAD_CONFIG_MLE_CHILD_TIMEOUT_DEFAULT macro, which has a timer to let the child and router know whether the device is still connected. Superchildvision is similar to it. Is there a relationship between the two? Or are they completely separate?

The MLE Child Timeout and Child Supervision are independent. 

2. The documentation from openthread description of OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL: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.  However, after the router exceeds the macro time, the captured packet does not see the router sending the packet.

A Child Supervision message is an empty MAC Data frame. A parent will only send a Child Supervision message if it has not sent another secure data frame within the Child Supervision interval. 

3. The thing with SEDs is that they are Sleeping, and while they are sleeping the radio is off. Hence, there is no way to reach the SED when it is sleeping. The above mentioned packets sent by the router should not be received by SED, which I think is contradictory.

A SED must poll for data frames by sending MAC Data Request messages.

Note that Child Supervision is not currently a part of the Thread Specification and is an OpenThread-specific enhancement.

--
Jonathan Hui

Jonathan Hui

unread,
Feb 24, 2022, 9:54:49 AM2/24/22
to yinzhou tao, openthread-users
On Thu, Feb 24, 2022 at 2:56 AM yinzhou tao <taoyi...@gmail.com> wrote:

Does the use of child supervision require the cooperation of CSL functions?  CSL seems to make SEDsimply wake up and listen for a short duration to  

determine if there are any buffered messages .

Child Supervision and CSL are independent. As previously mentioned, Child Supervision is not currently a part of the Thread Specification and is an OpenThread-specific enhancement.

--
Jonathan Hui

yinzhou tao

unread,
Feb 25, 2022, 1:11:11 AM2/25/22
to openthread-users

A Child Supervision message is an empty MAC Data frame. A parent will only send a Child Supervision message if it has not sent another secure data frame within the Child Supervision interval. 
The problem is that the router did not send any packets within the  Child Supervision interval  , and after that time still did not send any packets.

A SED must poll for data frames by sending MAC Data Request messages.
You mean that even if the router sends a Child Supervision message, the SED will not receive it until the SED wakes up and sends a request packet?
That seems child supervision does not reduce message transmission and cannot reduce power consumption.Is that right?

Jonathan Hui

unread,
Feb 25, 2022, 1:13:12 AM2/25/22
to yinzhou tao, openthread-users
On Thu, Feb 24, 2022 at 10:11 PM yinzhou tao <taoyi...@gmail.com> wrote:

A Child Supervision message is an empty MAC Data frame. A parent will only send a Child Supervision message if it has not sent another secure data frame within the Child Supervision interval. 
The problem is that the router did not send any packets within the  Child Supervision interval  , and after that time still did not send any packets.

Did the SED perform a data poll? The router will only transmit data frames to a SED in response to a data poll.

A SED must poll for data frames by sending MAC Data Request messages.
You mean that even if the router sends a Child Supervision message, the SED will not receive it until the SED wakes up and sends a request packet?
That seems child supervision does not reduce message transmission and cannot reduce power consumption.Is that right?

Child Supervision reduces message transmission relative to the alternative, which is to perform an MLE Child Update Request/Response exchange.
 
--
Jonathan Hui

yinzhou tao

unread,
Feb 25, 2022, 1:29:11 AM2/25/22
to openthread-users
I  found child supervision seems to be very similar to the usage of Enhanced Frame Pending. If the router does not save the message that needs to be sent to the SED, when the sed sends a   MAC Data  request,  router will reply to the SED a child supervision message to end the data poll, is this correct?

Jonathan Hui

unread,
Feb 25, 2022, 1:39:42 AM2/25/22
to yinzhou tao, openthread-users
Enhanced Frame Pending allows a router to indicate that it has a frame pending in an ACK to a MAC Data frame. In Thread 1.1, only an ACK to a MAC Data Request message can indicate a frame is pending for the child. In other words, Enhanced Frame Pending removes the need for a child to send MAC Data Requests when it is already sending other MAC Data frames.

--
Jonathan Hui



--
You received this message because you are subscribed to the Google Groups "openthread-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openthread-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openthread-users/1766b87e-d546-4fbd-93b0-21eb48314b8cn%40googlegroups.com.

yinzhou tao

unread,
Feb 25, 2022, 2:06:28 AM2/25/22
to openthread-users
You mean that child Supervision and EFP are independent?

Jonathan Hui

unread,
Feb 25, 2022, 2:07:59 AM2/25/22
to yinzhou tao, openthread-users
Yes, Enhanced Frame Pending and Child Supervision are independent mechanisms.

--
Jonathan Hui



yinzhou tao

unread,
Feb 25, 2022, 2:12:46 AM2/25/22
to openthread-users
Are they the same mechanism? I feel that they are adding information to the ack that the router replies to the  MAC Data request to tell the child whether there are more packets to receive.

Jonathan Hui

unread,
Feb 26, 2022, 12:30:22 AM2/26/22
to yinzhou tao, openthread-users
They are not the same mechanism. An IEEE 802.15.4 Imm-Ack does not enable MAC Frame Security, whereas Child Supervision sends an empty MAC Data frame with security enabled.

--
Jonathan Hui



yinzhou tao

unread,
Mar 2, 2022, 10:16:23 PM3/2/22
to openthread-users
Actually, I can understand that the contents of the packets of the two functions are different.   I mean these two  mechanism  do some special processing in the ack of the router replying to the child to indicate whether there is data to be sent  , so as to reduce power consumption, right?   I also think that if both functions need to be modified in ACK  , then the two functions should not coexist , right?

Jonathan Hui

unread,
Mar 2, 2022, 10:20:47 PM3/2/22
to yinzhou tao, openthread-users
With Enhanced Frame Pending, the child is processing received ACKs to determine if the parent has additional data pending for the child.

With Child Supervision, the child is processing received secured data frames to determine if the parent still has state for the child.

Enhanced Frame Pending and Child Supervision are independent mechanisms that can coexist.

--
Jonathan Hui



Reply all
Reply to author
Forward
0 new messages