任意の OpenThread ノードで信号妨害検出用の構成可能なメカニズムを提供するには、Jam Detection 機能を有効にします。
この機能は、特定のチャネルでの信号ジャミングを検出する機能を必要とするデバイス認証に役立ちます。各タイプの認定の要件を満たすように構成できます。
仕組み
ジャム検出は、指定された時間枠の間にノードの RSSI(受信信号強度インジケータ)をモニタリングして、チャネルがジャムされたかどうかを判断します。
ジャム検出が有効になっている場合:
- ジャム検出状態が
false
に設定されます。 - ノードは、1 秒間隔ごとに RSSI を複数回サンプリングします。
- その 1 秒間の RSSI がすべてのサンプルで構成済みの RSSI しきい値を上回っている場合、その 1 秒間は妨害されていると見なされます。
- 任意の時点で、詰まった 1 秒間隔の合計数が、直前の構成された 検出ウィンドウ秒内の構成された ビジー期間の合計秒数以上または等しい場合、その時点のジャム検出状態は
true
に設定されます。 - ジャムが発生した 1 秒間の合計数が、直前の構成された 検出ウィンドウ内の構成されたビジー期間の合計数よりも少ない場合、その時点のジャム検出状態は
false
に設定されます。
履歴ビットマップ
OpenThread API では、直前の 63 秒間のビットマップを取得できます。このビットマップは、過去 63 秒間の各秒で RSSI が構成済みの RSSI しきい値を超えたかどうかを示します。
たとえば、次のようなビットマップを取得できます。
0xC248068C416E7FF0
バイナリに変換すると、直前の 63 秒間に RSSI が構成済みの RSSI しきい値を超えたすべてのインスタンスが生成されます。
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
検出ウィンドウが 16 秒に設定され、ビジー期間が 8 秒に設定されている場合、ジャム検出状態は 51 秒で true
になります。これは、直前の 16 秒間で RSSI しきい値が 8 秒以上超過した最初のインスタンスであるためです。この例では、Jam Detection State は次の 13 秒間 true
のままです。
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000 [00001 01101110 011] = 8 in 16
-45 dBm が構成された RSSI しきい値の場合、このビットマップは次のグラフで表すことができます。

有効にする方法
この機能はデフォルトでは無効になっています。
By define
ジャム検出を有効にするには、OpenThread をビルドする前に、openthread/src/core/config/openthread-core-default-config.h
ファイルで OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
を 1
として定義します。
#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
パラメータ
ジャム検出パラメータは、OpenThread API または Spinel プロトコルでのみ構成できます。機能を有効にした後で構成を行わない場合、デフォルト値が適用されます。
この機能は、次のパラメータを使用してカスタマイズします。
パラメータ | |||||
---|---|---|---|---|---|
RSSI しきい値 |
|
||||
検出ウィンドウ |
|
||||
ビジー期間 |
|
API
OpenThread
Jam Detection API を使用して、OpenThread アプリケーションで Jam Detection 機能を直接管理します。OpenThread API には次の機能があります。
- 機能の開始と停止
- ジャム検出の状態を表示する
- すべてのパラメータを管理する
- 現在のジャム検出履歴ビットマップを取得する
- ジャムが検出されたときに呼び出されるコールバック関数を登録する
スピネル
Spinel プロトコルにより、ホストデバイスは NCP と直接通信できます。このプロトコルは、次の機能を提供する openthread/src/lib/spinel/spinel.h
でジャム検出プロパティを公開します。
- 機能の開始と停止
- ジャム検出の状態を表示する
- すべてのパラメータを管理する
- 現在のジャム検出履歴ビットマップを取得する
CLI
OpenThread
この機能に関連する OpenThread CLI コマンドはありません。