高度な機能を実装する

<ph type="x-smartling-placeholder"></ph> GitHub のソースを表示

一部の高度な機能は、使用できるかどうかによって プラットフォームでサポートされている必要があります。

自動フレームを保留中

IEEE 802.15.4 では、親会社とインターネット間の 2 種類のデータ転送方法が定義されています。 子ども: 直接的伝達と間接的伝達後者は、 主にスリープ状態にあるエンドデバイス(SED)向けで、 キューに入れられたデータの親をポーリングするために定期的にスリープ状態から復帰します。

  • 直接送信 - 親がデータフレームをエンドデバイスに直接送信します 直接送信

  • 間接送信 - 目的のエンドデバイスからリクエストされるまで、親はデータを保持します。 直接送信

間接的なケースでは、子側のデバイスは、まず親をポーリングして確認する必要があります。 使用可能なデータがあるかどうかを 確認しますそのために、子は 親はこれを承認します次に、親がそれを お子様のデバイスのデータを保持している。存在する場合は、その子にデータ パケットを送信します。 これにより、データの受信を確認します。

無線通信が送信パケットの Frame Pending ビットの動的設定をサポートしているか 確認応答を 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 を使用すると、ユーザーは AES、SHA1、SHA2、 その他のモジュール、楕円曲線の個々の関数を 暗号(ECC)モジュールです。詳しくは、 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 メッセージを暗号化/復号し、メッセージを検証する 統合コードですハードウェア アクセラレーションは、少なくとも基本的な 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 の一部に対するハードウェア アクセラレーションのみをサポートしているため、 モジュール全体ではなく、いくつかの関数を実装することが Kubernetes で path-to-mbedtls/library/ecp.c: ECC を加速 乗算を行います。

曲線 secp256r1 は、鍵交換アルゴリズムの ECJPAKE のドラフト。したがって、 ハードウェア アクセラレーションで少なくとも secp256r1 short weierstrass をサポートする必要がある 曲線演算ですSiLabs CRYPTO Hardware Acceleration for mbedTLS 例です。