實作進階功能

在 GitHub 中查看來源

某些進階功能是選用的目標,視目標硬體平台是否支援而定。

自動取景功能待處理

IEEE 802.15.4 定義了父項和子項之間的兩種資料傳輸方法:直接傳輸和間接傳輸。後者的主要用途是睡覺時間結束 (SED) 的休眠裝置。這類裝置經常會睡醒,然後定期喚醒家長對佇列資料進行訓練。

  • 直接傳輸:家長會將資料訊框直接傳送至裝置 直接傳輸

  • 間接傳輸— 家長保留資料,直到收到指定裝置的要求為止 直接傳輸

在間接情況下,子項裝置必須先輪詢父項,才能確定是否有任何資料可用。為此,子項會傳送資料要求,而父項藉由要求提出要求, 然後,家長會判斷其中是否有兒童裝置的任何資料;如果是的話,系統會將資料封包傳送至子裝置,進而確認資料已接收。

如果無線電支援將 SED 傳出確認中的動作設定為動態設定位元,驅動程式必須實作來源地址比對 API 以啟用這項功能。OpenThread 會使用這個 API 告訴無線電,告知哪些 SED 可設定「影格待處理」位元。

如果無線電不支援動態設定「視訊待處理」位元,無線電可能會隱藏來源地址比對 API 來傳回 OT_ERROR_NOT_IMPLEMENTED

透過無線電進行掃描/偵測

「能源掃描/偵測」功能需要無線電晶片對所選頻道中的能量進行取樣,並將偵測到的能量值傳回到上層。

如果這項功能未實作,IEEE 802.15.4 MAC 層會傳送/接收信標信標/回應封包,藉此評估頻道上目前的能源值。

如果無線電晶片支援能源掃描/偵測,請務必設定 OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0 巨集來停用軟體能源掃描邏輯。

mbedTLS 的硬體加速

mbedTLS 定義主設定檔標頭檔案 mbedtls-config.h 中的多個巨集,可讓使用者啟用 AES、SHA1、SHA2 和其他模組的替代實作方式。 ,以及 GF (p) 模組的橢圓曲線密碼編譯(ECC) 專屬函式。詳情請參閱 mbedTLS 硬體加速一文。

OpenThread 不會啟用這些巨集,因此對稱式加密演算法、雜湊演算法和 ECC 函式預設都會使用軟體實作。這些實作需要大量記憶體和運算資源。為享有最佳效能和更優質的使用者體驗,我們建議您啟用硬體加速功能 (而非軟體) 來導入上述作業。

如要在 OpenThread 中啟用硬體加速功能,請將下列 mbedTLS 設定標頭檔案新增至平台 CMake 檔案的 ot-config 編譯定義:

nrf52811.cmake 的範例:

target_compile_definitions(ot-config INTERFACE
    "MBEDTLS_USER_CONFIG_FILE=\"nrf52811-mbedtls-config.h\""
)

mbedtls-config.h 中的註解巨集並非強制性質,可在使用者專用的設定標頭檔案中啟用硬體加速。

如需使用者專屬設定的完整範例,請參閱 ot-efr32 中的 mbedtls_config_autogen.h 檔案。

AES 模組

OpenThread Security 使用 AES CCM (帶有 CBC-MAC 的計數器) 加密作業來加密/解密 IEEE 802.15.4 或 MLE 訊息,並驗證訊息整合代碼。硬體加速功能應至少支援基本 AES ECB (電子教科書本) 模式,以便進行 AES CCM 基本功能呼叫。

如何採用替代 AES 模組實作:

  1. 在使用者專用的 mbedTLS 設定標頭檔案中定義 MBEDTLS_AES_ALT 巨集
  2. 使用 MBEDTLS_CPPFLAGS 變數指明 aes_alt.h 檔案的路徑

SHA256 模組

OpenThread Security 利用 HMAC 和 SHA256 雜湊演算法,根據執行緒規格計算網路金鑰管理和 PSKc 的雜湊值。

如要採用替代的基本 SHA256 模組實作:

  1. 在使用者專用的 mbedTLS 設定標頭檔案中定義 MBEDTLS_SHA256_ALT 巨集
  2. 使用 MBEDTLS_CPPFLAGS 變數指明 sha256_alt.h 檔案的路徑

ECC 函式

由於 mbedTLS 目前僅支援部分 ECC 函式的硬體加速,而非整個模組,因此您可以選擇實作 path-to-mbedtls/library/ecp.c 中定義的一些函式,以加速 ECC 點乘法。

ECJPAKE 草稿的金鑰交換演算法中使用曲線 secp256r1。因此,硬體加速至少應支援 secp256r1 較短的強度曲線作業。如需範例,請參閱 SiLabs CRYPTO Hardware Acceleration for mbedTLS 一節。