兒童監督

在 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/src/core/config/child_supervision.h 檔案中將 OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE 定義為 1,然後再建構 OpenThread

#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 指令。