[Babel-users] Welcome to the babel-users mailing list

2007-10-02 Thread Juliusz Chroboczek
Dear all,

Welcome to the babel-users mailing list.

This list is mainly for discussion of the Babel routing protocol and
the babel sample implementation.  You are welcome to use this list for
discussing other issues related to mesh networking and to IPv6, such
as the AHCP autoconfiguration protocol, the experimental Babel network,
or your favourite community network.

I intend this to be mostly an English language list.  Please try to
avoid posting in French, unless you're discussing purely local matters.

For subscribers, this is an unmoderated list.  If you send mail from
an address different from the one you subscribed with, your mail will
go through a moderation process.

Resources:

  The babel sample implementation:

 http://www.pps.jussieu.fr/~jch/software/babel/

  The ahcpd autoconf daemon:

 http://www.pps.jussieu.fr/~jch/software/ahcp/

  The experimental Babel network:

 http://wifi.pps.jussieu.fr/

A description of the Babel protocol is in the works, and is available
on demand.

    Juliusz Chroboczek

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Testing...

2007-10-02 Thread Juliusz Chroboczek
Sorry, just a test.


pgpfTcwFwNy7f.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] News from wifi.pps.jussieu.fr

2007-10-02 Thread Juliusz Chroboczek
The Babel network is now routed natively once again.

  64 bytes from alpha.wifi.pps.jussieu.fr: icmp_seq=1 ttl=63 time=2.65 ms

Juliusz


pgp0w54UvPhQT.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Welcome to the babel-users mailing list

2007-10-02 Thread Juliusz Chroboczek
Dear all,

Welcome to the babel-users mailing list.

This list is mainly for discussion of the Babel routing protocol and
the babel sample implementation.  You are welcome to use this list for
discussing other issues related to mesh networking and to IPv6, such
as the AHCP autoconfiguration protocol, the experimental Babel network,
or your favourite community network.

I intend this to be mostly an English language list.  Please try to
avoid posting in French, unless you're discussing purely local matters.

For subscribers, this is an unmoderated list.  If you send mail from
an address different from the one you subscribed with, your mail will
go through a moderation process.

Resources:

  The babel sample implementation:

 http://www.pps.jussieu.fr/~jch/software/babel/

  The ahcpd autoconf daemon:

 http://www.pps.jussieu.fr/~jch/software/ahcp/

  The experimental Babel network:

 http://wifi.pps.jussieu.fr/

A description of the Babel protocol is in the works, and is available
on demand.

    Juliusz Chroboczek


pgpRcn6uxGJ04.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Un autre test...

2007-10-02 Thread Juliusz Chroboczek
Sorry for that -- there are some minor issues with the list archives.

Juliusz


pgpddz0f46v9P.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Bug in ahcpd: tunnel interfaces not handled correctly

2007-10-04 Thread Juliusz Chroboczek
There's a bug in ahcpd -- it won't work correctly if the first
interface you pass on the command-line doesn't have a MAC-48 address,
e.g. if it's a tunnel.  An IPv6 address will be autogenerated, but it
won't be removed when you kill ahcpd.

As a workaround, make sure that the first interface you pass to ahcpd
is a hardware interface, e.g.

  ahcpd wl0 tun0

or remove the address manually after killing ahcpd.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Babel news...

2007-10-05 Thread Juliusz Chroboczek
Hello to all,

I've spent much of the last two nights looking at packet traces,
hacking babel and playing with OpenVPN and OpenWRT.  The results are
as follows.

Requests for a new seqno are partially implemented -- they are
properly parsed, forwarded towards the source, but the reply is not
forwarded speedily enough, and lost requests are never resent.  What
that implies is that the protocol definition is now complete -- I'll
re-read it, and put it on the web.

Babel is now a little more aggressive when sending hellos to a newly
discovered neighbour.  Taken together, these two new features make
converging on a new route when the old one is lost dramatically faster.

You can get my head version by doing

darcs get http://www.pps.jussieu.fr/~jch/software/repos/babel/

or, if you haven't got darcs,

wget -r -l1 -nH --cut-dirs=3 
http://www.pps.jussieu.fr/~jch/software/repos/babel/

OpenVPN basically works, but I haven't found yet how to build a multi-
point tunnel with it; in other words, to have multiple clients speaking
to a single server.  Until I find that out, there's no point trying to
build our network using OpenVPN.

I've managed to build an OpenWRT config that automatically works as
either a normal Babel peer or an OpenVPN client and Babel peer; this
was somewhat tricky, due to ntpd not noticing new interfaces and new
routes until you restart it, and the OpenVPN daemon refusing certi-
ficates when the time is not set correctly (sigh).  I needed to make
a fair number of small changes to the OpenWRT scripts, I'll get in
touch with Florian and Nico over the week-end to try to get them
merged into the OpenWRT trunk.

That's all for now.  I need a nap.

Juliusz

P.S. This mail is brought to you by a Babel node.  Merci, Gabriel.


___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Babel protocol now online

2007-10-07 Thread Juliusz Chroboczek
A description of the Babel protocol is now on-line; it's linked from
the Babel page.

Please delete any preliminary versions of the protocol description
that you may have.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Babel protocol now online

2007-10-08 Thread Juliusz Chroboczek
> Je lirais la spec complète plus tard car le domaine jussieu.fr ne semble 
> pas routé depuis free.fr :-(

Le routage IPv4 vers Jussieu est réparé.

Cette fois-ci, le routage IPv6 n'a jamais cessé de fonctionner ;-)

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Babel news

2007-10-08 Thread Juliusz Chroboczek
I've started implementing the support for multi-hop requests in Babel.
It's slightly incomplete right now -- multi-hop requests should be
correctly sent and forwarded, but replies are not forwarded yet, and
lost requests are not resent.

The new version is installed on huponomos, alpha, beta, and pirx.

Feel free to give it a spin,

  darcs get http://www.pps.jussieu.fr/~jch/software/repos/babel

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Forwarding of replies implemented

2007-10-08 Thread Juliusz Chroboczek
Forwarding of both requests and replies is now implemented
(Section 2.5 of the protocol spec).  The code is in the darcs tree,
and installed on alpha, beta and huponomos.

It's completely untested, expect it to break.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] ANNOUNCE: Babel 0.5

2007-10-09 Thread Juliusz Chroboczek
Dear all,

Babel 0.5 is now available from

http://www.pps.jussieu.fr/~jch/software/files/babel-0.5.tar.gz
http://www.pps.jussieu.fr/~jch/software/files/babel-0.5.tar.gz.asc

This version adds (finally) forwarding of requests and of replies to
requests; reconvergence after a route loss should be on the order of
250 ms per hop.

Reemission of lost requests is not implemented yet, performance will
remain poor in the presence of very lossy links.

Juliusz

9 October 2007: babel 0.5

  * Implemented forwarding of requests and replies.

  * Fixed a bug that prevented requests from being parsed correctly.

  * Fixed a bug that prevented IHU intervals from being sent.

  * Respect reboot_time even after an id change.

  * Deal with neighbours rebooting and losing their hello seqno when
computing link quality.


pgpiFkv9ATOfy.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Babel-aware tcpdump

2007-10-09 Thread Juliusz Chroboczek
Thanks to Grégoire Henry, there is a Babel- and AHCP-aware version of
tcpdump in

  http://www.pps.jussieu.fr/~jch/software/files/tcpdump-babel-20071009.patch

A Debian/x86 package is available in

  http://www.pps.jussieu.fr/~jch/software/files/tcpdump_3.9.8-1j_i386.deb

Juliusz


pgpTuVjDC6QX9.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Babel news

2007-10-11 Thread Juliusz Chroboczek
Thu Oct 11 21:19:07 CEST 2007  Juliusz Chroboczek <[EMAIL PROTECTED]>
  * Implemented resending of requests.

Thu Oct 11 21:01:46 CEST 2007  Juliusz Chroboczek <[EMAIL PROTECTED]>
  * Don't check recorded requests for unspecified prefix.
  We'd check recorded requests for a null prefix, which caused a crash.

Thu Oct 11 21:00:22 CEST 2007  Juliusz Chroboczek <[EMAIL PROTECTED]>
  * Avoid reading freed memory.

Le deuxième, notamment, explique probablement pourquoi j'ai dû
relancer Babel à plusieurs reprises sur beta.

Julien, si t'as le temps de relire ça avant que je fasse une release,
ce sera cool.

Juliusz


___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] ANNOUNCE: babel-0.6

2007-10-16 Thread Juliusz Chroboczek
Dear all,

I've just put babel-0.6 in

http://www.pps.jussieu.fr/~jch/software/files/babel-0.6.tar.gz
http://www.pps.jussieu.fr/~jch/software/files/babel-0.6.tar.gz.asc

For more information about the Babel routing daemon, please see

http://www.pps.jussieu.fr/~jch/software/babel/

This version implements resending of lost requests; reconvergence
after moving into an area with no connectivity should now take 250 ms
per hop on average (after the link quality is estimated).  It also
fixes a rather nasty crash that would only happen on week-ends, with
a full moon, and only on diskless machines that don't have a debugger
and don't generate core dumps.

Enjoy,

Juliusz

16 October 2007: babel 0.6

  * Implemented resending of unsatisfied requests, with exponential backoff.

  * Fixed a potential crash in the request handling code.

  * Send IHUs more aggressively.



pgpAQAMDjKoyT.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Routing table right now...

2007-10-16 Thread Juliusz Chroboczek
After upgrading the backbone to Babel 0.6, the experimental network is
stable again.  Here's the routing table on Huponomos:

  http://www.pps.jussieu.fr/~jch/software/babel/table-huponomos-20071016.text

Huponomos is the network's hub, with alpha and beta hanging off it. It
has two VPNs, one to Gamma (an access point in the fifth arrondissement),
and one to Thus's mesh.  It looks as so:


 alpha-beta
 914e  1502
   \/
\  /
 \/
  huponomos
   /\
  /  \
 /\
   gamma Thus

As you can see from the routing table, huponomos and alpha have routes
to the Internet, there's one node hanging off alpha, and Thus's mesh
has four nodes.  Gamma is dead, it doesn't appear in the routing
tables right now.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Babel protocol: about undoing history

2007-10-17 Thread Juliusz Chroboczek
I've just received (by PM) a request for clarification of section
2.2.1 of the Babel spec:

  When a hello is received, its sequence number is compared with the next
  expected sequence number for this neighbour.  If the sequence number of the
  received Hello is higher than expected, then one or more Hellos have been
  missed.  If the sequence number is lower, then this neighbour decreased the
  Hello interval without us noticing, and part of the history must be undone.
  In order to avoid undoing history, a node SHOULD always send a Hello
  immediately after increasing its periodic Hello interval.


Suppose that peer A has a hello interval of 1s.  At time t=0, it sends
a hello with sequence number 0.  Its neighbour B expects it to send
a hello with sequence number 1 at time t=1.

Now suppose that after sending the hello with seqno 0, A decides to
increase the hello interval to 10s.  At time t=1, B decides a hello
was lost; at time t=9, B decides 9 hellos were lost.  At time t=10, it
expects a hello with seqno=10, but instead it receives a hello with
seqno=1, which causes it to conclude that the loss was spurious, and
that actually no hellos have been lost.  Hence, the loss history must
be undone.

In order to avoid undoing history, this section recommends that a peer
should only change its hello interval *before* sending a hello; or,
equivalently, that a hello should be sent whenever the hello interval
changes.  This avoids undoing history when there is no packet loss.
Of course, in presence of packet loss, all bets are off.

Juliusz


___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] ENOBUFS on the netlink socket

2007-10-18 Thread Juliusz Chroboczek
> using babel from Oct 11th, I just got this message:
> netlink_read: recvmsg(): No buffer space available
> which sounds weird.
> Any idea what might have caused this?

According to the docs, it means that the kernel had more than a socket
buffer worth of changes to communicate at a time.  We should deal with
that gracefully if somewhat brutally (we close the netlink socket,
reopen it, and request a full table dump), but I'd be more comfortable
if Grégoire could confirm that.

If you see it again, I'll see if I can increase the socket buffer size.
What's your value of /proc/sys/net/core/rmem_default ?  rmem_max ?

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] ahcpd and babel dying on huponomos

2007-10-25 Thread Juliusz Chroboczek
> ahcpd and babel are dying with EINVAL on
> setsockopt(IPV6_ADD_MEMBERSHIP), because they call this on
> interfaces with no address (namely the vpn interfaces).

