Protokolle und Daten

BACnet-Routing, BBMDs und Foreign Devices

BACnet über Netzgrenzen: Router, Netznummern, BBMDs und Foreign-Device-Registrierung bei der Erkennung über IP-Subnetze.

Findet ein Who-Is der Gebäudeleittechnik nur Geräte im eigenen Subnetz oder manche Geräte doppelt, liegt die Ursache meist im Routing. BACnet-Nachrichten überwinden Netzgrenzen auf zwei Arten: Ein BACnet-Router verbindet einen MS/TP-Strang mit BACnet/IP. Ein BBMD (BACnet Broadcast Management Device) verteilt Broadcasts zwischen den IP-Subnetzen eines BACnet/IP-Netzes, da IP-Router sie nicht weiterleiten. Ein Gerät außerhalb dieser Subnetze kann sich als Foreign Device bei einem BBMD registrieren.

Dieser Leitfaden gehört zur Reihe über BACnet und Gebäudeprotokolle. Der Leitfaden zur Erkennung erklärt Geräteinstanzen und Netznummern.

BACnet-Router

Ein BACnet-Router hat einen Anschluss an jedes verbundene Netz, beispielsweise einen BACnet/IP-Anschluss und zwei MS/TP-Anschlüsse. Abschnitt 6 von ASHRAE 135 definiert seine Netzschicht. Jeder Anschluss hat eine Netznummer von 1 bis 65.534. Die Netznummer 65.535 bedeutet „alle Netze“ und dient für globale Broadcasts.

Die vollständige Adresse eines MS/TP-Geräts besteht aus Netznummer und einoktettiger MAC-Adresse. Master nutzen MAC 0 bis 127, Slaves können bis 254 nutzen und 255 ist der MS/TP-Broadcast. Ein BACnet/IP-Client richtet seine Anfrage an die IP-Adresse des Routers und trägt Netznummer und MAC des Strangs als Zielangaben in der NPDU ein (DNET und DADR). Der Router leitet sie an den Strang weiter. Der Vergleich von BACnet/IP und MS/TP erklärt Token Passing und die längere Antwortzeit bei gerouteten Lesezugriffen auf einen langsamen Strang.

Ein Client kann den Router für ein Netz auf zwei Wegen ermitteln. Er sendet Who-Is-Router-To-Network und erhält I-Am-Router-To-Network mit den Netzen hinter dem Router. Oder er liest in einer gerouteten Antwort wie I-Am Quellnetz und Quelladresse (SNET und SADR) und merkt sich die Router-IP als Weg. Beim Start sendet ein Router I-Am-Router-To-Network auch als Broadcast über jeden Anschluss. Erreichen diese Broadcasts das Subnetz des Clients nicht, findet dieser die Stränge hinter dem Router nicht.

Der Standard erlaubt zwischen zwei Geräten nur einen aktiven Weg. Jeder MS/TP-Strang braucht eine eigene Netznummer, die sich auch von der BACnet/IP-Netznummer unterscheidet. Beanspruchen zwei Router dieselbe Nummer, teilen oder schleifen sie den Verkehr. Der Hop-Zähler einer NPDU beginnt bei 255 und sinkt an jedem Router um eins. Eine Nachricht in einer Schleife wird so schließlich verworfen, durchläuft das Netz bis dahin aber oft. Für die Gebäudeleittechnik wirken doppelte Netznummern, als wechselten Geräte zwischen Strängen. Senden Sie zum Nachweis Who-Is-Router-To-Network ohne Netznummer und zeichnen Sie die Antworten auf. Zwei I-Am-Router-To-Network-Antworten mit derselben Netznummer identifizieren die Router. Auch Reject-Message-To-Network mit Grund 1 (kein Weg zu diesem Netz) weist auf fehlerhafte Nummerierung hin.

An vielen Standorten ist der Router ein Anschluss der übergeordneten Gebäudeleittechnik. Deren Netznummer-Einstellungen sind dann die Router-Einstellungen. Lesen Sie sie vor dem Hinzufügen eines zweiten Routers aus.

Warum Broadcasts an IP-Routern enden

