Juliusz Chroboczek | f92a55f | 2012-02-07 16:33:17 +0100 | [diff] [blame] | 1 | @c -*-texinfo-*- |
| 2 | @c This is part of the Quagga Manual. |
| 3 | @c @value{COPYRIGHT_STR} |
| 4 | @c See file quagga.texi for copying conditions. |
| 5 | @node Babel |
| 6 | @chapter Babel |
| 7 | |
| 8 | Babel is an interior gateway protocol that is suitable both for wired |
| 9 | networks and for wireless mesh networks. Babel has been described as |
| 10 | ``RIP on speed'' --- it is based on the same principles as RIP, but |
| 11 | includes a number of refinements that make it react much faster to |
| 12 | topology changes without ever counting to infinity, and allow it to |
| 13 | perform reliable link quality estimation on wireless links. Babel is |
| 14 | a double-stack routing protocol, meaning that a single Babel instance |
| 15 | is able to perform routing for both IPv4 and IPv6. |
| 16 | |
Matthieu Boutier | 73c74d4 | 2012-02-08 00:32:59 +0100 | [diff] [blame] | 17 | Quagga implements Babel as described in RFC6126. |
Juliusz Chroboczek | f92a55f | 2012-02-07 16:33:17 +0100 | [diff] [blame] | 18 | |
| 19 | @menu |
| 20 | * Configuring babeld:: |
| 21 | * Babel configuration:: |
| 22 | * Babel redistribution:: |
| 23 | * Show Babel information:: |
| 24 | * Babel debugging commands:: |
| 25 | @end menu |
| 26 | |
| 27 | @node Configuring babeld, Babel configuration, Babel, Babel |
| 28 | @section Configuring babeld |
| 29 | |
| 30 | The @command{babeld} daemon can be invoked with any of the common |
| 31 | options (@pxref{Common Invocation Options}). |
| 32 | |
| 33 | The @command{zebra} daemon must be running before @command{babeld} is |
Matthieu Boutier | 73c74d4 | 2012-02-08 00:32:59 +0100 | [diff] [blame] | 34 | invoked. Also, if @command{zebra} is restarted then @command{babeld} |
Juliusz Chroboczek | f92a55f | 2012-02-07 16:33:17 +0100 | [diff] [blame] | 35 | must be too. |
| 36 | |
| 37 | Configuration of @command{babeld} is done in its configuration file |
| 38 | @file{babeld.conf}. |
| 39 | |
| 40 | @node Babel configuration, Babel redistribution, Configuring babeld, Babel |
| 41 | @section Babel configuration |
| 42 | |
| 43 | @deffn Command {router babel} {} |
| 44 | @deffnx Command {no router babel} {} |
| 45 | Enable or disable Babel routing. |
| 46 | @end deffn |
| 47 | |
| 48 | @deffn {Babel Command} {network @var{ifname}} {} |
| 49 | @deffnx {Babel Command} {no network @var{ifname}} {} |
| 50 | Enable or disable Babel on the given interface. |
| 51 | @end deffn |
| 52 | |
Matthieu Boutier | 3c442e8 | 2012-02-08 23:30:46 +0100 | [diff] [blame] | 53 | @deffn {Interface Command} {babel wired} {} |
| 54 | @deffnx {Interface Command} {babel wireless} {} |
Juliusz Chroboczek | f92a55f | 2012-02-07 16:33:17 +0100 | [diff] [blame] | 55 | Specifies whether this interface is wireless, which disables a number |
| 56 | of optimisations that are only correct on wired interfaces. |
Juliusz Chroboczek | 4d176dc | 2012-02-14 08:52:19 +0100 | [diff] [blame] | 57 | Specifying @code{wireless} (the default) is always correct, but may |
| 58 | cause slower convergence and extra routing traffic. |
Juliusz Chroboczek | f92a55f | 2012-02-07 16:33:17 +0100 | [diff] [blame] | 59 | @end deffn |
| 60 | |
| 61 | @deffn {Interface Command} {babel split-horizon} |
| 62 | @deffnx {Interface Command} {no babel split-horizon} |
Juliusz Chroboczek | 4d176dc | 2012-02-14 08:52:19 +0100 | [diff] [blame] | 63 | Specifies whether to perform split-horizon on the interface. |
| 64 | Specifying @code{no babel split-horizon} (the default) is always |
| 65 | correct, while @code{babel split-horizon} is an optimisation that |
| 66 | should only be used on symmetric and transitive (wired) networks. |
Juliusz Chroboczek | f92a55f | 2012-02-07 16:33:17 +0100 | [diff] [blame] | 67 | @end deffn |
| 68 | |
Juliusz Chroboczek | 68c65a5 | 2012-02-11 14:28:17 +0100 | [diff] [blame] | 69 | @deffn {Interface Command} {babel hello-interval <20-655340>} |
Juliusz Chroboczek | 4d176dc | 2012-02-14 08:52:19 +0100 | [diff] [blame] | 70 | Specifies the time in milliseconds between two scheduled hellos. On |
| 71 | wired links, Babel notices a link failure within two hello intervals; |
| 72 | on wireless links, the link quality value is reestimated at every |
| 73 | hello interval. The default is 4000@dmn{ms}. |
Juliusz Chroboczek | 68c65a5 | 2012-02-11 14:28:17 +0100 | [diff] [blame] | 74 | @end deffn |
| 75 | |
Matthieu Boutier | 8a46e12 | 2012-02-11 15:09:33 +0100 | [diff] [blame] | 76 | @deffn {Interface Command} {babel update-interval <20-655340>} |
Juliusz Chroboczek | 68c65a5 | 2012-02-11 14:28:17 +0100 | [diff] [blame] | 77 | Specifies the time in milliseconds between two scheduled updates. |
Juliusz Chroboczek | 4d176dc | 2012-02-14 08:52:19 +0100 | [diff] [blame] | 78 | Since Babel makes extensive use of triggered updates, this can be set |
| 79 | to fairly high values on links with little packet loss. The default |
| 80 | is 20000@dmn{ms}. |
Juliusz Chroboczek | 68c65a5 | 2012-02-11 14:28:17 +0100 | [diff] [blame] | 81 | @end deffn |
| 82 | |
| 83 | @deffn {Babel Command} {babel resend-delay <20-655340>} |
| 84 | Specifies the time in milliseconds after which an ``important'' |
Juliusz Chroboczek | 4d176dc | 2012-02-14 08:52:19 +0100 | [diff] [blame] | 85 | request or update will be resent. The default is 2000@dmn{ms}. You |
| 86 | probably don't want to tweak this value. |
Juliusz Chroboczek | f92a55f | 2012-02-07 16:33:17 +0100 | [diff] [blame] | 87 | @end deffn |
| 88 | |
| 89 | @node Babel redistribution, Show Babel information, Babel configuration, Babel |
| 90 | @section Babel redistribution |
| 91 | |
| 92 | @deffn {Babel command} {redistribute @var{kind}} |
| 93 | @deffnx {Babel command} {no redistribute @var{kind}} |
| 94 | Specify which kind of routes should be redistributed into Babel. |
| 95 | @end deffn |
| 96 | |
| 97 | @node Show Babel information, Babel debugging commands, Babel redistribution, Babel |
| 98 | @section Show Babel information |
| 99 | |
| 100 | @deffn {Command} {show babel database} {} |
| 101 | @deffnx {Command} {show babel interface} {} |
| 102 | @deffnx {Command} {show babel neighbour} {} |
Denis Ovsienko | a14ef5e | 2012-02-11 21:06:16 +0400 | [diff] [blame] | 103 | @deffnx {Command} {show babel parameters} {} |
Juliusz Chroboczek | f92a55f | 2012-02-07 16:33:17 +0100 | [diff] [blame] | 104 | These commands dump various parts of @command{babeld}'s internal |
| 105 | state. They are mostly useful for troubleshooting. |
| 106 | @end deffn |
| 107 | |
| 108 | @node Babel debugging commands, , Show Babel information, Babel |
| 109 | @section Babel debugging commands |
| 110 | |
Denis Ovsienko | a14ef5e | 2012-02-11 21:06:16 +0400 | [diff] [blame] | 111 | @deffn {Babel Command} {debug babel @var{kind}} {} |
| 112 | @deffnx {Babel Command} {no debug babel @var{kind}} {} |
Juliusz Chroboczek | f92a55f | 2012-02-07 16:33:17 +0100 | [diff] [blame] | 113 | Enable or disable debugging messages of a given kind. @var{kind} can |
| 114 | be one of @samp{common}, @samp{kernel}, @samp{filter}, @samp{timeout}, |
Matthieu Boutier | 73c74d4 | 2012-02-08 00:32:59 +0100 | [diff] [blame] | 115 | @samp{interface}, @samp{route} or @samp{all}. Note that if you have |
| 116 | compiled with the NO_DEBUG flag, then these commands aren't available. |
Juliusz Chroboczek | f92a55f | 2012-02-07 16:33:17 +0100 | [diff] [blame] | 117 | @end deffn |
| 118 | |