That's the expected behaviour if the interfaces have no link-local
address yet.  This shouldn't happen if they do have one.

> I don't think that should be a fatal error

I guess I could sleep(1) and try again... but I'd rather clarify the
issue.

> (it works again after restarting openvpn, but.).

Hmm, there could be a race condition somewhere.  Have a look at
/etc/openvpn/up.huponomos, which does the following:

  ip -6 addr add "$addr"/64 dev ${interface}

  notify ahcpd and babel of the new interface

  /etc/init.d/babel stop
  /etc/init.d/ahcpd stop
  sleep 1
  /etc/init.d/ahcpd start
  /etc/init.d/babel start

As far as I can tell, there's no race condition in the above, but
I may be mistaken.


Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Symptoms of multiple simultaneous instances

2007-10-27 Thread Juliusz Chroboczek
Hi,

The babel daemon does not currently protect itself against being run
multiple times.  If you see your network converging than diverging
again immediately after that, you've probably got multiple Babel
instances running on a single machine.

I'll make sure in a future version that you cannot run multiple Babel
instances on a single machine; for now, you've just got to be careful.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] ANNOUNCE: ahcpd-0.3

2007-10-28 Thread Juliusz Chroboczek
Dear all,

Ahcpd-0.3 is now available from

  http://www.pps.jussieu.fr/~jch/software/files/ahcpd-0.3.tar.gz
  http://www.pps.jussieu.fr/~jch/software/files/ahcpd-0.3.tar.gz.asc

For more information about AHCP, the all-dancing, all-singing
autoconfiguration protocol for IPv6 mesh networks, please see

  http://www.pps.jussieu.fr/~jch/software/ahcp/

Minor tweaks mostly in this version, notably the ability to hook into
the autoconfiguration process by running a script /etc/ahcp/ahcp-local.sh.
I'm using this to integrate ahcp with OpenWRT's hotplug system.

Juliusz

28 October 2007: ahcpd 0.3

  * Moved user-serviceable parts to /etc/ahcp/

  * Added support for configuring an NTP server.

  * Made ahcp print warnings when a clock inconsistency is detected.

  * Fixed error handling when the configuration script dies unexpectedly.



pgpzJrCaJSxrb.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] ahcpd and babel dying on huponomos

2007-10-29 Thread Juliusz Chroboczek
>> ahcpd and babel are dying with EINVAL on
>> setsockopt(IPV6_ADD_MEMBERSHIP), because they call this on
>> interfaces with no address (namely the vpn interfaces).

> That's the expected behaviour if the interfaces have no link-local
> address yet.  This shouldn't happen if they do have one.

It happened again.  Apparently, OpenVPN does something that causes the
link-local interfaces to disappear.  Restarting OpenVPN, ahcpd and
Babel (in this order) fixes it.

I don't have time to investigate further right now, but the problem is
definitely with OpenVPN, not with Babel.

Juliusz



___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] ahcpd and babel dying on huponomos

2007-10-29 Thread Juliusz Chroboczek
> It happened again.  Apparently, OpenVPN does something that causes the
> link-local interfaces to disappear.  Restarting OpenVPN, ahcpd and
> Babel (in this order) fixes it.

> I don't have time to investigate further right now, but the problem is
> definitely with OpenVPN, not with Babel.

I've just added the ``up-restart'' option to all of the VPNs' config
files.  Let's see if it helps...

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Babel and IPV4

2007-11-06 Thread Juliusz Chroboczek
[ Replying to the list, with the OP's permission. ]

> what would it take to implement IPV4?

There's basically nothing in Babel itself that is fundamentally linked
to IPv6.  The main reason for using IPv6 rather than IPv4 for the
initial development was simply that it is easy to get a /64, while
getting just a /24 in IPv4 would be politically challenging.  Other
than that, the APIs are more portable (especially when dealing with
multicast traffic), and that the unconditional presence of link-local
addresses makes certain things easier (notably dealing with unnumbered
links).

Now, however, the time has come to think about IPv4.  I can see three
ways to do that:

1. Implement a purely IPv4 version of Babel, that would be run in
   parallel to the IPv6 version;

2. Make Babel a hybrid protocol, similar to multi-protocol BGP.  The
   routing traffic would still be carried by IPv6 packets, but they
   would announce both IPv4 and IPv6 prefixes.

3. Only route IPv6 natively, and use tunnels for IPv4.

(1) is the natural approach; however, it almost doubles the routing
traffic, and causes a number of issues (such as finding a suitable
multicast group for IPv4 Babel).  (3) has the advantage of allowing
the use of multiple unsynchronised NAT gateways on a single Babel
mesh; however, it suffers from the overhead of tunnelling; more
generally, tunnelling has bad press (wrongly or rightly) in the
routing community.

My current preference is therefore (2).  The basic idea is to encode
the (link-local or global) IPv4 address of a node either in HELLO
messages, in the Babel packet header, or in an ad-hoc message.  I'm
thinking of simply reusing the same message type for IPv4 prefixes,
and simply encode them as IPv6-mapped addresses, rather than defining
a new message type.

So I do have a fairly clear plan of how to proceed, I just need to
take a few days to implement it (and this is a rather busy time).  Let
me know if you want to help.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Babel and IPV4

2007-11-09 Thread Juliusz Chroboczek
>The routing protocol would be IPv6 to IPv4 tunnel aware.

I'm not sure tunnelling belongs in the routing daemon (and yes, I know
that early versions of mrouted used to implement tunnelling).  I think
it is better done in a different program, or natively at the kernel
level.  Of course, Babel has no issues routing across tunnels.

> The routing protocol would discover and keep track of IPv6 to IPv4
> gateways where tunnels are available,

No, that's a different protocol (route autoconfiguration), no need to
clutter the routing protocol with that.

> I'm part of a small 70 family wireless coop that is considering deploying
> a mesh in support of an exisiting Motorola Canopy network.

Where are you?

> The 800Mhz Canopy

Hmm... has the 800 MHz band been made license-free in the US while
I wasn't looking?

> There will be some members that do not have LOS to a Canopy AP that are
> 802.11 only, when near multiple Canopy members with a stable local mesh.
>
> We would also add 802.11 at selected Canopy Access Point sites, and replace
> the switches at the AP sites with a mesh router to allow redundant soft
> failover for the Canopy using 802.11 as a backup or alternate route.

Yes, all of this sounds like the perfect application for Babel: your
network is mostly static and to a great extent sparse, so Babel will
be much more efficient than olsr.  Obviously, we need to implement the
IPv4 support before Babel can be useful for you.

I know I'm going to be very busy until the middle of next week.  I'll
let you know when I implement something.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Filtering

2007-11-19 Thread Juliusz Chroboczek
I'm slowly starting to work on a filtering infrastructure for Babel,
and I'm wondering what kind of filter predicates are needed.

I'm thinking of starting with gated's filtering language,

  http://madhaus.utcs.utoronto.ca/gated/config_guide/filter.html

removing some features, and adding filtering by router id both of the
route originator and of the next hop neighbour.  This is so that you
can, say, avoid routing through a router that you don't like, or
choose the internet gateway that you use.

Do people have any better ideas?

I'm not just doing that for the fun of it -- filtering is a necessary
prerequisite for IPv4 support.

Juliusz



___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Filtering

2007-11-19 Thread Juliusz Chroboczek
> I'm thinking of starting with gated's filtering language,
>
>   http://madhaus.utcs.utoronto.ca/gated/config_guide/filter.html

After more thought, Zebra's filtering language might be a better
choice, since it's based on CIDR notation:

  http://www.quagga.net/docs/docs-multi/IP-Prefix-List.html

Juliusz




  

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Filtering

2007-11-21 Thread Juliusz Chroboczek
>> [...]removing some features, and adding filtering by router id both of the
>> route originator and of the next hop neighbour.

> When you talk about "router id", it remembers me : "WISPr" or "NAS-ID".
> It's not directly relevant to your question, but perhaps there could be
> some things you can use for the router identification ?

Every router already has a router ID in Babel -- it's used for loop
avoidance.  I'm simply speaking of using the same filtering language
as Cisco and Quagga, but adding the ability of banning routers by
router-id.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Babel: news about IPv4 support

2007-12-16 Thread Juliusz Chroboczek
Dear all,

Since this list has been somewhat silent for the last weeks, this is
a good time to tell you about the work going on.

I've started working on an IPv4 extension to Babel.  The idea is to
keep Babel packets within IPv6, but allow it to distribute IPv4
routes, somewhat in the manner of multi-protocol BGP.

The protocol extension is undocumented.  A new packet type, type 5, is
used for IPv4 addresses, and carries both the IPv4 prefix and the IPv4
next hop; the originating router id is carried by a preceding update
message (type 3), just like for IPv6 prefix messages (type 4).

Internally, IPv4 prefixes are encoded as IPv6-mapped addresses.  Next
hop information is added to the routes.  (This is one of the three
designs that I considered, and it is by far the cleanest and the
simplest.)

The work is almost complete, but the kernel support is missing.  Very
little has been committed at this time, I hope to be able to publish
the code over the Christmas holidays.

There is some other unpublished work going on, but since I haven't
asked the people doing it for permission to announce it, I'll keep
silent for now.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] ANNOUNCE: experimental IPv4 code

2008-01-02 Thread Juliusz Chroboczek
Dear all,

An experimental version of IPv4 support for Babel is in my Darcs repository,

  http://www.pps.jussieu.fr/~jch/software/repos/babel

This code is almost completely untested; it may work, but it will most
probably segfault, cause your computer to crsh, your printer to jam,
your wife to leave you, your daughter to join Microsoft and your son
to vote for Sarkozy.

This warranty is void in case of nuclear war, whether caused by Babel
or otherwise.

The IPv4 support is disabled by default.  You enable it by running
Babel with the ``-4'' command-line flag.

Unlike IPv6, the Linux IPv4 stack doesn't support unnumbered links.
SInce AHCP can't number IPv4 links yet, you will need to manually add
an IPv4 address to every interface you want to route IPv4.  However,
you may add the same address to every interface -- nothing prevents
you from having the same IPv4 address on your wired interfaces, on
your wireless ones, and on your tunnels.

Babel should automatically detect which interfaces have an IPv4
address, and will only participate in IPv4 routing on those.

For example, suppose that your IPv6 address is 2001:0DB8::dead:beef,
while your IPv4 address is 192.168.05.68, and that you want to run
Babel on eth0 and wl0.  Then you should do something like

  ifconfig eth0 192.168.05.68 up
  ifconfig wl0 192.168.05.68 up
  ip -6 addr add 2001:0DB8::dead:beef/128 dev eth0
  babel -4 -X 192.168.05.68 0 -X 2001:0DB8::dead:beef 0 eth0 wl0

Note that in this example, wl0 has no global IPv6 address, but has to
have an IPv4 address.

An important caveat: -x won't work yet.  Please use -X for now.

The Mac OS X code is incomplete (it probably won't even compile).  In
order to bring the Mac OS X code to the level of the Linux code,
somebody will need to modify kernel_route and add code to kernel_setup
to enable IPv4 forwarding.

Finally, in order to make -x work, kernel_routes and kernel_callback
will need to be modified to return IPv4 routes in addition to IPv6
ones.

Regards,
Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] IPv4 updates

2008-01-03 Thread Juliusz Chroboczek
Under Linux, -x now works for IPv4 routes -- in other words, IPv4 and
IPv6 have the same level of support.

As to the network at P7, only small bits of it route IPv4 right now
(huponomos, gamma and pirx).  I'll expand the IPv4 coverage when
I implement filtering and support for multiple routing tables, and
decide on a firewall policy.

Thus, Gabriel, let me know if you want me to route IPv4 on the tunnels
you have to huponomos.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] ANNOUNCE: babel 0.7

2008-01-03 Thread Juliusz Chroboczek
Release 0.7 of Babel, the all-dancing, all-singing routing daemon for
IPv6 and IPv4, is available from

  http://www.pps.jussieu.fr/~jch/software/files/babel-0.7.tar.gz
  http://www.pps.jussieu.fr/~jch/software/files/babel-0.7.tar.gz.asc

For more information about Babel, please see

  http://www.pps.jussieu.fr/~jch/software/babel/

The main news in this version is support for IPv4 (Linux-only, for the
moment).  A number of bugs have been fixed, notably the incorrect
encoding of unicast route requests (silly me).

The complete changelog is appended.

Juliusz

3 January 2008: babel 0.7

  * Implemented support for IPv4.
  * Fixed sending of unicast requests.
  * Don't send poison when receiving a request for an unknown route.
  * Basic filtering infrastructure.
  * Removed support for broadcast IHU.
  * Changed the behaviour of -d.