BACnet nutzt Broadcasts für die dynamische Zuordnung (Who-Is, I-Am, Who-Has, I-Have), für TimeSynchronization und UTCTimeSynchronization sowie für unbestätigte Meldungen an eine Broadcast-Adresse, etwa UnconfirmedCOVNotification und UnconfirmedEventNotification. Newmans Bericht vom Cornell-Campus nennt zwei weitere Anwendungen: einen Notfallbefehl zur Lastreduzierung und einen Wert, den viele Regelprozesse gemeinsam nutzen.

Ein BACnet/IP-Broadcast ist ein UDP-Datagramm an die Broadcast-Adresse des Subnetzes, beispielsweise 10.1.10.255, auf Port 47808 (0xBAC0). IP-Router leiten es nicht weiter. Seit RFC 2644 (1999) verwerfen Router standardmäßig auch gerichtete Broadcasts an entfernte Subnetze. Ein Client kann deshalb Geräte in einem anderen Subnetz nicht entdecken, selbst wenn Unicast zwischen den Subnetzen funktioniert.

BBMDs

Anhang J von ASHRAE 135 definiert den BBMD. Meist ist er eine Funktion einer übergeordneten Steuerung oder eines Routers und kein eigenes Gerät. Jeder BBMD hält eine Broadcast Distribution Table (BDT). Sie enthält einen Eintrag für den lokalen BBMD und je einen für jeden entfernten BBMD, der die Broadcasts dieses Subnetzes erhalten soll. Ein Eintrag enthält IP-Adresse, UDP-Port und eine vieroktettige Verteilungsmaske.

Sendet ein Gerät im Subnetz einen Broadcast, verpackt der BBMD ihn als Forwarded-NPDU. Darin stehen IP-Adresse und Port des sendenden Geräts. Die Maske des BDT-Eintrags legt den Weg ins entfernte Subnetz fest. Mit 255.255.255.255 (Two-Hop) schickt der lokale BBMD die Forwarded-NPDU per Unicast zum entfernten BBMD. Dieser sendet sie als Broadcast in sein Subnetz und an seine registrierten Foreign Devices. Mit einer Subnetzmaske wie 255.255.255.0 (One-Hop) sendet der BBMD einen gerichteten Broadcast direkt ins entfernte Subnetz. Das scheitert, wenn IP-Router gerichtete Broadcasts wie üblich verwerfen, und funktioniert nicht über NAT. Nutzen Sie Two-Hop, sofern die Standort-IT die Weiterleitung gerichteter Broadcasts nicht ausdrücklich eingerichtet hat.

Addendum 135-2008o (2009) änderte einige ursprüngliche Regeln des Anhangs J. Es gilt:

PunktRegel
BBMDs je SubnetzMindestens einer in jedem beteiligten Subnetz. Zwei im selben Subnetz nur, wenn ihre BDTs keinen gemeinsamen Eintrag haben; sonst laufen Broadcasts im Kreis
MaskenFür ein bestimmtes Subnetz gilt in jeder BDT, die es aufführt, dieselbe Maske
Verkehr zwischen BBMDsUnicast-UDP, meist auf Port 47808. Firewalls zwischen den Subnetzen müssen ihn in beide Richtungen zulassen
Lesezugriffe nach der ErkennungUnicast vom Client direkt zum Gerät, nicht durch die BBMDs. Auch dieser Verkehr muss die Firewall passieren

Ursprünglich verlangte Anhang J identische BDTs im gesamten BACnet/IP-Netz, damit jedes Gerät jeden globalen Broadcast empfing. Newman erklärt, warum Cornell davon abwich: Die meisten Broadcasts sind nur innerhalb eines Gebäudes relevant. Jede Cornell-BDT führt nur den lokalen BBMD und den BBMD der Betriebszentrale. Newman nennt dies Split Horizon: Andere Netze liegen „unter dem Horizont“. Die Betriebszentrale sieht den gesamten Broadcast-Verkehr. Eine fehlerhaft konfigurierte Steuerung belastet damit nur ihr Gebäude, etwa wenn sie Alarme an einen nicht vorhandenen Empfänger schickt oder wegen eines zu kleinen COV-Inkrements viele Meldungen sendet. Addendum 135-2008o hob die Pflicht zu identischen BDTs auf. Eine BDT darf Broadcasts nun auf die benötigten Subnetze begrenzen.

