Jam-Erkennung

Quellcode auf GitHub ansehen

Wenn Sie einen konfigurierbaren Mechanismus zur Erkennung von Signalstörungen auf jedem OpenThread-Knoten bereitstellen möchten, aktivieren Sie die Funktion „Störung erkennen“.

Diese Funktion ist nützlich für Gerätezertifizierungen, bei denen die Fähigkeit zum Erkennen von Signalstörungen auf einem bestimmten Kanal erforderlich ist. Sie kann so konfiguriert werden, dass sie den Anforderungen der einzelnen Zertifizierungstypen entspricht.

Funktionsweise

Die Jam-Erkennung überwacht den RSSI (Empfangssignalstärkenindikator) eines Knotens während bestimmter Zeitfenster, um festzustellen, ob der Kanal blockiert wurde.

Wenn die Stauerkennung aktiviert ist:

  1. Der Status der Blockierungserkennung ist auf false festgelegt.
  2. Der Knoten erfasst den RSSI mehrmals über ein Sekundenintervall.
  3. Wenn der RSSI während des gesamten Intervalls von einer Sekunde für jedes Sample über dem konfigurierten RSSI-Grenzwert bleibt, wird das Intervall von einer Sekunde als gestört betrachtet.
  4. Wenn die Gesamtzahl der überlasteten Intervalle von einer Sekunde größer oder gleich der Gesamtzahl der konfigurierten Beschäftigten Zeiträume innerhalb des vorhergehenden konfigurierten Erkennungszeitraums ist, wird der Status der Blockierungserkennung zu diesem Zeitpunkt auf true gesetzt.
  5. Wenn die Gesamtzahl der fehlerhaften Intervalle von einer Sekunde unter der Gesamtzahl der konfigurierten Beschäftigten Zeiträume innerhalb des vorhergehenden konfigurierten Erkennungszeitraums liegt, wird der Zustand der Blockierungserkennung zu diesem Zeitpunkt auf false gesetzt.

Verlaufs-Bitmap

In der OpenThread API und den wpantund-Properties kann eine Bitmap der letzten 63 Sekunden abgerufen werden. Diese Bitmap zeigt an, ob der RSSI den konfigurierten RSSI-Schwellenwert bei jeder der vorhergehenden 63 Sekunden überschritten hat.

So können Sie beispielsweise die folgende Bitmap abrufen:

0xC248068C416E7FF0

Bei der Umwandlung in Binärdaten wird jede Instanz erfasst, bei der der RSSI während der letzten 63 Sekunden über den konfigurierten RSSI-Grenzwert gestiegen ist:

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

Wenn das Erkennungsfenster auf 16 Sekunden und der Verfügbarkeitszeitraum auf 8 Sekunden festgelegt ist, ändert sich der Jam-Erkennungsstatus nach 51 Sekunden zu true. Dies ist die erste Instanz, bei der der RSSI-Grenzwert in den vergangenen 16 Sekunden mindestens 8 ganze Sekunden überschritten wurde. In diesem Beispiel bleibt der Status der Stauerkennung für die nächsten 13 Sekunden bei true.

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

Diese Bitmap könnte durch das folgende Diagramm dargestellt werden, wenn -45 dBm der konfigurierte RSSI-Grenzwert war:

OT-Störung erkennen

Aktivierungsmethode

Diese Funktion ist standardmäßig deaktiviert.

Nach Definition

Wenn Sie die Störungserkennung aktivieren möchten, definieren Sie OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE als 1 in der Datei openthread/src/core/config/openthread-core-default-config.h, bevor Sie OpenThread erstellen:

#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif

Nach Option

Alternativ können Sie die -DOT_JAM_DETECTION=ON-Buildoption verwenden, wenn Sie OpenThread erstellen:

./script/build -DOT_JAM_DETECTION=ON

Parameter

Parameter für die Störungserkennung können nur über die OpenThread API, das Spinel-Protokoll oder wpanctl, das wpantund-Befehlszeilentool zur Verwaltung des Netzwerk-Coprozessors (NCP), konfiguriert werden. Standardwerte werden angewendet, wenn das Feature ohne nachfolgende Konfiguration aktiviert wird.

