Jam 検出

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

任意のデバイスで信号妨害を検出するための構成可能なメカニズムを提供する OpenThread ノードで、Jam 検出機能を有効にします。

この機能は、以下を行えることを必要とするデバイス認証に役立ちます。 電波妨害を検出できます各認証タイプの要件を満たすように構成できます。

仕組み

Jam 検出機能がノードの RSSI(受信信号強度インジケーター)をモニタリングする そのチャンネルが一定期間、過去 90 日間の する。

Jam 検出が有効になっている場合:

  1. Jam の検出状態が false に設定されています。
  2. ノードは、1 秒間隔で RSSI を複数回サンプリングします。
  3. 1 秒間全体の RSSI が、すべてのサンプルで構成された RSSI しきい値を上回る場合、その 1 秒間はジャミングと見なされます。
  4. 障害が発生した 1 秒間隔の総数が次の値以上 構成された Busy Period の総数と等しい 前の構成した検出ウィンドウ秒内の秒数 その時点の Jam 検出状態が設定され、 true まで。
  5. 障害が発生した 1 秒間隔の総数が未満場合 その期間内に構成された Busy Period 秒の合計 任意の時点で先行構成した検出ウィンドウの秒数、 そのときの Jam 検出状態が false に設定されます。

履歴ビットマップ

OpenThread APIwpantund プロパティでは、直近の 63 秒間のビットマップを取得できます。このビットマップは、直前の 63 秒間の各時点で RSSI が構成された RSSI しきい値を超えたかどうかを示します。

たとえば、次のビットマップを取得します。

0xC248068C416E7FF0

バイナリに変換すると、過去 63 秒間に RSSI が構成された RSSI しきい値を超えたすべてのインスタンスが生成されます。

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

[Detections Window] が 16 秒に設定され、[Busy Period] が 8 に設定されている場合 51 秒で Jam の検出状態が true になります。 RSSI しきい値が 8 秒以上を超えた最初のインスタンス 表示されます。この例では、[Jam Detection State] は 次の 13 秒間は true

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
                                      [00001 01101110 011] = 8 in 16

-45 dBm が RSSI しきい値として構成されている場合、このビットマップは次のグラフで表すことができます。

OT ジャムの検出

有効にする方法

この機能はデフォルトで無効になっています。

定義別

Jam 検出を有効にするには、 1 として OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE openthread/src/core/config/openthread-core-default-config.h OpenThread のビルドの前に次の作業を行います。

#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif

オプション別

または、ビルド時に -DOT_JAM_DETECTION=ON ビルド オプションを使用します。 OpenThread:

./script/build -DOT_JAM_DETECTION=ON

パラメータ

Jam 検出パラメータは、OpenThread API、 Spinel プロトコル、または wpanctl(ネットワーク用の wpantund コマンドライン ツール) 共同プロセッサ(NCP)の管理。その後の構成なしでこの機能が有効になっている場合は、デフォルト値が適用されます。

次のパラメータを使用してこの機能をカスタマイズします。

パラメータ
RSSI しきい値
デフォルト値
0 dBm
説明
RSSI のしきい値を dBm 単位で指定します。この値を超えると、チャネルが妨害されたと判断されます。
検出ウィンドウ
デフォルト値
63 秒
説明
信号ジャミングをチェックする期間を秒単位で指定します。範囲: 1~63。
混雑期間
デフォルト値
63 秒
説明
Jam 検出をトリガーするために RSSI が RSSI しきい値を上回る必要がある、検出時間枠内の集計秒数を指定します。検出期間より短くする必要があります。範囲: 1~63。

API

OpenThread

Jam Detection API を使用して以下を行います。 Jam 検出機能を OpenThread アプリケーションで直接管理できます。「 OpenThread API は次の機能を提供します。

  • 機能の開始と停止
  • Jam の検出状態を確認する
  • すべてのパラメータを管理する
  • 現在の Jam 検出履歴のビットマップを取得する
  • ジャムが検出されたときのコールバック関数を登録する

スピネル

Spinel プロトコルを使用すると、ホストデバイスは NCP と直接通信できます。このプロトコルは、openthread/src/lib/spinel/spinel.h でジャム検出プロパティを公開し、次の機能を提供します。

  • 機能を開始および停止する
  • Jam の検出状態を確認する
  • すべてのパラメータを管理する
  • 現在の Jam 検出履歴のビットマップを取得する

CLI

OpenThread

この機能に関連する OpenThread CLI コマンドはありません。

ウパンタント

wpanctl CLI を使用して、OpenThread NCP 構成のジャム検出機能を管理します。wpantund で、すべての Jam 検出の設定が NCP に保持されます。 リセットできます。

wpanctl を使用すると、次の wpantund プロパティにアクセスできます。

プロパティ
JamDetection:Status
形式
ブール値
説明
読み取り専用。Jam の検出状態。電波妨害が現在検出されているかどうかを示します。
JamDetection:Enable
形式
ブール値
説明
Jam 検出機能を有効または無効にします。
JamDetection:RssiThreshold
形式
dBm
説明
チャンネルをブロックしたとみなす RSSI しきい値を dBm 単位で指定します。
JamDetection:Window
形式
説明
信号ジャミングをチェックする期間を秒単位で指定します。範囲: 1 ~ 63。
JamDetection:BusyPeriod
形式
説明
Jam 検出をトリガーするために RSSI が JamDetection:RssiThreshold を超える必要がある JamDetection:Window 内の集計秒数を指定します。JamDetection:Window より小さい値にしてください。範囲: 1~63。
JamDetection:Debug:HistoryBitmap
形式
64 ビット値
説明
モニタリングとデバッグのために、ジャム検出状態の履歴に関する情報を提供します。

たとえば、NCP の Jam 検出状態を取得するには、次のコマンドを実行します。

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

NCP で Jam 検出 RSSI しきい値を -45 dBm に設定するには:

sudo wpanctl setprop JamDetection:RssiThreshold -45
sudo wpanctl getprop JamDetection:RssiThreshold
JamDetection:RssiThreshold = -45

wpantund プロパティの詳細については、wpantund GitHub リポジトリをご覧ください。