Split Horizon hat einen Preis: Eine Arbeitsstation außerhalb der Betriebszentrale findet Geräte in anderen Gebäuden nicht mit einem globalen Who-Is. Sie benötigt eine feste Zuordnung von Geräteinstanz zu IP-Adresse oder eine Registrierung als Foreign Device beim BBMD des benötigten Gebäudes.

Beispiel mit zwei Gebäuden

Ein Standort betreibt ein BACnet/IP-Netz mit Netznummer 10 über zwei Gebäude. Jedes hat ein eigenes IP-Subnetz und eine übergeordnete Steuerung, die zugleich BBMD und Router zu den MS/TP-Strängen des Gebäudes ist.

Gebäude 1Gebäude 2
IP-Subnetz10.1.10.0/2410.2.10.0/24
BBMD und Router10.1.10.2:4780810.2.10.2:47808
MS/TP-SträngeNetze 101 und 102Netz 201
BMS-Arbeitsstation10.1.10.50Keine

Beide BBMDs haben dieselbe BDT:

Broadcast-Verteilungstabelle
10.1.10.2:47808   mask 255.255.255.255
10.2.10.2:47808   mask 255.255.255.255

Die Erkennung von der BMS-Arbeitsstation läuft dann so ab:

  1. Das BMS sendet ein globales Who-Is als Original-Broadcast-NPDU an 10.1.10.255.
  2. BBMD 10.1.10.2 schickt eine Forwarded-NPDU mit Ursprung 10.1.10.50:47808 per Unicast an 10.2.10.2.
  3. BBMD 10.2.10.2 sendet die Forwarded-NPDU als Broadcast an 10.2.10.255. Seine Router-Funktion sendet Who-Is auch über Strang 201.
  4. Steuerung 10.2.10.37 sendet I-Am als Broadcast. I-Am kehrt über beide BBMDs auf demselben Weg nach 10.1.10.0/24 zurück.
  5. Das BMS entnimmt 10.2.10.37:47808 der Ursprungsadresse in der Forwarded-NPDU und sendet ReadProperty-Anfragen per Unicast dorthin. Die BBMDs sind an diesem Lesezugriff nicht beteiligt.
  6. MS/TP-Gerät 5 auf Strang 201 antwortet über den Router. Sein I-Am enthält SNET 201 und SADR 5; spätere Lesezugriffe sendet das BMS deshalb mit DNET 201 und DADR 5 an 10.2.10.2.

Ein Inbetriebnahme-Laptop im Standort-VPN unter 10.50.0.23 registriert sich mit einer Time-to-Live (TTL) von 300 s bei 10.1.10.2 als Foreign Device. Der BBMD hält den Eintrag 330 s. Stellen Sie die erneute Registrierung auf alle 150 s ein, damit ein verlorener Registrierungsversuch die Verbindung nicht beendet.

Foreign Devices

Ein Foreign Device ist ein BACnet/IP-Gerät, dessen IP-Subnetz nicht zu dem BACnet/IP-Netz gehört, an dessen Broadcasts es teilnehmen will. Typisch sind ein Inbetriebnahme-Laptop oder eine entfernte Arbeitsstation. Das Gerät braucht IP-Erreichbarkeit zu einem BBMD und nutzt diese BVLC-Nachrichten aus Anhang J:

  1. Das Gerät sendet Register-Foreign-Device mit einer TTL in Sekunden. Das Feld hat zwei Oktette, maximal also 65.535 s.
  2. Der BBMD antwortet mit BVLC-Result. 0x0000 bedeutet Erfolg. 0x0030 ist ein Register-Foreign-Device-NAK: Der BBMD akzeptiert keine Registrierung, seine Tabelle ist voll oder eine Hersteller-Zulassungsliste weist die Adresse zurück.
  3. Der BBMD trägt das Gerät in seine Foreign Device Table (FDT) ein. Der Eintrag bleibt für TTL plus 30 s feste Nachfrist erhalten (Abschnitt J.5.2.1).
  4. Der BBMD sendet Broadcasts seines Subnetzes und seiner BDT-Partner als Forwarded-NPDUs an das Gerät.
  5. Das Gerät sendet eigene Broadcasts als Distribute-Broadcast-To-Network an den BBMD. Dieser verteilt sie lokal, an seine BDT-Partner und an seine übrigen Foreign Devices. Ist das Gerät nicht registriert, antwortet der BBMD mit 0x0060.
  6. Das Gerät registriert sich erneut, bevor der Eintrag abläuft. Andernfalls löscht der BBMD ihn. Das Gerät erhält dann keine Broadcasts mehr und keine Fehlermeldung.

