BIRD and RIP
Schmidt, Bernhard
Bernhard.Schmidt at lrz.de
Fri Jun 3 11:15:49 CEST 2011
Hi,
we are using RIP(v2|NG) with very low timers for the one hop between our routers and our Anycast cluster nodes for DNS, NTP and others due to its simplicity. Historically we are running either Quagga or a self-written Python daemon to announce the anycast cluster address. In order to get to use a modern software, I've tried to use BIRD in a new deployment and failed horribly.
RIPv2
=====
protocol rip RIP {
debug all;
period 10;
port 520;
interface "eth0" { metric 3; mode multicast; };
honor neighbor;
authentication none;
import filter { print "importing"; accept; };
export filter { print "exporting"; accept; };
}
Importing routes (which is the thing we don't need) seems to work. Exporting routes does not work at all. I get a single message at startup saying
bird: RIP: Broadcasting routing table to eth0
bird: RIP: Unexpected error at rip transmit: Invalid argument
bird: RIP: Unexpected error at rip transmit: Unknown error 18446744073709551615
and nothing more of that.
RIPng
=====
protocol rip RIPng {
debug all;
period 10;
port 521;
interface "eth0" { metric 3; mode multicast; };
honor neighbor;
authentication none;
import filter { print "importing"; accept; };
export filter { print "exporting"; accept; };
}
Importing routes does not work at all, probably because it has bound the listening socket to the global address on eth0
udp 0 0 2001:4ca0:0:101::81:521 :::* 4895/bird6
Sending routes does not really work either.
a) it completely ignores the period setting and sends every 30 seconds
b) it speaks RIPng on port 520 by default, you have to set it in the config
c) it sets version=2 in the RIPng header (probably because it thinks multicast=RIPv2), which makes all routers ignore the update anyway
So, the big question is, am I doing something horribly wrong or is RIP just broken/untested in BIRD?
Best Regards,
Bernhard
More information about the Bird-users
mailing list