部分進階功能為選用功能,視目標硬體平台是否支援這些功能而定。
待定影格
IEEE 802.15.4 定義父項與子項之間的資料傳輸方式:直接傳輸和間接傳輸。後者主要針對睡意裝置 (SED) 睡眠,大部分時間會休眠,且會定期在父項中輪詢佇列中的資料。
直接傳輸 - 父項直接將資料影格傳送到最終裝置
間接傳輸 — 父項資料會保留,直到其最終結束裝置要求
在間接情況下,子端裝置必須先輪詢父項,以判斷是否有可用的資料。為此,子項會傳送資料要求,由父項確認。接著,父項會判斷其是否有子裝置的任何資料;如果有,就會將資料封包傳送至子裝置,確認接收資料。
如果無線電支援在 SED 的傳出確認中動態設定「Frame Pending」位元,驅動程式就必須實作「Source address match」(來源位址比對) API 才能啟用這項功能。OpenThread 使用這個 API 告訴無線電要設定影格待處理位元的 SED。
如果無線電不支援動態設定 Frame Pending 位元,則圓形按鈕可能會將來源位址比對 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
編譯定義:
- 主要設定,用於定義在 OpenThread 中使用的所有必要巨集:
/openthread/third-party/mbedtls/mbedtls-config.h
- 使用者專屬設定,可定義模組和函式的替代實作方式:
src/platform-name-mbedtls-config.h
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 CCM 基本功能呼叫的基本 AES ECB (電子書籍簿) 模式。
如何使用替代的 AES 模組實作:
- 在使用者專屬的 mbedTLS 設定標頭檔案中定義
MBEDTLS_AES_ALT
巨集 - 使用
MBEDTLS_CPPFLAGS
變數指出aes_alt.h
檔案的路徑
SHA256 模組
OpenThread Security 套用 HMAC 和 SHA256 雜湊演算法,根據執行緒規格計算網路金鑰管理和 PSKc 產生雜湊值。
如要使用替代的基本 SHA256 模組實作:
- 在使用者專屬的 mbedTLS 設定標頭檔案中定義
MBEDTLS_SHA256_ALT
巨集 - 使用
MBEDTLS_CPPFLAGS
變數指出sha256_alt.h
檔案的路徑
ECC 函式
因為 mbedTLS 目前僅支援 ECC 函式的部分硬體加速,而非整個模組,因此您可以選擇實作 path-to-mbedtls/library/ecp.c
中定義的某些函式,以加速 ECC 點乘法。
曲線 secp256r1 用於 ECJPAKE 草稿的金鑰交換演算法。因此,硬體加速功能至少應支援 secp256r1 短項向外曲線曲線作業。如需範例,請參閱 SedLabs CRYPTO mbedTLS 硬體加速一文。