一部の高度な機能は、対象ハードウェア プラットフォームでサポートされているかどうかに応じて省略できます。
自動フレーム保留
IEEE 802.15.4 では、親と子の間のデータ送信方法が 2 種類定義されています(直接送信と間接送信)。後者は、主にスリープ状態のエンドデバイス(SED)用に設計されており、キューに入れられたデータについて親をポーリングして、定期的に復帰させます。
直接送信 - 親はデータフレームを直接エンドデバイス に送信します。
間接転送 - 親は目的のエンドデバイスからのリクエストがあるまでデータを保持します。
間接的なケースでは、子のエンドデバイスが最初に親にポーリングして、利用可能なデータがあるかどうかを判断する必要があります。これを行うために、子はデータ リクエストを送信し、親はそれを確認します。親は、子デバイスにデータがあるかどうかを判断します。子データがある場合は、子デバイスにデータパケットを送信し、子デバイスでデータの受信を確認します。
無線通信が SED への送信確認応答でフレーム保留ビットを動的に設定する場合、ドライバは、送信元アドレス一致 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 内でハードウェア アクセラレーションを有効にするには、プラットフォームの CMake ファイルで、次の mbedTLS 構成ヘッダー ファイルを 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(Counter with CBC-MAC)暗号を適用して IEEE 802.15.4 または MLE メッセージを暗号化/復号し、メッセージ統合コードを検証します。ハードウェア アクセラレーションは、AES CCM 基本機能呼び出しについて、少なくとも基本的な AES ECB(Electronic Codebook Book)モードをサポートしている必要があります。
別の AES モジュール実装を利用するには:
- ユーザー固有の mbedTLS 構成ヘッダー ファイルで
MBEDTLS_AES_ALT
マクロを定義する MBEDTLS_CPPFLAGS
変数を使用して、aes_alt.h
ファイルのパスを指定します
SHA256 モジュール
OpenThread Security は、HMAC アルゴリズムと SHA256 ハッシュ アルゴリズムを適用して、Thread 仕様に従ってネットワーク キー管理と PSKc 生成のハッシュ値を計算します。
代替の基本的な SHA256 モジュール実装を利用するには:
- ユーザー固有の mbedTLS 構成ヘッダー ファイルで
MBEDTLS_SHA256_ALT
マクロを定義する MBEDTLS_CPPFLAGS
変数を使用して、sha256_alt.h
ファイルのパスを指定します
ECC 関数
mbedTLS は現在、モジュール全体ではなく、ECC 関数の一部でハードウェア アクセラレーションのみをサポートしているため、path-to-mbedtls/library/ecp.c
で定義されたいくつかの関数を実装して、ECC ポイントの乗算を高速化できます。
曲線 secp256r1 は、ECJPAKE ドラフトの鍵交換アルゴリズムで使用されます。したがって、ハードウェア アクセラレーションは、少なくとも secp256r1 の短い Weierstrass 曲線オペレーションをサポートする必要があります。例については、SiLabs CRYPTO Hardware Acceleration for mbedTLS をご覧ください。