BACnet Broadcast Distribution Table Example

Setting up a BBMD-connected network is a manual and somewhat arcane process. The broadcast distribution table is a list of the BBMDs on the network. Each BBMD on each network should have the same broadcast distribution table. Here’s a quick example of a BACnet broadcast distribution table (BDT) that might help clear things up.

The Setup

With the above illustration we have three IP networks separated by routers on a backbone. Let’s say that we have a BBMD on each network, and here are their IP addresses:,, Let’s also grant that we are using the standard BACnet port, 0xBAC0 (i.e.: 47808).

Example BACnet Broadcast Distribution Table

BBMD Address Subnet Mask

The subnet mask is a bit mask that is applied against the BBMD address. The combination of the two allows the device to find the address to send broadcast packages to. Unless you have routers that permit remote broadcasts to their local networks (rare), you’ll need to broadcast directly to your BBMD. The subnet mask value 255 is the same as saying “I’m a bit mask that does nothing”, so that applied against the BBMD address and a bunch of ones is the same as the BBMD address. If you use the network mask the BBMD will send the messages to the router, which will block them.

Example BACnet Network Number & Instance Number Convention

When I assign a BACnet instance number or BACnet network number, I never use the defaults provided by whatever product I’m using.

A few moments of thought about some kind of standard for your site can save you a lot of time down the road when you want to expand your system to include more devices. You don’t know quite how your networks will expand; I’ve had to merge two separate hospital BACnet networks that were addressed without any particular guideline and it was a mess. Nobody thought that the hospitals would merge when the networks were created, so people felt free to use random numbers for every new device.

Here’s a sort of guideline you can use to decide how to plan your own network. It’s certainly not gospel, and if you think of a better way of going about it please let me know.

BACnet Network Number Convention

Keep in mind that the maximum valid network number is 65535.

Building # (2 digit) – Floor # (2 digits) – Trunk # (1 digits)

Example: 01253

This would be a BACnet network in building 1, on floor 25, and it’s trunk number 3 on that floor.

BACnet Instance Number Convention

Keep in mind that the maximum instance number is 4,194,302.

Building # (2 digits) – Floor # (2 digits) – Device Marker (1 digit) – Device Index (2 digits)

For device marker, I use 0 as some kind of supervisory device.

Supervisory devices are primarily used as a graphics interface or historian. They aren’t directly responsible for control.

I use 1 as some kind of field controller directly responsible for control or monitoring.

I use 2 as some kind of gateway that converts to kinds of media, like MS/TP to BACnet/IP.

You can be creative here and think of ways to describe the particular kind of hardware you’re using. I think it’s useful to have that described in the instance number, but that’s arguable.

The device index is something like a controller number or some kind of arbitrary device index number that makes it unique.


If you spend a few minutes working on a device and network number convention, you’ll have a lot less trouble in the future. Only doing one controller in a building? Still follow a convention like the above. When it comes time to integrate that building with a wider network you’ll surprise the people that come after you with your uncanny abilities of foresight.

It costs you little, and saves so much time later.


What is a BACnet Instance Number?

A BACnet Instance Number Is a Globally-unique Address

An oft misunderstood and neglected concept is the BACnet instance number of a BACnet device. Neglecting this number at installation might not bite you today, but it remains as technical debt that complicates future work. It’s simply an address number that identifies that device uniquely on the entire interconnected BACnet network. No other device anywhere on the network may have the same BACnet instance number, even if it’s on a different bus in a different building. If they can see each other, they can’t have the same address. This is in contrast to the MS/TP address, which doesn’t have to be globally unique.

More Technical

The instance number is an unsigned decimal number that can range from 0 to 4,194,302. Every device on a BACnet network gets an instance number, and two devices must not have the same number. Devices on different physical network segments that can talk to each other are on the same BACnet network – they can’t have the same instance numbers!