Die Größe der FDT legt der BBMD-Hersteller fest. Prüfen Sie sie im Handbuch, wenn mehrere Werkzeuge zugleich registriert sein müssen. Akzeptieren Sie Registrierungen nur aus benötigten Adressbereichen: Ein registriertes Gerät erhält jeden Broadcast des Netzes.

NAT zwischen Foreign Device und BBMD erzeugt zwei Fehlerquellen. Erstens speichert der BBMD als Quelladresse der Registrierung die öffentliche Adresse samt Port des NAT-Routers. Weitergeleitete Broadcasts erreichen das Gerät nur, solange der NAT-Router diese Zuordnung offen hält. Laut Addendum 135-2008o sollte ein Foreign Device hinter NAT häufig neu registrieren; je nach NAT-Router kann ein Intervall von höchstens 30 s nötig sein.

Zweitens enthält eine Forwarded-NPDU die private Adresse des Geräts, das den Broadcast sendete. Ein Client jenseits des NAT-Routers kann diese Adresse nicht erreichen. Ein BBMD mit NAT-Unterstützung schreibt stattdessen globale Adresse und Port des NAT-Routers in das Feld; jeder BDT-Eintrag enthält die globale Adresse des anderen BBMD. NAT-Unterstützung ist optional und steht im PICS des BBMD. Hinter einem NAT-Router kann von der globalen Seite nur ein Gerät eines BACnet/IP-Netzes erreicht werden. Dieses Gerät routet zu den anderen, die dann eigene BACnet-Netznummern benötigen. One-Hop-Verteilung funktioniert nicht über NAT; diese Netze brauchen Two-Hop.

Erkennung für einen Standort planen

Vereinbaren Sie mit BMS-Verantwortlichen und Standort-IT vor der Installation einen schriftlichen Plan:

  1. Legen Sie ein Schema für Netznummern und Geräteinstanzen für den ganzen Standort fest und dokumentieren Sie es vor der Installation.
  2. Erfassen Sie die IP-Subnetze mit BACnet und den jeweiligen UDP-Port.
  3. Benennen Sie für jedes beteiligte Subnetz den BBMD samt Adresse und BDT mit der Maske jedes Eintrags.
  4. Geben Sie UDP 47808 zwischen BBMDs und zwischen jedem Client und den gelesenen Geräten oder Routern frei.
  5. Legen Sie fest, welcher BBMD Foreign Devices annimmt und welche Adressbereiche erlaubt sind.
  6. Bestimmen Sie, welche Broadcasts jedes Subnetz braucht, und richten Sie die BDTs entsprechend ein.

Newmans Cornell-Schema macht Nummern lesbar. Eine Netznummer besteht aus dem vierstelligen Gebäudecode plus einer Ziffer für das Netz im Gebäude. Beim Gebäudecode 2000 ergeben sich Netznummern 20000 bis 20009. Eine Geräteinstanz ergänzt zwei Stellen, FFFFNDD, sodass jedes Netz bis zu 100 Geräte enthält. Fachkräfte können das Gebäude damit aus jeder Adresse einer Aufzeichnung erkennen. Vergebbare Geräteinstanzen reichen von 0 bis 4.194.302; 4.194.303 ist reserviert. Prüfen Sie jede berechnete Instanz: Gebäudecode 4194 erlaubt nur die Endungen 000 bis 302; größere Gebäudecodes passen nicht. An kleineren Standorten können Sie Netznummer = 100 × Gebäude + Strang und Geräteinstanz = 1000 × Netznummer + MAC-Adresse verwenden. MS/TP-Gerät 12 auf Strang 2 von Gebäude 1 hat dann Geräteinstanz 102012. Wählen Sie das Schema zuerst. Eine Umnummerierung nach Übergabe unterbricht jede BMS-Punktbindung, Trendaufzeichnung und Grafik, die die alte Instanz gespeichert hat.

