diff --git a/doc/bird.sgml b/doc/bird.sgml index 9a025185..58c517fe 100644 --- a/doc/bird.sgml +++ b/doc/bird.sgml @@ -402,8 +402,75 @@ if 1234 = i then printn "."; else { print "*** FAIL: if 1 else"; } Device +Introduction + +

The Device protocol is not a real routing protocol as it doesn't generate +any routes and only serves as a module for getting information about network +interfaces from the kernel. + +

Except for very unusual circumstances, you probably should always include +this protocol in the configuration since almost all other protocol don't +do anything if they are not provided with network interfaces. + +Configuration + +

+ scan time Time in seconds between two scans + of the network interface list. On systems where we are notified about + interface status changes asynchronously (such as newer versions of + Linux), we need to scan the list only to avoid confusion by lost + notifications, so the default time is set to a large value. + + +Attributes + +

As the Device protocol doesn't generate any routes, it cannot have +any attributes. + +Example + +

+protocol device { + scan time 10; # Scan the interfaces often +} + + Direct +Introduction + +

The Direct protocol is a simple generator of device routes for all the +directly connected networks according to the list of interfaces provided +by the kernel via the Device protocol. + +

It's highly recommended to include this protocol in your configuration +unless you want to use BIRD as a route server or a route reflector, that is +on a machine which doesn't forward packets and only participates in +distribution of routing information. + +Configuration + +

+ interface By default, the Direct + protocol will generate device routes for all the interfaces + available. If you want to restrict it to some subset of interfaces + (for example if you're using multiple routing tables for policy + routing and some of the policy domains don't contain all interfaces), + just use this clause. + + +Attributes + +

Direct device routes don't contain any specific attributes. + +Example + +

+protocol direct { + interface "-arc*", "*"; # Exclude the ARCnets +} + + Kernel OSPF @@ -506,6 +573,58 @@ protocol rip MyRIP_test { Static +Introduction + +

The static protocol doesn't communicate with other routers in the network, +but instead it allows you to define routes manually which is often used for +specifying how to forward packets to parts of the network which don't use +dynamic routing at all and also for defining sink routes (i.e., those +telling to return packets as undeliverable if they are in your IP block, +you don't have any specific destination for them and you don't want to send +them out through the default route to prevent routing loops). + +

There are three types of static routes: `classical' routes telling to +forward packets to a neighboring router, device routes specifying forwarding +to hosts on a directly connected network and special routes (sink, blackhole +etc.) which specify a special action to be done instead of forwarding the +packet. + +

When the particular destination is not available (the interface is down or +the next hop of the route is not a neighbor at the moment), Static just +uninstalls the route from the table its connected to and adds it again as soon +as the destinations becomes adjacent again. + +Configuration + +

The Static protocol has no configuration options. Instead, the +definition of the protocol contains a list of static routes which +can contain: + + + route Static route through + a neighboring router. + route Static device + route through an interface to hosts on a directly connected network. + route Special routes + specifying to drop the packet, return it as unreachable or return + it as administratively prohibited. + + +Attributes + +

Static routes have no specific attributes. + +Example + +

+protocol static { + table testable; # Connect to non-default routing table + route 0.0.0.0/0 via 62.168.0.13; # Default route + route 62.168.0.0/25 reject; # Sink route + route 10.2.0.0/24 via "arc0"; # Secondary network +} + + Getting more help

This is really last section of this file, should give pointers to