Gebäudetechnik : BACnet-Netzwerkanalyse mit Wireshark

© Beckhoff Automation GmbH & Co. KG

Das Open Source Tool Wireshark stellt ein mächtiges Werkzeug zur Aufzeichnung des Netzwerkverkehrs und zur Kommunikationsanalyse bereit. Für BACnet stehen Decoder für BACnet/IP, MS/TP und (momentan noch experimentell) Secure Connect bis zur Revision 19 zur Verfügung.

Wer darf Aufzeichnungen durchführen?

Bei Aufzeichnungen in fremden Netzwerken ist zu beachten, dass diese der Hoheit von IT-Abteilungen unterliegen. Bevor mit der Aufzeichnung begonnen wird, sollte daher auf jeden Fall die Erlaubnis des Betreibers eingeholt werden. Gegebenenfalls muss die IT-Abteilung die Aufzeichnung durchführen und den Mitschnitt zur Verfügung stellen.

Eingriff in das Netzwerk

Bild 1 zeigt, wie mit Hilfe einer Netzwerk-Sonde (in diesem Beispiel die Industrial-Ethernet-Multichannel-Probe ET2000 von Beckhoff) ein temporärer Zugriff auf das Netzwerk erfolgen kann. Dabei verhält sich die Sonde gegenüber dem Netzwerk passiv und ändert nicht die Infrastruktur. Der Datenverkehr zwischen den Automationsstationen und der Management-Station wird dem Analyse-PC auf einem separaten Gigabit-Port zur Verfügung gestellt. Auf diesem PC wird Wireshark gestartet und die Aufzeichnung kann beginnen.

Bild 2 zeigt exemplarisch einen Netzwerkmitschnitt. Jede Zeile entspricht dabei einem Telegramm. Im Bild ist zu erkennen, dass neben BACnet auch andere Protokolle aufgezeichnet werden. Setzt man einen Anzeigefilter, z. B. „bacnet“, werden nur die auf den Filter zutreffenden Telegramme angezeigt. Wireshark verfügt auch über die Möglichkeit, Filter zu kombinieren, wie auf Bild 3 zu sehen ist.

Weiterhin ist erkennbar, dass BACnet-Telegramme eingefärbt wurden. Diese Option kann in den Einstellungen hinzugefügt werden, was die Übersichtlichkeit verbessert. Jedes BACnet-Telegramm wird bereits mit Angabe des verwendeten Dienstes angezeigt (z. B. Who-Is, I-Am, Read Property).

Die BACnet-Kommunikation wird in unbestätigte und bestätigte Telegramme unterteilt. Um den bestätigten Datenaustausch zu untersuchen, müssen der Request („Fragetelegramm“) und das Antworttelegramm betrachtet werden. BACnet verwendet zur Kennzeichnung eine sogenannte Invoke-ID, das heißt der Sender verwendet eine Nummer zur Kennzeichnung des Telegramms, das der Empfänger in der Antwort wiederholt. Die Invoke-ID wird in eckigen Klammern angezeigt, sodass die Antwort der Frage zugeordnet werden kann.

Beispielanalyse Read Property

Bild 4 zeigt eine Read-Property-Abfrage, also das Auslesen einer einzelnen BACnet-Eigenschaft (hier ObjectName des Geräts mit der Instanznummer 4000). Die Antwort wird auf Bild 5 gegeben. Hier liefert das angefragte Gerät den Property-Inhalt. Zur Analyse des Paketinhalts wurde hier das entsprechende Telegramm markiert und in der Detailansicht die BACnet APDU (Application Protocol Data Unit) untersucht.

Beispiel einer fehlerhaften Kommunikation

Kommt es bei der Kommunikation zu einem Fehler, wird dies gemäß BACnet-Standard mit einer Fehlerantwort quittiert. Wird zum Beispiel auf ein Property geschrieben, das nur lesbar ist, wird dieses mit einer Error-Nachricht beantwortet.

Bild 6 zeigt die Antwort mit der Fehlermeldung „Write Access Denied“, weist also darauf hin, dass Schreiben auf dieses Property nicht erlaubt ist.

Aufzeichnungen exportieren

Etwas schwieriger sind Analysen auf fehlende oder falsch kodierte Telegramme. Zur weiteren Untersuchung kann die Paketaufzeichnung daher gespeichert und der Entwicklungs- oder Supportabteilung zur Verfügung gestellt werden. Hierzu verwendet Wireshark das pcap-Format oder das aktuelle pcapng (pcap next generation).

BACnet-Statistik

Im Menü Statistik stehen insgesamt vier Auswertungen für BACnet zur Verfügung. BACnet-Telegramme können anhand ihrer Instanznummer, nach IP-Adresse, Objekttyp oder Dienst sortiert dargestellt werden.

Messung der Netzwerkauslastung

Mit der Funktion „IO-Graph“ im Menü Statistik lässt sich die aktuelle Netzwerkauslastung grafisch darstellen. Eine typische Fehlersituation ist zum Beispiel eine zu hohe Anzahl Broadcast-Nachrichten. Bei rund 30 bis 40 Broadcast-Nachrichten pro Sekunde werden die angeschlossenen Geräte so hoch belastet, dass eine ordnungsgemäße Kommunikation nicht mehr möglich ist.

MS/TP

Für die Aufzeichnung von seriellen Netzwerken mit BACnet MS/TP ist ein USB/RS485-Konverter sowie ein serielles Aufzeichnungstool erforderlich. Das Open Source Tool YABE (Yet Another BACnet Explorer) stellt dieses Tool (MsTp.BACnet Capture) zur Verfügung und ermöglicht, Aufzeichnungen aus MS/TP an Wireshark weiterzugeben.

Fazit

Wireshark erlaubt einen tiefen Einblick in die BACnet-Kommunikation und kann helfen, Fehlersituationen oder ungewünschte Kommunikation (zum Beispiel eine unnötig hohe proprietäre Kommunikation) zu erkennen. Die aus der Aufzeichnung resultierenden Erkenntnisse können zur Optimierung der Kommunikation oder zur Fehlerbehebung genutzt werden.