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

Jam の検出

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

GitHub でソースを見る

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

この機能は、特定のチャンネルで信号のジャミングを検出する機能を必要とするデバイス認証に役立ちます。各タイプの認証の要件を満たすように構成できます。

仕組み

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

Jam の検出が有効な場合:

  1. Jam の検出状態は false に設定されています。
  2. ノードは RSSI を 1 秒間隔ごとに複数回サンプリングします。
  3. その 1 秒間隔全体にわたる RSSI が各サンプルで構成された RSSI しきい値を上回っている場合、1 秒間隔はジャムとみなされます。
  4. ある時点でのジャム 1 秒間隔の総計が、前述の構成済みの検出ウィンドウ秒間における構成済みビジュアリゼーション秒の合計数よりも多い、または等しい場合、その時点での Jam の検出状態は true に設定されます。
  5. ある時点での 1 秒の間隔の集計が、前回の構成済みの検出ウィンドウ内の合計ビジュアリゼーション秒数よりも少ない場合、その時点の Jam 検出状態は false に設定されます。

履歴のビットマップ

OpenThread APIwpantund プロパティでは、過去 63 秒のビットマップを取得できます。このビットマップは、過去 63 秒ごとに、RSSI が構成済みの RSSI しきい値を超えたかどうかを示します。

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

0xC248068C416E7FF0

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

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

検出ウィンドウが 16 秒に設定され、ビジー期間が 8 秒に設定されている場合、Jam の検出状態は 51 秒で true になります。これは、過去 16 秒間に 8 秒以上、RSSI しきい値を超えた最初のインスタンスです。この例では、Jam Detection State が次の 13 秒間は true のままになります。

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

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

OT ジャム検出

有効にする方法

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

定義

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 しきい値を超える場合、検出ウィンドウ内の合計秒数を指定します。検出期間より短くする必要があります。範囲: 1 ~ 63。

API

OpenThread

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

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

スピネル

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

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

CLI

OpenThread

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

Wpantund

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

wpanctl は、次の wpantund プロパティへのアクセスを提供します。

Properties
JamDetection:Status
形式
boolean
説明
読み取り専用。Jam の検出状態。シグナルジャムが現在検出されたかどうかを示します。
JamDetection:Enable
形式
boolean
説明
Jam 検出機能を有効または無効にします。
JamDetection:RssiThreshold
形式
dBm
説明
RSSI のしきい値を dBm 単位で指定します。この上限を超えると、チャンネルがブロックされたと見なされます。
JamDetection:Window
形式
説明
シグナルのジャミングを確認するウィンドウを秒単位で指定します。範囲: 1 ~ 63。
JamDetection:BusyPeriod
形式
説明
Jam 検出をトリガーするには、JamDetection:Window 内の RSSI が JamDetection:RssiThreshold を超える必要がある秒数を秒単位で指定します。JamDetection:Window より小さい数を指定してください。範囲: 1 ~ 63。
JamDetection:Debug:HistoryBitmap
形式
64 ビット値
説明
モニタリングとデバッグの目的で Jam 検出状態の履歴に関する情報を提供します。

たとえば、NCP の Jam 検出状態を取得するには、次のようにします。

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

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

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

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