While various network topologies were discussed, including the "tree" and "ring," we finally settled on the "fully-connected star." (Note that this is a logical architecture, not a physical one!)
Among its advantages:
The star BBMDs are easy to configure: each has the exact same Broadcast Distribution Table (BDT). The mechanism to tell each of the BBMDs the IP address and broadcast distribution method of all of its peers is the BVLL Write-Broadcast-Distribution-Table message.
The Write-Broadcast-Distribution-Table message can contain a large number of peer BBMD addresses, limited only by the fact that a UDP message can be at most 64K octets in length. The same message is sent to every BBMD, so a single workstation can easily update all of the BBMD's.
Note the presence of the "Broadcast Distribution Mask." This field is either a subnet mask or all 1's and indicates whether a BBMD is to send a "directed broadcast" (retransmitted by appropriately configured IP routers) or a unicast message to the indicated BBMD which then retransmits the forwarded broadcast message. The "N" indicates that the BBMD Address - Broadcast Distribution Mask octets may be repeated N times, once for each broadcast distribution table entry. We will use "N" in this way throughout this tutorial.
When a BBMD receives a Write-Broadcast-Distribution-Table message and has successfully updated its internal BDT, it responds with an ACK. This same result message, the BVLC-Result with a result code of zero, is used for all BVLL messages that only require a simple acknowledgement of success or failure (and not the return of data). A BVLC-Result message with a non-zero result code is a negative acknowledgement or "NAK" indicating some problem in carrying out the service requested.
As microprotocol messages, these messages do not contain BACnet NPDUs and are used strictly between the peer protocol objects in the BBMDs and the workstation generating the request. Remember that as a microprotocol, these messages could be layered on top of some other microprotocol for security, data compression, or whatever.
Now we have a simple way to distribute broadcast messages!