pgp6qvfl7ZEwd.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] ANNOUNCE: babel 0.7

2008-01-06 Thread Juliusz Chroboczek
Hi Florian,

> We can probably make a presentation of it with France-Wireless at
> Solutions Linux in end January ?

I'd love to -- but I'll be abroad from the 18th until the end of the
month.  Sorry for that.

Juliusz


___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Babel and bridged interfaces

2008-01-30 Thread Juliusz Chroboczek
As you probably know, Babel tries to automatically detect whether an
interface is wired or wireless, and uses a more economic algorithm for
determining link quality on wired interfaces.  The wireless algorithm
works well on wired interfaces, but the wired one won't work well (or
at all) on wireless interfaces.

This behaviour fails in one significant case, when people run Babel on
bridged interfaces, which Babel detects as wired interfaces. According
to the (private) e-mails I'm getting, this is particularly common on
OpenWRT systems, where eth0.0 and wl0 are bridged by default.

I do not recommend running Babel on bridged interfaces, since the
inverse multiplexing caused by the bridge removes some information,
and prevents Babel from dropping the hello interval.  It is better to
remove the bridge and run Babel separately on the underlying
interfaces.  (Of course, this is not possible if you need to forward
broadcast traffic between interfaces.)

On OpenWRT, you will need to edit /etc/config/network, so that it
looks something like

  config interface lan
  option ifname "eth0.0"
  option proto static

  config interface wan
  option ifname "eth0.1"
  option proto static

  config interface wifi
  option ifname "wl0"
  option proto static

In a future version, I'll try to detect bridged interfaces and run the
wireless algorithm on them by default, and provide a means to configure
the algorithm used on a per-interface basis.  If you have any better
ideas, I'm interested.

Regards,

Juliusz

P.S. I prefer correspondence about Babel to go to the list, rather
 than to me personally.

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Babel and bridged interfaces

2008-02-02 Thread Juliusz Chroboczek
> We could probably tune a bit the init script to make it run on each
> member of the bridge for instance. This would avoid adding bridge
> detection to babel, which seems to be an OpenWrt specific
> problem/feature.

I'm not sure how well that would work; I'm afraid that we'd confuse
the bridge by running on the underlying interfaces.

The simple work-around is to simply run the wireless algorithm on
bridge interfaces, as that will work in all cases.  Of course, it will
generate somewhat more traffic on your Ethernets, but since it's still
just one packet every 6 seconds (as opposed to one packet every 30
seconds with the wired algorithm), it should remain bearable.

Juliusz


___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Disable wired optimisations

2008-02-06 Thread Juliusz Chroboczek
I've just added a new flag, -w, to Babel, which can be used to disable
the optimisations for wired networks.  If Babel is invoked with -w, it
will use the wireless algorithm on all interfaces, which means that:

  - the hello interval will not be increased;
  - link quality information will be performed normally;
  - split-horizon will be disabled.

This flag is recommended if you're running Babel on bridge interfaces
with an underlying wireless interface.  In any case, it won't do any
harm, except slightly increasing the amount of traffic on wired
interfaces.

This is completely untested, so feedback would be appreciated.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Disable wired optimisations

2008-02-07 Thread Juliusz Chroboczek
>> I activated it (I almost always use babel over a wireless interface) and
>> I'll let you know if it solves the issue I had when using Babel over
>> OpenVPN (ie. freeze after some time).

> Nope, I still get the connection freezing from time to time. The tunnel
> seems to stay up, I can see some packets with tcpdump, but I have no
> default route (and no DNS by the way). Can't explain it...

No, that's a different issue.  My scripts on huponomos are buggy
somewhere -- they're supposed to restart babel and ahcpd after the
OpenVPN daemon creates a new interface, but for some reason they stop
the daemons but fail to restart them sometimes.

The long-term solution is to have Babel react automatically to changes
in link status; I've done some work in that direction, but not enough.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Bug with multiple neighbours

2008-02-07 Thread Juliusz Chroboczek
There was a bug that could spuriously remove IPv4 routes if you had
multiple neighbours with small metrics (diagnosed by Julien Cristau,
to whom thanks).

I've just fixed it in the Darcs repository, so please upgrade if
you're using IPv4.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] IPv4 sur le réseau Babel

2008-02-07 Thread Juliusz Chroboczek
[This is about the configuration of IPv4 on the experimental network,
 here in Paris.  Since it's a purely local matter, I'll write in French.]

Je viens de mettre en place du IPv4 sur le réseau Babel, sur le
préfixe 192.168.4.0/24.

Tout se passe comme vous l'imaginez, avec une petite subtilité: pour
distinguer le traffic local de huponomos du traffic forwardé par
celui-ci, je mets les routes babel dans une table de routage non-défaut:

  [EMAIL PROTECTED]:~$ ip rule show
  0:  from all lookup local 
  100:from 192.168.4.0/24 lookup 8 
  101:from all to 192.168.4.0/24 lookup 8 
  32766:  from all lookup main 
  32767:  from all lookup default 
  [EMAIL PROTECTED]:~$ ip route show
  134.157.168.0/25 dev eth0  proto kernel  scope link  src 134.157.168.121 
  192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.28 
  default via 134.157.168.126 dev eth0 
  [EMAIL PROTECTED]:~$ ip route show table 8
  192.168.4.25 via 192.168.4.26 dev beta  proto 42  metric 21 onlink 
  192.168.4.26 via 192.168.4.26 dev beta  proto 42  metric 21 onlink 

C'est un peu bancal, mais ça marche.  Si vous avez une meilleure idée,
je vous écoute.

Pour le moment, ce n'est pas très utile, comme personne n'importe une
route par défaut IPv4 (il faudrait mettre en place un NAT et une
politique de sécurité, ce qui n'est pas vraiment le genre de chose qui
m'amuse).  Cependant, si vous voulez essayer,

  1. demandez-moi de vous affecter une adresse IPv4 dans 192.168.4.0/24;

  2. ajoutez le fichier /etc/ahcp/ahcp-local.sh qui contient un truc du genre

#!/bin/sh
case "$1" in
start)
for i in $AHCP_INTERFACES; do
ip addr add 192.168.4.toto dev $i
done
;;
esac

  3. ajoutez un fichier /etc/ahcp/ahcp-babel-options qui contient

 -4 -X 192.168.4.toto 0

Je sais, c'est un peu lourd; la solution, c'est l'autoconf IPv4 dans ahcpd.

Juliusz


___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] ANNOUNCE: Babel 0.8

2008-02-08 Thread Juliusz Chroboczek
Dear all,

Babel 0.8 is now available from

http://www.pps.jussieu.fr/~jch/software/files/babel-0.8.tar.gz
http://www.pps.jussieu.fr/~jch/software/files/babel-0.8.tar.gz.asc

This version fixe a serious bug that would sometimes spuriously
discard perfectly good IPv4 routes in dense networks.  It also adds
support for non-default routing tables, and makes IPv4 operation more
robust by checking for changes in IPv4 addresses.  Finally, it adds an
option to disable a number of optimisations specific to wired networks
for people who insist on bridging wired and wireless interfaces together.

Enjoy,

Juliusz

8 February 2008: babel 0.8

  * Babel will now automatically check for interfaces' up/down status,
IPv4 address, and optionally for carrier sense.
  * Implemented the -w option, which disables all optimisations for
wired interfaces.
  * Implemented support for non-default routing tables.
  * Fixed a bug that could spuriously remove IPv4 routes (thanks to
Julien Cristau).



pgpNrIfI9QVc7.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Babel now has a proper configuration language

2008-02-11 Thread Juliusz Chroboczek
Dear all,

I've just committed into the Darcs repository a version of Babel that
uses a proper configuration language to specify input, output filters
and redistribution policies.  It needs more testing, but appears to work.

Incompatible changes: the flags -x, -4 and -c no longer exist, they're
subsumed by the configuration language.  Configuration directives can
be specified in /etc/babel.conf, or on the command line using the -C
flag.

It's completely undocumented right now, but here are a few examples:

  - refuse to participate in IPv4 routing:

  in 0.0.0.0/0 deny
  out 0.0.0.0/0 deny

  - I'm short on battery, advertise routes with an artificially higher metric:

  out metric 256

  - the interface eth1 is slow, avoid routes going through it unless
there's no better alternative:

  in if eth1 metric 256

  - redistribute the default IPv6 and IPv4 routes:

  redistribute ::/0 le 0 metric 128
  redistribute 0.0.0.0/0 le 0 metric 128

  - redistribute all routes from Quagga (IPv4 and Iv6):

  redistribute proto 11 metric 128

  - reject any routes from a neighbour with router-id ::dead:beef:

  in neigh ::dead:beef deny

  - reject any routes originated by the router ::dead:beef:

  in id ::dead:beef deny

For those of you concerned about embedded systems, it's a hand-written
parser, and takes some 1300 bytes of code.

Juliusz




___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Some news about the wifi.pps network

2008-02-12 Thread Juliusz Chroboczek
Dear all,

Julien and I spent much of last night setting up a NAT-ed IPv4 default
route (and a fascist firewall to go with it) on the wifi.pps network.

Since the routing policies on the NAT box and on Huponomos become
somewhat baroque with this addition (you don't want to mix up native
routing with the routing of the NAT-ed network), the filtering
language got a fair amount of exercise, and appears to be working
flawlessly.  However, I haven't tested all of its features
exhaustively yet.

I found a fairly serious bug in the IPv4 routing code, fortunately
introduced after the 0.8 release.  If you're running from the Darcs
repo, please upgrade.

We put the network through some moderately serious load (as in
upgrading two Debian laptops simultaneously from IPv4 archives), and
nothing unexpected happened.

While I was at it, I did some more expermients with reconvergence
times after a mobility event, and they are roughly as expected -- the
network reconverges almost immediately after the link quality estimate
has been completed.  So it appears that I didn't break anything in
that area.

Next step: add IPv4 autoconf to ahcpd.  I've got a cunning plan, but
no ETA yet.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] ANNOUNCE: Babel 0.9

2008-02-14 Thread Juliusz Chroboczek
Dear all,

You will find version 0.9 of the Babel routing daemon on

  http://www.pps.jussieu.fr/~jch/software/files/babel-0.9.tar.gz
  http://www.pps.jussieu.fr/~jch/software/files/babel-0.9.tar.gz.asc

For more information about Babel, please see

  http://www.pps.jussieu.fr/~jch/software/babel/

This version implements a proper configuration language that allows
fine-grained specification of input, output and redistribute filters.

The flags -4, -x and -c are no longer supported (their functionality
is subsumed by the filtering language), so please update your scripts.

Enjoy,

Juliusz Chroboczek

14 February 2008: babel 0.9

  * Implemented a proper configuration language to specify input and
output filters and redistribution policies.
  * Incompatible change: the flags -4, -x and -c are no longer supported.



pgpUQOayb6BiC.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] IPv4 autoconfiguration

2008-02-14 Thread Juliusz Chroboczek
Dear all,

With a lot of help from Julien and Grégoire, I've finally managed to
get IPv4 autoconfiguration to work in AHCP.

The approach is as follows.  An AHCP peer performs stateless
autoconfiguration as usual.  After it has established IPv6 routing, it
uses IPv6 unicast to contact a server that will lease him an IPv4
address, DHCP-style.

The stateful algorithm is deployed on the wifi.pps.jussieu.fr network,
and has been tested somewhat.  In order to use it, you will need Babel
0.8 or later, and the current head of ahcpd (Darcs repository version
dated 14 February 20:40 or later).  Then, simply run ahcpd and stare
in wonder.

In order to set up an automatically IPv4 network, you will need
a stateful server (fall-back servers are not implemented yet).  This
must be a machine with a disk.  Generate a new ahcp configuration
block specifying the IPv6 address of the stateful with the -s flag to
ahcp-generate.

On the stateful server, you must run ahcpd with the -S flag:

  ahcpd -S 10.0.0.1 10.0.0.254 /var/lib/ahcp-leases eth1

Please note that this functionality is experimental, and the protocol
might yet change in incompatible ways.

Juliusz


pgpe6x7s0eW0z.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Updated tcpdump

2008-02-14 Thread Juliusz Chroboczek
An updated patch for tcpdump, due to Grégoire Henry and Julien Cristau,
as well as binary packages for both Debian etch and current testing,
are on

http://www.pps.jussieu.fr/~jch/software/files/

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] IPv4 autoconfiguration

