[Babel-users] A Babel experiment at funkfeuer.at

Juliusz Chroboczek Juliusz.Chroboczek at pps.jussieu.fr
Wed Jan 7 16:38:03 UTC 2009


>> You need to say
>> 
>>     ip addr add 2a02:60:2::1/64 dev vlan0 proto static
>>                                           ^^^^^^^^^^^^

> Error: either "local" is duplicate, or "proto" is a garbage.

Yes, I was speaking nonsense.  The route installed by ``addr add'' always
has proto kernel.

To come back to your issue,

> Now babel advertises two routes:
> 2a02:60:2::1/128
> 2a02:60:2::/128

It does look as a bug indeed.  I've tested it on my side, and it works
fine, so the bug must depend on the kernel version -- the exact formatting
of netlink data depends on the version.  I've had a quick look at the code,
and I don't see anything obviously wrong.

Could you please try running Babel with ``-d 3'' and reproduce the bug?
I'll also want to see the output of ``ip -6 route show'' on the affected
machine.

> Though I still find it a bit confusing, that babel announces the
> prefix part of the address, but behaves as if it was /128. 

It's confusing, but only because the ip command is confusing.  Let me
explain.

Every interface on the system has zero, one or more addresses.  Call the
set of such addresses the machine's local addresses.  Additionally, the
machine has a set of routing table entries, each of which is decorated with
a tag known as the route's protocol.

Historical routing implementations tend to ignore local addresses, and
redistribute routing table entries.  For example, BSD's ripd will
redistribute all routes except those that have a protocol number of
``boot''.  Quagga/zebra does no redistribution by default, but it can be
configured to redistribute any route except those that have a protocol
number of ``boot''.

Unik-olsrd takes a different approach: it doesn't redistribute route, but
instead it redistributes local addresses.  This makes sense in a mesh
network, where you're doing flat (and not subnet-based) routing.

The approach taken by Babel is to follow unik-olsrd by default
(redistribute local addresses), but to allow configuration of ripd's
behaviour with

    redistribute local deny
    redistribute ip ::/0 allow
    redistribute ip 0.0.0.0 allow

Now everything should become clear if you consider that the command

    ip addr add whatever/128

merely adds one local address.  The command

    ip addr add whatever/64

is merely a shortcut for the common sequence

    ip addr add whatever/128
    ip route add whatever/64 proto kernel

                                        Juliusz




More information about the Babel-users mailing list