BACnet Initialize-Routing-Table Message

Initialize-Routing-Table reads or updates a router's routing table (Clause 6.4.7): how the request and its ack work, and which profiles require it.

What Initialize-Routing-Table Is

Initialize-Routing-Table is a network-layer message in BACnet, defined in Clause 6.4.7 of ANSI/ASHRAE 135-2024. A management tool uses it to configure a router’s routing table or to read the table’s current contents. It is carried in an NPDU (Network Protocol Data Unit, the network-layer packet) rather than as an application service. Unlike the other network-layer messages, it has a request and a reply: the router answers with Initialize-Routing-Table-Ack, so a tool knows the table was updated or receives the queried contents.

Like the other network-layer messages, it operates below the object and property layer. It manages a router’s port and network mappings, not object data.

How It Works

The message carries a number of port mappings, each pairing a directly connected or dial-up network with a port identifier and optional port information. Sending it with a number of ports equal to zero queries the router: it returns its complete routing table in an Initialize-Routing-Table-Ack without changing anything. Sending it with port mappings updates the table: a mapping replaces or appends the entry for its network, and a mapping with a port identifier of zero purges the entries for that network. The message is sent expecting a reply, and the ack, when it answers a query, uses the same format to convey the table back.

Where You’ll See It

  • Router provisioning. A commissioning tool writes the port-to-network mappings into a router so it knows which port reaches which network.
  • Table inspection. A tool queries a router with a zero-port request to read back the routing table it is actually using.
  • Table maintenance. As networks are added or removed, mappings are updated or purged incrementally rather than rewriting the whole table.

Initialize-Routing-Table Error Codes

Initialize-Routing-Table is a network-layer message, and its acknowledgment is the network-layer confirmation rather than an application-layer error class and code. A request that does not complete is a routing or addressing problem, not a service error. The usual causes:

  • No Initialize-Routing-Table-Ack comes back: the target is not a router, does not support remote table configuration, or the message never reached it.
  • A malformed or unroutable request may draw a Reject-Message-To-Network instead of an ack.
  • A query returns the table the router is actually using; if that differs from what was written, an earlier update did not take effect.

Profiles That Require It

The network-layer messages are the router’s job. Answering Initialize-Routing-Table is part of the router configuration capability NM-RC-B, which is required of the router profile B-RTR. The initiate side is a management or commissioning-tool behavior.

What Chipkin Provides

The CAS BACnet Stack answers Initialize-Routing-Table, returning its routing table on a query and applying updates, with the Initialize-Routing-Table-Ack reply. Talk to us about adding BACnet client or server support to your device.