Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

198 lines (192 sloc) 6.655 kB
babel \- ad-hoc network routing daemon
.B babel
.IR option ...
.B \-\-
.I id
.IR interface ...
Babel is a loop-avoiding distance-vector routing protocol roughly
based on DSDV and AODV, but with provisions for link cost estimation
and redistribution of routes from other routing protocols.
While it is optimised for wireless mesh networks, Babel will also work
efficiently on wired networks. It will generate between roughly the
same and double the amount of routing traffic that RIPng would
generate, while never counting to infinity.
.BI \-m " multicast-address"
Specify the link-local multicast address to be used by the protocol.
.BI \-p " port"
Specify the UDP port number to be used by the protocol.
.BI \-S " state-file"
Set the name of the file used for preserving long-term information
between invocations of the
.B babel
daemon. If this file is deleted, the daemon will run in passive mode
for 3 minutes when it is next started (see
.B -P
below), and other hosts might initially ignore it. The default is
.BR /var/lib/babel-state .
.BI \-h " hello-interval"
Specify the interval in seconds at which scheduled hello packets are
sent on wireless interfaces. The default is 6.
.BI \-H " wired-hello-interval"
Specify the interval in seconds at which scheduled hello packets are
sent on wired interfaces. The default is 30.
.BI \-i " idle-hello-interval"
Enable detection of idle networks (networks on which we haven't
accepted a hello packet in 5 minutes) and specify the interval in
seconds at which scheduled hello packets are sent on idle interfaces.
This functonality is experimental, don't use it unless you know what
you are doing.
.BI \-u " update-interval"
Specify the interval in seconds at which scheduled routing table dumps
are made on all interfaces. The default is either the wired hello
interval, or 70, whichever is less. Babel uses triggered updates in
addition to scheduled updates, so this value may be set to a fairly
large value.
.BI \-k " kernel-metric"
Specify a value that will be added to routes' metrics before
installing them in the kernel; this is useful when a single node
participates in multiple routing protocols. The default is 0.
.B \-s
Do not perform split-horizon processing on wired interfaces.
Split-horizon is never performed on wireless interfaces.
.B \-b
Use a single broadcast
.I I Heard You
message for reverse reachability information on wired interfaces
rather than messages specific to each peer. This will slightly reduce
traffic on interfaces with many neighbours, but will disable detection
of asymmetric links, and is therefore not recommended. Messages
specific to each peer are always sent on wireless interfaces.
.BI \-c " cost"
.I cost
to the metrics of advertised routes. This is useful for example when
we are low on battery and hardly eager to forward packets.
.B \-P
Run in parasitic (passive) mode. The daemon will only announce
redistributed routes.
.BI \-d " level"
Debug level. A value of 1 requests a routing table dump at every
iteration through the daemon's main loop. A value of 2 additionally
requests tracing every message sent or received. The default is 0.
.BI \-x " network cost"
Redistribute a route for the given network or host with the given
.I Network
should be either the string
.BR default ,
or a network specification in CIDR notation
.IB prefix / length.
.I length
is omitted, it defaults to 128 (a host route).
.I Cost
should either be a 16-bit unsigned integer, or the string
.B infinity
which specifies a blackhole route. Babel itself uses a cost of 256
for a lossless wireless link, and a cost of 128 for a functioning
wired link.
.BI \-X " network cost"
Advertise a route for the given network or host with the given cost,
even if it is not currently installed. This is normally used for
advertising the local addresses of this machine. Use of this option
for any other purpose is discouraged, as it can cause persistent
routing loops.
.I id
The router-id of this daemon. This should normally be an IPv6 address
of this machine, but can be any unique 128-bit string.
.IR interface ...
The list of interfaces on which the protocol should operate.
.B $IPv6
be one of your node's IPv6 addresses, and suppose that
.B eth1
is a wireless interface. You can participate in a Babel mesh network
by simply running
# babel -X $IPv6 0 $IPv6 eth1
In order to gateway between multiple interfaces, just list them all on
the command line:
# babel $IPv6 eth1 eth0 sit1
If you wish to be reachable by all of your IPv6 addresses, just inject
them into the routing domain as zero-cost external routes:
# babel -X $otherIPv6 0 $IPv6 eth1
On an access point, you'll probably want to redistribute the default route:
# babel -x ::/0 256 $IPv6 eth1
By default, the daemon optimises traffic on wired interfaces by
sending fewer scheduled hello messages and performing split-horizon
processing. These optimisations can be disabled by using the
.B -H
.B -s
options respectively.
By default, detection of asymmetric links is performed on wired
interfaces just like on wireless ones. By specifying the
.B -b
option, reverse reachability information will not be sent on wired
links, which will disable detection of asymmetric links for all wired
peers, at the benefit of a very slight decrease in traffic. This is
not recommended.
No link cost estimation is ever performed on wired interfaces: a wired
adjacency is assumed to be up if at least two of the last three hello
messages have been received, and down otherwise.
.B /var/lib/babel-state
The default location of the file storing long-term state.
Dump Babel's routing tables to standard output.
Babel is a completely insecure protocol: any attacker able to inject
IP packets with a link-local source address can disrupt the protocol's
operation. This is no different from unsecured neighbour discovery
(ARP in IPv4).
Since Babel uses link-local addresses only, there is no need to update
firewalls to allow forwarding of Babel protocol packets. If filtering
is done on a host, UDP datagrams to the protocol port should be
allowed. As Babel uses unicast packets in some cases, it is not
enough to just allow packets destined to Babel's multicast address.
Plenty. This is experimental software, run at your own risk.
.BR routed (8),
.BR route6d (8),
.BR zebra (8),
.BR ahcpd (8).
Juliusz Chroboczek.
Jump to Line
Something went wrong with that request. Please try again.