[Babel-users] Babeld for Quagga news

Dave Taht dave.taht at gmail.com
Sun Feb 12 20:31:22 UTC 2012


I note a few bugs below.

On Sat, Feb 11, 2012 at 6:17 PM, Juliusz Chroboczek <jch at pps.jussieu.fr> wrote:
> Hi to all,
>
> We've merged 1.3.1 into Quagga, and the Quagga command-line interface
> has been cleaned up and made more uniform.  Quagga has also learnt to
> save Babel's configuration (show running-config).  For your greater
> kibbitzing pleasure, I've put a copy of the docs on
>
>  http://www.pps.jussieu.fr/~jch/software/babel/quagga.html#Babel

For additional kibitzing pleasures I have put a very preliminary
modification of the openwrt quagga package to pull from the quagga-RE
repository, and tested it somewhat on cerowrt. Aside from the default
conf file it should hopefully work on any openwrt system.
I will endevour to keep it updated as things progress (and am rather
free about commit privs to this github repo, if you want them)

You can get it via a

git clone git://github.com/dtaht/ceropackages.git

and in your openwrt build area, edit feeds.conf to include that repo

./scripts feeds uninstall quagga
./scripts feeds install -p ceropackages quagga
make menuconfig and add the quagga modules

Relative to the openwrt version...

quagga-babeld is supported (of course!)
OLSR and batman support has been removed (the patch set was unworkable)
BGP-PGP has been retained, but untested

There are several other patches that I will submit upstream shortly,
(cross compilation fix, config rename fix), assuming they aren't
borked and there are some problems that I'll get into in a second...

> As far as I'm concerned, there's only one serious bug remaining --

Heh... famous last words.

1) when doing a 'save' from the vtysh interface some key information is lost.

1a) Originally, the below had a 'redistribute kernel' line after every
network.  I further had a redistribute static after the ge00 line.

1b) I had specific interface lines for the two wired interfaces (ge00
and se00) of

interface se00
babel wired
interface ge00
babel wired

Which vanish, and a reload shows these interfaces in 'wireless' mode.

This is what a save generates:

!
! Zebra configuration saved from vty
!   2012/02/11 20:08:55
!
password zebra
log stdout
!
router babel
 network se00
 network ge00
 network sw00
 network sw10
 network gw00
 network gw10
 network gw01
 network gw11
 redistribute kernel
 redistribute static
!
access-list vty permit 127.0.0.0/8
access-list vty deny any
!
line vty
 access-class vty
!

> you
> cannot put both IPv4 and IPv6 access lists on the same interface.  (The
> issue with network prefixes in pure meshes is unavoidable, at least
> until we fix Quagga's core.)

2) It's not clear to me the actual scope of this bug. I get no /64
routes at all from my config (which could very well be wrong or
insufficient) on other (1.3.1) babel nodes, same goes for ipv4 /27
routes.

This claims that they are being exported, but they are not seen
on other babel 1.3.1 nodes.

OpenWrt# show babel database
0.0.0.0/0 metric 224 refmetric 128 id 02:27:13:ff:fe:64:89:67 seqno
14565 age 17 via ge00 neigh fe80::227:13ff:fe64:8967 nexthop
172.30.43.2 (installed)
0.0.0.0/0 metric 224 refmetric 128 id 02:14:d1:ff:fe:20:10:cb seqno
56395 age 11 via se00 neigh fe80::214:d1ff:fe20:10cb nexthop
172.30.42.2 (feasible)
172.30.42.2/32 metric 96 refmetric 0 id 02:14:d1:ff:fe:20:10:cb seqno
56395 age 11 via se00 neigh fe80::214:d1ff:fe20:10cb nexthop
172.30.42.2 (installed)
172.30.43.2/32 metric 96 refmetric 0 id 02:27:13:ff:fe:64:89:67 seqno
14565 age 17 via ge00 neigh fe80::227:13ff:fe64:8967 nexthop
172.30.43.2 (installed)
172.30.49.4/32 metric 96 refmetric 0 id 02:14:d1:ff:fe:20:10:cb seqno
56395 age 11 via se00 neigh fe80::214:d1ff:fe20:10cb nexthop
172.30.42.2 (installed)
192.168.1.109/32 metric 96 refmetric 0 id 02:27:13:ff:fe:64:89:67
seqno 14565 age 17 via ge00 neigh fe80::227:13ff:fe64:8967 nexthop
172.30.43.2 (installed)
192.168.1.111/32 metric 96 refmetric 0 id 02:14:d1:ff:fe:20:10:cb
seqno 56395 age 11 via se00 neigh fe80::214:d1ff:fe20:10cb nexthop
172.30.42.2 (installed)
fd43:e2b3:341c:0:214:d1ff:fe20:10cb/128 metric 96 refmetric 0 id
02:14:d1:ff:fe:20:10:cb seqno 56395 age 11 via se00 neigh
fe80::214:d1ff:fe20:10cb (installed)
fd43:e2b3:341c:1010::2/128 metric 96 refmetric 0 id
02:27:13:ff:fe:64:89:67 seqno 14565 age 17 via ge00 neigh
fe80::227:13ff:fe64:8967 (installed)
fd43:e2b3:341c::/64 metric 0 (exported)
fd43:e2b3:341c:1::/64 metric 0 (exported)
fd43:e2b3:341c:2::/64 metric 0 (exported)
fd43:e2b3:341c:1010::/64 metric 0 (exported)
fd43:e2b3:341c:1011::/64 metric 0 (exported)
fd43:e2b3:341c:1012::/64 metric 0 (exported)
fd43:e2b3:341c:2001::1/128 metric 0 (exported)

