Rilevamento dell'inceppamento

Visualizza l'origine su GitHub

Per fornire un meccanismo configurabile per il rilevamento di Jam Jam in qualsiasi nodo OpenThread, abilita la funzionalità di rilevamento dei Jam.

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

Come funziona

Il rilevamento dei Jam monitora l'RSSI (indicatore di potenza del segnale ricevuto) di un nodo durante gli intervalli di tempo specificati per determinare se il canale è stato bloccato.

Quando la funzionalità di rilevamento dei Jam è attiva:

  1. Lo stato di rilevamento dei Jam è impostato su false.
  2. Il nodo campiona più volte l'RSSI in un intervallo di un secondo.
  3. Se il RSSI nell'intero intervallo di un secondo rimane al di sopra della soglia RSSI configurata per ogni campione, tale intervallo di un secondo è considerato bloccato.
  4. Se un numero aggregato di intervalli di un secondo bloccati è più o uguale a del numero aggregato di secondi di periodo di rilevamento configurati all'interno della precedente finestra di rilevamento configurata, in qualsiasi momento, lo stato di rilevamento del Jam in quel momento viene impostato su true.
  5. Se un numero aggregato di intervalli di un secondo bloccati è inferiore al numero aggregato di secondi Occupati configurati all'interno dei secondi finestra di rilevamento configurati in qualsiasi momento, lo stato di rilevamento Jam in quel momento è impostato su false.

Bitmap cronologia

Nelle proprietà OpenThread e wpantund è disponibile una bitmap dei 63 secondi precedenti per il recupero. Questa bitmap indica se l'RSSI ha superato la soglia RSSI configurata in ognuno dei 63 secondi precedenti.

Ad esempio, potresti recuperare la seguente bitmap:

0xC248068C416E7FF0

La conversione in programma binario genera ogni istanza in cui l'RSSI ha superato la soglia configurata per 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 del Jam diventa true a 51 secondi, ovvero il primo caso in cui è stata superata la soglia RSSI per almeno 8 interi nei 16 secondi precedenti. In questo esempio, lo stato di rilevamento dei Jam rimane true per i prossimi 13 secondi.

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

Questa bitmap potrebbe essere rappresentata dal seguente grafico, se -45 dBm era la soglia RSSI configurata:

Rilevamento Jam OT

Come attivare la funzionalità

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 quando crei OpenThread:

./script/build -DOT_JAM_DETECTION=ON

Parametri

I parametri di rilevamento dei Jam possono essere configurati solo tramite l'API OpenThread, il protocollo Spillo o wpanctl, lo strumento a riga di comando wpantund per la gestione del coprocessore di rete (NCP). I valori predefiniti vengono applicati se la funzionalità viene attivata senza configurazione successiva.

Personalizza questa funzionalità usando i seguenti parametri:

Parametri
Soglia RSSI
Valore predefinito
0 dBm
Description (Descrizione)
Specifica il livello di soglia RSSI in dBm superiore al quale considerare il canale bloccato.
Finestra di rilevamento
Valore predefinito
63 secondi
Description (Descrizione)
Specifica la finestra in secondi per cui controllare la presenza di blocchi del segnale. Intervallo: 1-63.
Periodo occupato
Valore predefinito
63 secondi
Description (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 del Jam. Deve essere inferiore alla finestra di rilevamento. Intervallo: 1-63.

API

OpenThread

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

  • Avviare e interrompere la funzionalità
  • Visualizza lo stato di rilevamento dei Jam
  • Gestisci tutti i parametri
  • Recuperare l'attuale bitmap della cronologia di rilevamento dei Jam
  • Registrare una funzione di callback quando viene rilevato un Jam

Spinello

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

  • Avviare e interrompere la funzionalità
  • Visualizza lo stato di rilevamento dei Jam
  • Gestisci tutti i parametri
  • Recuperare l'attuale bitmap della cronologia di rilevamento dei Jam

interfaccia a riga di comando

OpenThread

Non ci sono comandi CLI OpenThread relativi a questa funzionalità.

Wpantund

Utilizza l'interfaccia a riga di comando wpanctl per gestire la funzionalità di rilevamento dei Jam per una configurazione NCP di OpenThread. wpantund conserva tutta la configurazione di rilevamento dei Jam al ripristino NCP.

wpanctl fornisce l'accesso alle seguenti proprietà wpantund:

Proprietà
JamDetection:Status
Formato
boolean
Description (Descrizione)
Sola lettura. Stato di rilevamento dei Jam. Indica se è stato rilevato un Jam di segnale.
JamDetection:Enable
Formato
boolean
Description (Descrizione)
Attivare o disattivare la funzionalità di rilevamento dei Jam.
JamDetection:RssiThreshold
Formato
dBm
Description (Descrizione)
Specifica il livello di RSSI della soglia in dBm superiore al quale considerare il canale bloccato.
JamDetection:Window
Formato
secondi
Description (Descrizione)
Specifica la finestra in secondi per cui controllare la presenza di blocchi del segnale. Intervallo: 1-63.
JamDetection:BusyPeriod
Formato
secondi
Description (Descrizione)
Specifica il numero di secondi aggregati all'interno di JamDetection:Window in cui il RSSI deve essere superiore a JamDetection:RssiThreshold per attivare il rilevamento dei Jam. Deve essere minore di JamDetection:Window. Intervallo: 1-63.
JamDetection:Debug:HistoryBitmap
Formato
Valore a 64 bit
Description (Descrizione)
Fornisce informazioni sulla cronologia dello stato del rilevamento dei Jam per scopi di monitoraggio e debug.

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

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

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