2008-02-17 Thread Juliusz Chroboczek
>> Is there a way to *disable* IPv4? It's pretty annoying when I connect
>> to wifi.pps.jussieu.fr via openvpn to get IPv6 connectivity and get a
>> lot of garbage rules in my (IPv4) routing table instead.

>-s Do not perform stateful autoconfiguration; the autoconfiguration
>   process will be finished after  stateless  autoconfiguration  is
>   done.

Note that this won't disable IPv4 if Gabriel already has an IPv4
address on the VPN interface.

In addition to disabling stateful autoconf, Gabriel should add some
filtering rules to /etc/babel.conf.  The most radical solution is

  in ip 0.0.0.0/0 deny

which will reject all IPv4 routes.  To allow IPv4 routes
to the wifi network only,

  in ip 192.168.4.0/24 allow
  in ip 0.0.0.0/0 deny

and to just reject the default route and the route to PPS,

  in ip 0.0.0.0/0 eq 0 deny
  in ip 134.157.168.0/24 deny

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] IPv4 autoconfiguration

2008-02-17 Thread Juliusz Chroboczek
> This works perfectly well, thank you. Last question:
> what is an "operationnal interface"? Babel warns me that it can't find
> any at startup.

It means two things.  First, that you're using the very last (and
possibly buggy) version of Babel.  And second, that you're starting
Babel before you up any of your interfaces.

The latest versions of Babel check every 30 seconds whether the
interfaces you gave it exist and whether they are up or down.  This
means that you should in principle be able to start Babel very early,
and have it automatically detect interfaces that become available
later in the boot process (for example because they were created by
OpenVPN).

The downside of that is that if you make a typo such as

  babel ::dead:beef etl0

instead of eth0, Babel will accept to run, and wait forever for an
etl0 interface to be created.  Because of that, it will warn you if
none of the interfaces you passed on the command line are usable.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] ANNOUNCE: ahcpd 0.4

2008-02-17 Thread Juliusz Chroboczek
Dear all,

Ahcpd 0.4 is available from

  http://www.pps.jussieu.fr/~jch/software/files/ahcpd-0.4.tar.gz
  http://www.pps.jussieu.fr/~jch/software/files/ahcpd-0.4.tar.gz.asc

For more information about ahcpd, please see

  http://www.pps.jussieu.fr/~jch/software/ahcp/

The main news in this version is support for stateful configuration --
configuration done by contacting a central server.  This supports
configuration of IPv4 addresses, DHCP-style.

Enjoy,

Juliusz

17 February 2008: ahcpd 0.4

  * Implemented stateful configuration for IPv4.
  * Tweaked timing to avoid hopping between competing configurations.
  * Fixed conversion of Babel hello intervals to seconds.


pgp9plxF1ZbB3.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] No longer ignoring very bad neighbours

2008-03-06 Thread Juliusz Chroboczek
Grégoire and Julien have been complaining about Babel ignoring very
lossy links; they claim that links with up to 90% packet loss are
useful.  (Note that Babel measures packet loss *before* link-level ARQ
is applied, so that's not the amount of packet loss you will see if
you simply ping a neighbour.)

I've just changed the link cost computation on wireless links so that
it will consider neighbours even when they loose no more than 11
hellos.  This should not change Babel's behaviour when better links
are available, but will prevent Babel from discarding links that
disappear in a timely manner, which might potentially cause blackholes
in some very unlikely topologies.  Let me know if you see any new
issues.

I've installed the new version on alpha and beta; Julien, could you
please copy it over to gamma, which I cannot access right now?

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Babel news: automatically redistribute local addresses

2008-03-09 Thread Juliusz Chroboczek
Dear all,

Julien and myself have just finished implementing redistribution of
local addresses.  In other words, it is no longer necessary to
manually redistribute local addresses, you can ask Babel to do it
automatically.

Redistribution is not done by default; you will need to specify which
addresses to redistribute.  If you want all of the local addresses to
be redistributed, just specify

  redistribute local

On huponomos, where I'm testing this functionality right now, I say

  redistribute local ip 2000::/3
  redistribute local ip 134.157.168.0/24
  redistribute local ip 192.168.4.0/24

which says to redistribute all local addresses as long as they are
either globally-routable IPv6 addresses, or IPv4 addresses on either
of the PPS and the Wifi prefixes.

Of course, all of the filtering predicates are available in
a ``redistribute local'' statement (although some don't make a lot of
sense), so you can say things such as, for example,

  redistribute local if eth0
  redistribute local metric 256

In principle, it should now be possible to say

  babel -C 'redistribute local' id interfaces...

and have Babel do The Right Thing.  The next step I'm planning is to
have Babel automatically determine a suitable router-id, so that you
can say

  babel -C 'redistribute local' interfaces...

without having to specify a router id.

Juliusz


___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Babel news: automatically redistribute local addresses

2008-03-09 Thread Juliusz Chroboczek
> The next step I'm planning is to have Babel automatically determine
> a suitable router-id, so that you can say
>
>   babel -C 'redistribute local' interfaces...
>
> without having to specify a router id.

This is now done.  You can say

  babel -C 'redistribute local' eth1

and Babel will do The Right Thing.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] HEADS UP: Incompatible change

2008-03-09 Thread Juliusz Chroboczek
After a little thought, I've made Babel redistribute local addresses
by default.  If you're not happy with this behaviour, add the
following line as the last in your /etc/babel.conf:

  redistribute local deny

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Fixes to route selection

2008-03-11 Thread Juliusz Chroboczek
Dear all,

Lilian has found a case in which Babel 0.9 would delay reconvergence
by 30 seconds.  I've now fixed this case, and reworked the route
selection algorithm somewhat; convergence speed is much improved.

Since I'd like to release 0.10 pretty soon, I'm very much interested
in any data about the behaviour of the current Darcs tree that you may
have.

Since I'm in a chatty mood, I'll give a few details about the issue.
(By the way, Lilian, my analysis of the problem on IRC was completely
wrong.)

A (proactive) routing protocol has three tasks:

 - neighbour sensing: measuring link quality between neighbours;
 - route discovery: discovering the set of available routes;
 - route selection: choosing a particular route to every destination.

In many routing protocols, the three tasks are mixed up.  For example,
both RIP and B.A.T.M.A.N. mix up neighbour sensing and route discovery,
which is why in RIP you cannot tune the hello interval separately from
the updte interval.

Babel was designed as a modular protocol: the three stages of the
protocol are, to the extent possible, independent.  Of particular
interest is the independence of route selection and route discovery:
the protocol remains correct if nodes do not always choose the route
with smallest metric, but choose ``worse'' routes under some
circumstances (as is usually the case with distance-vector protocols,
but not with link-state protocols).  This makes it possible to
implement route selection policies that choose routes according to
criteria richer than just link quality.

Now, when I started working on Babel, I had just experimented with
OLSR, and found that it has serious problems with route stability:
under some circumstances, it flaps between two parallel routes to
a given destination.  Route flapping is ungood: it can cause packet
reordering, and it usually causes jitter (for example due to an extra
ARP exchange) and sometimes packet loss.

Because of that, Babel's route selection policy tries to promote route
stability.  The main stability mechanism is a simple form of
hysteresis: we don't switch routes unless the new route is
significantly better than the old route.  (The exact amount of
hysteresis used depends on whether we also switch router-id, and is
something that needs more experimentation.)

The second route stability mechanism is much simpler: a route is
regarded with great suspicion unless it has been around for 30
seconds.  Unfortunately, this mechanism turned out to be buggy, and to
interact badly with some other features of the protocol (notably the
feasibility condition), which caused perfectly good routes to be
disregarded for 30 seconds in Lilian's network topology.

After some thought, I've simply removed the 30 second condition; the
only route stability mechanism remaining is hysteresis, which appears
to do The Right Thing in practice.

In case you want to check the code, all of this happens in route.c, in
the functions find_best_route (which finds the candidate route for
a given destination) and consider_route (which decides whether to
switch to a new, potentially ``better'' route).

While I was at it, I reworked some of the constants in the protocol,
notably by making it send multi-hop requests and triggered updates
more aggressively; this makes the protocol somewhat more chatty, but
very slightly so.  All together, you should see much faster convergence
with 0.10 than with 0.9.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] ANNOUNCE: Babel 0.10

2008-03-11 Thread Juliusz Chroboczek
Dear all,

I am pleased to announce Babel 0.10, which you will find on

  http://www.pps.jussieu.fr/~jch/software/files/babel-0.10.tar.gz
  http://www.pps.jussieu.fr/~jch/software/files/babel-0.10.tar.gz.asc

This version will automatically redistribute local addresses; it is no
longer necessary to specify them using ``-X''.  This is an incompatible
change, but you can revert to the previous behaviour by specifying

  redistribute local deny

in your /etc/babel.conf.

This version will also automatically adapt to interfaces appearing and
disappearing at runtime, which avoids the need to restart Babel when
a VPN goes up or down.

Some fairly significant improvements have been done to the speed with
which Babel selects a new route when a neighbour goes down (as opposed
to the case where the local node moves).  Many thanks to Lilian for
helping me debug that.

Finally, Babel can now daemonise itself, which should simplify your
init scripts.

I strongly recommend upgrading from Babel 0.9 or earlier.

Juliusz

11 March 2008: babel 0.10

  * Implemented the ability to automatically export local addresses (see
the ``local'' keyword in redistribute specifications).  This should
avoid the need to explicitly specify -X on the command line
(Julien Cristau and Juliusz Chroboczek).
  * INCOMPATIBLE CHANGE: local routes (local interface addresses) are
now exported by default.  Specify ``redistribute local deny'' to
avoid that.
  * Babel will now automatically choose a router id if none is
specified on the command line.
  * Automatically adapt to interfaces appearing or disappearing at runtime,
as is usually the case when running over tunnels or VPNs.
  * Changed the link quality computation algorithm to not discard very
lossy links.
  * Multi-hop requests will now be forwarded to an unfeasible successor
under some circumstances.
  * Send multi-hop requests more aggressively.
  * Send requests for a new seqno upon receiving an unfeasible update
if it's better than what we have.
  * No longer consider the age of routes in route selection.
  * Added ability to run as a daemon.


pgpNDnc1BpXQO.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] A few examples of redistribution

2008-03-12 Thread Juliusz Chroboczek
I've had a couple of chats over IRC those last days that show that
people are confused about the new redistribution statements in Babel 0.10.
So here are a few real-world examples.

0. Preliminaries

Any routes that you redistribute into Babel must have an explicit
protocol attached.  If you use another routing daemon, it should do
that right.  If you install your routes manually, you need to specify
``proto static'' on the ``ip'' command line.  So if you used to say

# route add default gw 1.2.3.4

you now need to say

# ip route add default via 1.2.3.4 proto static

