[Cerowrt-devel] Fwd: [Babel-users] [Denis Ovsienko] a preview of Babel, new routing protocol, is available

Dave Taht dave.taht at gmail.com
Mon Jan 23 23:48:23 PST 2012


I am happy to see the babel protocol (what's in cerowrt by default) is now
taken up into quagga.

Quagga has long been available as an option
in cerowrt, and I would like to have the integration with other
EGPs (such as BGP) to be able to seriously in cerowrt, as
well as to be able to more easily do a 'face-off' between
babel and other more well known protocols such as OSPF.

This doesn't mean that the next release of 'cero' will have
quagga based babel in it! Perhaps the one after, however.

Having a routing protocol in cerowrt has been a great use
in testing, in a peculiar way - when an interface fails for any
reason on the testbed, I see it rather quickly reflected in
the routing table... and I've extolled the advantages of
seamless wired to wireless networking and back again
elsewhere.

---------- Forwarded message ----------
From: Denis Ovsienko <infrastation at yandex.ru>
To: quagga-dev at lists.quagga.net, quagga-users at lists.quagga.net
Cc: Matthieu Boutier <boutier at pps.jussieu.fr>, Juliusz Chroboczek
<jch at pps.jussieu.fr>
Date: Sun, 22 Jan 2012 18:03:26 +0400
Subject: a preview of Babel, new routing protocol, is available
Hello, all.

It is the time to update on the new routing protocol daemon, "babeld",
which is available in the development branches of Quagga.

Babel is a routing protocol designed by Juliusz Chroboczek with the
specific purpose of routing wireless networks in mind. The protocol
used to be implemented in a standalone babeld software, and Juliusz's
colleague, Matthieu Boutier, is now making it available as one of the
Quagga components. I have personally verified, that the involved
changes do not interfere with any other Quagga daemon (at least in the
RE-testing-0.99 branch), and that the current implementation allows a
couple of routers to learn each other's IPv6 loopback addresses over a
IPv6 link and install respective routes into kernel FIB. Matthieu and
Juliusz can surely refer to examples of larger-scale deployments of
Babel.

Getting your own Babel testbed is as easy as checking Quagga out of
git and building it. To be specific, the following branches at the
time of this writing are known to work:

git://code.quagga.net/quagga-RE.git (commit f05fecd)
git://github.com/boutier/babeld-for-quagga.git (commit 78b1013)

I had put the following into babeld.conf to make it work:

!
password z
service advanced-vty
!
router babel
 network eth0
 redistribute kernel
 redistribute connected
 redistribute static
!
log file /var/log/quagga/babeld.log
!

The result looks like this (30::1/128 is the loopback interface of the
remote host):

localhost.localdomain# sh ipv6 route
Codes: K - kernel route, C - connected, S - static, R - RIPng,
      O - OSPFv6, I - IS-IS, B - BGP, A - Babel,
      > - selected route, * - FIB route

C>* ::1/128 is directly connected, lo
C>* 20::1/128 is directly connected, dummy0
A>* 30::1/128 [95/0] via fe80::22cf:30ff:fe02:b052, eth0
C * fe80::/64 is directly connected, eth0
C * fe80::/64 is directly connected, wlan0
C>* fe80::/64 is directly connected, dummy0
localhost.localdomain#

In the process of setting it up I realized the need to understand what
in particular the routing processes are exchanging. This is quite hard
without a packet analyzer understanding Babel protocol packets, i.e.
Wireshark 1.6.5 or tcpdump 4.2.1. The former is available in Fedora
16, which I didn't have handy at the time of setup, but the latter
compiled and installed just fine. For example, this is an example of a
regular periodic PDU dissection once the adjacency is established:

17:50:51.326330 IP6 (hlim 1, next-header UDP (17) payload length: 115)
fe80::217:42ff:fe3e:3612.6696 > ff02::1:6.6696: [udp sum ok] babel 2
(103)
       Hello seqno 15804 interval 400
       IHU fe80::22cf:30ff:fe02:b052 txcost 96 interval 1200
       Router Id 62:69:23:ff:fe:69:d9:52
       Update/prefix 30::1/128 metric 96 seqno 2794 interval 1600
       Router Id d6:98:f9:ff:fe:e7:08:96
       Update/prefix 20::1/128 metric 0 seqno 21994 interval 1600

To sum it up, this effort is still a work in progress, but all hidden
bugs are believed to be isolated in the babeld process. In case you
manage to approach such a bug, please file it to the standard Quagga
bugzilla, it will be dispatched appropriately.

Thanks for reading!

--
   Denis Ovsienko


More information about the Cerowrt-devel mailing list