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.

Configuring babeld
==================

The babeld daemon can be invoked with any of the common options (see Common Invocation Options).

The zebra daemon must be running before babeld is invoked. Also, if zebra is restarted then babeld must be too.

Configuration of babeld is done in its configuration file babeld.conf.

Babel configuration
===================

 -- Command: router babel
 -- Command: no router babel
     Enable or disable Babel routing.

 -- Babel Command: network IFNAME
 -- Babel Command: no network IFNAME
     Enable or disable Babel on the given interface.

 -- Interface Command: babel wired
 -- Interface Command: babel wireless
     Specifies whether this interface is wireless, which disables a number of optimisations that are only correct on wired interfaces. Specifying wireless (the default) is always correct, but may cause slower convergence and extra routing traffic.

 -- Interface Command: babel split-horizon
 -- Interface Command: no babel split-horizon
     Specifies whether to perform split-horizon on the interface. Specifying no babel split-horizon (the default) is always correct, while babel split-horizon is an optimisation that should only be used on symmetric and transitive (wired) networks.

 -- 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 4000ms.

 -- 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 20000ms.

 -- 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 2000ms.  You probably don't want to tweak this value.

Babel redistribution
====================

 -- Babel command: redistribute KIND
 -- Babel command: no redistribute KIND
     Specify which kind of routes should be redistributed into Babel.

Show Babel information
======================

 -- Command: show babel database
 -- Command: show babel interface
 -- Command: show babel neighbour
 -- Command: show babel parameters
     These commands dump various parts of babeld's internal state.  They are mostly useful for troubleshooting.

Babel debugging commands
========================

 -- Babel Command: debug babel KIND
 -- Babel Command: no debug babel KIND
     Enable or disable debugging messages of a given kind.  KIND can be one of common, kernel, filter, timeout, interface, route or all.  Note that if you have compiled with the NO_DEBUG flag, then these commands aren't available.