BACnet/IP — building automation over UDP
BACnet/IP wraps the ASHRAE 135 application protocol in a 4-byte BVLC (Building Automation Virtual Link Control) tunnel and ships it over UDP/IP. Watch the scan-line shroud that appears at the head of each packet — that's the BVLC tunnel made visible. Distinctive trait per Appendix E: hex chips on Ethernet wire, triangle waveform.
Animation
Compare with
- Modbus RTU — serial industrial, no IP tunnel
- Modbus TCP — also IP-based but TCP stream, not UDP datagrams
- OPC-UA — modern industrial with built-in security
Engineering pitfalls
BBMD foreign-device registration timeout
BACnet Broadcast Management Devices (BBMDs) bridge broadcast domains. A foreign device must re-register periodically (default 60 s); miss the renewal and your remote BMS controller goes silent without warning.
Default port 47808 (0xBAC0) collisions
BACnet/IP default is UDP/47808. Many enterprise IT teams have never heard of it and block "unknown UDP" by default. Verify firewall AND switch QoS — broadcast UDP gets deprioritised aggressively on managed switches.
Object instance ID collision across vendors
Object instance IDs are 22-bit per device. Mix vendors and you'll find both vendors using "Analog Input 1" instance 0. ASHRAE 135 requires uniqueness per device-object pair; gateway vendors often forget. Audit your instance map before commissioning.
COV subscription leak under network partition
Change-Of-Value subscriptions don't auto-expire on TCP-like timeouts (UDP has none). After a network partition, the server retains stale subscriptions and burns memory. Always set Lifetime > 0 and re-subscribe periodically.
References
Primary sources
- ASHRAE 135 — BACnet — A Data Communication Protocol for Building Automation and Control Networks.
- BACnet/IP Annex J — BACnet Virtual Link Layer for IP.
- IETF RFC 768 — User Datagram Protocol.
- IANA port assignment: 47808/udp = bacnet.