Hi all, 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). 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; -- Ladislav Lhotka, CESNET
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.
Pavel Machek píše v St 20. 04. 2005 v 11:02 +0200:
Well, patch looks okay, but I guess that IPV6 support should only be added when it (at least somehow) works...
Sure, I was misled by the user guide saying that "Both IPv4 (RFC 1723) and IPv6 (RFC 2080) versions of RIP are supported by BIRD". ;^) Anyway, the two latter bugs (period of updates and missing advertisements of connected networks) seem to be in the IPv4 RIP, too. Lada -- Ladislav Lhotka, CESNET
participants (2)
-
Ladislav Lhotka -
Pavel Machek