Don’t neglect the instance number uniqueness just because you’re installing MS/TP devices. MS/TP devices also have MAC addresses and need to communicate to BACnet/IP devices through a gateway, but they still have unique BACnet instance numbers that cannot be duplicated anywhere else on the network.

If you have duplicate instance numbers on your network you’ll have a similar problem that you’d see if you have duplicate IP addresses. Some devices on the network will talk to one and not the other, and the devices themselves will have unreliable communication with the overall network.

To avoid problems, start your installation with a clear numbering convention. Here’s an example one I like to use:

1 – 23 – 03 – 23 = 1230323

SITE/Building – Floor – Bus/Network Number – MAC Address

I keep to this even if it’s only for one building as it makes future expansion easy. The numbers are a bit limited, you can only expand to 4 sites/buildings this way. If you have a broader campus/etc. you’d probably want to arrange a different numbering convention. Just spend the time to think carefully about it and you’ll save yourself in the long run!

What is a BBMD, and Why Do We Need It?

As BACnet networks get bigger and network infrastructure gets more complicated, BACnet/IP Broadcast Management Devices (BBMD) become necessary. Installers often configure these devices incorrectly despite their importance which creates the conditions for a broadcast storm.

What is a BBMD?

To understand what these are and why we need them, we first need to understand what a broadcast is. Network protocols like BACnet use broadcasts to efficiently communicate public information. A broadcast is sent once and received by all other devices on the same network. As a network gets bigger, broadcasts start to become a problem since they have to be processed by all devices. To address this problem, IT infrastructure network routers that connect different networks together block broadcasts from crossing networks. This presents a problem for us with BACnet because it requires broadcasts for discovery of devices and objects. Broadcasts are how BACnet devices announce that they exist and have points to share.

Each broadcast management device has a list of all others on other networks in its broadcast distribution table. They act as co-conspirators, getting around the broadcast blockade by smuggling the broadcasts into directly sent packages that routers allow to pass through them.

Here’s a point-form description of how they function:

  1. A BBMD packages BACnet broadcast messages that it hears on its own network into an envelope.
  2. It sends these packages directly to BBMDs on the other networks using its distribution table.
  3. Since those packages are sent directly from one device to another, routers won’t block it.
  4. When a BBMD gets a broadcast package from another BBMD, they open up that envelope and rebroadcast the message locally.

This allows your BACnet network to get around any routers in between that would block the broadcast traffic. It’s essentially smuggling, except it’s legal!

Visual Example of Broadcast Communication

Below is an example network architecture with three separate IPv4 networks and three routers. I chose the IP addresses in the example to be similar to what you’d be familiar with at home.

Example Network Architecture

An illustration of an example network. There are three separate subnets, each with their own router.

If one of the devices on the network sends a broadcast message, the other device on that network will see it. That same message will be blocked at the router and reach no other devices. This is standard router practice: they keep broadcasts local.

BACnet Broadcast Message Sent

An illustration of an example network with three separate subnets, each with their own router. In this image, a device on one of the subnets is sending a BACnet "Who-Is" message, which is being blocked at the router. The message can only reach other devices in the same subnet.
When a BBMD receives the broadcast message it encapsulates it and sends it a direct message to every other BBMD in its Broadcast Distribution Table (BDT). These other BBMDs open up the package and rebroadcast the contents locally, permitting BACnet broadcast traffic to permeate the entire network.

BACnet Broadcast Message Encapsulated and Delivered by the BBMD

An illustration showing how a BBMD gets around the broadcast block at the router level by "unicasting" the broadcast messages to other BBMDs. The BBMDs act as co-conspirators, getting the broadcast messages around routers that would block them.Common mistakes with configuring BBMDs

  • Multiple BBMDs configured on the same BACnet network is a huge, common problem. If you have more than one BBMD on a network it will cause a broadcast storm.
  • Using different broadcast distribution tables on different BBMDs.
  • Using the same network number for networks separated by routers.

Further Reading on BBMDs