Para fornecer um mecanismo configurável para a detecção de congestionamento 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 congestionamento de 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 está interrompido.
Quando a detecção de jam está ativada:
- O estado de detecção de Jam está definido como
false
. - O nó analisa o RSSI várias vezes em cada intervalo de um segundo.
- Se o RSSI em todo esse intervalo permanecer acima do limite de RSSI configurado para cada amostra, esse intervalo de um segundo será considerado emperrado.
- Se um número agregado de intervalos de um segundo emperrado for maior ou
igual ao número de segundos do
Período de pico configurado
segundos na janela de detecção configurada anteriormente
em qualquer momento, o estado de detecção de Jam nesse momento será definido como
true
. - Se um número agregado de intervalos de um segundo emperrado for menor que o
número agregado de segundos de período de ocupação configurado
na janela de detecção anterior definida em qualquer momento, o estado de detecção de Jam nesse momento será definido como
false
.
Bitmap de histórico
Na API OpenThread e nas propriedades wpantund
, é possível recuperar um bitmap dos 63 segundos anteriores. Esse bitmap
indica se o RSSI ultrapassou o limite de RSSI configurado em cada um dos
63 segundos anteriores.
Por exemplo, você pode recuperar o seguinte bitmap:
0xC248068C416E7FF0
A conversão em binário produz todas as instâncias em que o RSSI ficou acima do 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 de tempo definido for de 8 segundos, o estado de detecção de Jam se tornará true
aos 51 segundos. Essa será a primeira instância em que o limite de RSSI foi excedido em pelo menos 8 segundos 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 poderá ser representado pelo seguinte gráfico, se -45 dBm for o limite de RSSI configurado:

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 a 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 criação -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 por meio da API OpenThread, do
protocolo Sppinel ou da 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 este recurso usando os seguintes parâmetros:
Parâmetros | |||||
---|---|---|---|---|---|
Limite de RSSI |
|
||||
Janela de detecção |
|
||||
Período de pico |
|
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
Espinélio
O protocolo Spinel permite que um dispositivo host se comunique diretamente com um NCP.
Esse protocolo expõe propriedades de detecção de jam em
openthread/src/lib/spinel/spinel.h
que oferecem a seguinte funcionalidade:
- 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 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 do wpantund
:
Propriedades | |||||
---|---|---|---|---|---|
JamDetection:Status |
|
||||
JamDetection:Enable |
|
||||
JamDetection:RssiThreshold |
|
||||
JamDetection:Window |
|
||||
JamDetection:BusyPeriod |
|
||||
JamDetection:Debug:HistoryBitmap |
|
Por exemplo, para receber o estado de detecção de jam para um NCP:
sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false
Para definir o limite de RSSI da 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 do wpantund
, consulte o repositório do GitHub do wpantund
.