Detecção de jam

Veja o código-fonte no GitHub

Para fornecer um mecanismo configurável para a detecção de Jam em qualquer nó do OpenThread, ative o recurso de detecção de Jam.

Esse recurso é útil para certificações de dispositivo que exigem a capacidade de detectar o Jam em um canal específico. Ele pode ser configurado para atender aos requisitos de cada tipo de certificação.

Como funciona

A detecção de Jam monitora o RSSI (indicador de intensidade do sinal recebido) de um nó durante janelas especificadas para determinar se o canal foi interrompido.

Quando a detecção de Jam está ativada:

  1. O estado de detecção de Jam está definido como false.
  2. O nó faz a amostragem da RSSI várias vezes em cada intervalo de um segundo.
  3. Se o RSSI em todo o intervalo de um segundo permanecer acima do limite de RSSI configurado para cada amostra, esse intervalo de um segundo será considerado bloqueado.
  4. Se um número agregado de intervalos de um segundo Jam estiver maior que ou igual ao número agregado de período de ocupação configurado segundos à janela de detecção configurada em um determinado momento, o estado de detecção de Jam nesse momento será definido como true.
  5. Se o número agregado de intervalos de um segundo Jam estiver inferior ao número agregado de períodos de pico configurados dentro dos segundos da janela de detecção configurada em um momento, o estado de detecção de Jam nesse momento será definido como false.

Bitmap do histórico

Na API OpenThread e nas propriedades wpantund, um bitmap dos 63 segundos anteriores está disponível para recuperação. Esse bitmap indica se a RSSI ultrapassou o limite de RSSI configurado em cada um dos 63 segundos anteriores.

Por exemplo, você pode recuperar o bitmap a seguir:

0xC248068C416E7FF0

A conversão para binário produz cada instância que a RSSI excedeu o limite de RSSI configurado durante os 63 segundos anteriores:

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

Se a janela de detecção for definida como 16 segundos e o período ocupado for definido como 8 segundos, o estado de detecção de Jam vai se tornar true aos 51 segundos, porque essa será a primeira instância em que o limite de RSSI foi excedido por pelo menos oito segundos inteiros nos 16 segundos anteriores. Neste exemplo, o estado de detecção de Jam permanece true pelos próximos 13 segundos.

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

Esse bitmap pode ser representado pelo gráfico a seguir, se -45 dBm for o limite de RSSI configurado:

Detecção de OT Jam

Como ativar

Esse recurso fica desativado por padrão.

Por definição

Para ativar a detecção de Jam, defina OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE como 1 no arquivo openthread/src/core/config/openthread-core-default-config.h antes de criar o OpenThread:

#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif

Por opção

Como alternativa, use a opção de build -DOT_JAM_DETECTION=ON ao criar OpenThread:

./script/build -DOT_JAM_DETECTION=ON

Parâmetros

Os parâmetros de detecção de Jam só podem ser configurados pela API OpenThread, pelo protocolo Sppinel ou por wpanctl, a ferramenta de linha de comando wpantund para o gerenciamento de coprocessador de rede (NCP, na sigla em inglês). Os valores padrão serão aplicados se o recurso estiver ativado sem configuração posterior.

Personalize esse recurso usando os seguintes parâmetros:

Parâmetros
Limite de RSSI
Valor padrão
0 dBm
Descrição
Especifica o nível de RSSI de limite em dBm acima do qual o canal será bloqueado.
Janela de detecção
Valor padrão
63 segundos
Descrição
Especifica a janela de segundos para verificar o congestionamento do sinal. Intervalo: de 1 a 63.
Período de ocupação
Valor padrão
63 segundos
Descrição
Especifica o número de segundos agregados na janela de detecção em que o RSSI precisa estar acima do limite de RSSI para acionar a detecção de Jam. Precisa ser menor que a janela de detecção. Intervalo: de 1 a 63.

API

OpenThread

Use a API Jam Detection para gerenciar o recurso de detecção de Jam diretamente no aplicativo OpenThread. A API OpenThread oferece as seguintes funcionalidades:

  • Iniciar e interromper o recurso
  • Ver o estado de detecção de Jam
  • Gerenciar todos os parâmetros
  • Recuperar o bitmap atual do histórico de detecção de Jam
  • Registrar uma função de callback para quando um Jam for detectado

Espiral

O protocolo Spinel permite que um dispositivo host se comunique diretamente com um NCP. Esse protocolo expõe as propriedades de detecção de Jam no openthread/src/lib/spinel/spinel.h que oferecem as seguintes funcionalidades:

  • Iniciar e interromper o recurso
  • Ver o estado de detecção de Jam
  • Gerenciar todos os parâmetros
  • Recuperar o bitmap atual do histórico de detecção de Jam

CLI

OpenThread

Não há comandos da CLI do OpenThread relacionados a esse recurso.

Wpantund

Use a CLI wpanctl para gerenciar o recurso de detecção de Jam para uma configuração do NCP do OpenThread. wpantund mantém toda a configuração de detecção de Jam após a redefinição do NCP.

wpanctl fornece acesso às seguintes propriedades wpantund:

Propriedades
JamDetection:Status
Formato
boolean
Descrição
Somente leitura. Estado de detecção de Jam Indica se um jam de sinal foi detectado.
JamDetection:Enable
Formato
boolean
Descrição
Ativar ou desativar o recurso de detecção de Jam.
JamDetection:RssiThreshold
Formato
dBm
Descrição
Especifica o nível de RSSI de limite em dBm acima do qual o canal bloqueado deve ser considerado.
JamDetection:Window
Formato
segundos
Descrição
Especifica a janela de segundos para verificar o congestionamento do sinal. Intervalo: de 1 a 63.
JamDetection:BusyPeriod
Formato
segundos
Descrição
Especifica o número de segundos agregados em JamDetection:Window em que o RSSI precisa estar acima de JamDetection:RssiThreshold para acionar a detecção de Jam. Precisa ser menor que JamDetection:Window. Intervalo: de 1 a 63.
JamDetection:Debug:HistoryBitmap
Formato
Valor de 64 bits
Descrição
Mostra informações sobre o histórico do estado de detecção de Jam para fins de monitoramento e depuração.

Por exemplo, para ver o estado de detecção de Jam de um NCP:

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

Para definir o limite do RSSI de detecção de Jam para -45 dBm em um NCP:

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

Para mais informações sobre as propriedades wpantund, consulte o repositório wpantund do GitHub.