An excess of Global Who-Is/I-Am messages can devastate BACnet networks. Particularly on a big network with many devices, limiting broadcasts to only the necessities is important.
But Global Who-Is messages play an important part in the BACnet network. They are vital for the smooth functioning of the system. And, if the devices are configured properly, they needn’t overwhelm the system at all. So, it is important to understand when and why Who-Is and I-Am messages are useful — and equally important to know when those messages might become a problem. Reading further will provide you with more insights into their significance and how they can affect your network.
A Who-Is broadcast aims 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 remote network or 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 Optigo Visual Networks, 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 of concurrent I-Am messages.
Global Who-Is and Global I-Am messages can save you lots of time spent programming device addresses and, if done correctly, do not have to flood your network.