Berechnen Sie die Broadcast-Last vor der Auswahl der BDTs. Ein globales Who-Is ohne Instanzbereich erhält von jedem Gerät ein I-Am. Bei Two-Hop über n BBMDs überquert jedes I-Am n − 1 Verbindungen zwischen Subnetzen und wird in n Subnetzen als Broadcast gesendet. An einem Standort mit 2.000 Geräten und 10 BBMDs verursacht ein globales Who-Is 18.000 Forwarded-NPDUs zwischen BBMDs und 20.000 lokale Broadcasts, zusätzlich zu Kopien für jedes Foreign Device. Ein Who-Is mit Instanzbereich erreicht weiterhin jedes Subnetz, erzeugt aber weniger Antworten. Ein an eine bestimmte Netznummer gesendetes Who-Is (Remote-Broadcast) erreicht nur dieses Netz. Nutzen Sie es, wenn der Standort des Geräts bekannt ist.

Falls die Standort-IT BACnet-Broadcasts zwischen Subnetzen oder über ein WAN nicht weiterleitet, verwenden Sie BACnet Secure Connect (BACnet/SC). Addendum 135-2016bj führte es 2019 ein. Jeder Knoten verbindet sich per TLS-gesichertem WebSocket mit einem Hub; dieser verteilt Broadcasts. BBMDs sind dann nicht nötig. Jedes Gerät oder ein Router davor muss BACnet/SC unterstützen.

Fehler und ihre Ursachen

Lesen Sie mit einem BACnet-Werkzeug BDT und FDT jedes BBMD aus (Read-BDT und Read-FDT) und vergleichen Sie sie. Zeichnen Sie danach UDP 47808 auf beiden Seiten der Firewall auf. In Wireshark zeigt bvlc.function == 0x04 Forwarded-NPDUs, bvlc.result NAK-Codes und bvlc.reg_ttl die TTL jeder Registrierung.

SymptomMögliche UrsachePrüfung
Geräte im lokalen Subnetz erscheinen, entfernte nichtKein BBMD in einem Subnetz, fehlender BDT-Eintrag oder Firewall blockiert UDP 47808 zwischen BBMDsRead-BDT an jedem BBMD; im entfernten Subnetz Forwarded-NPDUs aufzeichnen
Entfernte Geräte erscheinen, Lesezugriffe laufen aber in TimeoutsFirewall lässt BBMD-Verkehr zu, blockiert jedoch Unicast vom Client zum GerätReadProperty-Anfrage und Antwort auf beiden Seiten aufzeichnen
Jedes I-Am kommt doppeltZwei BBMDs im selben Subnetz mit gemeinsamem BDT-Eintrag oder unterschiedliche Masken für ein Subnetz in verschiedenen BDTsBDT aller BBMDs im Subnetz auslesen und vergleichen
Foreign Device findet Geräte und wird dann stillRegistrierung abgelaufen oder NAT-Zuordnung geschlossenFDT-Eintrag und Restlaufzeit lesen; Registrierungsintervall mit TTL vergleichen
Who-Is eines Foreign Device erhält 0x0060Gerät ist bei diesem BBMD nicht registriertRegister-Foreign-Device und zugehöriges BVLC-Result suchen
Registrierung erhält 0x0030Registrierung deaktiviert, FDT voll oder Adresse nicht erlaubtEinstellungen für Foreign Devices am BBMD prüfen
Geräte eines Strangs scheinen ihre Identität zu wechselnZwei Router nutzen dieselbe NetznummerWho-Is-Router-To-Network senden und nach zwei Routern mit derselben Netznummer suchen

