diff --git a/doc/bird.sgml b/doc/bird.sgml index 7eac82f8..6c6eff27 100644 --- a/doc/bird.sgml +++ b/doc/bird.sgml @@ -52,7 +52,7 @@ the IPv4 or the IPv6 protocol). Routers are devices which forward packets betwee networks in order to allow hosts not connected directly to the same local area network to communicate with each other. They also communicate with the other routers in the Internet to discover the topology of the network which allows them to find optimal (in terms of some metric) rules for -forwarding of packets (which will be called routes in the rest of this document) and to adapt themselves to the +forwarding of packets (which are called routing tables) and to adapt themselves to the changing conditions such as outages of network links, building of new connections and so on. Most of these routers are costly dedicated devices running obscure firmware which is hard to configure and not open to any changes (on the other hand, their special hardware design allows them to keep up with lots of high-speed network interfaces, better than general-purpose computer does). Fortunately, most operating systems of the UNIX family allow an ordinary @@ -62,8 +62,8 @@ a statically configured table.

A - (non free), Zebra and MRTD, but their capabilities are limited and +which does the actual packet forwarding. There already exist other such routing daemons: routed (RIP only), GateD + (non-free), Zebra and MRTD, but their capabilities are limited and they are relatively hard to configure and maintain.

BIRD is an Internet Routing Daemon designed to avoid all of these shortcomings, @@ -75,7 +75,7 @@ protocols to be incorporated easily. Among other features, BIRD supports: both IPv4 and IPv6 protocols multiple routing tables the Border Gateway Protocol (BGPv4) - the Routing Interchange Protocol (RIPv2) + the Routing Information Protocol (RIPv2) the Open Shortest Path First protocol (OSPFv2) a virtual protocol for exchange of routes between different routing tables on a single host a command-line interface allowing on-line control and inspection @@ -137,16 +137,15 @@ options. The most important ones are: About routing tables -

BIRD has one or more routing tables, which may or may not be -synchronized with kernel and which may or may not be synchronized with -each other (see the Pipe protocol). Each routing table contains list of +

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 (consists of network address and number of bits forming the network part of the address) - preference of this route (taken from preference of - protocol and possibly altered by filters) - IP address of router who told us about this route + 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 @@ -154,23 +153,23 @@ known routes. Each route consists of: may not be present (typically protocol metrics) -Routing table maintains more than -one entry for a network, but at most one entry for one network and one -protocol. The entry with biggest preference is used for routing. If +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 Protocols are connected to routing tables through filters. Routes -that come from other routers go to the protocol, it then passes them to -filters, if import filter accepts route, it gets to main routing -table. It is then broadcasted to all other protocols (filtered through -their export filters), which typically send it to other routers. - -Filters can alter routes passed between routing tables and -protocols. +

Each protocol is connected to a routing table through two filters +which can accept, reject and modify the routes. An Configuration @@ -235,7 +234,7 @@ protocol rip { filter Define a filter. You can learn more about filters in the following chapter. - function Define a function. You can learn more + function Define a function. You can learn more about functions in the following chapter. protocol rip|ospf|bgp|... protocol options } Define a protocol @@ -303,7 +302,7 @@ to zero to disable it. An empty is equivalent to is dd-mm-yyyy HH:MM:SS. - interface " Specifies which + interface " Specifies which interfaces is this protocol active on and allows you to set options on a per-interface basis. Mask is specified as in shell-like patterns, thus interface "*" { mode broadcast; }; will start the protocol on all interfaces with mode @@ -351,7 +350,7 @@ BIRD and show symbols Show the list of symbols defined in the configuration (names of protocols, routing tables etc.). - show route [ + show route [[for] Show contents of a routing table (by default of the main one), that is routes, their metrics and (in case the defined( attribute ) operator. Next hop packets routed using this route should be forwarded to. - what protocol has told me about this route. Possible values: - Route type ( Type of destination the packets should be sent to ( protocol bgp { - local as 65000; # Use a private AS number - neighbor 62.168.0.130 as 5588; # Our neighbor... - multihop 20 via 62.168.0.13; # ... which is connected indirectly - export filter { # We use non-trivial export rules - if source = RTS_STATIC then { # Export only static routes + local as 65000; # Use a private AS number + neighbor 62.168.0.130 as 5588; # Our neighbor ... + multihop 20 via 62.168.0.13; # ... which is connected indirectly + export filter { # We use non-trivial export rules + if source = RTS_STATIC then { # Export only static routes # Assign our community bgp_community.add((65000,5678)); # Artificially increase path length @@ -836,7 +835,7 @@ protocol bgp { reject; }; import all; - source address 62.168.0.1; # Use a non-standard source address + source address 62.168.0.1; # Use a non-standard source address } @@ -1413,24 +1412,50 @@ definition of the protocol contains a list of static routes:

protocol static { - table testable; # Connect to a 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 + table testable; # Connect to a 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 } -Problems +Conclusions -

BIRD is relatively young system, and probably contains some -bugs. You can report bugs at bird-users mailing list (), but before you do, -please make sure you have read available documentation, make sure are running latest version (available at ). (Of course, patch -which fixes the bug along with bug report is always welcome). If you -want to use BIRD, join mailing list by sending -. Main home page of bird is . When -trying to understand, what is going on, Internet standards are -relevant reading; you can get them from (or nicely sorted version from ). +Future work + +

Although BIRD supports all the commonly used routing protocols, +there are still some features which would surely deserve to be +implemented in future versions of BIRD: + + +OSPF for IPv6 networks +OSPF NSSA areas and opaque LSA's +Route aggregation and flap dampening +Generation of IPv6 router advertisements +Multipath routes +Multicast routing protocols +Ports to other systems + + +Getting more help + +

If you use BIRD, you're welcome to join the bird-users mailing list +() +where you can share your experiences with the other users and consult +your problems with the authors. To subscribe to the list, just send a +). +The home page of BIRD can be found at . + +

BIRD is a relatively young system and it probably contains some +bugs. You can report any problems to the bird-users list and the authors +will be glad to solve them, but before you do so, +please make sure you have read the available documentation and that you are running the latest version (available at ). (Of course, a patch +which fixes the bug is always welcome as an attachment.) + +

If you want to understand what is going inside, Internet standards are +a good and interesting reading. You can get them from (or a nicely sorted version from ).