From f92a55ff0ef8e1186ad52369ace299bc91fdb791 Mon Sep 17 00:00:00 2001 From: Juliusz Chroboczek Date: Tue, 7 Feb 2012 16:33:17 +0100 Subject: doc: Document babeld. --- doc/babeld.texi | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 doc/babeld.texi (limited to 'doc/babeld.texi') diff --git a/doc/babeld.texi b/doc/babeld.texi new file mode 100644 index 00000000..aa19c9aa --- /dev/null +++ b/doc/babeld.texi @@ -0,0 +1,116 @@ +@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, as well as the +``Babel-Z'' extensions that optimise routes for radio frequency +diversity. + +@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 +inovked. 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 {Babel Command} {network @var{ifname}} {} +@deffnx {Babel Command} {no network @var{ifname}} {} +Enable or disable Babel on the given interface. +@end deffn + +@deffn {Babel Command} {protocol group @var{group}} {} +@deffnx {Babel Command} {protocol port @var{port}} {} +Specify the multicast group and UDP port used for Babel traffic. The +default is to use group @code{ff02::1:6} and port 6696, as allocated +by IANA. (Note that RFC6126 specifies a port number that has been +obsoleted after publication.) +@end deffn + +@deffn {Interface Command} {wireless} {} +@deffnx {Interface Command} {no wireless} {} +Specifies whether this interface is wireless, which disables a number +of optimisations that are only correct on wired interfaces. +Specifying @code{no wireless} is always correct, but may cause extra +routing overhead. The default is autodetected if possible, +@code{wireless} otherwise. +@end deffn + +@deffn {Interface Command} {babel split-horizon} +@deffnx {Interface Command} {no babel split-horizon} +Specifies whether to perform split-horizon on the interface. Default +is @code{babel split-horizon} on wired interfaces, and @code{no babel +split-horizon} on wireless interfaces. Please note that performing split +horizon on wireless interfaces is not correct in general, and may lead +to communication failures. +@end deffn + +@deffn {Interface Command} {passive-interface} +@deffnx {Interface Command} {passive-interface} +Specifies whether this interface is passive. Note that this is +a little weaker than RIP's notion of passive interface, since Babel +always sends Hello packets, even on passive interfaces. +@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 database} {} +@deffnx {Command} {show babel interface} {} +@deffnx {Command} {show babel neighbour} {} +@deffnx {Command} {show babel running-config} {} +These commands dump various parts of @command{babeld}'s internal +state. They are mostly useful for troubleshooting. +@end deffn + +@node Babel debugging commands, , Show Babel information, Babel +@section Babel debugging commands + +@deffn {Babel Command} {debug @var{kind}} {} +@deffnx {Babel Command} {no debug @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}. +@end deffn + -- cgit v1.2.1 From 73c74d4ee8bd0bc3fae899679e852df9c61f0ed3 Mon Sep 17 00:00:00 2001 From: Matthieu Boutier Date: Wed, 8 Feb 2012 00:32:59 +0100 Subject: doc: fix typo in babeld. --- doc/babeld.texi | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'doc/babeld.texi') diff --git a/doc/babeld.texi b/doc/babeld.texi index aa19c9aa..b7f3d07f 100644 --- a/doc/babeld.texi +++ b/doc/babeld.texi @@ -14,9 +14,7 @@ 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, as well as the -``Babel-Z'' extensions that optimise routes for radio frequency -diversity. +Quagga implements Babel as described in RFC6126. @menu * Configuring babeld:: @@ -33,7 +31,7 @@ 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 -inovked. Also, if @command{zebra} is restarted then @command{babeld} +invoked. Also, if @command{zebra} is restarted then @command{babeld} must be too. Configuration of @command{babeld} is done in its configuration file @@ -79,7 +77,7 @@ to communication failures. @end deffn @deffn {Interface Command} {passive-interface} -@deffnx {Interface Command} {passive-interface} +@deffnx {Interface Command} {no passive-interface} Specifies whether this interface is passive. Note that this is a little weaker than RIP's notion of passive interface, since Babel always sends Hello packets, even on passive interfaces. @@ -111,6 +109,7 @@ state. They are mostly useful for troubleshooting. @deffnx {Babel Command} {no debug @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}. +@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 -- cgit v1.2.1 From 3c442e8802c260a0ce9787b5f432a7a2a093be25 Mon Sep 17 00:00:00 2001 From: Matthieu Boutier Date: Wed, 8 Feb 2012 23:30:46 +0100 Subject: babeld: fix wire{d,less} commands name. --- doc/babeld.texi | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'doc/babeld.texi') diff --git a/doc/babeld.texi b/doc/babeld.texi index b7f3d07f..69cec52d 100644 --- a/doc/babeld.texi +++ b/doc/babeld.texi @@ -58,11 +58,11 @@ by IANA. (Note that RFC6126 specifies a port number that has been obsoleted after publication.) @end deffn -@deffn {Interface Command} {wireless} {} -@deffnx {Interface Command} {no wireless} {} +@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{no wireless} is always correct, but may cause extra +Specifying @code{wireless} is always correct, but may cause extra routing overhead. The default is autodetected if possible, @code{wireless} otherwise. @end deffn -- cgit v1.2.1 From 68c65a5d3a6a8cb8133b5e9311fc5dc21de88e9c Mon Sep 17 00:00:00 2001 From: Juliusz Chroboczek Date: Sat, 11 Feb 2012 14:28:17 +0100 Subject: doc: update babeld documentation. --- doc/babeld.texi | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) (limited to 'doc/babeld.texi') diff --git a/doc/babeld.texi b/doc/babeld.texi index 69cec52d..98fc28d0 100644 --- a/doc/babeld.texi +++ b/doc/babeld.texi @@ -50,14 +50,6 @@ Enable or disable Babel routing. Enable or disable Babel on the given interface. @end deffn -@deffn {Babel Command} {protocol group @var{group}} {} -@deffnx {Babel Command} {protocol port @var{port}} {} -Specify the multicast group and UDP port used for Babel traffic. The -default is to use group @code{ff02::1:6} and port 6696, as allocated -by IANA. (Note that RFC6126 specifies a port number that has been -obsoleted after publication.) -@end deffn - @deffn {Interface Command} {babel wired} {} @deffnx {Interface Command} {babel wireless} {} Specifies whether this interface is wireless, which disables a number @@ -76,11 +68,31 @@ horizon on wireless interfaces is not correct in general, and may lead to communication failures. @end deffn -@deffn {Interface Command} {passive-interface} -@deffnx {Interface Command} {no passive-interface} +@deffn {Interface Command} {babel passive-interface} +@deffnx {Interface Command} {no babel passive-interface} Specifies whether this interface is passive. Note that this is a little weaker than RIP's notion of passive interface, since Babel -always sends Hello packets, even on passive interfaces. +always sends Hello packets and announces redistributed routes, even on +passive interfaces. +@end deffn + +@deffn {Interface Command} {babel hello-interval <20-655340>} +Specifies the time in milliseconds between two scheduled hellos. +Babel notices a link failure within two hello intervals on wired +links; on wireless links, the link quality value is reestimated at +every hello interval. +@end deffn + +@deffn {Interface Command} {babel hello-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. +@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. This is a global, not per-interface +value. @end deffn @node Babel redistribution, Show Babel information, Babel configuration, Babel -- cgit v1.2.1 From 8a46e12f5f0b02d58b1d7bc6c0d140aeec6c80c2 Mon Sep 17 00:00:00 2001 From: Matthieu Boutier Date: Sat, 11 Feb 2012 15:09:33 +0100 Subject: doc: fix typo. --- doc/babeld.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'doc/babeld.texi') diff --git a/doc/babeld.texi b/doc/babeld.texi index 98fc28d0..b6eeced8 100644 --- a/doc/babeld.texi +++ b/doc/babeld.texi @@ -83,7 +83,7 @@ links; on wireless links, the link quality value is reestimated at every hello interval. @end deffn -@deffn {Interface Command} {babel hello-interval <20-655340>} +@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. -- cgit v1.2.1 From a14ef5eeccc8c76c41830475bbe3c31c9e14faa5 Mon Sep 17 00:00:00 2001 From: Denis Ovsienko Date: Sat, 11 Feb 2012 21:06:16 +0400 Subject: babeld: justify "running-config" meaning in CLI The primary focus of this commit is to make "show running-config" command display more current configuration, including some of the bits previously seen in the output of "show babel running-config". Besides that, the following commands were renamed for consistency with the syntax of other components: "debug *" to "debug babel *" (and moved to top level) "show babel running-config" to "show babel parameters" * babel_interface.c * show_babel_running_config(): rename to show_babel_parameters(), update syntax pattern, don't call show_babeld_configuration() * babel_if_init(): update respectively * babel_enable_if_config_write(): new VTY helper for static babel_enable_if * babel_interface.h: add extern declaration * babel_main.c: unset all debug options by default * show_babel_main_configuration(): remove debug options decoder * babel_zebra.c * babel_debug(): rename to debug_babel(), update syntax pattern * no_babel_debug(): rename to no_debug_babel(), update syntax pattern * babelz_zebra_init(): update respectively * debug_babel_config_write() new VTY helper for static debug_type * babel_zebra.h: add extern declaration * babeld.c * babel_config_write(): add the code to output "debug babel *", "router babel", "redistribute *" and "network *" statements * show_babeld_configuration(): dismiss * babeld.h: remove extern declaration * babeld.texi: update for renamed commands * babeld.conf.sample: idem, add debug statements block --- doc/babeld.texi | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'doc/babeld.texi') diff --git a/doc/babeld.texi b/doc/babeld.texi index b6eeced8..8f671974 100644 --- a/doc/babeld.texi +++ b/doc/babeld.texi @@ -109,7 +109,7 @@ Specify which kind of routes should be redistributed into Babel. @deffn {Command} {show babel database} {} @deffnx {Command} {show babel interface} {} @deffnx {Command} {show babel neighbour} {} -@deffnx {Command} {show babel running-config} {} +@deffnx {Command} {show babel parameters} {} These commands dump various parts of @command{babeld}'s internal state. They are mostly useful for troubleshooting. @end deffn @@ -117,8 +117,8 @@ state. They are mostly useful for troubleshooting. @node Babel debugging commands, , Show Babel information, Babel @section Babel debugging commands -@deffn {Babel Command} {debug @var{kind}} {} -@deffnx {Babel Command} {no debug @var{kind}} {} +@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 -- cgit v1.2.1 From 4d176dc07ccdcdefcd0e40043233a8c4f136f5c1 Mon Sep 17 00:00:00 2001 From: Juliusz Chroboczek Date: Tue, 14 Feb 2012 08:52:19 +0100 Subject: babeld: fix documentation. --- doc/babeld.texi | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) (limited to 'doc/babeld.texi') diff --git a/doc/babeld.texi b/doc/babeld.texi index 8f671974..65587a71 100644 --- a/doc/babeld.texi +++ b/doc/babeld.texi @@ -54,18 +54,16 @@ Enable or disable Babel on the given interface. @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} is always correct, but may cause extra -routing overhead. The default is autodetected if possible, -@code{wireless} otherwise. +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. Default -is @code{babel split-horizon} on wired interfaces, and @code{no babel -split-horizon} on wireless interfaces. Please note that performing split -horizon on wireless interfaces is not correct in general, and may lead -to communication failures. +Specifies whether to perform split-horizon on the interface. +Specifying @code{no babel split-horizon} (the default) is always +correct, while @code{babel split-horizon} is an optimisation that +should only be used on symmetric and transitive (wired) networks. @end deffn @deffn {Interface Command} {babel passive-interface} @@ -77,22 +75,23 @@ passive interfaces. @end deffn @deffn {Interface Command} {babel hello-interval <20-655340>} -Specifies the time in milliseconds between two scheduled hellos. -Babel notices a link failure within two hello intervals on wired -links; on wireless links, the link quality value is reestimated at -every hello interval. +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. +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 {Babel Command} {babel resend-delay <20-655340>} Specifies the time in milliseconds after which an ``important'' -request or update will be resent. This is a global, not per-interface -value. +request or update will be resent. The default is 2000@dmn{ms}. You +probably don't want to tweak this value. @end deffn @node Babel redistribution, Show Babel information, Babel configuration, Babel -- cgit v1.2.1 From 6881f2698279f3c47a55e8969860eeac59e8c3d7 Mon Sep 17 00:00:00 2001 From: Juliusz Chroboczek Date: Tue, 14 Feb 2012 15:43:34 +0100 Subject: babeld: remove "parasitic" mode. This is the functionality described in Appendix C of RFC 6126. Its main purpose is to avoid keeping a full source table, which makes it possible to implement a subset of Babel in just a few hundred lines of code. However, in Quagga the code for maintaining the source table is already there, and a parasitic implementation can be simulated using filtering -- so it makes little sense to keep the functionality. --- doc/babeld.texi | 8 -------- 1 file changed, 8 deletions(-) (limited to 'doc/babeld.texi') diff --git a/doc/babeld.texi b/doc/babeld.texi index 65587a71..1f24edd0 100644 --- a/doc/babeld.texi +++ b/doc/babeld.texi @@ -66,14 +66,6 @@ correct, while @code{babel split-horizon} is an optimisation that should only be used on symmetric and transitive (wired) networks. @end deffn -@deffn {Interface Command} {babel passive-interface} -@deffnx {Interface Command} {no babel passive-interface} -Specifies whether this interface is passive. Note that this is -a little weaker than RIP's notion of passive interface, since Babel -always sends Hello packets and announces redistributed routes, even on -passive interfaces. -@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; -- cgit v1.2.1