Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Detección de Jam

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Ver el código fuente en GitHub

Para proporcionar un mecanismo configurable de detección de embotellamiento en cualquier nodo de OpenThread, habilita la función de detección de Jam.

Esta función es útil para las certificaciones de dispositivo que requieren la capacidad de detectar embotellamientos en un canal específico. Se puede configurar para que cumpla con los requisitos de cada tipo de certificación.

Cómo funciona

La detección de Jam supervisa el RSSI (indicador de intensidad de señal recibido) de un nodo durante períodos especificados para determinar si el canal se encuentra atascado.

Cuando la detección de Jam está habilitada:

  1. El estado de detección de Jam se establece en false.
  2. El nodo toma muestras del RSSI varias veces en cada intervalo de un segundo.
  3. Si el RSSI que supera ese intervalo de un segundo permanece por encima del límite RSSI configurado para cada muestra, ese intervalo de un segundo se considera atascado.
  4. Si una cantidad agregada de intervalos atascados de un segundo es mayor o igual a la cantidad total de segundos Período de actividad configurados dentro de los segundos de la Ventana de detección configurados previamente en cualquier momento, el Estado de detección del Jam en ese momento se establece en true.
  5. Si una cantidad agregada de intervalos atascados de un segundo es inferior a la cantidad total de segundos Período de actividad configurados dentro de los segundos de la Ventana de detección configurados antes en cualquier momento, el Estado de detección de Jam en ese momento se establece en false.

Mapa de bits del historial

En la API de OpenThread y las propiedades wpantund, está disponible un mapa de bits de los 63 segundos anteriores para su recuperación. Este mapa de bits indica si el RSSI superó el umbral configurado del RSSI en cada uno de los 63 segundos anteriores.

Por ejemplo, puedes recuperar el siguiente mapa de bits:

0xC248068C416E7FF0

La conversión a objetos binarios produce cada instancia que el RSSI superó el umbral de RSSI configurado durante los 63 segundos anteriores:

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

Si la ventana de detección se establece en 16 segundos y el período ocupado se establece en 8 segundos, el estado de detección de Jam se vuelve true en 51 segundos, ya que esa es la primera instancia en la que se superó el umbral de RSSI al menos 8 segundos completos en los 16 segundos anteriores. En este ejemplo, el estado de detección de Jam permanece true durante los próximos 13 segundos.

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

Este mapa de bits podría estar representado por el siguiente gráfico si -45 dBm era el umbral de RSSI configurado:

Detección de Jam

Cómo habilitar

Esta función está inhabilitada de forma predeterminada.

Por definición

Para habilitar la detección de Jam, define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE como 1 en el archivo openthread/src/core/config/openthread-core-default-config.h, antes de compilar OpenThread:

#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif

Por opción

Como alternativa, usa la opción de compilación -DOT_JAM_DETECTION=ON para compilar OpenThread:

./script/build -DOT_JAM_DETECTION=ON

Parámetros

Los parámetros de detección de Jam solo se pueden configurar mediante la API de OpenThread, el protocolo de Spinnaker o wpanctl, la herramienta de línea de comandos de wpantund para la administración del coprocesador de red (NCP). Los valores predeterminados se aplican si la función está habilitada sin configuración posterior.

Personaliza esta función usando los siguientes parámetros:

Parámetros
Umbral de RSSI
Valor predeterminado
0 dBm
Descripción
Especifica el umbral de nivel de RSSI en dBm por encima del cual se considerará el canal atascado.
Ventana de detección
Valor predeterminado
63 segundos
Descripción
Especifica la ventana en segundos en la que se buscará la señal. Rango: 1-63.
Período ocupado
Valor predeterminado
63 segundos
Descripción
Especifica la cantidad de segundos agregados dentro de la ventana de detección, en la que el RSSI debe superar el umbral de RSSI para activar la detección de Jam. Debe ser más pequeña que la ventana de detección. Rango: 1-63.

API

OpenThread

Usa la API de Jam para administrar la función de detección de Jam directamente en tu aplicación de OpenThread. La API de OpenThread brinda la siguiente funcionalidad:

  • Cómo iniciar y detener la función
  • Consulte el estado de detección de Jam
  • Administrar todos los parámetros
  • Recuperar el mapa de bits del historial de detección de Jam actual
  • Registrar una función de devolución de llamada para cuando se detecte un Jam

Espiral

El protocolo Spinel permite que un dispositivo host se comunique directamente con un NCP. Este protocolo expone las propiedades de detección de Jam en openthread/src/lib/spinel/spinel.h que proporcionan la siguiente funcionalidad:

  • Cómo iniciar y detener la función
  • Consulte el estado de detección de Jam
  • Administrar todos los parámetros
  • Recuperar el mapa de bits del historial de detección de Jam actual

CLI

OpenThread

No hay comandos de la CLI de OpenThread que estén relacionados con esta función.

wpantund

Usa la CLI de wpanctl a fin de administrar la función de detección de Jam para una configuración de NCP de OpenThread. wpantund conserva toda la configuración de detección de Jam durante el restablecimiento de NCP.

wpanctl proporciona acceso a las siguientes propiedades de wpantund:

Propiedades
JamDetection:Status
Formato
boolean
Descripción
Solo lectura. Estado de detección de Jam. Indica si se detectó un embotellamiento en la actualidad.
JamDetection:Enable
Formato
boolean
Descripción
Habilita o inhabilita la función de detección de Jam.
JamDetection:RssiThreshold
Formato
dBm
Descripción
Especifica el umbral del nivel de RSSI en dBm por encima del cual se considerará el canal bloqueado.
JamDetection:Window
Formato
segund
Descripción
Especifica la ventana en segundos en la que se buscará la señal. Rango: 1-63.
JamDetection:BusyPeriod
Formato
segund
Descripción
Especifica la cantidad de segundos agregados dentro de JamDetection:Window, en la que el RSSI debe ser superior a JamDetection:RssiThreshold para activar la detección de Jam. Debe ser inferior a JamDetection:Window. Rango: 1-63.
JamDetection:Debug:HistoryBitmap
Formato
Valor de 64 bits
Descripción
Proporciona información sobre el historial del estado de detección de Jam con fines de supervisión y depuración.

Por ejemplo, para obtener el estado de detección de Jam en un NCP, haz lo siguiente:

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

Para establecer el umbral de RSSI de detección de Jam en -45 dBm en un NCP, haz lo siguiente:

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

Para obtener más información sobre las propiedades de wpantund, consulta el repositorio de GitHub wpantund.