Méthodes de détection automatique de défaillance de liaison dans les réseaux ZigBee

8

Étant donné un réseau maillé ZigBee avec plusieurs nœuds. Il existe des liens établis entre chaque nœud via des nœuds de routeur.

Si le nœud A souhaite envoyer un message au nœud Z pour la première fois, le nœud A doit effectuer une découverte d'itinéraire pour déterminer les nœuds intermédiaires qui transmettront son message.

Le mécanisme de découverte d'itinéraire est décrit ici . Selon lui, l'itinéraire avec le coût le plus bas sera stocké dans une table de routage des nœuds.

Jusqu'à présent, tout va bien, chaque nœud sait quoi faire, ils peuvent se rejoindre.


Maintenant, un nœud intermédiaire, entre le nœud A et le nœud B tombe en panne, de sorte que la route actuellement stockée devient inutilisable.

Que se passe-t-il dans ce cas? J'imagine que lorsque le nœud A veut envoyer un message, il se rendra jusqu'au lien cassé où il restera bloqué. Le dernier nœud de la route renverra un message sur l'échec qui déclenchera une nouvelle découverte de route par le nœud A , puis une nouvelle route sera trouvée et tout ira bien à nouveau.

C'est généralement bien (étant donné que j'avais raison); le réseau se rétablit. Mais je me demande s'il existe des algorithmes ou des méthodes qui fournissent une fonction de surveillance du réseau qui vérifie en permanence l'état des liens présentés dans les tables de routage. Ainsi, le nœud A peut être informé de l'échec avant de vouloir envoyer un autre message au nœud Z. Au lieu de se retrouver dans une impasse, il peut commencer par une découverte de route à la fois. Donc, à la base, je pense à un service qui vérifie périodiquement les liens.


Je comprends que comme ZigBee est généralement utilisé sur des appareils alimentés par batterie, un tel mécanisme ne serait pas économe en énergie.

Donc, en général, quels sont maintenant les mécanismes de détection de défaillance de liaison les plus efficaces qui peuvent être utilisés dans un réseau de capteurs sans fil à faible puissance, en particulier dans un réseau maillé ZigBee?

Bence Kaulics
la source

Réponses:

4

D'après ce que j'ai trouvé, il semble que certaines implémentations (par exemple, Z-STACK de TI ) recommandent de rafraîchir la table de routage de temps en temps pour éviter les nœuds «morts» :

Oui, j'ai attendu 5 à 10 minutes. Qu'est-ce que "un certain temps"? J'ai vu des cas où cela prend quelques minutes pour récupérer. Par exemple, si je fais redémarrer la passerelle, il faut peut-être une minute ou deux pour que les nœuds les plus proches se connectent, puis encore une ou deux minutes pour chaque niveau successif. Mais j'ai attendu beaucoup plus longtemps que cela pour que le maillage se remette de ce changement de routage.


Oui, cela peut prendre plusieurs minutes. Donc, si vous voulez 5 minutes ou plus, votre appareil reviendra-t-il? Il est recommandé d'appeler NLME_RouteDiscoveryRequest () périodiquement pour maintenir la table de routage.

Vous pouvez en savoir plus sur ce que NLME_RouteDiscoveryRequest()fait le guide du développeur (voir page 11/12):

La figure suivante montre un exemple de la procédure de découverte d'itinéraire plusieurs-à-un. Pour lancer la découverte d'itinéraire plusieurs-à-un, le concentrateur a diffusé une demande d'itinéraire plusieurs-à-un à l'ensemble du réseau. À la réception de la demande de route, chaque périphérique ajoute une entrée de table de route pour le concentrateur et stocke le voisin d'un saut qui relaie la demande en tant qu'adresse de saut suivante. Aucune réponse d'itinéraire ne sera générée.

La commande de demande d'itinéraire plusieurs-à-un est similaire à la commande de demande d'itinéraire unicast avec le même ID de commande et le même format de trame de charge utile. Le champ d'option dans la demande d'itinéraire est plusieurs-à-un et l'adresse de destination est 0xFFFC. L'API Z-Stack suivante peut être utilisée pour que le concentrateur envoie une demande d'itinéraire plusieurs-à-un. Veuillez vous référer à la documentation de l'API ZStack pour une utilisation détaillée de cette API.

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

La tolérance aux pannes dans les réseaux de capteurs sans fil ZigBee est un article intéressant avec plus d'informations sur la façon dont les réseaux ZigBee tolèrent la défaillance des nœuds. Il apparaît que l'implémentation utilisée ici a reconstruit le réseau lorsque l'un des nœuds a été supprimé (la méthode exacte n'est malheureusement pas claire), de sorte que le nœud défaillant n'est plus inclus dans le maillage. Dans certains cas, cela a conduit les capteurs à devenir «orphelins» avant de demander à rejoindre le réseau maillé via un itinéraire différent.

En résumé, d'après les ressources que j'ai trouvées: cela dépend de votre implémentation, mais la plupart réévalueront la table de routage assez fréquemment pour éviter que les nœuds cassés n'endommagent le réseau . Je suppose que vous pourrez obtenir une réponse plus précise si vous demandez au fournisseur de votre implémentation ZigBee spécifique, car l'opération exacte variera.

Aurora0001
la source