Rilevamento dell'inceppamento

Visualizza il codice sorgente su GitHub

Per fornire un meccanismo configurabile per il rilevamento dell'interferenza del segnale su qualsiasi nodo OpenThread, attiva la funzionalità di rilevamento delle interferenze.

Questa funzionalità è utile per le certificazioni dei dispositivi che richiedono la capacità di rilevare l'interferenza del segnale su un canale specifico. Può essere configurato per soddisfare i requisiti di ogni tipo di certificazione.

Come funziona

La funzionalità di rilevamento di Jam monitora l'RSSI (indicatore di intensità del segnale ricevuto) di un nodo in determinati intervalli di tempo per determinare se il canale è stato inceppata.

Quando il Rilevamento Jam è attivo:

  1. Lo stato di rilevamento del Jam è impostato su false.
  2. Il nodo campiona l'RSSI più volte in un intervallo di un secondo.
  3. Se l'RSSI nell'intero intervallo di un secondo rimane al di sopra della soglia RSSI configurata per ogni campione, l'intervallo di un secondo viene considerato interessato da interferenze.
  4. Se il numero aggregato di intervalli di un secondo bloccati è superiore o uguale al numero complessivo del periodo di attività configurato secondi entro i secondi della finestra di rilevamento configurata precedente in qualsiasi momento, lo stato di rilevamento del Jam in quel momento viene impostato a true.
  5. Se un numero complessivo di intervalli di un secondo bloccati è inferiore a il valore numero aggregato di secondi di Periodo di attività configurati entro la finestra di rilevamento configurata precedente in qualsiasi momento ora, lo stato di rilevamento del Jam in quel momento è impostato su false.

Bitmap della cronologia

Nell'API OpenThread e nelle proprietà wpantund, è presente una la bitmap dei 63 secondi precedenti è disponibile per il recupero. Questo bitmap indica se l'RSSI ha superato la soglia RSSI configurata in ciascuno dei 63 secondi precedenti.

Ad esempio, potresti recuperare la seguente bitmap:

0xC248068C416E7FF0

La conversione in binario produce ogni istanza dell'RSSI superiore a quella configurata Soglia RSSI nei 63 secondi precedenti:

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

Se la Finestra di rilevamento è impostata su 16 secondi e il Periodo di attività è impostato su 8 secondi, lo stato di rilevamento dei Jam diventa true a 51 secondi, ossia prima istanza in cui la soglia RSSI è stata superata per almeno 8 secondi interi nei 16 secondi precedenti. In questo esempio, lo stato di rilevamento degli ingorghi rimanetrue per i 13 secondi successivi.

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

Questo bitmap potrebbe essere rappresentato dal seguente grafico, se -45 dBm fosse la soglia RSSI configurata:

Rilevamento di interferenze OT

Come attivarlo

Questa funzionalità è disattivata per impostazione predefinita.

Per definizione

Per attivare il Rilevamento Jam, definisci OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE come 1 in openthread/src/core/config/openthread-core-default-config.h: prima di creare OpenThread:

#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif

Per opzione

In alternativa, utilizza l'opzione di compilazione -DOT_JAM_DETECTION=ON durante la compilazione di OpenThread:

./script/build -DOT_JAM_DETECTION=ON

Parametri

I parametri di Rilevamento dei Jam possono essere configurati solo tramite l'API OpenThread, protocollo Spinel o wpanctl, lo strumento a riga di comando wpantund per la rete Gestione dei co-processori (NCP). I valori predefiniti vengono applicati se la caratteristica è attivate senza una successiva configurazione.

Personalizza questa funzione utilizzando i seguenti parametri:

Parametri
Soglia RSSI
Valore predefinito
0 dBm
Descrizione
Specifica il livello di soglia RSSI in dBm al di sopra del quale considerare il canale in jamming.
Finestra di rilevamento
Valore predefinito
63 secondi
Descrizione
Specifica l'intervallo di tempo in secondi in cui verificare la presenza di interferenze del segnale. Intervallo: 1-63.
Periodo di punta
Valore predefinito
63 secondi
Descrizione
Specifica il numero di secondi aggregati nella finestra di rilevamento in cui l'RSSI deve essere superiore alla soglia RSSI per attivare il rilevamento dei Jam. Deve essere inferiore alla finestra di rilevamento. Intervallo: 1-63.

API

OpenThread

Usa l'API Jam Detection per gestire la funzionalità di rilevamento dei Jam direttamente nell'applicazione OpenThread. La L'API OpenThread fornisce le seguenti funzionalità:

  • Avviare e interrompere la funzionalità
  • Visualizza lo stato del rilevamento degli errori
  • Gestisci tutti i parametri
  • Recuperare la bitmap attuale della cronologia di Rilevamento dei Jam
  • Registra una funzione di callback per quando viene rilevato un ingorgo

Spinello

Il protocollo Spinel consente a un dispositivo host di comunicare direttamente con un NCP. Questo protocollo espone le proprietà di rilevamento degli ingorghi in openthread/src/lib/spinel/spinel.h che forniscono le seguenti funzionalità:

  • Avviare e interrompere la funzionalità
  • Visualizza lo stato del rilevamento degli errori
  • Gestisci tutti i parametri
  • Recuperare la bitmap attuale della cronologia di Rilevamento dei Jam

Interfaccia a riga di comando

OpenThread

Non esistono comandi dell'interfaccia a riga di comando OpenThread relativi a questa funzionalità.

Wpantund

Usa l'interfaccia a riga di comando wpanctl per gestire la funzionalità di rilevamento dei Jam per un NCP OpenThread configurazione. wpantund conserva tutta la configurazione di Rilevamento dei Jam su NCP resettare.

wpanctl fornisce l'accesso alle seguenti proprietà wpantund:

Proprietà
JamDetection:Status
Formato
booleano
Descrizione
Di sola lettura. Stato di rilevamento del jam. Indica se al momento è stato rilevato un disturbo del segnale.
JamDetection:Enable
Formato
booleano
Descrizione
Attiva o disattiva la funzionalità Rilevamento Jam.
JamDetection:RssiThreshold
Formato
dBm
Descrizione
Specifica il livello RSSI di soglia in dBm al di sopra del quale considerare il canale bloccato.
JamDetection:Window
Formato
secondi
Descrizione
Specifica la finestra in secondi in cui verificare la presenza di jamming del segnale. Intervallo: 1-63.
JamDetection:BusyPeriod
Formato
secondi
Descrizione
Specifica il numero di secondi aggregati in JamDetection:Window in cui l'RSSI deve essere superiore a JamDetection:RssiThreshold per attivare il rilevamento Jam. Deve essere inferiore a JamDetection:Window. Intervallo: 1-63.
JamDetection:Debug:HistoryBitmap
Formato
Valore a 64 bit
Descrizione
Fornisce informazioni sulla cronologia dello stato di rilevamento dei Jam a scopo di monitoraggio e debug.

Ad esempio, per ottenere lo stato di rilevamento del Jam per un NCP:

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

Per impostare la soglia RSSI per il rilevamento di interferenze su -45 dBm su un NCP:

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

Per maggiori informazioni sulle proprietà wpantund, consulta wpantund GitHub repository Git.