OpenThread ノードでのシグナル ジャミング検出の構成可能なメカニズムを提供するには、Jam Detection 機能を有効にします。
この機能は、特定のチャンネルで信号障害を検出できるデバイス認証を必要とする場合に便利です。それぞれのタイプの認証要件を満たすように構成できます。
仕組み
Jam Detection は指定された時間枠内でノードの RSSI(受信信号強度インジケーター)をモニタリングし、チャンネルが故障しているかどうかを判断します。
Jam 検出が有効になっている場合:
- Jam の検出状態は
false
に設定されています。 - このノードは、1 秒間隔で複数回 RSSI をサンプリングします。
- 1 秒間隔の RSSI がすべてのサンプルで構成された RSSI しきい値を超えないと、その 1 秒間隔は破損したと見なされます。
- 失敗した 1 秒間隔の集計数が次の値以上
等しい構成された合計数忙しい時間帯秒(前述の構成内)検出期間その時点のジャム検出状態は、任意の時点で
true
。 - 失敗した 1 秒間隔の集計数が下回る構成された総数忙しい時間帯前述の構成内の秒数検出期間その時点の Jam 検出状態は、
false
。
履歴ビットマップ
OpenThread API と wpantund
プロパティでは、過去 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 しきい値である場合、このビットマップは次のグラフで表されます。

有効にする方法
この機能はデフォルトで無効になっています。
定義
Jam 検出を有効にするには、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
パラメータ
Jam Detection パラメータは、OpenThread API、Spinel プロトコル、またはネットワーク コプロセッサ(NCP)管理用の wpantund
コマンドライン ツールである wpanctl
を通じてのみ構成できます。後続の構成なしで機能を有効にした場合は、デフォルト値が適用されます。
この機能をカスタマイズするには、次のパラメータを使用します。
パラメータ | |||||
---|---|---|---|---|---|
RSSI のしきい値 |
|
||||
検出期間 |
|
||||
取り込み期間 |
|
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 |
|
||||
JamDetection:Enable |
|
||||
JamDetection:RssiThreshold |
|
||||
JamDetection:Window |
|
||||
JamDetection:BusyPeriod |
|
||||
JamDetection:Debug:HistoryBitmap |
|
たとえば、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 リポジトリをご覧ください。