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

Jam の検出

GitHub でソースを見る

OpenThread ノードでのシグナル ジャミング検出の構成可能なメカニズムを提供するには、Jam Detection 機能を有効にします。

この機能は、特定のチャンネルで信号障害を検出できるデバイス認証を必要とする場合に便利です。それぞれのタイプの認証要件を満たすように構成できます。

仕組み

Jam Detection は指定された時間枠内でノードの RSSI(受信信号強度インジケーター)をモニタリングし、チャンネルが故障しているかどうかを判断します。

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

  1. Jam の検出状態は false に設定されています。
  2. このノードは、1 秒間隔で複数回 RSSI をサンプリングします。
  3. 1 秒間隔の RSSI がすべてのサンプルで構成された RSSI しきい値を超えないと、その 1 秒間隔は破損したと見なされます。
  4. 失敗した 1 秒間隔の集計数が次の値以上 等しい構成された合計数忙しい時間帯秒(前述の構成内)検出期間その時点のジャム検出状態は、任意の時点でtrue
  5. 失敗した 1 秒間隔の集計数が下回る構成された総数忙しい時間帯前述の構成内の秒数検出期間その時点の Jam 検出状態は、false

履歴ビットマップ

OpenThread APIwpantund プロパティでは、過去 63 秒間のビットマップが取得に利用できます。このビットマップは、RSSI が、設定された RSSI しきい値(過去 63 秒)を超過したかどうかを示します。

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

0xC248068C416E7FF0

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

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

検出ウィンドウが 16 秒に設定され、ビジー期間が 8 秒に設定されている場合、Jam 検出状態は 51 秒で true(RSSI しきい値が最初に発生したインスタンス)になります。直前の 16 秒間で 8 秒間を超えることを示している。この例では、Jam 検出状態は今後 13 秒間 true のままです。

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

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

OT Jam の検出

有効にする方法

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

定義

Jam 検出を有効にするには、OpenThread をビルドする前に、openthread/src/core/config/openthread-core-default-config.h ファイルで OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE1 として定義します。 。

#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif

オプション別

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

./script/build -DOT_JAM_DETECTION=ON

パラメータ

Jam Detection パラメータは、OpenThread API、Spinel プロトコル、またはネットワーク コプロセッサ(NCP)管理用の wpantund コマンドライン ツールである wpanctl を通じてのみ構成できます。後続の構成なしで機能を有効にした場合は、デフォルト値が適用されます。

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

パラメータ
RSSI のしきい値
デフォルト値
0 dBm
説明
チャネルの故障とみなすしきい値の RSSI レベルを dBm で指定します。
検出期間
デフォルト値
63 秒
説明
電波干渉をチェックするウィンドウを秒単位で指定します。範囲: 1 ~ 63。
取り込み期間
デフォルト値
63 秒
説明
Jam 検出をトリガーするために RSSI が RSSI しきい値を上回る必要がある、[Detection] ウィンドウ内の集計秒数を指定します。検出期間より小さい値を指定してください。範囲: 1 ~ 63。

API

OpenThread

Jam Detection API を使用して、OpenThread アプリケーションで Jam 検出機能を直接管理します。OpenThread API には、次の機能があります。

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

スピネル

Spinel プロトコルを使用すると、ホストデバイスと NCP の直接通信が可能になります。このプロトコルは、以下の機能を提供する Jam Detection プロパティを openthread/src/lib/spinel/spinel.h に公開します。

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

CLI

OpenThread

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

Wpantund

wpanctl CLI を使用して、OpenThread NCP 構成の Jam 検出機能を管理します。wpantund は、NCP のリセット時にすべての Jam 検出の構成を保持します。

wpanctl では、次の wpantund プロパティにアクセスできます。

プロパティ
JamDetection:Status
形式
ブール値
説明
読み取り専用。Jam の検出状態。シグナル 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 ビット値
説明
モニタリングとデバッグの目的で、Jam 検出状態の履歴に関する情報を提供します。

たとえば、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 リポジトリをご覧ください。