Métodos automáticos de detección de falla de enlace en redes ZigBee

8

Dada una red de malla ZigBee con varios nodos. Hay enlaces establecidos entre cada nodo a través de los nodos del enrutador.

Si el Nodo A desea enviar un mensaje al Nodo Z por primera vez, entonces el Nodo A debe realizar un Descubrimiento de ruta para determinar qué nodos intermedios reenviarán su mensaje.

El mecanismo de descubrimiento de ruta se describe aquí . Según esta, la ruta con el costo más bajo se almacenará en una tabla de enrutamiento de los nodos.

Hasta ahora todo está bien, cada nodo sabe qué hacer, pueden comunicarse entre sí.


Ahora, un nodo intermedio, entre el Nodo A y el Nodo B se descompone, por lo que la ruta almacenada actualmente queda inutilizable.

¿Qué pasa en este caso? Me imagino que cuando el Nodo A quiera enviar un mensaje, viajará hasta el enlace roto donde se atascará. El último nodo de la ruta enviará un mensaje sobre la falla que desencadenará una nueva ruta de descubrimiento por el nodo A , luego se encontrará una nueva ruta y todo volverá a estar bien.

En general está bien (dado que estaba en lo correcto); La red se recupera. Pero me pregunto si hay algún algoritmo o método que proporcione una función de monitoreo de red que verifique continuamente el estado de los enlaces presentados en las Tablas de enrutamiento. Por lo tanto, el Nodo A puede ser notificado sobre la falla antes de que quiera enviar otro mensaje al Nodo Z , y en lugar de encontrarse en un callejón sin salida, puede comenzar con un Descubrimiento de ruta de inmediato. Básicamente, lo que estoy pensando es en un servicio que verifica periódicamente los enlaces.


Entiendo que, como ZigBee se usa generalmente en dispositivos alimentados por batería, de bajo consumo, tal mecanismo no sería eficiente en términos de energía.

Entonces, en general, ¿cuáles son los mecanismos de detección de falla de enlace más efectivos que se pueden usar en una red de sensores inalámbricos de baja potencia, especialmente en una red de malla ZigBee?

Bence Kaulics
fuente

Respuestas:

4

Por lo que he encontrado, parece que algunas implementaciones (por ejemplo, el Z-STACK de TI ) recomiendan actualizar la tabla de enrutamiento de vez en cuando para evitar nodos 'muertos' :

Sí, esperé de 5 a 10 minutos. ¿Qué es "algún tiempo"? He visto casos en los que toma unos minutos recuperarse. Por ejemplo, si apago y enciendo la puerta de enlace, los nodos más cercanos pueden tardar un minuto o dos en conectarse, luego otro minuto o dos para cada nivel sucesivo. Pero esperé mucho más que esto para que la malla se recupere de este cambio de ruta.


Sí, puede llevar muchos minutos. Entonces, si quieres 5 o minutos, ¿volverá tu dispositivo? Se recomienda llamar a NLME_RouteDiscoveryRequest () periódicamente para mantener la tabla de enrutamiento.

Puede leer más sobre lo que se NLME_RouteDiscoveryRequest()hace en la guía del desarrollador (consulte la página 11/12):

La siguiente figura muestra un ejemplo del procedimiento de descubrimiento de ruta de muchos a uno. Para iniciar el descubrimiento de rutas de muchos a uno, el concentrador transmite una solicitud de ruta de muchos a uno a toda la red. Al recibir la solicitud de ruta, cada dispositivo agrega una entrada de tabla de ruta para el concentrador y almacena el vecino de un salto que retransmite la solicitud como la dirección del siguiente salto. No se generará respuesta de ruta.

El comando de solicitud de ruta de muchos a uno es similar al comando de solicitud de ruta de unidifusión con el mismo ID de comando y formato de marco de carga útil. El campo de opción en la solicitud de ruta es muchos a uno y la dirección de destino es 0xFFFC. La siguiente API de Z-Stack se puede utilizar para que el concentrador envíe solicitudes de ruta de muchos a uno. Consulte la documentación de la API de ZStack para conocer el uso detallado de esta API.

ZStatus_t NLME_RouteDiscoveryRequest( uint16 DstAddress, byte options, uint8 radius )

La tolerancia a fallas en las redes de sensores inalámbricos ZigBee es un documento interesante con más información sobre cómo las redes ZigBee toleran la falla de los nodos. Parece que la implementación utilizada allí reconstruyó la red cuando se eliminó uno de los nodos (desafortunadamente, el método exacto de esto no está claro), de modo que el nodo que funciona mal ya no se incluye en la malla. En algunos casos, esto llevó a que los sensores se quedaran 'huérfanos' antes de solicitar unirse a la red de malla a través de una ruta diferente.

En resumen, de los recursos que he encontrado: depende de su implementación, pero la mayoría volverá a evaluar la tabla de enrutamiento con una frecuencia razonable para evitar que los nodos dañados dañen la red . Sospecho que podrá obtener una respuesta más precisa si le pregunta al proveedor de su implementación específica de ZigBee, ya que la operación exacta variará.

Aurora0001
fuente