You can check whether your current routes can be redistributed into
Babel by typing ``ip route show''.  If a route has no ``proto'' field,
Babel will ignore it.  (If it says ``proto 42'', it's a Babel route.)

Under no circumstances should you use -X.  -X is dangerous, and it
will cause persistent routing loops if you are not careful.

Instead of -X, you should install a static route and redistribute it
cleanly.  The static route can of course be a blackhole route; so if
you used to say

  -X 192.168.5.0/24 128

you should say instead

  # ip route add unreachable 192.168.5.0/24 proto static

and then, in babel.conf,

  redistribute 192.168.5.0/24 le 24 metric 128


1. Ordinary mesh node

Pirx only participates in Babel routing, and does not serve as a gateway.
It only redistributes its local addresses, and redistributes all of them,
so no babel.conf is necessary.


2. Mesh node with a wired link, no redistribution

Beta is a mesh node that happens to be attached to an Ethernet.  It
has a single IPv6 address, but two IPv4 addresses: 192.168.4.26 on the
mesh network, and 192.168.1.26 on the Ethernet; it redistributes its
IPv6 address, its IPv4 mesh address, but not its Ethernet address.

Its babel.conf says:

  redistribute local ip 192.168.4.0/24
  redistribute local ip ::/0
  redistribute local deny


3. IPv4 gateway

Coloquinte is our Ipv4 gateway.  It redistributes its IPv6 address,
and a default route to the IPv4 Internet.  It does not redistribute
its own IPv4 address, which is subsumed by the default route:

  redistribute local ip ::/0
  redistribute local deny
  redistribute 0.0.0.0/0 le 0 metric 128

The ``le 0'' means that only the default route will be redistributed,
which avoids issues if coloquinte were to acquire additional IPv4
routes.


4. Traditional gateway

One of my users has a number of pure IPv4 mesh nodes, each of which is
on its own /28.  The various /28 are disjoint, so there's no need to
redistribute local addresses in addition to the /28 routes:

  redistribute local deny
  redistribute ip 10.0.0.0/8 le 28 metric 128


5. IPv6 gateway

Alpha is similar to Beta, but it additionally participates in RIPng
routing and redistributes the default route into the mesh network:

  redistribute local ip 192.168.4.0/24
  redistribute local ip ::/0
  redistribute local deny
  redistribute ip ::/0 le 0 metric 196

Again, ``le 0'' is used to only redistribute the default route; this
avoids dumping the whole RIPng routing table of Paris 6 and 7 into the
mesh network.


6. Hybrid gateway

Huponomos is another IPv6 gateway, but it also plays a role with
respect to IPv4 routing.  In addition to everything that alpha does,
it redistributes its local address in 134.157.168.0/24, as well as
a local route to 134.157.168.0/25 (that's not a typo: /25, not /24 --
the /24 is subnetted).  It has some other IPv4 addresses, which it
does not redistribute.  Additionally, it rejects any IPv6 routes that
come from coloquinte (2001:41d0:1:6364::1):

  redistribute local ip ::/0
  redistribute local ip 134.157.168.0/24
  redistribute local ip 192.168.4.0/24
  redistribute local deny
  redistribute ip ::/0 eq 0 proto 11 metric 128
  redistribute ip 134.157.168.0/24 le 25 metric 128
  in ip ::/0 le 32 id 2001:41d0:1:6364::1 deny

Note that the default IPv6 route is redistributed with metric 128,
while alpha redistributes it with the slightly larger metric 196; this
is so that traffic from beta, which is a neighbour of both, will flow
through huponomos rather than alpha.

Hope this helps,

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] A few examples of redistribution

2008-03-13 Thread Juliusz Chroboczek
>>  The static route can of course be a blackhole route [...]
>>  # ip route add unreachable 192.168.5.0/24 proto static

> If you really want a blackhole, you should rather use:
>
> # ip route add blackhole 192.168.5.0/24 proto static

Sure, I was somewhat unaccurate.  But you never actually want
a blackhole, unless your network is badly broken.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Babel ignoring tunnel interfaces

2008-03-26 Thread Juliusz Chroboczek
I'm receiving e-mail from users complaining that Babel is ignoring
their tunnel interfaces.

For an interface to be usable by Babel, it must:

  - support IPv6;
  - have a link-local IPv6 address.

The first point means that you cannot run Babel over e.g. IPIP
tunnels; use GRE tunnels instead.  Note that this remains true even on
a pure IPv4 network -- Babel is a hybrid protocol (IPv4 and IPv6), and
Babel routing information is exchanged over IPv6, even in a pure IPv4
network.

The second point is more tricky.  Linux will autoconfigure a link-
local address on broadcast interfaces, but will not necessarily do it
on point-to-point interfaces (there are some exceptions).  Check if
you have a link-local address:

  $ ip -6 addr show alpha
  5: [EMAIL PROTECTED]:  mtu 1476 
  inet6 fe80::d8f0:3587:f850:4a99/128 scope link 
 valid_lft forever preferred_lft forever

If you have a line that says ``inet6 fe80::... scope link'', you're
fine.  If you don't, you'll need to say something like

  ip -6 addr add (ahcp-generate-address fe80::)/64 dev whatever

You'll find the ahcp-generate-address utility in the ahcpd package.

All of this is described in Babel's README file.  If it's not clear
enough, I'll be grateful for any patches.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] ANNOUNCE: Babel 0.11

2008-03-29 Thread Juliusz Chroboczek
Dear all,

You will find Babel 0.11 on

  http://www.pps.jussieu.fr/~jch/software/files/babel-0.11.tar.gz
  http://www.pps.jussieu.fr/~jch/software/files/babel-0.11.tar.gz.asc

A lot of small tweaks in this version, but little significant changes.
Most notables is a fix for a crash that would happen if an interface
with large MTU was added at runtime, and some preliminary moderation
of requests.

With this version, Babel is mostly feature-complete as far as I am
concerned.  Still missing is resending of incremental route updates,
and more work is needed on the parameters of triggered updates.

Juliusz

29 March 2008: babel 0.11

  * Implemented sub-second hello and update intervals.
  * Fixed a bug that could prevent the best route from being selected
for extended periods of time.
  * Implemented protection against out-of-date requests being sent and
forwarded when a node loses its sequence number.
  * INCOMPATIBLE CHANGE: reduced the cost of wired networks down to 96
from 128.
  * Tweaked the frequency at which a router's seqno increases, to make
it more likely that a feasible route will be available when needed.
  * Implemented garbage collection of old sources.
  * Implemented coalescing of unicast messages.
  * Fixed a bug that could cause a crash when a link's MTU changes.
  * Fixed a bug that could delay noticing that a network is no longer
idle when running Babel with the -i flag.
  * Fixed a bug that could cause incorrect metrics to be advertised
when output filtering was used.
  * Fixed a bug that could cause incorrect link costs to be computed when
a neighbour reduces its hello interval.
  * Fixed some minor issues with the ordering of outgoing messages.


pgpglDhEndzWD.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] ANNOUNCE: new Babel branch: inter-process interface

2008-03-30 Thread Juliusz Chroboczek
Dear all,

Since a few students of mine have volunteered to write a GUI for
Babel, I've just branched a version of Babel that has an IPC
interface.  You'll find it on

http://www.pps.jussieu.fr/~jch/software/repos/babel-local-interface

This is a Darcs repository, so just run

  darcs get http://www.pps.jussieu.fr/~jch/software/repos/babel-local-interface

In order to have a look at the information provided, just run this
version and do

  telnet ::1 33123

You'll see a line of text for every change in Babel's neighbour and
route tables.

I'll keep this branch separate from the trunk for the time being, at
least until the protocol stabilises.  I will doubtless merge it at
some point.

Juliusz



___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Change to local protocol

2008-04-03 Thread Juliusz Chroboczek

I've just changed the local interface protocol.

First, there is now an initial message.  This is just

  BABEL 0.0

0.0 is the protocol version, and is followed by a list of tokens,
currently empty.

Second, every message contains a unique identifier for the object it
describes.  For example,

  add neighbour 805f7a0 id 2001:660:3301:8063:218:f3ff:fea9:914e address 
fe80::7c47:b5aa:4669:ac6d if alpha reach e000 rxcost 96 txcost 96 cost 96

which states that this neighbour is uniquely identified by the string
805f7a0.  This string does not need to be unique across time, but at
a given moment it is unique -- in other words, in the time between
``add neighbour foo'' and ``flush neighbour foo'', the string ``foo''
will only identify this particular neighbour.

The unique identifiers should be treated as opaque tokens, and are
suitable for using as keys in a hash table.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] ANNOUNCE: babel-0.12

2008-04-07 Thread Juliusz Chroboczek
Dear all,

Babel 0.12 is now available from

  http://www.pps.jussieu.fr/~jch/software/files/babel-0.12.tar.gz
  http://www.pps.jussieu.fr/~jch/software/files/babel-0.12.tar.gz.asc

The main feature of this version is that route retractions are resent
multiple times, which speeds up the elimination of blackholes in
presence of heavy packet loss.  Other than that, some minor tweaks to
the request forwarding logic and to the ordering of updates, both
changes make Babel less noisy with no change to convergence speed.

Juliusz
7 April 2008: babel 0.12

  * Retractions are now sent multiple times, which should speed-up
convergence in presence of packet loss.
  * Optimised the sending of updates to make them smaller.
  * Don't forward requests multiple times; this should reduce the
noise due to requests with no increase in convergence time.
  * Fixed a bug that could cause a crash when resending requests.
  * Added some protection against clock stepping.


pgpsqTdoIzCkf.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] VPN temporarily disabled

2008-05-13 Thread Juliusz Chroboczek
(This is information local to the Paris network, so I'm writing in French.)

Du fait de la récente vulnérabilité OpenSSL dans Debian, le VPN sur
huponomos est temporairement désactivé, le temps que je génère une
nouvelle CA.

Amicalement,

Juliusz


pgpTtH50cq7Et.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] babel and zeroconf

2008-05-13 Thread Juliusz Chroboczek
> delighted to have accidentally encountered babel.

Welcome on board.

> i was wondering if anyone has had any experience deploying babel
> simultaneously with zeroconf (!) on e.g. a truly wireless adhoc
> network.

Zeroconf is a purely link-local protocol -- it doesn't reach beyond
the local link.  In a mesh network, the notion of link doesn't really
exist, so zeroconf will give mixed results.

(The same is true of DHCP, by the way, which is why we have developed
our own configuration protocol (AHCP).)

More precisely, zeroconf in a mesh network will only allow you to
speak to your neighbours.

IMHO, the righ solution would be to extend zeroconf to work over
a site-local IPv6 prefix, and to extend Babel to route multicast.  Let
me know if you want to work on the former, and I'll think about the
latter.

> i always always always immediately switch off delivery of messages
> whenever there is no forum gateway to a mailing list.

http://lists.alioth.debian.org/pipermail/babel-users/
http://news.gmane.org/gmane.network.routing.babel.user
http://www.mail-archive.com/babel-users@lists.alioth.debian.org/

Juliusz


___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] babel and zeroconf

2008-05-13 Thread Juliusz Chroboczek
>  getting proper WAN-wide name registration and defending is _hard_.

Yes, if you want to be distributed.  You can always fake it with
a centralised server.

>  it takes about _three years_ to get it right - as no less than three
> of us found out for samba.

Yeah, but you needed to be bug-compatible with another system.  Doing
it from scratch would have been easier.

>  i just did some research on zeroconf a couple of hours ago: it turns
> out _again_ to be an extension of DNS which is very ironic given
> people's aversion to NetBIOS and "network neighbourhood" for being so
> "chatty"

AFAIK, Zeroconf was inspired by Appletalk, not NetBIOS.  Your point
still stands, though, as Appletalk was also criticised for being too
chatty.

>>  In a mesh network, the notion of link doesn't really
>>  exist, so zeroconf will give mixed results.

> ... this i don't follow.  you're using terms that have specific
> meanings with which i'm not yet familiar, and, as it's an area i
> really do need to understand, i'd very much appreciate some pointers /
> elaboration.

Sure.  In traditional (wired) networking, a link is a set of
interfaces that can communicate without going through a router.  It
used to be just a cable, nowadays it's usually a set of cables bridged
together.

In both IPv4 and IPv6, you usually assume that if a node belongs to
the same subnet prefix as you do then it is on the same link, and you
may speak to it directly (ignoring unnumbered links and multiple
prefixes per link for now).  In other words, you encode topology
information within the bits of the address.

Obviously, this is not the case for mesh networks, where the topology
varies over time and does not correspond in any way to the address
allocation.

> in particular, what does - or doesn't - babel provide for "mesh networks" ?

Babel is a routing protocol that, in its basic form, does not make any
assumptions about how prefixes map to links.  Hence, it will work on
any network topology -- wireless mesh, classical wired network --, but
might not be optimally efficient.

Babel can be made to be efficient on wired networks, but this requires
a little bit of per-node configuration.  Since most of our nodes are
wireless, and at any rate the inefficiency incurred by using
out-of-the-box Babel on wired networks is slight, that's satisfactory.

The only assumption that Babel makes about the underlying network is
that link-local multicast is able to reach all neighbours.  Hence, in
its current form, it will not work on non-broadcast (NBMA) networks,
such as ATM.

>  mm? *quizzical*.  i thought ipv6 didn't do multicasting?

IPv6 multicasts just fine.  However, non-local multicast requires
multicast routers, and Babel doesn't route multicast right now.

> the lowest speed network is a digital radio modem, with something
> like a 10 mile range (with TCP/IP on it).

How does that Simpsons line go again?  Mmmh... 800MHz.

> the other ones we have yet to specify but candidates include
> GPRS/EDGE or maybe 3G, and WIMAX or some other adhoc high speed
> networking.

What do you mean by ``ad-hoc''?  If you're using the term to mean that
stations can communicate between themselves, then WiMAX certainly
isn't, it's strictly a point-to-multipoint technology.  (Which is
something that Babel will handle beautifully, by the way.)

> please don't ask why all that's needed :)

Please do tell!

> so i am suddenly extreemely interested in decent and versatile routing
> software that can help here!

Babel is certainly versatile, and I like to think it's decent.  It can
deal with multiple interfaces, which appears to be what you are mainly
concerned with.

