O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Detecção de jam

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Veja o código no GitHub

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:

  1. O estado de detecção de Jam está definido como false.
  2. O nó analisa o RSSI várias vezes em cada intervalo de um segundo.
  3. 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.
  4. 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.
  5. 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:

Detecção de Jam OT

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
Valor padrão
0 dBm
Descrição
Especifica o nível 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 em segundos para verificar a obstrução do sinal. Intervalo: 1 a 63.
Período de pico
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: 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

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
Formato
boolean
Descrição
Somente leitura. Estado de detecção de jam. Indica se um jam de sinal está sendo detectado.
JamDetection:Enable
Formato
boolean
Descrição
Ativar ou desativar o recurso Detecção de Jam.
JamDetection:RssiThreshold
Formato
dBm
Descrição
Especifica o nível RSSI de limite em dBm acima do qual o canal será considerado bloqueado.
JamDetection:Window
Formato
segundos
Descrição
Especifica a janela em segundos para verificar a obstrução do sinal. Intervalo: 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: 1 a 63.
JamDetection:Debug:HistoryBitmap
Formato
Valor de 64 bits
Descrição
Fornece informações sobre o histórico do estado de detecção de jam para fins de monitoramento e depuração.

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.