Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

高度な機能を実装する

GitHubでソースを表示

一部の高度な機能は、ターゲットハードウェアプラットフォームでサポートされているかどうかに応じて、オプションです。

自動フレーム保留中

IEEE 802.15.4は、親と子の間の2種類のデータ送信方法を定義しています。直接送信と間接送信です。後者は主に、ほとんどの時間スリープし、キューに入れられたデータについて親をポーリングするために定期的にウェイクアップするスリープ状態のエンドデバイス(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 GF上の楕円曲線暗号(ECC)のために、ユーザはAES、SHA1、SHA2の代替の実装を可能にするためにできるように、他のモジュール、ならびに個々の機能を(p)モジュール。参照してくださいmbedTLSのハードウェアアクセラレーションを詳細については。

OpenThreadはこれらのマクロを有効にしないため、対称暗号化アルゴリズム、ハッシュアルゴリズム、およびECC関数はすべて、デフォルトでソフトウェア実装を利用します。これらの実装には、かなりのメモリと計算リソースが必要です。最適なパフォーマンスと優れたユーザーエクスペリエンスを実現するには、ソフトウェアではなくハードウェアアクセラレーションを有効にして、上記の操作を実装することをお勧めします。

OpenThread内のハードウェアアクセラレーションを有効にするには、以下のmbedTLS設定ヘッダファイルが追加されなければならないot-configプラットフォームのcmakeのファイルにコンパイルの定義:

  • メイン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必須ではなく、ハードウェアアクセラレーションのためのユーザー固有の設定ヘッダファイルで有効にすることができます。

完全な例ユーザー固有の設定については、 mbedtls_config_autogen.hでファイルot-efr32

AESモジュール

OpenThread Securityは、AES CCM(Counter with CBC-MAC)暗号化を適用して、IEEE 802.15.4またはMLEメッセージを暗号化/復号化し、メッセージ統合コードを検証します。ハードウェアアクセラレーションは、少なくともAESCCM基本機能呼び出しの基本AESECB(電子コードブックブック)モードをサポートする必要があります。

代替のAESモジュール実装を利用するには:

  1. 定義MBEDTLS_AES_ALTユーザ固有mbedTLS構成ヘッダーファイルでマクロを
  2. パスを示しているaes_alt.h使用してファイルをMBEDTLS_CPPFLAGS変数を

SHA256モジュール

OpenThread Securityは、HMACおよびSHA256ハッシュアルゴリズムを適用して、スレッド仕様に従ってネットワークキー管理およびPSKc生成のハッシュ値を計算します。

代替の基本的なSHA256モジュール実装を利用するには:

  1. 定義MBEDTLS_SHA256_ALTユーザ固有mbedTLS構成ヘッダーファイルでマクロを
  2. パスを示しsha256_alt.h使用してファイルをMBEDTLS_CPPFLAGS変数を

ECC機能

mbedTLSは、現在だけではなく、モジュール全体よりも、ECC機能の部品のためのハードウェアアクセラレーションをサポートしているので、あなたはで定義されたいくつかの機能を実装するために選択することができますpath-to-mbedtls /library/ecp.c ECCポイント乗算を加速します。

曲線secp256r1はの鍵交換アルゴリズムで使用されているECJPAKEのドラフト。したがって、ハードウェアアクセラレーションは、少なくともsecp256r1の短いワイエルシュトラス曲線操作をサポートする必要があります。参照してくださいmbedTLSためSiLabs CRYPTOハードウェアアクセラレータたとえば。