But you'll really need to tell us more about the network architecture
you're envisioning.  Whether Babel or some other technology is best
depends on a lot of factors, notably what kind of hand-off times are
tolerable, whether you're interested in multi-hop routing, how large
is your power budget, and whether you can count on link-layer notifications.

> so i will have - some time in the next few weeks - suddenly plenty of
> time on my hands to focus on this.  and perhaps some funding available
> too.

Cool.

Juliusz


___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] babel and zeroconf

2008-05-14 Thread Juliusz Chroboczek
> soo... http://wiki.laptop.org/go/Mesh_Network_Details#Experimenting -
> they've ... oh.  they cheated.  they got marvell to do some of the
> low-level mesh networking.

It was my understanding that OLPC and Marvell collaborated on the job.
In particular, I believe that Michail Bletsas invested a lot of work
into the mesh implementation.  I may be wrong, though.

> so, not only am i going to need to merge all the different types of
> communications technology together but also i'm going to need to send
> certain types of traffic (voice, video, jpeg images) over the
> different communications networks, selecting the "best available" one
> for the job. (!)

That's called policy routing, and there's a lot of published papers on
the subject.  Babel doesn't do policy routing right now, but if you
convince me why it's needed, I'm quite willing to add it.

The reason I'm not convinced of the need for policy routing is that
there usually the best link for one type of traffic is also the best
link for all other ones.  There are exceptions, but I'm not sure
they're common enough to justify burdening your routing implementation.

>  yes.  ppp over GSM/GPRS; WIMAX; 802.11; radio-modem; all of it has to
> be sort-of... merged amorphously.

Yes, but.

If I read you right, you're not only asking that routing decisions be
made depending on the available technologies; you're asking that they
be made depending on offered load.  In other words, if both the radio
modem and GPRS are available, you want the radio modem to be used if
the offered load is less than its capacity, but switch to the expensive
GPRS link if the offered load increases, e.g. because the user decided
to start a video conference.

Is that correct, or are you happy with all traffic taking the ``best''
link available at a given time?

(Once again, if you need policy routing, it's your task to convince me.)

> e.g. if you can transfer _some_ routing information - however slowly -
> about the 2-mile-range WIMAX nodes over the 10-mile-range radio-modem,
> then you would, i assume, be able to make better routing decisions
> than you would if you didn't have the long-range radio connection?

Do not worry about the routing traffic -- it's very low rate, on the
order of 1 byte per second per node.  No need to use third-party
announcements (which is the technical term for what you're suggesting).

>> notably what kind of hand-off times are tolerable,

>  walking around inside and outside office buildings, which might cut
> things off randomly, but assume decent antenna (4 or 8-way phased
> ceramic antenna).

Suppose that user walks into a lift, and the WiMAX connection is cut
off.  Is it okay if the mobile node switches to GPRS after one second?
5 seconds?  15 seconds?

>> whether you're interested in multi-hop routing,

> yes.

Good.

> so - like the OLPC thing [except better :) ]  assume that it's got to
> work without centralised infrastructure, but if centralised
> infrastructure is available (e.g. GPRS / 3G or a high-power
> fixed-position WIMAX unit that has better range and coverage than the
> mobile units) then it should be seamlessly taken advantage of.

No problem, we already do that.  But see above about policy routing.

>>  how large is your power budget,

>  luggable rather than portable.  i.e. "big enough" to not have to
>  worry about :)

Good.

>>  and whether you can count on link-layer notifications.
>
> does this mean "inter-layer" notifications?  i.e. like i hinted at
> above, about being able to send notifications over the radio-modem
> about the e.g. WIMAX layer?

No.

Link-layer (or, more generally, cross-layer) notification is about the
link layer informing the routing protocol about the link being
broken.  In other words, you loose WiMAX connectivity, and the WiMAX
driver informs the routing daemon that the WiMAX link is down faster
than the routing daemon would realise that it's no longer receiving
anything over that link.

It allows faster convergence, since the routing daemon does not need
to explicitly probe the broken link.  So it's linked about the point
about hand-off above.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] babel and zeroconf

2008-05-19 Thread Juliusz Chroboczek
>>  That's called policy routing, and there's a lot of published
>>  papers on the subject.  Babel doesn't do policy routing right now,
>>  but if you convince me why it's needed, I'm quite willing to add
>>  it.

>  ... what you're saying is that it's not straightforward to identify /
> separate the networks, is that right?

Oh, no.  The trouble is that in order to perform fully general policy
routing, you need to carry multiple times the routing information --
one per policy.

>  i was kind of naively envisioning that i would be able to just bypass
> the routing, for voice, and go direct to e.g. the packet radio modem
> interface.

In other words, only taking the first hop into account when doing
policy routing?  Then that's much cheaper.

>>  (Once again, if you need policy routing, it's your task to convince me.)

As far as I can tell -- you haven't identified your usage cases
precisely enough to find out if full policy routing is required.  So
I guess it's best to postpone this decision.

>  so - a network comprising two WIMAX networks which are geographically
> too far apart to be connected together (more than 2 miles) but a few
> of the nodes can use GPRS / 3G to get data across between the two,
> thus connecting the two networks together.
>
>  ... does that work?

Yep.

> and, more importantly, is it possible for babel to still maintain a
> cohesive virtual network, independent of the link layer(s) being used
> to create it?

Yep, that's what it was designed to do.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] IPv6 back, still no IPv4

2008-05-20 Thread Juliusz Chroboczek
The wifi network at Chevaleret has its global IPv6 route back.  Still
no IPv4, we're waiting for Julien to send me a certificate request.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Major changes to data structures

2008-05-20 Thread Juliusz Chroboczek
I made some major changes to Babel's data structures last night.  The
new version didn't crash in 24 hours, and I'd be grateful if people
try it out before release.

There are no user-visible changes, except that the new version uses
less memory and lifts all arbitrary constraints (such as the maximum
number of routes etc.).

It's in the Darcs repository.  Please let me know if you crash it.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] IPv4 back up

2008-05-20 Thread Juliusz Chroboczek
Thanks to Julien, global IPv4 routing is back up on the Chevaleret network.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Default gateway problem

2008-05-21 Thread Juliusz Chroboczek
> I have one problem with babel. I cannot redistribute default gateway
> with babel. I tried with redistribute local, redistribute ip
> 0.0.0.0/0 with no success.

Every kernel route is equipped with a number, the route's protocol,
which is ignored by the kernel and only used by routing daemons to
decide whether to redistribute the route.

The rule is that routing daemons must not redistribute a root with
protocol number ``boot'' (3 under Linux), and may redistribute routes
with other protocol numbers.

So in order to redistribute a route with Babel, you must make sure
that it has a protocol number other than ``boot''.  This means that
rather than saying

  # route add default gw 1.2.3.4
  # ip route add 0.0.0.0/0 via 1.2.3.4

you must say something like

  # ip route add 0.0.0.0/0 via 1.2.3.4 proto static
   

You may check a route's protocol with the command ``ip route show'':

On my desktop machine:

  $ ip route show 0.0.0.0/0
  default via 134.157.168.126 dev eth0

On a Babel router:

  $ ip route show 0.0.0.0/0
  default via 192.168.4.1 dev huponomos proto 42 metric 22 onlink

(42 is the protocol number used by Babel.)

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Default gateway problem

2008-05-22 Thread Juliusz Chroboczek
Your routing table looks fine.

Just to make sure -- you do have a suitable ``redistribute'' statement
in /etc/babel.conf ?

Something like

  redistribute 0.0.0.0/0 eq 0 metric 128

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Default gateway problem

2008-05-23 Thread Juliusz Chroboczek
> Thank you for the quick answer. But I still have problem with the
> default route. If I look to debug messages, I cannot see default
> route.

> 172.16.0.2 dev ppp0  proto kernel  scope link  src 172.16.0.1
> 192.168.10.0/24 dev eth0  proto kernel  scope link  src 192.168.10.4
> 10.0.0.0/16 dev eth1  proto kernel  scope link  src 10.0.5.4
> 169.254.0.0/16 dev eth0  scope link
> 127.0.0.0/8 dev lo  scope link
> default via 10.0.0.1 dev eth1  proto static

Fine.

> Netlink message:
> (msg -> "Add kernel route: dest: :::172.16.0.2/128 gw: :: metric: 65535 
> if: ppp0 (proto: 2, type: 1)" 1),
> (msg -> "Add kernel route: dest: :::192.168.10.0/120 gw: :: metric: 65535 
> if: eth0 (proto: 2, type: 1)" 1),
> (msg -> "Add kernel route: dest: :::10.0.0.0/112 gw: :: metric: 65535 if: 
> eth1 (proto: 2, type: 1)" 1),
> (msg -> "" 0),
> (msg -> "" 0),
> (msg -> "Add kernel route: dest: ::/96 gw: :::10.0.0.1 metric: 65535 if: 
> eth1 (proto: 4, type: 1)" 1),
> (msg -> "" 0),
> (msg -> "" 0),
> (msg -> "" 0),
> (msg -> "" 0),
> (msg -> "" 0),
> (msg -> "" 0),
> (msg -> "" 0),
> (msg -> "" 0),
> (msg -> "" 0),
> (msg -> "" 0),
> (msg -> "" 0),

That's partly broken.  The IPv6-mapped prefix is missing for the
default route.  And why the deil are the metrics set to infinity?

I'm in something of a rush right now, but I've had a look at the code
and I don't see how that could happen.

Julien, Grégoire, do you have any ideas?

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Default gateway problem

2008-05-23 Thread Juliusz Chroboczek
> Thank you for the quick answer. But I still have problem with the
> default route. If I look to debug messages, I cannot see default
> route.

Okay, I can reproduce the bug.  It only appears on 64-bit arches,
which is why I didn't notice it before.

I'll let you know when I have more.

Juliusz


___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Default gateway problem

2008-05-23 Thread Juliusz Chroboczek
It turns out it was not specific to 64-bit machines, but rather to
very recent Linux kernels.  The netfilter people have changed the
(mostly undocumented) API once again.  Of course, since the API wasn't
documented, they preserved the documented API ;-)

The following patch (committed in the Darcs repository) should re-add
support for exporting default routes on recent Linux kernels.

Juliusz

Sat May 24 01:08:20 CEST 2008  Juliusz Chroboczek <[EMAIL PROTECTED]>
  * Fix parsing of kernel route metric on recent kernels.
  Recent kernels don't include RTA_PRIORITY when it's 0.
Sat May 24 00:59:40 CEST 2008  Juliusz Chroboczek <[EMAIL PROTECTED]>
  * Fix exporting of IPv4 default routes on recent kernels.
  Recent kernels don't include RTA_DST in the default route.  This fixes
  incorrect parsing of such entries.  Reported by Robert Lukan.
diff -rN -u old-babel/kernel_netlink.c new-babel/kernel_netlink.c
--- old-babel/kernel_netlink.c  2008-05-24 01:09:31.0 +0200
+++ new-babel/kernel_netlink.c  2008-05-24 01:09:31.0 +0200
@@ -784,8 +784,13 @@
 memset(&route->prefix, 0, sizeof(struct in6_addr));
 memset(&route->gw, 0, sizeof(struct in6_addr));
 route->plen = rtm->rtm_dst_len;
-if(rtm->rtm_family == AF_INET) route->plen += 96;
-route->metric = KERNEL_INFINITY;
+if(rtm->rtm_family == AF_INET) {
+const char zeroes[4] = {0, 0, 0, 0};
+v4tov6(route->prefix, zeroes);
+route->plen += 96;
+}
+
+route->metric = 0;
 route->ifindex = 0;
 route->proto = rtm->rtm_protocol;
 

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Default gateway problem

2008-05-24 Thread Juliusz Chroboczek
I've received confirmation from Robert that this works.  I guess it's
time to release 0.13...

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Announce: babel 0.13

2008-05-24 Thread Juliusz Chroboczek
Dear all,

Version 0.13 of Babel is now available from

  http://www.pps.jussieu.fr/~jch/software/files/babel-0.13.tar.gz
  http://www.pps.jussieu.fr/~jch/software/files/babel-0.13.tar.gz.asc

For more information about Babel, please see

  http://www.pps.jussieu.fr/~jch/software/babel/

This version makes all data structures dynamic, which removes all
arbitrary limits on Babel's capacity (maximum number of neighbours, of
routes, etc.) and reduces memory usage somewhat.  It also fixes
compatibility with very recent Linux kernels.

Enjoy,

Juliusz

24 May 2008: babel 0.13

  * Removed all arbitrary limits (interfaces, neighbours, routes,
xroutes and sources).
  * Fixed a bug that prevented expiration of stale sources.
  * Updated the kernel interface to work with recent Linux kernels.
  * More tweaks to the order in which updates are sent.


pgpJTaPzCuEez.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Babel and OpenWRT

2008-05-24 Thread Juliusz Chroboczek
To whoever commits Babel into OpenWRT,

I have some clean initscripts for Babel 0.13 under OpenWRT.  I've sent
a copy to Florian, but I'm not sure he'll be the one doing the commit.

Please ask me for a copy of the initscript before committing 0.13 into
OpenWRT.

Thanks,

Juliusz


pgpvFdEaBer2U.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] ANNOUNCE: babel 0.13

2008-05-24 Thread Juliusz Chroboczek
Dear all,

Version 0.13 of Babel is now available from

  http://www.pps.jussieu.fr/~jch/software/files/babel-0.13.tar.gz
  http://www.pps.jussieu.fr/~jch/software/files/babel-0.13.tar.gz.asc

For more information about Babel, please see

  http://www.pps.jussieu.fr/~jch/software/babel/

This version makes all data structures dynamic, which removes all
arbitrary limits on Babel's capacity (maximum number of neighbours, of
routes, etc.) and reduces memory usage somewhat.  It also fixes
compatibility with very recent Linux kernels.

Enjoy,

Juliusz

24 May 2008: babel 0.13

  * Removed all arbitrary limits (interfaces, neighbours, routes,
xroutes and sources).
  * Fixed a bug that prevented expiration of stale sources.
  * Updated the kernel interface to work with recent Linux kernels.
  * More tweaks to the order in which updates are sent.


pgpL10e4xUMM4.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] ANNOUNCE: ahcpd-0.5

