BACnet/IP

BACnet/IP elements work on top of the UDP/IP layer. They process the BACnet Virtual Link Layer header according to the functionality of the component and provide an additional layer of abstraction to upper layers in the stack.

BIP

The BIP component interprets the BVLL as a simple device connection to a B/IP LAN:

<BIP client="client_label" server="server_label" />

The B/IP packets it receives upstream from the UDP layer, such as Original-Unicast and Original-Broadcast will continue up the stack with the same source and destination address. A Forwarded-NPDU which has been sent by a BBMD on the LAN will have the original source address substituted from the BVLL header.

Foreign

The Foreign component interprets the BVLL as a foreign device of a B/IP network:

<Foreign client="client_label" server="server_label"
    bbmd="bbmd_address" ttl="time_to_live"
    />

In addition to the client and server attributes, the Foreign component requires the bbmd and ttl attribtues. The bbmd is the IP address of the BBMD that manages the foreign device registration, and the ttl is the time to live in seconds.

BBMD

The BACnet/IP Broadcast Management Device (BBMD) component manages the redistribution of local broadcast traffic and maintains registrations for foreign devices:

<BBMD client="client_label" server="server_label" foreign="flag">
    <Peer address="peer_address" />
</BBMD>

The foreign flag is “y” or “Y” if the BBMD supports foreign device registration.

The Peer child element of the BBMD is a reference to a peer BBMD. The peer_address is of the form X.X.X.X/Y:Z, where X.X.X.X is the IP address in the dot-quad notation, Y is the number of bits in the network portion, and Z is the port number.

The /Y portion of the address is typically /32 indicating that the broadcast messages to be forwarded are sent to the peer BBMD to be rebroadcast, rather than using a directed broadcast which is typically not allowed.

If the :Z portion of the address is omitted, the port will default to 47808 (0xBAC0).

Note

There is no configuration validation, so it is possible to create a BBMD component that has no Broadcast Distribution Table (BDT), or to create one that doesn’t have itself as an entry.

Samples

For these and other samples, the components are described in configuration starting from the bottom of a stack and proceeding up. In the coorisponding diagrams, upstream traffic goes from left to right, the downstream traffic from right to left.

BIP to Console

This sample configuration file creates one of each of the UDP, BIP, and Console components and binds them together:

<BFR>
    <UDP address="192.168.1.1/24" server="a" />
    <BIP client="a" server="b"/>
    <Console client="b" />
</BFR>

This is a long line of text.

Foreign to Console

This sample configuration file creates one of each of the UDP, Foreign, and Console components and binds them together:

<BFR>
    <UDP address="192.168.1.1/24" server="a" />
    <Foreign client="a" server="b" bbmd="192.168.2.1" ttl="60" />
    <Console client="b" />
</BFR>

This is a long line of text.

BBMD to Console

This sample configuration file creates one of each of the UDP, BBMD, and Console components and binds them together. The BBMD is configured to have two peers:

<BFR>
    <UDP address="192.168.1.1/24" server="a" />
    <BBMD client="a" server="b" foreign="n">
        <Peer address="192.168.1.1" />
        <Peer address="192.168.2.1" />
        <Peer address="192.168.3.1" />
    </BBMD>
    <Console client="b" />
</BFR>

This is a long line of text.