OpenThread ノードで信号妨害検出の構成可能なメカニズムを提供するには、Jam 検出機能を有効にします。
この機能は、特定のチャンネルで信号の詰まりを検出する機能を必要とするデバイス認証に役立ちます。また、各タイプの認定資格の要件を満たすように構成できます。
仕組み
Jam 検出は、指定された時間枠内でノードの RSSI(受信信号強度インジケーター)をモニタリングして、チャンネルが詰まっているかどうかを判断します。
Jam 検出が有効になっている場合:
- Jam の検出状態が
false
に設定されています。 - ノードは RSSI を 1 秒ごとに複数回サンプリングします。
- 1 秒間隔ごとの RSSI がすべてのサンプルで設定された RSSI しきい値を上回っている場合、1 秒間隔が詰まっているとみなされます。
- 1 秒間隔の妨害の合計回数が、その時点の構成済み検出ウィンドウ内の構成済みのビジー期間の秒数以上の場合、その時点の Jam 検出状態は
true
に設定されます。 - 1 秒間の詰まりの集合数が事前構成済みの検出ウィンドウ内にある構成済みのビジー期間の秒数よりも少ない場合、その時点での Jam 検出状態は
false
に設定されます。
履歴のビットマップ
OpenThread API と wpantund
プロパティでは、過去 63 秒のビットマップを取得できます。このビットマップは、RSSI が過去 63 秒ごとに構成済みの RSSI しきい値を超えたかどうかを示します。
たとえば、次のビットマップを取得できます。
0xC248068C416E7FF0
バイナリに変換すると、過去 63 秒間に RSSI が構成された RSSI しきい値を超えたすべてのインスタンスが生成されます。
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
検出期間を 16 秒に設定し、ビジー期間を 8 秒に設定すると、過去 16 秒で RSSI のしきい値が 8 秒以上になった最初のインスタンスとなるため、Jam の検出状態は 51 秒で true
になります。この例では、Jam 検出状態は次の 13 秒間 true
のままになります。
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000 [00001 01101110 011] = 8 in 16
設定された RSSI しきい値が -45 dBm の場合、このビットマップは次のグラフで表されることがあります。
有効にする方法
この機能はデフォルトでは無効になっています。
定義
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 プロトコル、または wpanctl
wpantund
コマンドライン ツールとしてネットワーク コプロセッサ(NCP)管理用としてのみ設定できます。この機能を有効にすると、後続の構成なしでデフォルト値が適用されます。
この機能をカスタマイズするには、次のパラメータを使用します。
パラメータ | |||||
---|---|---|---|---|---|
RSSI しきい値 |
|
||||
検出期間 |
|
||||
繁忙期 |
|
API
OpenThread
Jam Detection API を使用して、OpenThread アプリケーション内で Jam 検出機能を直接管理できます。OpenThread API には次の機能があります。
- この機能を開始、停止する
- Jam の検出の状態を表示する
- すべてのパラメータを管理
- 現在の Jam 検出履歴ビットマップを取得する
- Jam が検出されたときのコールバック関数を登録する
スピネル
Spinel プロトコルを使用すると、ホストデバイスは NCP と直接通信できます。このプロトコルは、次の機能を提供する openthread/src/lib/spinel/spinel.h
で Jam 検出プロパティを公開します。
- この機能を開始、停止する
- 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 リポジトリをご覧ください。