實作進階功能

前往 GitHub 查看原始碼

有些進階功能為選用項目,端看是否提供 對於目標硬體平台的支援

等待自動取景

IEEE 802.15.4 定義了父項和 小孩:直接傳輸和間接傳輸。後者的設計 主要是針對大部分時間睡覺的昏昏裝置 (SED) 裝置。 定期喚醒父項,找出佇列資料。

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

  • 間接傳輸:在裝置要求最終裝置要求之前,家長會保留資料 直接傳輸

如果是間接方法,子項裝置必須先輪詢父項,才能判定 以及是否有任何資料為此,孩子會傳送資料 父項要求進行確認父項會據此決定 取得孩童裝置的任何資料;如果有,就會將資料封包傳送給子項 裝置,確認已收到資料。

如果無線電支援動態設定傳出的 Frame Pending 位元 進行 SED 的確認,驅動程式必須實作 來源位址相符 API 來啟用這項功能。OpenThread 會利用這個 API 用來設定「Frame Pending」位元的 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 設定標頭檔案應加入 ot-config 編譯 所定義:

nrf52811.cmake 示例:

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

mbedtls-config.h 中加註的巨集並非強制性質,但可在以下項目中啟用: 安裝用於硬體加速的使用者專屬設定標頭檔案。

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

AES 模組

OpenThread Security 將 AES CCM (帶有 CBC-MAC 的計數器) 加密機制套用至 加密/解密 IEEE 802.15.4 或 MLE 訊息,並驗證訊息 整合代碼。硬體加速至少應支援基本 AES ECB (Electronic Codebook Book) 模式,用於 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 點乘法

曲線 secp256r1 會用在 ECJPAKE 草稿。因此 硬體加速至少應支援 secp256r1 短缺口 曲線運算請參閱 SiLabs CRYPTO 硬體加速: mbedTLS 例如,