Hi!
I've been testing BIRD's RIPng and found a number of problems:
Two of them are trivial: RIPng port is 521 and not 520, and the only version defined so far is 1. The patch below solves these two.
Now the following two problems are more serious and affect also the IPv4 RIP implementation:
1. RIP should automatically advertise all connected networks to its neighbours (modulo split horizon). BIRD's RIP advertises only the routes found in the main BIRD routing table - and the "connected" routes are not there even though the kernel protocol is configured to "import all".
2. The updates should be sent every 30 seconds, and indeed this is what seems to be set in rip.c. Without changing this default, I see the updates coming in irregular intervals around 50 seconds (see below).
Well, patch looks okay, but I guess that IPV6 support should only be added when it (at least somehow) works... Pavel
No. Time Source Destination Protocol Info 1 0.000000 2001:718:1a02:7::1 ff02::9 RIPng version 1 Response 2 50.991634 2001:718:1a02:7::1 ff02::9 RIPng version 1 Response 3 101.983225 2001:718:1a02:7::1 ff02::9 RIPng version 1 Response 4 153.974728 2001:718:1a02:7::1 ff02::9 RIPng version 1 Response 5 198.967385 2001:718:1a02:7::1 ff02::9 RIPng version 1 Response
Cheers, Lada
===============================PATCH==================================== diff -uNr bird-1.0.11.orig/proto/rip/rip.c bird-1.0.11/proto/rip/rip.c --- bird-1.0.11.orig/proto/rip/rip.c 2004-07-15 19:28:13.000000000 +0200 +++ bird-1.0.11/proto/rip/rip.c 2005-04-20 09:56:54.484233854 +0200 @@ -146,7 +146,11 @@ DBG( "Preparing packet to send: " );
packet->heading.command = RIPCMD_RESPONSE; +#ifndef IPV6 packet->heading.version = RIP_V2; +#else + packet->heading.version = RIP_V1; +#endif packet->heading.unused = 0;
i = !!P_CF->authtype; @@ -963,7 +967,11 @@ init_list(&c->iface_list); c->c.preference = DEF_PREF_RIP; c->infinity = 16; +#ifndef IPV6 c->port = 520; +#else + c->port = 521; +#endif c->period = 30; c->garbage_time = 120+180; c->timeout_time = 120;
-- Boycott Kodak -- for their patent abuse against Java.