2008-05-25 Thread Juliusz Chroboczek
Dear all,

Ahcpd-0.5 is now available from

  http://www.pps.jussieu.fr/~jch/software/files/ahcpd-0.5.tar.gz
  http://www.pps.jussieu.fr/~jch/software/files/ahcpd-0.5.tar.gz.asc

For more informatin about ahcpd, a configuration protocol for mesh
networks, please see

  http://www.pps.jussieu.fr/~jch/software/ahcp/

The main news in this version is that ahcpd should now survive
interfaces going up and down or being deleted and created by the
kernel.  Additionally, ahcpd can now daemonise itself, which greatly
simplifies the writing of initscripts.

If you intend to commit this version into OpenWRT, please drop me
a note, I have some proper initscripts ready.

Juliusz Chroboczek
25 May 2008: ahcpd 0.5

  * Made ahcpd gracefully survive interfaces going up/down or being
renumbered, as usually happens when tunnels or VPNs are started or
stopped.
  * Implemented the ability to run as a daemon.
  * Implemented the ability to try multiple stateful servers.
  * Implemented the flag -r, which prevents the routing protocol from
being started.


pgp3r3nv66LQV.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] ANNOUNCE: OpenWRT (mipsel) packages of babel and ahcpd

2008-05-26 Thread Juliusz Chroboczek
Available from

  http://www.pps.jussieu.fr/~jch/software/files/

as usual.

Please make sure to edit the /etc/config/* files after installing.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] query regarding AHCP

2008-05-29 Thread Juliusz Chroboczek
> I went through the AHCP link
> http://www.pps.jussieu.fr/~jch/software/ahcp/ and found the line
> stating that "It is currently able to configure hosts for static
> routing, for use of the OLSR protocol, or for use of the Babel
> protocol."  Does that mean it only supports stating routing and not
> adaptive routing?

AHCP supports static routing and dynamic routing using either Babel or OLSR.

In other words, it will either configure a static route, or configure
the babel daemon, or the olsrd daemon.

Juliusz


___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Babel - bug ?

2008-06-07 Thread Juliusz Chroboczek
> I am using default configuration of babel, just -l and -C are added
> on both sides. I really dont know if is this a bug, or I am doing
> something wrong. But is strange because, everything is working
> good. But in third maybe fourth iteration I came to that problem. As
> I can see in debug output, metric is 65535. If I restart babel
> everything is OK than.

The link cost estimation hasn't converged yet.  By default, Babel uses
a very large hello interval on wired links (see the -H option in the
manual page), you may want to reduce it if you want faster convergence.

As a rough guide, link state convergence will happen after 3 hello
intervals.  (Once link state has converged, route convergence will
happen faster -- 100 ms per hop is typical.)

> Do you have any suggestions for using your protocol over limited
> bandwidth connection, or any other suggestion for my case ?

Babel should work fine at 38 kbps, even if you reduce the hello interval.

One thing you may want to experiment with is the -l flag, which will
cause Babel to react immediately to notifications from the link layer
(LCP in your case).  Since I don't really understand cross-layer
notifications, it's marked as experimental in the manual page; let me
know how it works for you.

> The only thing I am really missing its security, do you have any
> plan to implement security in babel. Or is there any easy way I can
> do it my self(begginer in C), if you dont plan. Lets say symmetrical
> key would be enough, as it is in olsr protocol.

What is your attack model?  I.e. what are you trying to protect against?

If your link is insecure, an attacker may use simpler techniques to
poison your network than participating in the routing protocol.  It
doesn't make much sense to secure Babel if you haven't secured ARP.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Babel local-interface branch updated

2008-06-11 Thread Juliusz Chroboczek
Alex, Pejman,

(Writing in English, as babel-users is in CC.)

I've just brought the babel-local-interface branch up-to-date with the
trunk.  You may want to run darcs pull.

Regards,

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] ahcpd babel wireless mesh network

2008-06-18 Thread Juliusz Chroboczek
Hi Bogdan, and sorry for the delay.

> After reading the documentation and the readme and the --help to
> both ahcpd and babel, I still can't make it work.

It looks like you don't understand the syntax of IPv6 addresses.  May
I recommend that you read

  http://en.wikipedia.org/wiki/IPv6#Notation


> ahcp-generate -p fde6:20f5:c9ac:358: -P babel -n fde6:20f5:c9ac:358:1 -g 
> 192.168.1.1 > ahcp.dat

That should be

  ahcp-generate -p fde6:20f5:c9ac:358:: -P babel -n fde6:20f5:c9ac:358::1 > 
ahcp.dat

You don't need to specify a static gateway for Babel.  (As a side
note, ``-g'' only applies to IPv6 routes, as stateless autoconf is not
supported for IPv4.)

> ahcpd -d 99 -a /tmp/ahcp.dat -S 192.168.1.200 192.168.1.254 /tmp/ahcp-leases 
> -n -c /tmp/dummy-config.sh wl0 br-lan

You should not run ahcp or babel on a bridged interface.  You should
modify the OpenWRT scripts to make sure not to create a bridge.

Which version of OpenWRT are you running ?  Whiterussian or Kamikaze ?

> the console messages on the server
> "creat(unique_id): No such file or directory

# mkdir /var/lib

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] autoritative statefull ahcpd question

2008-06-18 Thread Juliusz Chroboczek
> In the documentation at line 84 it says "An authoritative peer never
> sends AHCP queries", but in the readme at line 69 it says "By
> default, the authoritative peers will be configured by AHCP just
> like the other ones".

All peers get configured from the authoritative data.  A non-auth peer
will send queries to get the data; an auth peer already has the data,
so it doesn't need to send queries.

> Why is the chapter 3 from the documentation missing?

Because I'm in the process of redesigning ahcp from scratch.  The new
protocol is much simpler and more modular, but somewhat more chatty.

> So do I have to put a "-c /dummy-config.sh" and "-n" to obtain
> a statically configured ahcpd authoritative stateful server?

Yes.

> Is the babel daemon started by ahcpd

Yes.

> Is the file "/etc/ahcp/ahcp-babel-options" necessary on a gateway
> with babel routing? is it created by the ahcpd daemon?

No.  It's only needed if you want to pass extra options to babel.
Normally, it's not needed.

> Also is the file "/var/lib/ahcp-unique-id" necessary on
> a authoritative stateful ahcpd server that is gatway? is it created
> automatically?

Yes, it's created automatically.  But /var/lib must exist.

> although ahcpd does configure strange ipv6 on the network
> (::213:e8ff:feec:9a65 on a wireless client aldo the prefix in the
> autoritative file is the one in the README)

See my previous mail -- you omitted the double colons ``::''.

Juliusz



___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] ahcpd babel wireless mesh network

2008-06-18 Thread Juliusz Chroboczek
>> ahcp-generate -p fde6:20f5:c9ac:358: -P babel -n fde6:20f5:c9ac:358:1 -g 
>> 192.168.1.1 > ahcp.dat
>
> That should be
>
>   ahcp-generate -p fde6:20f5:c9ac:358:: -P babel -n fde6:20f5:c9ac:358::1 > 
> ahcp.dat

My bad -- the typo was in the README.  All my apologies.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Babel slides

2008-06-26 Thread Juliusz Chroboczek
I've got some slides about Babel (in French) for a talk that was
finally canceled.  Let me know (by private mail) if you want a copy.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] ANNOUNCE: babel 0.14

2008-07-01 Thread Juliusz Chroboczek
Dear all,

You will find version 0.14 of the Babel routing daemon on

  http://www.pps.jussieu.fr/~jch/software/files/babel-0.14.tar.gz
  http://www.pps.jussieu.fr/~jch/software/files/babel-0.14.tar.gz.asc

For more information about Babel, please see

  http://www.pps.jussieu.fr/~jch/software/babel/

Babel 0.14 will automatically notice a bridged interface, print
a warning, and disable all wired optimisations.  This should get rid
of bug reports from people who mistakenly run Babel over the ``lan''
interface in OpenWRT.

0.14 lifts the last remaining artificial limit -- on the number of
kernel routes that we're able to parse when redistributing.  (Yep,
somebody redistributed the whole default-free IPv6 routing table into
our RIPng domain -- 0.13 didn't like that very much, but it didn't
crash, it just ignored the extra routes.)

It also fixes a minor bug that would cause routes to be ignored until
the next scheduled update after a redistributed route is retracted.
You should not notice the difference unless you're doing some weird
things with route redistribution.

The default values for the hello and update intervals have been
decresed somewhat, and we now use unmodified ETX as the metric on
wireless links.

Finally, this version is robust against clock stepping if run on
a sufficiently recent Linux kernel.  You should now be able to step
your clock to your heart's content without Babel misbehaving, which is
rather important on RTC-less routers.

Enjoy,

Juliusz

1 July 2008: babel 0.14

  * Use POSIX clocks if available to protect against clock stepping.
  * Made babel use available internal routes straight away when the
set of redistributed routes changes.
  * Lifted the arbitrary limit on the number of kernel routes.
  * Changed the routing metric used on wireless links to plain ETX.
  * Bridges are now automatically detected and treated as potential
wireless interfaces.
  * Reduced the default hello interval.


pgpdmDGdnQX7R.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Convergence problem

2008-07-02 Thread Juliusz Chroboczek
Thanks for the debugging dumps, I'll try to find the time to study them.

> I also have one question, is there any way, to add/remove interfaces
> when Babel is already running ?

Yes, just list all of the possible interfaces on the Babel command
line, even if they don't currently exist.  Babel will automatically
notice when they come into existence, and start running over them.

So you run something like

  babel eth0 ppp0 ppp1 ppp2 ppp3 ppp4

and Babel will notice if any of the above-mentioned interfaces comes
into existence.

Note that Babel only polls the kernel for new interfaces every 30
seconds.  If you add a new interface and want Babel to notice it
straight away, you may want to send Babel a SIGUSR2 in order for it to
notice it straight away.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Convergence problem

2008-07-03 Thread Juliusz Chroboczek
> I am testing Babel on ppp links, over USB/serial. And i have
> problem, if I unpluged cable for few seconds, so ppp link is still
> up, then I have problems, output logs from both sides are in files
> debug.*.

I've made a silly typo in 0.14, that will severely break reconvergence
in the case when the proactive features don't trigger (by up to 70
seconds).  The patch is attached.

I'll release 0.15 by tonight, I've got some other minor tweaks to
make.  Robert, thanks a lot for your help.

Juliusz

Thu Jul  3 16:25:12 CEST 2008  Juliusz Chroboczek <[EMAIL PROTECTED]>
  * Fix typo in the computation of the update interval.
diff -rN -u old-babel/babel.c new-babel/babel.c
--- old-babel/babel.c   2008-07-03 16:25:33.0 +0200
+++ new-babel/babel.c   2008-07-03 16:25:33.0 +0200
@@ -269,7 +269,7 @@
 update_interval =
 MIN(MAX(wireless_hello_interval * 5, wired_hello_interval),
 7);
-update_interval = MAX(update_interval, 70);
+update_interval = MIN(update_interval, 70);
 
 if(seqno_interval <= 0)
 /* This should be slightly less than the self_update_interval */


