.. BFR B/IP Element
.. highlight:: xml
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::
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::
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::
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::
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::
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::
This is a long line of text.