Rilevamento dell'inceppamento

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Visualizza origine su GitHub

Per fornire un meccanismo configurabile per il rilevamento dell'interruzione del segnale su qualsiasi nodo OpenThread, abilita la funzionalità di rilevamento dei Jam.

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

Come funziona

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

Quando la funzionalità di rilevamento del Jam è attiva:

  1. Lo stato di rilevamento del Jam è impostato su false.
  2. Il nodo campiona il RSSI più volte in ciascun intervallo di un secondo.
  3. Se il RSSI nell'intero intervallo di un secondo rimane superiore alla soglia RSSI configurata per ogni campione, tale intervallo viene considerato bloccato.
  4. Se un numero aggregato di intervalli bloccati di un secondo è maggiore o uguale a il numero complessivo di periodi di attività configurati in un secondo momento all'interno dei precedenti secondi di intervallo di rilevamento configurati. In quel momento lo stato di rilevamento del Jam è impostato su true.
  5. Se un numero aggregato di intervalli di un secondo bloccati è inferiore a il numero aggregato di secondi del periodo di occupato configurato entro i secondi precedenti della finestra di rilevamento configurati, lo stato di rilevamento del Jam 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. Questa bitmap indica se il RSSI ha superato la soglia RSSI configurata per ciascuno dei 63 secondi precedenti.

Ad esempio, potresti recuperare la seguente bitmap:

0xC248068C416E7FF0

La conversione in formato binario genera ogni istanza in cui il formato RSSI ha superato la soglia di RSSI configurata nei 63 secondi precedenti:

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

Se il periodo di rilevamento è impostato 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 la soglia RSSI è stata superata di almeno 8 secondi interi nei 16 secondi precedenti. In questo esempio, lo stato di rilevamento del 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 è stata impostata come soglia RSSI:

Rilevamento Jam OT

Come attivarla

Questa funzionalità è disattivata per impostazione predefinita.

Per definizione

Per attivare 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 build -DOT_JAM_DETECTION=ON durante la creazione OpenThread:

./script/build -DOT_JAM_DETECTION=ON

Parametri

I parametri di rilevamento dei Jam possono essere configurati solo tramite l'API OpenThread, il protocollo Spipi o wpanctl, lo strumento a riga di comando wpantund per la gestione NCP (Network Co-Processor). Se la funzionalità viene abilitata senza la configurazione successiva, vengono applicati valori predefiniti.

Personalizza questa funzionalità utilizzando i seguenti parametri:

Parametri
Soglia RSSI
Valore predefinito
0 dBm
Descrizione
Specifica il livello RSSI di soglia in dBm superiore al quale considerare il canale bloccato.
Finestra di rilevamento
Valore predefinito
63 secondi
Descrizione
Specifica la finestra in secondi per cui verificare la presenza di eventuali blocchi del segnale. Intervallo: 1-63.
Periodo occupato
Valore predefinito
63 secondi
Descrizione
Specifica il numero di secondi aggregati all'interno della finestra di rilevamento in cui il RSSI deve essere superiore alla soglia RSSI per attivare il rilevamento di Jam. Deve essere minore della finestra di rilevamento. Intervallo: 1-63.

Server

OpenThread

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

  • Avvia e interrompi la funzionalità
  • Visualizzare lo stato di rilevamento del Jam
  • Gestisci tutti i parametri
  • Recupera la bitmap corrente della cronologia di rilevamento dei Jam
  • Registra una funzione di callback per il rilevamento di un Jam

Spinello

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

  • Avvia e interrompi la funzionalità
  • Visualizzare lo stato di rilevamento del Jam
  • Gestisci tutti i parametri
  • Recupera la bitmap corrente della cronologia di rilevamento dei Jam

interfaccia a riga di comando

OpenThread

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

Wpantund

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

wpanctl fornisce l'accesso alle seguenti proprietà wpantund:

Proprietà
JamDetection:Status
Formato
boolean
Descrizione
Sola lettura. Stato rilevamento Jam. Indica se viene attualmente rilevata un'interruzione del segnale.
JamDetection:Enable
Formato
boolean
Descrizione
Attiva o disattiva la funzionalità di rilevamento dei Jam.
JamDetection:RssiThreshold
Formato
dBm
Descrizione
Specifica il livello RSSI di soglia in dBm superiore al quale considerare il canale bloccato.
JamDetection:Window
Formato
secondi
Descrizione
Specifica la finestra in secondi per cui verificare la presenza di eventuali blocchi del segnale. Intervallo: 1-63.
JamDetection:BusyPeriod
Formato
secondi
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 Jam. Deve essere minore di 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 fini 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 di rilevamento 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.