Next Previous Contents

## 2. About routing tables

BIRD has one or more routing tables which may or may not be synchronized with OS kernel and which may or may not be synchronized with each other (see the Pipe protocol). Each routing table contains a list of known routes. Each route consists of:

- network prefix this route is for (network address and prefix length -- the number of bits forming the network part of the address; also known as a netmask)
- preference of this route
- IP address of router which told us about this route
- IP address of router we should forward the packets to using this route
- other attributes common to all routes
- dynamic attributes defined by protocols which may or may not be present (typically protocol metrics)

Routing table maintains multiple entries for a network, but at most one entry for one network and one protocol. The entry with the highest preference is used for routing (we will call such an entry the selected route). If there are more entries with the same preference and they are from the same protocol, the protocol decides (typically according to metrics). If they aren't, an internal ordering is used to break the tie. You can get the list of route attributes in the Route attributes section.

Each protocol is connected to a routing table through two filters which can accept, reject and modify the routes. An export filter checks routes passed from the routing table to the protocol, an import filter checks routes in the opposite direction. When the routing table gets a route from a protocol, it recalculates the selected route and broadcasts it to all protocols connected to the table. The protocols typically send the update to other routers in the network.

Next Previous Contents