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. |
Matthieu Boutier | 3c442e8 | 2012-02-08 23:30:46 +0100 | [diff] [blame] | 57 | Specifying @code{wireless} is always correct, but may cause extra |
Juliusz Chroboczek | f92a55f | 2012-02-07 16:33:17 +0100 | [diff] [blame] | 58 | routing overhead. The default is autodetected if possible, |
| 59 | @code{wireless} otherwise. |
| 60 | @end deffn |
| 61 | |
| 62 | @deffn {Interface Command} {babel split-horizon} |
| 63 | @deffnx {Interface Command} {no babel split-horizon} |
| 64 | Specifies whether to perform split-horizon on the interface. Default |
| 65 | is @code{babel split-horizon} on wired interfaces, and @code{no babel |
| 66 | split-horizon} on wireless interfaces. Please note that performing split |
| 67 | horizon on wireless interfaces is not correct in general, and may lead |
| 68 | to communication failures. |
| 69 | @end deffn |
| 70 | |
Juliusz Chroboczek | 68c65a5 | 2012-02-11 14:28:17 +0100 | [diff] [blame^] | 71 | @deffn {Interface Command} {babel passive-interface} |
| 72 | @deffnx {Interface Command} {no babel passive-interface} |
Juliusz Chroboczek | f92a55f | 2012-02-07 16:33:17 +0100 | [diff] [blame] | 73 | Specifies whether this interface is passive. Note that this is |
| 74 | a little weaker than RIP's notion of passive interface, since Babel |
Juliusz Chroboczek | 68c65a5 | 2012-02-11 14:28:17 +0100 | [diff] [blame^] | 75 | always sends Hello packets and announces redistributed routes, even on |
| 76 | passive interfaces. |
| 77 | @end deffn |
| 78 | |
| 79 | @deffn {Interface Command} {babel hello-interval <20-655340>} |
| 80 | Specifies the time in milliseconds between two scheduled hellos. |
| 81 | Babel notices a link failure within two hello intervals on wired |
| 82 | links; on wireless links, the link quality value is reestimated at |
| 83 | every hello interval. |
| 84 | @end deffn |
| 85 | |
| 86 | @deffn {Interface Command} {babel hello-interval <20-655340>} |
| 87 | Specifies the time in milliseconds between two scheduled updates. |
| 88 | Since Babel makes extensive use of triggered updates, this can be |
| 89 | set to fairly high values on links with little packet loss. |
| 90 | @end deffn |
| 91 | |
| 92 | @deffn {Babel Command} {babel resend-delay <20-655340>} |
| 93 | Specifies the time in milliseconds after which an ``important'' |
| 94 | request or update will be resent. This is a global, not per-interface |
| 95 | value. |
Juliusz Chroboczek | f92a55f | 2012-02-07 16:33:17 +0100 | [diff] [blame] | 96 | @end deffn |
| 97 | |
| 98 | @node Babel redistribution, Show Babel information, Babel configuration, Babel |
| 99 | @section Babel redistribution |
| 100 | |
| 101 | @deffn {Babel command} {redistribute @var{kind}} |
| 102 | @deffnx {Babel command} {no redistribute @var{kind}} |
| 103 | Specify which kind of routes should be redistributed into Babel. |
| 104 | @end deffn |
| 105 | |
| 106 | @node Show Babel information, Babel debugging commands, Babel redistribution, Babel |
| 107 | @section Show Babel information |
| 108 | |
| 109 | @deffn {Command} {show babel database} {} |
| 110 | @deffnx {Command} {show babel interface} {} |
| 111 | @deffnx {Command} {show babel neighbour} {} |
| 112 | @deffnx {Command} {show babel running-config} {} |
| 113 | These commands dump various parts of @command{babeld}'s internal |
| 114 | state. They are mostly useful for troubleshooting. |
| 115 | @end deffn |
| 116 | |
| 117 | @node Babel debugging commands, , Show Babel information, Babel |
| 118 | @section Babel debugging commands |
| 119 | |
| 120 | @deffn {Babel Command} {debug @var{kind}} {} |
| 121 | @deffnx {Babel Command} {no debug @var{kind}} {} |
| 122 | Enable or disable debugging messages of a given kind. @var{kind} can |
| 123 | be one of @samp{common}, @samp{kernel}, @samp{filter}, @samp{timeout}, |
Matthieu Boutier | 73c74d4 | 2012-02-08 00:32:59 +0100 | [diff] [blame] | 124 | @samp{interface}, @samp{route} or @samp{all}. Note that if you have |
| 125 | compiled with the NO_DEBUG flag, then these commands aren't available. |
Juliusz Chroboczek | f92a55f | 2012-02-07 16:33:17 +0100 | [diff] [blame] | 126 | @end deffn |
| 127 | |