Passen Sie diese Funktion mithilfe der folgenden Parameter an:

Parameter
RSSI-Grenzwert
Standardwert
0 dBm
Beschreibung
Gibt den RSSI-Schwellenwert in dBm an, ab dem der Kanal als gestört betrachtet wird.
Erkennungszeitraum
Standardwert
63 Sekunden
Beschreibung
Gibt das Zeitfenster in Sekunden an, in dem nach Signalstörungen gesucht werden soll. Bereich: 1–63.
Stoßzeit
Standardwert
63 Sekunden
Beschreibung
Gibt die Gesamtzahl der Sekunden innerhalb des Erkennungsfensters an, in denen der RSSI über dem RSSI-Grenzwert liegen muss, um die Funkstörungserkennung auszulösen. Muss kleiner als das Erkennungsfenster sein. Bereich: 1–63.

API

OpenThread

Mit der Jam Detection API können Sie die Funktion „Störung erkennen“ direkt in Ihrer OpenThread-Anwendung verwalten. Die OpenThread API bietet die folgenden Funktionen:

  • Funktion starten und beenden
  • Status der Papierstauerkennung aufrufen
  • Alle Parameter verwalten
  • Aktuelle Bitmap der Jam-Erkennung abrufen
  • Callback-Funktion für den Fall registrieren, dass ein Stau erkannt wird

Spinell

Über das Spinel-Protokoll kann ein Hostgerät direkt mit einem NCP kommunizieren. Dieses Protokoll stellt Eigenschaften zur Blockierungserkennung in openthread/src/lib/spinel/spinel.h bereit, die die folgenden Funktionen bieten:

  • Funktion starten und beenden
  • Status der Papierstauerkennung aufrufen
  • Alle Parameter verwalten
  • Aktuelle Bitmap des Stauerkennungsverlaufs abrufen

Befehlszeile

OpenThread

Es gibt keine OpenThread-CLI-Befehle im Zusammenhang mit dieser Funktion.

wpantund

Verwenden Sie die wpanctl-Befehlszeile, um die Jam-Erkennungsfunktion für eine OpenThread-NCP-Konfiguration zu verwalten. wpantund behält beim Zurücksetzen des NCP die gesamte Konfiguration für die Blockierungserkennung bei.

wpanctl bietet Zugriff auf die folgenden wpantund-Properties:

Attribute
JamDetection:Status
Format
boolean
Beschreibung
Schreibgeschützt. Status der Papierstauerkennung. Gibt an, ob derzeit ein Signalausfall erkannt wird.
JamDetection:Enable
Format
boolean
Beschreibung
Aktivieren oder deaktivieren Sie die Funktion „Funkstörungen erkennen“.
JamDetection:RssiThreshold
Format
dBm
Beschreibung
Gibt den RSSI-Grenzwert in dBm an, ab dem der Kanal als blockiert betrachtet wird.
JamDetection:Window
Format
Sekunden
Beschreibung
Gibt das Zeitfenster in Sekunden an, in dem nach Signalstörungen gesucht werden soll. Bereich: 1–63.
JamDetection:BusyPeriod
Format
Sekunden
Beschreibung
Gibt die Anzahl der Sekunden innerhalb von JamDetection:Window an, in denen der RSSI über JamDetection:RssiThreshold liegen muss, um die Funkstörungserkennung auszulösen. Muss kleiner als JamDetection:Window sein. Bereich: 1–63.
JamDetection:Debug:HistoryBitmap
Format
64-Bit-Wert
Beschreibung
Enthält Informationen zum Verlauf des Jam-Erkennungsstatus für Monitoring- und Fehlerbehebungszwecke.

So rufen Sie beispielsweise den Status der Blockierungserkennung für einen NCP ab:

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

So legen Sie den RSSI-Grenzwert für die Funkstörungserkennung auf einem NCP auf -45 dBm fest:

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

Weitere Informationen zu wpantund-Properties finden Sie im GitHub-Repository für wpantund.