I had some hope that perhaps a 'redistribute connected'
would 'do the right thing' but no luck. what use is redistribute connected?

3) I do get a p2p ipv6 route that works through the router, but the same
does not work (or converge) on ipv4.

A <->R<->B

Where A has a /64 ipv6 address and a /27 ipv4 address
gets a correct looking 'via' line for the /128 and /32 routes,
but only the ipv6 makes it.

4) Now going quagga-for-babeld <-> quagga-for-babeld I have more luck.
IPv6 routes look right, and I watched it converge a 2 hop pure
ethernet route down from the 1 hop wireless route, which was the right
thing...

root at ida:/usr/local/etc# ip -6 route
fd43:e2b3:341c::/64 dev eth1  proto kernel  metric 256  expires 84045sec
fd43:e2b3:341c:1::/64 via fe80::c43d:c7ff:fea3:7679 dev eth1  proto
zebra  metric 1024
fd43:e2b3:341c:2::/64 via fe80::c43d:c7ff:fea3:7679 dev eth1  proto
zebra  metric 1024
fd43:e2b3:341c:1010::2 via fe80::c43d:c7ff:fea3:7679 dev eth1  proto
zebra  metric 1024

The above is also on my shared wlan on another AP and initially came
up on the wlan. Yea!

fd43:e2b3:341c:1010::/64 via fe80::c43d:c7ff:fea3:7679 dev eth1  proto
zebra  metric 1024
fd43:e2b3:341c:1011::/64 via fe80::c43d:c7ff:fea3:7679 dev eth1  proto
zebra  metric 1024
fd43:e2b3:341c:1012::/64 via fe80::c43d:c7ff:fea3:7679 dev eth1  proto
zebra  metric 1024
fd43:e2b3:341c:2001::1 via fe80::c43d:c7ff:fea3:7679 dev eth1  proto
zebra  metric 1024
fe80::/64 dev eth1  proto kernel  metric 256
fe80::/64 dev wlan0  proto kernel  metric 256
default via fe80::c43d:c7ff:fea3:7679 dev eth1  proto static  metric 1024

4b) Ipv4, not so much (usually a bunch more /27s than this)

default via 192.168.1.1 dev wlan0
169.254.0.0/16 dev eth0  scope link  metric 1000
172.30.42.0/27 dev eth1  proto kernel  scope link  src 172.30.42.27  metric 1
172.30.43.2 via 172.30.42.1 dev eth1  proto zebra
172.30.49.0/27 dev eth0  proto kernel  scope link  src 172.30.49.4
192.168.1.0/24 dev wlan0  proto kernel  scope link  src 192.168.1.111  metric 2
192.168.1.109 via 172.30.42.1 dev eth1  proto zebra

There's been an awful lot of churn lately in the the linux networking
stack (this is all 3.3rc kernel under test), I'll go play with this some more.

5) I see why you require zebra to start up first, but perhaps waiting
for a bit and/or perhaps 'write' saving this param somewhere makes sense.

killall babeld
killall zebrad
root at ida:/usr/local/etc# babeld -d
root at ida:/usr/local/etc# 2012/02/12 20:23:40 BABEL: BABELd 0.1 for
quagga starting: vty at 2609
2012/02/12 20:23:40 BABEL: Warning: couldn't find router id -- using
random value.
2012/02/12 20:23:40 BABEL: ID mismatch in babel-state.
id=6c:0a:9c:13:60:db:73:30; old=00:1c:25:ff:fe:80:46:f9
root at ida:/usr/local/etc# killall babeld
2012/02/12 20:24:06 BABEL: Terminating on signal
root at ida:/usr/local/etc# zebra -d
root at ida:/usr/local/etc# babeld -d
root at ida:/usr/local/etc# 2012/02/12 20:24:11 BABEL: BABELd 0.1 for
quagga starting: vty at 2609
2012/02/12 20:24:11 BABEL: ID mismatch in babel-state.
id=00:1c:25:ff:fe:80:46:f9; old=6c:0a:9c:13:60:db:73:30

root at ida:/usr/local/etc# killall babeld
2012/02/12 20:24:37 BABEL: Terminating on signal
root at ida:/usr/local/etc# babeld -d
root at ida:/usr/local/etc# 2012/02/12 20:24:41 BABEL: BABELd 0.1 for
quagga starting: vty at 2609



More information about the Babel-users mailing list