Routing mit Edge

Edge auf dem ZGW-20 Gateway ist ein BACnet/IP-Client. Es entdeckt Geräte mit einem globalen Who-Is an die in seinen BACnet-Einstellungen festgelegte Broadcast-Adresse, standardmäßig 255.255.255.255, über standardmäßig UDP-Port 47808. Geräte hinter einem BACnet-Router erfasst es nach Netznummer und MAC-Adresse und liest sie über den Router. Es verbindet sich nicht direkt mit einem MS/TP-Strang.

Edge registriert sich nicht als Foreign Device und arbeitet nicht als BBMD. Geräte in einem anderen Subnetz findet es nur, wenn die BBMDs des Standorts deren Broadcasts in das Subnetz des Gateways bringen. Stellen Sie das Gateway in das Subnetz der Steuerungen oder in ein Subnetz, dessen BBMD in den BDTs des Standorts steht. Bei Split Horizon müssen der BBMD im Gateway-Subnetz und die BBMDs der gelesenen Gebäude einander aufführen. Nach der Erkennung liest Edge jede Steuerung per Unicast. Die Firewall muss daher UDP 47808 zwischen Gateway und jeder Steuerung oder jedem Router zulassen.

Die Schaltfläche Test Connection in den BACnet-Einstellungen von Edge pingt die konfigurierte lokale Adresse. Sie sendet keine BACnet-Anfrage und beweist weder UDP-47808-Erreichbarkeit noch die Funktion der BBMDs. Bestätigen Sie jede Steuerung anhand ihrer Geräteinstanz in den Erkennungsergebnissen und danach mit einem Sensortest, der einen Datenpunkt liest, bevor Sie ihre Daten verwenden.

Häufige Fragen

Was ist ein BBMD in BACnet?

Ein BACnet Broadcast Management Device nach Anhang J von ASHRAE 135. Meist ist es eine Funktion einer übergeordneten Steuerung oder eines Routers. Es empfängt BACnet-Broadcasts in seinem IP-Subnetz und sendet sie als Forwarded-NPDUs an die BBMDs seiner Broadcast Distribution Table. Diese senden sie erneut als Broadcast in ihre Subnetze.

Wann benötige ich einen BBMD?

Wenn BACnet/IP-Geräte, die einander entdecken müssen, in verschiedenen IP-Subnetzen liegen. Innerhalb eines Subnetzes sehen sie die Broadcasts auch ohne BBMD. Jedes beteiligte Subnetz braucht einen BBMD. Zwei BBMDs im selben Subnetz sind nur zulässig, wenn ihre Tabellen keinen Eintrag gemeinsam haben; sonst entstehen Broadcast-Schleifen.

Was bedeutet die Registrierung eines BACnet Foreign Device?

Damit kann ein Gerät außerhalb der Subnetze eines BACnet/IP-Netzes an dessen Broadcasts teilnehmen. Es sendet Register-Foreign-Device mit einer Time-to-Live in Sekunden an einen BBMD. Dieser leitet Broadcasts an das Gerät weiter und nimmt dessen Broadcasts als Distribute-Broadcast-To-Network an. Der Eintrag läuft 30 Sekunden nach der Time-to-Live ab, sofern das Gerät sich nicht neu registriert.

Worin unterscheiden sich BACnet-Router und BBMD?

Ein Router verbindet verschiedene BACnet-Netze mit jeweils eigener Netznummer, beispielsweise MS/TP und BACnet/IP. Ein BBMD verbindet IP-Subnetze desselben BACnet/IP-Netzes mit gemeinsamer Netznummer, indem es Broadcasts zwischen ihnen weiterleitet.

Kann sich das ZGW-20 Gateway als Foreign Device registrieren?

Nein. Edge ist ein BACnet/IP-Client. Es registriert sich weder als Foreign Device noch arbeitet es als BBMD. Platzieren Sie das Gateway im Subnetz der Steuerungen oder in einem Subnetz, dessen BBMD in den Broadcast Distribution Tables des Standorts steht.