Annotation of embedaddon/bird/doc/bird-2.html, revision 1.1.1.1
1.1 misho 1: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
2: <HTML>
3: <HEAD>
4: <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 1.0.9">
5: <TITLE>BIRD User's Guide: About routing tables</TITLE>
6: <LINK HREF="bird-3.html" REL=next>
7: <LINK HREF="bird-1.html" REL=previous>
8: <LINK HREF="bird.html#toc2" REL=contents>
9: </HEAD>
10: <BODY>
11: <A HREF="bird-3.html">Next</A>
12: <A HREF="bird-1.html">Previous</A>
13: <A HREF="bird.html#toc2">Contents</A>
14: <HR>
15: <H2><A NAME="routing-tables"></A> <A NAME="s2">2.</A> <A HREF="bird.html#toc2">About routing tables</A></H2>
16:
17: <P>BIRD has one or more routing tables which may or may not be synchronized with
18: OS kernel and which may or may not be synchronized with each other (see the Pipe
19: protocol). Each routing table contains a list of known routes. Each route
20: consists of:
21: <P>
22: <UL>
23: <LI>network prefix this route is for (network address and prefix
24: length -- the number of bits forming the network part of the
25: address; also known as a netmask)</LI>
26: <LI>preference of this route</LI>
27: <LI>IP address of router which told us about this route</LI>
28: <LI>IP address of router we should forward the packets to using this
29: route</LI>
30: <LI>other attributes common to all routes</LI>
31: <LI>dynamic attributes defined by protocols which may or may not be
32: present (typically protocol metrics)</LI>
33: </UL>
34: <P>Routing table maintains multiple entries for a network, but at most one entry
35: for one network and one protocol. The entry with the highest preference is used
36: for routing (we will call such an entry the <I>selected route</I>). If there are
37: more entries with the same preference and they are from the same protocol, the
38: protocol decides (typically according to metrics). If they aren't, an internal
39: ordering is used to break the tie. You can get the list of route attributes in
40: the Route attributes section.
41: <P>
42: <P>Each protocol is connected to a routing table through two filters which can
43: accept, reject and modify the routes. An <I>export</I> filter checks routes passed
44: from the routing table to the protocol, an <I>import</I> filter checks routes in
45: the opposite direction. When the routing table gets a route from a protocol, it
46: recalculates the selected route and broadcasts it to all protocols connected to
47: the table. The protocols typically send the update to other routers in the
48: network. Note that although most protocols are interested in receiving just
49: selected routes, some protocols (e.g. the <CODE>Pipe</CODE> protocol) receive and
50: process all entries in routing tables (accepted by filters).
51: <P>
52: <P>
53: <A NAME="dsc-table-sorted"></A> Usually, a routing table just chooses a selected route
54: from a list of entries for one network. But if the <CODE>sorted</CODE> option is
55: activated, these lists of entries are kept completely sorted (according to
56: preference or some protocol-dependent metric). This is needed for some features
57: of some protocols (e.g. <CODE>secondary</CODE> option of BGP protocol, which allows to
58: accept not just a selected route, but the first route (in the sorted list) that
59: is accepted by filters), but it is incompatible with some other features (e.g.
60: <CODE>deterministic med</CODE> option of BGP protocol, which activates a way of choosing
61: selected route that cannot be described using comparison and ordering). Minor
62: advantage is that routes are shown sorted in <CODE>show route</CODE>, minor disadvantage
63: is that it is slightly more computationally expensive.
64: <P>
65: <P>
66: <H2><A NAME="graceful-restart"></A> <A NAME="ss2.1">2.1</A> <A HREF="bird.html#toc2.1">Graceful restart</A>
67: </H2>
68:
69: <P>When BIRD is started after restart or crash, it repopulates routing tables in
70: an uncoordinated manner, like after clean start. This may be impractical in some
71: cases, because if the forwarding plane (i.e. kernel routing tables) remains
72: intact, then its synchronization with BIRD would temporarily disrupt packet
73: forwarding until protocols converge. Graceful restart is a mechanism that could
74: help with this issue. Generally, it works by starting protocols and letting them
75: repopulate routing tables while deferring route propagation until protocols
76: acknowledge their convergence. Note that graceful restart behavior have to be
77: configured for all relevant protocols and requires protocol-specific support
78: (currently implemented for Kernel and BGP protocols), it is activated for
79: particular boot by option <CODE>-R</CODE>.
80: <P>
81: <P>
82: <HR>
83: <A HREF="bird-3.html">Next</A>
84: <A HREF="bird-1.html">Previous</A>
85: <A HREF="bird.html#toc2">Contents</A>
86: </BODY>
87: </HTML>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>