實作進階功能

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

前往 GitHub 查看原始碼

部分進階功能為選用功能,實際情況取決於目標硬體平台是否支援這些功能。

自動取景

IEEE 802.15.4 定義了上層和子項之間的兩種資料傳輸方法:直接傳輸和間接傳輸。後者主要用於睡眠時間最多 (SED) 的睡眠裝置,大部分裝置會經常在睡眠時進行喚醒,以便定期向家長輪詢佇列中的資料。

  • 直接傳輸 - 父項直接將資料框架傳送到裝置 直線式傳輸

  • 間接傳輸:父項會保存資料,直到目標裝置要求為止 直線式傳輸

在間接應用實例中,兒童裝置必須先輪詢父項,以判斷是否有可用資料。為此,子女會傳送資料要求,由家長確認。接著,父項會判斷它是否包含任何子裝置的資料;如果有,則會將資料封包傳送至子裝置,而該裝置會確認收到資料。

如果無線電支援將傳出確認訊息中的 Frame 待處理位元動態設定為 SED,驅動程式就必須執行來源位址比對 API 以啟用這項功能。OpenThread 使用這個 API 告訴無線電要為 SED 設定頁框待處理位元。

如果電台不支援動態設定 Frame 待處理位元,則工作站可能會排除來源位址比對 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 CCM 基本功能呼叫的基本 AES ECB (電子圖書簿) 模式。

如何使用替代的 AES 模組實作:

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

SHA256 模組

OpenThread Security 使用 HMAC 和 SHA256 雜湊演算法,根據 Thread 規格計算網路金鑰管理和 PSKc 產生雜湊值。

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

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

ECC 函式

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

曲線 secp256r1 用於 ECJPAKE 草稿的金鑰交換演算法。因此,硬體加速功能至少應支援 secp256r1 短暫的強化曲面曲線運算。如需範例,請參閱 SedLabs CRYPTO Hardware Acceleration for mbedTLS