From f1d1a0b0b7e3a474c546ec128e9f6a6e3ef546b2 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Sat, 13 May 2017 22:40:00 -0400 Subject: [PATCH] doc: Missed babel documentation Signed-off-by: Donald Sharp --- doc/babeld.texi | 212 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 212 insertions(+) create mode 100644 doc/babeld.texi diff --git a/doc/babeld.texi b/doc/babeld.texi new file mode 100644 index 0000000000..6b4cca1e1f --- /dev/null +++ b/doc/babeld.texi @@ -0,0 +1,212 @@ +@c -*-texinfo-*- +@c This is part of the Quagga Manual. +@c @value{COPYRIGHT_STR} +@c See file quagga.texi for copying conditions. +@node Babel +@chapter Babel + +Babel is an interior gateway protocol that is suitable both for wired +networks and for wireless mesh networks. Babel has been described as +``RIP on speed'' --- it is based on the same principles as RIP, but +includes a number of refinements that make it react much faster to +topology changes without ever counting to infinity, and allow it to +perform reliable link quality estimation on wireless links. Babel is +a double-stack routing protocol, meaning that a single Babel instance +is able to perform routing for both IPv4 and IPv6. + +Quagga implements Babel as described in RFC6126. + +@menu +* Configuring babeld:: +* Babel configuration:: +* Babel redistribution:: +* Show Babel information:: +* Babel debugging commands:: +@end menu + +@node Configuring babeld, Babel configuration, Babel, Babel +@section Configuring babeld + +The @command{babeld} daemon can be invoked with any of the common +options (@pxref{Common Invocation Options}). + +The @command{zebra} daemon must be running before @command{babeld} is +invoked. Also, if @command{zebra} is restarted then @command{babeld} +must be too. + +Configuration of @command{babeld} is done in its configuration file +@file{babeld.conf}. + +@node Babel configuration, Babel redistribution, Configuring babeld, Babel +@section Babel configuration + +@deffn Command {router babel} {} +@deffnx Command {no router babel} {} +Enable or disable Babel routing. +@end deffn + +@deffn Command {babel resend-delay <20-655340>} {} +Specifies the time after which important messages are resent when +avoiding a black-hole. The default is 2000@dmn{ms}. +@end deffn + +@deffn Command {babel diversity} {} +@deffnx Command {no babel diversity} {} +Enable or disable routing using radio frequency diversity. This is +highly recommended in networks with many wireless nodes. + +If you enable this, you will probably want to set @code{babel +diversity-factor} and @code{babel channel} below. +@end deffn + +@deffn Command {babel diversity-factor <1-256>} {} +Sets the multiplicative factor used for diversity routing, in units of +1/256; lower values cause diversity to play a more important role in +route selection. The default it 256, which means that diversity plays +no role in route selection; you will probably want to set that to 128 +or less on nodes with multiple independent radios. +@end deffn + +@deffn {Babel Command} {network @var{ifname}} {} +@deffnx {Babel Command} {no network @var{ifname}} {} +Enable or disable Babel on the given interface. +@end deffn + +@deffn {Interface Command} {babel wired} {} +@deffnx {Interface Command} {babel wireless} {} +Specifies whether this interface is wireless, which disables a number +of optimisations that are only correct on wired interfaces. +Specifying @code{wireless} (the default) is always correct, but may +cause slower convergence and extra routing traffic. +@end deffn + +@deffn {Interface Command} {babel split-horizon} +@deffnx {Interface Command} {no babel split-horizon} +Specifies whether to perform split-horizon on the interface. +Specifying @code{no babel split-horizon} is always correct, while +@code{babel split-horizon} is an optimisation that should only be used +on symmetric and transitive (wired) networks. The default is +@code{babel split-horizon} on wired interfaces, and @code{no babel +split-horizon} on wireless interfaces. This flag is reset when the +wired/wireless status of an interface is changed. +@end deffn + +@deffn {Interface Command} {babel hello-interval <20-655340>} +Specifies the time in milliseconds between two scheduled hellos. On +wired links, Babel notices a link failure within two hello intervals; +on wireless links, the link quality value is reestimated at every +hello interval. The default is 4000@dmn{ms}. +@end deffn + +@deffn {Interface Command} {babel update-interval <20-655340>} +Specifies the time in milliseconds between two scheduled updates. +Since Babel makes extensive use of triggered updates, this can be set +to fairly high values on links with little packet loss. The default +is 20000@dmn{ms}. +@end deffn + +@deffn {Interface Command} {babel channel <1-254>} +@deffnx {Interface Command} {babel channel interfering} +@deffnx {Interface Command} {babel channel noninterfering} +Set the channel number that diversity routing uses for this interface +(see @code{babel diversity} above). Noninterfering interfaces are +assumed to only interfere with themselves, interfering interfaces are +assumed to interfere with all other channels except noninterfering +channels, and interfaces with a channel number interfere with +interfering interfaces and interfaces with the same channel number. +The default is @samp{babel channel interfering} for wireless +interfaces, and @samp{babel channel noninterfering} for wired +interfaces. This is reset when the wired/wireless status of an +interface is changed. +@end deffn + +@deffn {Interface Command} {babel rxcost <1-65534>} +Specifies the base receive cost for this interface. For wireless +interfaces, it specifies the multiplier used for computing the ETX +reception cost (default 256); for wired interfaces, it specifies the +cost that will be advertised to neighbours. This value is reset when +the wired/wireless attribute of the interface is changed. + +Do not use this command unless you know what you are doing; in most +networks, acting directly on the cost using route maps is a better +technique. +@end deffn + +@deffn {Interface Command} {babel rtt-decay <1-256>} +This specifies the decay factor for the exponential moving average of +RTT samples, in units of 1/256. Higher values discard old samples +faster. The default is 42. +@end deffn + +@deffn {Interface Command} {babel rtt-min <1-65535>} +This specifies the minimum RTT, in milliseconds, starting from which we +increase the cost to a neighbour. The additional cost is linear in (rtt +- rtt-min ). The default is 10@dmn{ms}. +@end deffn + +@deffn {Interface Command} {babel rtt-max <1-65535>} +This specifies the maximum RTT, in milliseconds, above which we don't +increase the cost to a neighbour. The default is 120@dmn{ms}. +@end deffn + +@deffn {Interface Command} {babel max-rtt-penalty <0-65535>} +This specifies the maximum cost added to a neighbour because of RTT, +i.e. when the RTT is higher or equal than rtt-max. The default is 0, +which effectively disables the use of a RTT-based cost. +@end deffn + +@deffn {Interface Command} {babel enable-timestamps} +@deffnx {Interface Command} {no babel enable-timestamps} +Enable or disable sending timestamps with each Hello and IHU message in +order to compute RTT values. The default is @code{no babel +enable-timestamps}. +@end deffn + +@deffn {Babel Command} {babel resend-delay <20-655340>} +Specifies the time in milliseconds after which an ``important'' +request or update will be resent. The default is 2000@dmn{ms}. You +probably don't want to tweak this value. +@end deffn + +@deffn {Babel Command} {babel smoothing-half-life <0-65534>} +Specifies the time constant, in seconds, of the smoothing algorithm +used for implementing hysteresis. Larger values reduce route +oscillation at the cost of very slightly increasing convergence time. +The value 0 disables hysteresis, and is suitable for wired networks. +The default is 4@dmn{s}. +@end deffn + +@node Babel redistribution, Show Babel information, Babel configuration, Babel +@section Babel redistribution + +@deffn {Babel command} {redistribute @var{kind}} +@deffnx {Babel command} {no redistribute @var{kind}} +Specify which kind of routes should be redistributed into Babel. +@end deffn + +@node Show Babel information, Babel debugging commands, Babel redistribution, Babel +@section Show Babel information + +@deffn {Command} {show babel route} {} +@deffnx {Command} {show babel route A.B.C.D} +@deffnx {Command} {show babel route X:X::X:X} +@deffnx {Command} {show babel route A.B.C.D/M} +@deffnx {Command} {show babel route X:X::X:X/M} +@deffnx {Command} {show babel interface} {} +@deffnx {Command} {show babel interface @var{ifname}} {} +@deffnx {Command} {show babel neighbor} {} +@deffnx {Command} {show babel parameters} {} +These commands dump various parts of @command{babeld}'s internal state. +@end deffn + +@node Babel debugging commands, , Show Babel information, Babel +@section Babel debugging commands + +@deffn {Babel Command} {debug babel @var{kind}} {} +@deffnx {Babel Command} {no debug babel @var{kind}} {} +Enable or disable debugging messages of a given kind. @var{kind} can +be one of @samp{common}, @samp{kernel}, @samp{filter}, @samp{timeout}, +@samp{interface}, @samp{route} or @samp{all}. Note that if you have +compiled with the NO_DEBUG flag, then these commands aren't available. +@end deffn + -- 2.39.5