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 inceppamenti monitora l'RSSI (indicatore di intensità del segnale ricevuto) di un nodo durante intervalli di tempo specificati per determinare se il canale è stato bloccato.

Quando il rilevamento delle interferenze è attivo:

  1. Lo stato del rilevamento delle interferenze è 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 un numero aggregato di intervalli di un secondo con jamming è maggiore o uguale a il numero aggregato di secondi del periodo di tempo occupato configurato all'interno dei secondi della finestra di rilevamento configurata precedente in qualsiasi momento, lo stato di rilevamento del jamming in quel momento è impostato su true.
  5. Se un numero aggregato di intervalli di 1 secondo bloccati è inferiore al numero complessivo di secondi del periodo di occupato configurati entro la finestra di rilevamento configurata precedente in qualsiasi momento, lo stato di rilevamento dei blocchi in quel momento è impostato su false.

Bitmap della cronologia

Nell'API OpenThread e nelle proprietà wpantund, è disponibile per il recupero una bitmap dei 63 secondi precedenti. 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 formato binario produce ogni istanza in cui l'RSSI è aumentato oltre la soglia RSSI configurata durante i 63 secondi precedenti:

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

Se la finestra di rilevamento è impostata su 16 secondi e il periodo di occupato è impostato su 8 secondi, lo stato di rilevamento del blocco diventa true a 51 secondi, poiché si tratta della 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 attivare

Questa funzionalità è disattivata per impostazione predefinita.

Per definizione

Per abilitare il Rilevamento di Jam, definisci OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE come 1 nel file 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 Jam possono essere configurati solo tramite l'API OpenThread, il protocollo Spinel o wpanctl, lo strumento a riga di comando wpantund per la gestione del co-processore di rete (NCP). I valori predefiniti vengono applicati se la funzionalità viene attivata senza configurazione successiva.

Personalizza questa funzionalità 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 all'interno della finestra di rilevamento in cui l'RSSI deve essere superiore alla soglia RSSI per attivare il rilevamento di interferenze. Deve essere inferiore a Finestra di rilevamento. Intervallo: 1-63.

API

OpenThread

Utilizza l'API Jam Detection per gestire la funzionalità di rilevamento dei disturbi direttamente nella tua applicazione OpenThread. L'API OpenThread offre le seguenti funzionalità:

  • Avviare e interrompere la funzionalità
  • Visualizzare lo stato di rilevamento dei Jam
  • 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

Spinel

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

  • Avviare e interrompere la funzionalità
  • Visualizzare lo stato di rilevamento dei Jam
  • Gestisci tutti i parametri
  • Recupera la bitmap della cronologia del rilevamento di interruzioni attuale

Interfaccia a riga di comando

OpenThread

Non sono presenti comandi della CLI OpenThread correlati a questa funzionalità.

Wpantund

Utilizza wpanctl CLI per gestire la funzionalità di rilevamento delle interferenze per una configurazione NCP OpenThread. wpantund mantiene tutta la configurazione del rilevamento delle interferenze al riavvio del Nucleo di controllo di rete.

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 viene rilevato un ingorgo.
JamDetection:Enable
Formato
booleano
Descrizione
Attiva o disattiva la funzionalità di rilevamento delle interferenze.
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 entro JamDetection:Window in cui l'RSSI deve essere superiore a JamDetection:RssiThreshold per attivare il rilevamento di interferenze. Il valore deve essere inferiore a JamDetection:Window. Intervallo: 1-63.
JamDetection:Debug:HistoryBitmap
Formato
Valore a 64 bit
Descrizione
Fornisce informazioni sulla cronologia dello stato del rilevamento degli ingorghi a fini di monitoraggio e debug.

Ad esempio, per ottenere lo stato del rilevamento delle interferenze per un NCP:

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

Per impostare la soglia RSSI per il rilevamento di Jam a -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 il repository GitHub di wpantund.