Annotation of embedaddon/bird/doc/bird-2.html, revision 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>