Parent Child Table Lost While SED Continues Data Polling When Child Supervision Is Disabled #12668
-
|
During interoperability testing with several Thread devices currently available on the market, we observed that some devices do not enable Child Supervision. We are trying to better understand the potential impact of this configuration in real deployments. In our tests we observed that both the FTD parent and the Sleepy End Device (SED) did not enable Child Supervision. From the Thread documentation, we understand that Child Supervision helps detect stale parent-child relationships, especially when MAC ACKs are still received even if the parent no longer maintains the child entry. However, since some deployed devices do not enable this feature, we would like to understand what scenarios could lead to inconsistent states. We are interested in situations where the following condition occurs:
Result:
I want to understand under what circumstances this abnormal phenomenon would occur, and what causes the parent node's childtable to lose the SED node. |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 2 replies
-
|
FYI https://github.com/SiliconLabs/simplicity_sdk/blob/36e12f01947c2bed82922015e87b926df0745bc2/protocol/openthread/platform-abstraction/efr32/openthread-core-efr32-config.h#L218 |
Beta Was this translation helpful? Give feedback.
-
|
When Child Supervision is disabled, a Sleepy End Device (SED) relies entirely on MAC layer acknowledgments to determine if its parent is still valid. Here is a breakdown of why this illusion occurs and the specific scenarios that cause the parent to lose the child entry in the first place. The Root Cause of the Illusion: Hardware Auto-ACKsTo understand why the SED thinks it is still attached, we have to look at how the radio hardware interacts with the OpenThread software stack:
Because the MAC ACK is generated by the radio hardware before the OpenThread stack validates the child table, the SED receives the ACK, assumes the parent is happily holding onto its messages, and goes back to sleep. Scenarios Leading to the Lost Child EntrySince the SED successfully attached initially, the parent must have actively removed the child entry. Here are the most common deployment scenarios that trigger this:
The ImpactWithout Child Supervision, the SED is entirely blind to these upper-layer disconnections. It will remain stuck in this "zombie" loop—polling, getting an ACK, and sleeping—indefinitely. It will never realize it needs to initiate a new MLE attach process to find a new parent, resulting in a complete loss of IPv6 connectivity for that node. |
Beta Was this translation helpful? Give feedback.
-
|
Yes, we are aware of this issue and need to enable this feature. Unfortunately, some chip SDKs do not enable this function by default. Returning to the question, I also considered the possibility of a parent node reboot, or that the parent node might not have received data polling, leading to the loss of information in the child table. However, the polling interval for this SED is 5 seconds. Normally, packet loss shouldn't be consistent. Because if there are more than 4 polling packet losses, it should trigger a reattach behavior on the device. One possibility I can think of is that the parent node underwent a role switch within a short period, say 5 seconds, from router->mtd->router, and the router's short address did not change. |
Beta Was this translation helpful? Give feedback.
When Child Supervision is disabled, a Sleepy End Device (SED) relies entirely on MAC layer acknowledgments to determine if its parent is still valid. Here is a breakdown of why this illusion occurs and the specific scenarios that cause the parent to lose the child entry in the first place.
The Root Cause of the Illusion: Hardware Auto-ACKs
To understand why the SED thinks it is still attached, we have to look at how the radio hardware interacts with the OpenThread software stack: