Automatische Methoden zur Erkennung von Verbindungsfehlern in ZigBee-Netzwerken

8

Bei einem ZigBee-Mesh-Netzwerk mit mehreren Knoten. Es gibt Verbindungen zwischen jedem Knoten über Routerknoten.

Wenn Knoten A zum ersten Mal eine Nachricht an Knoten Z senden möchte, muss Knoten A eine Routenerkennung durchführen, um zu bestimmen, welche Zwischenknoten seine Nachricht weiterleiten.

Der Routenerkennungsmechanismus wird hier beschrieben . Demnach wird die Route mit den niedrigsten Kosten in einer Routing-Tabelle der Knoten gespeichert.

Bisher ist alles in Ordnung, jeder Knoten weiß, was zu tun ist, er kann sich gegenseitig erreichen.


Jetzt bricht ein Zwischenknoten zwischen Knoten A und Knoten B zusammen, sodass die aktuell gespeicherte Route unbrauchbar wird.

Was passiert in diesem Fall? Ich stelle mir vor, dass Knoten A , wenn er eine Nachricht senden möchte, bis zu dem defekten Link fährt, wo er stecken bleibt. Der letzte Knoten in der Route sendet eine Nachricht über den Fehler zurück, der eine neue Routenerkennung durch Knoten A auslöst. Dann wird eine neue Route gefunden und alles ist wieder in Ordnung.

Es ist im Allgemeinen in Ordnung (vorausgesetzt, ich hatte Recht); Das Netzwerk wird wiederhergestellt. Ich frage mich jedoch, ob es Algorithmen oder Methoden gibt, die eine Netzwerküberwachungsfunktion bereitstellen, die den Status der in den Routing-Tabellen dargestellten Links kontinuierlich überprüft. So kann Knoten A über den Fehler benachrichtigt werden, bevor er eine weitere Nachricht an Knoten Z senden möchte , und anstatt in eine Sackgasse zu geraten, kann er sofort mit einer Routenerkennung beginnen. Ich denke also im Grunde genommen an einen Dienst, der die Links regelmäßig überprüft.


Ich verstehe, dass ein solcher Mechanismus nicht energieeffizient wäre, da ZigBee normalerweise bei batteriebetriebenen Geräten mit geringem Stromverbrauch verwendet wird.

Was sind nun im Allgemeinen die effektivsten Mechanismen zur Erkennung von Verbindungsfehlern, die in einem drahtlosen Sensornetzwerk mit geringem Stromverbrauch verwendet werden können, insbesondere in einem ZigBee-Mesh-Netzwerk?

Bence Kaulics
quelle

Antworten:

4

Nach allem, was ich gefunden habe, empfehlen einige Implementierungen (z. B. Z-STACK von TI ), die Routing-Tabelle von Zeit zu Zeit zu aktualisieren , um "tote" Knoten zu vermeiden :

Ja, ich habe 5 bis 10 Minuten gewartet. Was ist "einige Zeit"? Ich habe Fälle gesehen, in denen die Wiederherstellung einige Minuten dauert. Wenn ich beispielsweise das Gateway aus- und wieder einschalte, dauert es möglicherweise ein oder zwei Minuten, bis die nächstgelegenen Knoten eine Verbindung herstellen, und dann ein oder zwei Minuten für jede nachfolgende Ebene. Aber ich habe viel länger gewartet, bis sich das Netz von dieser Routing-Änderung erholt hat.


Ja, es kann bis zu viele Minuten dauern. Wenn Sie also 5 oder Minuten möchten, kommt Ihr Gerät dann zurück? Es wird empfohlen, NLME_RouteDiscoveryRequest () regelmäßig aufzurufen, um die Routing-Tabelle zu verwalten.

Weitere Informationen zu den Funktionen finden Sie NLME_RouteDiscoveryRequest()im Entwicklerhandbuch (siehe Seite 11/12):

Die folgende Abbildung zeigt ein Beispiel für das Verfahren zur Erkennung vieler Routen. Um eine Routenerkennung von vielen zu eins zu initiieren, sendet der Konzentrator eine Routenanforderung von vielen zu eins an das gesamte Netzwerk. Nach Empfang der Routenanforderung fügt jedes Gerät einen Routentabelleneintrag für den Konzentrator hinzu und speichert den einen Hop-Nachbarn, der die Anfrage weiterleitet, als nächste Hop-Adresse. Es wird keine Routenantwort generiert.

Der Befehl "Viele-zu-Eins-Routenanforderung" ähnelt dem Befehl "Unicast-Routenanforderung" mit derselben Befehls-ID und demselben Nutzdatenrahmenformat. Das Optionsfeld in der Routenanforderung ist viele zu eins und die Zieladresse ist 0xFFFC. Die folgende Z-Stack-API kann für den Konzentrator verwendet werden, um eine Mehr-zu-Eins-Routenanforderung zu senden. Weitere Informationen zu dieser API finden Sie in der Dokumentation zur ZStack-API.

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

Fehlertoleranz in drahtlosen ZigBee-Sensornetzwerken ist ein interessantes Dokument mit weiteren Informationen darüber, wie ZigBee-Netzwerke Knotenausfälle tolerieren. Es scheint, dass die dort verwendete Implementierung das Netzwerk rekonstruiert hat, als einer der Knoten entfernt wurde (die genaue Methode hierfür ist leider nicht klar), so dass der fehlerhafte Knoten nicht mehr im Netz enthalten ist. In einigen Fällen führte dies dazu, dass Sensoren "verwaist" wurden, bevor sie aufgefordert wurden, sich über eine andere Route wieder dem Maschennetz anzuschließen.

Zusammenfassend aus den Ressourcen, die ich gefunden habe: Es hängt von Ihrer Implementierung ab, aber die meisten werden die Routing-Tabelle relativ häufig neu bewerten, um zu verhindern, dass defekte Knoten das Netzwerk beschädigen . Ich vermute, dass Sie eine genauere Antwort erhalten, wenn Sie den Anbieter Ihrer spezifischen ZigBee-Implementierung fragen, da der genaue Vorgang variieren wird.

Aurora0001
quelle