Monday, December 7, 2009

Broadcast management and IPv6

The issue of broadcasts in BACnet has come up again -- and it looks like I have some reading to do.


In normal situations broadcasts are not an issue in BACnet and this has lead to different approaches to broadcasts. For example, early BACnet adopter Company A by default sends all alarms in Confirmed-Request messages (return acknowledgements are expected and the message is re-sent if the acks aren't received in time). But another early adopter, Company B, broadcasts an alarm, expecting that it will reach every device that is supposed to receive it. The former approach intends to guarantee delivery but may result in a number of messages being sent for one alarm; the latter assumes delivery but requires only one message.


This difference is no doubt in part based on certain assumptions about the BACnet netorks, but experience gained over time says it doesn't really matter for a properly functioning system. Both approaches work.


Of course, this requires attention to the proper use of broadcast messages. The classic example of misuse is to periodically send an unrestricted Who-Is broadcast, which results in every single device broadcasting an I-Am response. On the lab workbench this works just fine; in really large systems this doesn't. (Which is a reason why the BACnet Testing Labs working group permits the unrestricted Who-Is broadcast in only one situation -- devices that violate this rule will not be awarded the BTL Mark. [Insert my usual plug for specifying devices that have the Mark.])


It also requires attention to handling the situation where a device or a network of devices goes offline and the peer devices start trying to locate the absent device(s). Again, the rules are fairly well known so that very large networks can be constructed.


Still, experiences with improper implementations or acquired experience with ever-larger systems has led a number of BACneteers to wish for mechanisms to reduce broadcasts. One such published not long ago (Addendum 135-2008q-2) allows I-Am responses to be sent directly to the Who-Is requester instead of requiring that they be broadcast.


Where this has come up now is in, of all places, the Internet Protocol working group, where the topic of supporting IPv6 has come to the fore. IPv6 is already important in some places around the globe, where the available IPv4 addresses have already been exhausted. It appears IPv6 has a means for eliminating broadcasts, with concepts that possibly be brought into BACnet in a more general means.


It's not clear to me right now how all this will play together, and as one member of the group notes, the "dynamic binding" aspect of BACnet (such as obtaining a device's network address using only its device instance -- sort of a "Car 54, where are you?" mechanism) relies on broadcasts. I can imagine ways in which this could be made to work without global broadcasts, but I don't know exactly what's been done in IPv6.


Some general approach questions have been put to the group. Looks like I'll have some light reading to do during the holidays.

1 comment: