An excess of Global Who-Is/I-Am messages can be devastating on BACnet networks. Particularly on a big network with lots of devices, it’s important to limit broadcasts to only the necessities.
But Who-Is messages do play an important part in the BACnet network and, if the devices are configured properly, they needn’t overwhelm the system. Read on to find out when and why Who-Is and I-Am messages are useful — and when those messages become a problem.
The purpose of a Who-Is broadcast is to get the network addresses of devices on the network. These network addresses are critical to allow devices to communicate with one another without broadcasting the entire system. So, a device that needs another’s address will send a message “specifying a Device Object Instance Number or a range of Instance Numbers,” as the BACnet website explains. For example, it will send a “Who-is device 3001” or “Who-is device 3000 to 3099.”
The responding devices send an I-Am to a local or remote network, or to the full network. “This allows other devices that may need to know about the responders to acquire the address information without creating more network traffic,” BACnet explains, and it allows the responding device to figure out its route. Importantly, this also means there’s no need to manually add devices’ addresses into each BACnet device.
Now, targeted Who-Is messages are one matter, but often devices will send out Global Who-Is requests. That’s when the Who-Is message is sent, but it doesn’t specify a device or a range of devices. In this case, every device on the network responds with an I-Am.
This becomes a problem, though, when the Who-Is messages — and the I-Am responses — are sent too frequently, or without real cause. In fact, in Visual BACnet our Global Who-Is check fails if a total of three Who-Is requests are seen during a capture.
First, a Who-Is should be a targeted message to one, or a few, devices — not the entire network. If a device address is already known, there is no need to request an I-Am from it again. And if devices are requesting I-Ams from every device on the network, you will quickly end up with a broadcast storm.
Second, Global Who-Is messages should only be sent very sparingly — not once every minute, or five minutes, or even 30 minutes. Think about it: there’s no need to poll every device on the network for their “name and address” several times a day, or even several times a week. If your devices are configured to send out periodic Global Who-Is requests, check the frequency and consider whether that is really necessary. Some devices’ configurations can be changed to eliminate these requests, while others’ can only be reduced. If you can’t delete them, increase the amount of time between Global Who-Is messages to the maximum amount allowed.
Third, if these automatic messages are required, consider setting up a Segmented Who-Is, rather than Global. A Segmented Who-Is breaks up the requests into many smaller ones, looking for ranges with the entire BACnet device ID range, excluding known device IDs. For example, a device will say “Who-Is 0–99” and then send “Who-Is 100–199,” minimizing the number or concurrent I-Am messages.
Who-Is and I-Am messages can save you lots of time spent programming device addresses and, if done correctly, do not have to flood your network.