___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Convergence problem

2008-07-03 Thread Juliusz Chroboczek
> Thu Jul  3 16:25:12 CEST 2008  Juliusz Chroboczek <[EMAIL PROTECTED]>
>   * Fix typo in the computation of the update interval.

Sorry, that's complete nonsense.  Please don't apply this patch.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Convergence problem

2008-07-03 Thread Juliusz Chroboczek
> I am testing Babel on ppp links, over USB/serial. And i have
> problem, if I unpluged cable for few seconds, so ppp link is still
> up, then I have problems, output logs from both sides are in files
> debug.*.  But if I wait a little more, so ppp link goes down, and
> then I bring it up(ppp) I dont have problems.

Okay, I think I found the issue.  Your configuration is weird, and
there's a case I didn't envision in Babel.

The issue is that your implementation of ppp switches link-local
addresses on every up/down event.  IPv6 link-local addresses are
supposed to remain stable, so this is why Babel gets confused by this
case.  I'll implement a workaround, but you really should try to
ensure that your link-local addresses remain stable if possible.

Who's adding the link-local addresses here?  Is it a bug in your
ppp.up scripts, or one in the kernel?

FWIW, Babel will recover from this situation, but it will take a long
time -- roughly 16 times the hello interval plus 30 seconds, which in
your case amounts to over a minute.

Here's what's going on on the SuSE side:

> Neighbour 2001:1470:fffe:60:20d:b9ff:fe14:c524 at fe80::e0f7:19b6:d257:4ac1 
> dev ppp0 reach ff00 rxcost 96 txcost 96.

The alix board, with router id c524 (look at the last 4 digits),
appears at the link-local address 4ac1.

> Neighbour 2001:1470:fffe:60:20d:b9ff:fe14:c524 at fe80::e0f7:19b6:d257:4ac1 
> dev ppp0 reach 3fc0 rxcost 65535 txcost 96.

The alix board is still there, but it's now been detected as
unreachable (rxcost infinity).

> Neighbour 2001:1470:fffe:60:20d:b9ff:fe14:c524 at fe80::24ef:89ae:1360:698 
> dev ppp0 reach c000 rxcost 96 txcost 65535.
> Neighbour 2001:1470:fffe:60:20d:b9ff:fe14:c524 at fe80::e0f7:19b6:d257:4ac1 
> dev ppp0 reach 1fe0 rxcost 65535 txcost 96.

The alix board appears again, but with a different link-local address
698.  Babel fails to notice it's the same board.

On the Alix side:

> Received ihu 96 for 2001:1470:fffe:60:20d:b9ff:fe14:c524 from 
> 2001:1470:fffe:1:219:b9ff:fe6d:4ea1 (fe80::1065:9660:282c:d985) 900.

Fine, the SuSE machine is saying that it can hear the board again...

> Received ihu 65535 for 2001:1470:fffe:60:20d:b9ff:fe14:c524 from 
> 2001:1470:fffe:1:219:b9ff:fe6d:4ea1 (fe80::1065:9660:282c:d985) 900.

...and then immediately complains that it cannot hear it.

In fact, the SuSE machine is sending two distinct IHU messages -- one
with metric 96 to the second link-local address, and one with metric
infinity to the former one.  Unfortunately, as it stands right now,
the protocol cannot distinguish between the two.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Convergence problem

2008-07-03 Thread Juliusz Chroboczek
> The issue is that your implementation of ppp switches link-local
> addresses on every up/down event.  IPv6 link-local addresses are
> supposed to remain stable, so this is why Babel gets confused by this
> case.  I'll implement a workaround, but you really should try to
> ensure that your link-local addresses remain stable if possible.

Please try the attached patch, and let me know if it fixes your issue.

Juliusz

Thu Jul  3 17:21:04 CEST 2008  Juliusz Chroboczek <[EMAIL PROTECTED]>
  * Protect against duplicate neighbours.
diff -rN -u old-babel/neighbour.c new-babel/neighbour.c
--- old-babel/neighbour.c   2008-07-03 17:21:33.0 +0200
+++ new-babel/neighbour.c   2008-07-03 17:21:33.0 +0200
@@ -48,6 +48,17 @@
 return NULL;
 }
 
+struct neighbour *
+find_neighbour_by_id(const unsigned char *id, struct network *net)
+{
+struct neighbour *neigh;
+FOR_ALL_NEIGHBOURS(neigh) {
+if(memcmp(id, neigh->id, 16) == 0 && neigh->network == net)
+return neigh;
+}
+return NULL;
+}
+
 void
 flush_neighbour(struct neighbour *neigh)
 {
@@ -84,6 +95,22 @@
 neigh = NULL;
 }
 }
+
+neigh = find_neighbour_by_id(id, net);
+if(neigh) {
+if((neigh->reach & 0xE000) == 0) {
+/* The other neighbour is probably obsolete. */
+flush_neighbour(neigh);
+neigh = NULL;
+} else {
+fprintf(stderr, "Duplicate neighbour %s (%s and %s)!\n",
+format_address(id),
+format_address(neigh->address),
+format_address(address));
+return NULL;
+}
+}
+
 debugf("Creating neighbour %s (%s).\n",
format_address(id), format_address(address));
 

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] ahcpd network ipv4 problem

2008-07-03 Thread Juliusz Chroboczek
> I've kept busy with some exams

I hope it went well.

> Now my Kamikaze 7.09 Linksys router gives right ipv6-s in the network.

Good.

> But still dosen't provide ipv4 adresses.

> but when i try to ping6 the router from a wireless laptop it prints
> "no route to host".

Ahcpd won't work until you fix this.  Ahcpd uses the Ipv6 routing
infrastructure to contact the stateful server.

Check if Babel is running, and if your ipv6 routing tables are okay.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Convergence problem

2008-07-07 Thread Juliusz Chroboczek
> But problem with convergence is still present, not always but sometimes.

I understand that:

 - the rxcost on the Alix board remains stuck at infinity;
 - and hence the txcost on the SuSE PC is at infinity too.

If so, it looks like an issue with the link quality estimation.  I've
found one typo in this code, for which I'm attaching a fix; let me
know if it fixes your issues.

If it doesn't, I'd be glad if you could confirm that the Alix board is
receiving the Hellos from the PC when the problem happens (tcpdump
should show if you're receiving the Babel packets).

Juliusz

Mon Jul  7 20:35:55 CEST 2008  Juliusz Chroboczek <[EMAIL PROTECTED]>
  * Fix typo when handling late hellos.
  No hello is -1, not 0.
diff -rN -u old-babel/neighbour.c new-babel/neighbour.c
--- old-babel/neighbour.c   2008-07-07 20:39:36.0 +0200
+++ new-babel/neighbour.c   2008-07-07 20:39:36.0 +0200
@@ -174,7 +174,7 @@
packets during a link outage.  Ignore it, but reset
the expected seqno. */
 neigh->hello_seqno = hello;
-hello = 0;
+hello = -1;
 missed_hellos = 0;
 }
 rc = 1;

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] Loose ends with Babel

2008-07-07 Thread Juliusz Chroboczek
There are a few things that keep nagging me about the current protocol
spec and implementation, and that I may decide to fix at some point.
This is more of a note to self then a public discussion, but don't
hesitate to chime in if you have any comments.


1. The IHU definition is broken

Babel identifies routers with router ids, and interfaces with
link-local addresses.

Link quality is a property of a pair of interfaces, not a pair of
routers.  The IHU message should be carrying an interface id (a
link-local address) rather than a router-id.  This is the fundamental
reason for the previous issue reported by Robert (the one with
multiple link-local addresses).

(I'm not so sure about HELLO messages; keeping the router id in them
 might be a good idea, in order to simplify debugging.)

Fixing that will require an incompatible protocol revision.  It's
definitely a good idea.


2. The handling of idle interfaces is idiosyncratic

Idle interfaces (see -i in the manual page) are handled in an
idiosyncratic manner, by a bunch of ifs sprinkled throughout the code.
It'd be nice to clean up this mess.


3. The handling of down interfaces is idiosyncratic

The handling of down interfaces (interfaces that are currently down,
or, if -l was specified, that report no link sense) are handled
idiosyncratically, by a bunch of ifs throughout the code.  I'm not
sure this can be fixed, cross-layer indications are notoriously tricky
to do in a modular way.


4. The protocol is bloated

The protocol currently uses fixed-length 24-byte messages, large
enough to contain an IPv6 address.  This means its sweet and simple,
but makes some messages somewhat larger than they could be.

Switching to variable-length messages (smaller for IPv4 than for IPv6)
will reduce the size of update messages by 2/3 for pure IPv4 networks,
and by 1/3 on mixed-stack networks.  I've done a pretty good job of
reducing unnecessary update traffic, so I'm not sure that it's really
worth the trouble.

This, again, will require an incompatible change, and I'm not sure
it's a good idea.


Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] Convergence problem

2008-07-08 Thread Juliusz Chroboczek
> It seems that patch fixed the problem. I dont see that kind problem anymore. 

Excellent news.  Let me know if you notice anything else.

Thanks a lot for your debugging,

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] FW: Loose ends with Babel

2008-07-08 Thread Juliusz Chroboczek
>From my point of view, it would be nice to have shorter massages,
>because I am using protocol on very limited bandwidth link, also is
>better to have shorter messages anyway.

Well, if you're running over low-throughput links, you're probably
already doing link-layer compression (PPP BSD or Deflate compression,
most likely), so encoding Babel messages in a more compact manner
will buy you very little.

I'm really not convinced either way, I guess we'll need more
experience and larger deployments in order to know.

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


[Babel-users] ANNOUNCE: babel 0.15

2008-07-08 Thread Juliusz Chroboczek
Dear all,

Babel 0.15 is now available on

  http://www.pps.jussieu.fr/~jch/software/files/babel-0.15.tar.gz
  http://www.pps.jussieu.fr/~jch/software/files/babel-0.15.tar.gz.asc

For more information about Babel, please see

  http://www.pps.jussieu.fr/~jch/software/babel/

This version fixes a rather unpleasant bug that could cause link
quality to remain stuck at infinity under some circumstances.  It also
recovers faster when a neighbour has the bad taste to change its
link-local address (e.g. when running some implementations of PPP) and
further improves scalability when redistributing massive amounts of
external routes.

Juliusz

8 July 2008: babel 0.15:

  * Fixed a bug that could break link-quality estimation on yo-yo links.
  * Protect against duplicate neighbour ids on the same interface.
  * More tweaks to improve scaling with the number of kernel routes.
  * Tweaked the default update interval.



pgppblgrJFpqQ.pgp
Description: PGP signature
___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


Re: [Babel-users] FW: Loose ends with Babel

2008-07-08 Thread Juliusz Chroboczek

> From my point of view, it would be nice to have shorter massages,
> because I am using protocol on very limited bandwidth link,

Speaking about that, Robert, perhaps you could tell us more about your
setup?  You appear to be doing unusual stuff (I have trouble imagining
why you'd prefer PPP over serial to an Ethernet link).

> also is better to have shorter messages anyway.

I'll expand about that a little.

In Babel, I distinguish between messages and packets.  A message is
always 24 bytes long, and can carry one route, IPv4 or IPv6.

A packet consists of an 8-byte header followed with an arbitrary
number of messages followed by an optional cryptographic signature
(not implemented at the current time).

Now 24 bytes for an IPv4 route is overkill; it could fit in 8 bytes.
If you're compressing your PPP link, you don't care -- the extra data
are mostly zeroes, and will compress beautifully.  What's more, Babel
sends reachability data at very large intervals (there are other
mechanisms that ensure that the routing is mostly up-to-date usually,
and that even when it isn't, the network keeps working, although not
optimally).

The alternative would be to encode the Babel protocol as
``type-length-value'' triples.  This would make it more complex, more
difficult to parse, but would save quite a bit of space for IPv4
routes.  I'm not sure if it's worth my while; we'll only know when we
deploy larger Babel networks.

Regards,

Juliusz

___
Babel-users mailing list
Babel-users@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/babel-users


  1   2   3   4   5   6   7   8   9   10   >