On 20.2.2013 16:11, Aleksey Chudov wrote:
Even with default timers RIP miss half of the Response messages.
I checked the code. And exactly what I was afraid happened. I was surprised several times. :-( So I wrote a simple patch that sort of solves the issue you have described. I put that patch into git repository. However the current RIP implementation cannot handle any shorter period than 12. It's because timers are triggered every (period / 6) [+/- 1 sec]. And if there is no update, packets are sent every 6th trigger. So I am sorry for this but this simple patch is all I was able to produce here after quite busy and long day and dinner at a hotel room. RIP code has to be cleaned but that will take some time. Please let me know if this works. Ondrej
protocol rip { interface "gre*" { mode multicast; }; import all; export all; }
# tcpdump -i any -n src host 10.64.16.2 18:56:07.284190 IP 10.64.16.2.520 > 224.0.0.9.520: RIPv2, Response, length: 184 18:57:07.362392 IP 10.64.16.2.520 > 224.0.0.9.520: RIPv2, Response, length: 184 18:58:12.360981 IP 10.64.16.2.520 > 224.0.0.9.520: RIPv2, Response, length: 184 18:59:09.273959 IP 10.64.16.2.520 > 224.0.0.9.520: RIPv2, Response, length: 184 19:00:07.273259 IP 10.64.16.2.520 > 224.0.0.9.520: RIPv2, Response, length: 184
Any ideas?
Best regards, Aleksey
On 19.02.2013 16:29, Aleksey Chudov wrote:
Hello,
I ran into a situation that Bird RIP does not send some packages.
Bird configuration file /etc/bird.conf
log syslog all;
debug protocols all;
protocol device {
scan time 5;
}
protocol direct {
interface "*";
}
protocol kernel {
persist;
scan time 5;
export filter {
if source = RTS_RIP then {
if rip_metric > 15 then reject;
if net ~ 10.0.0.0/8 then accept;
if net ~ 192.168.0.0/16 then accept;
}
reject;
};
}
protocol rip {
period 5;
timeout time 20;
garbage time 30;
interface "gre*" { mode multicast; };
export filter {
if net ~ 10.64.0.0/20 then accept;
reject;
};
}
Log messages from Bird daemon
Feb 19 18:25:00 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:25:03 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:25:06 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:25:12 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:25:13 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:25:15 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:25:20 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:25:26 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:25:28 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:25:33 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:25:36 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:25:38 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:25:44 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:25:48 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:25:50 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:25:56 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:25:58 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:26:00 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:26:03 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:26:05 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:26:06 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:26:07 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:26:13 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:26:16 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:26:19 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:26:21 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:26:25 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:26:31 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:26:33 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:26:39 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:26:42 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:26:45 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:26:46 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:26:49 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:26:51 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:26:52 srvc1 bird: rip1: Broadcasting routing table to gre1
Feb 19 18:26:57 srvc1 bird: rip1: Broadcasting routing table to gre1
And tcpdump for the same period
18:25:00.479028 IP 10.64.16.18.520 > 224.0.0.9.520: RIPv2, Response, length: 24
18:25:03.482132 IP 10.64.16.18.520 > 224.0.0.9.520: RIPv2, Response, length: 184
18:25:15.639027 IP 10.64.16.18.520 > 224.0.0.9.520: RIPv2, Response, length: 24
18:25:26.478329 IP 10.64.16.18.520 > 224.0.0.9.520: RIPv2, Response, length: 184
18:25:48.476297 IP 10.64.16.18.520 > 224.0.0.9.520: RIPv2, Response, length: 184
18:26:05.639030 IP 10.64.16.18.520 > 224.0.0.9.520: RIPv2, Response, length: 184
18:26:13.473560 IP 10.64.16.18.520 > 224.0.0.9.520: RIPv2, Response, length: 24
18:26:16.639029 IP 10.64.16.18.520 > 224.0.0.9.520: RIPv2, Response, length: 24
18:26:21.473055 IP 10.64.16.18.520 > 224.0.0.9.520: RIPv2, Response, length: 184
18:26:31.473049 IP 10.64.16.18.520 > 224.0.0.9.520: RIPv2, Response, length: 24
18:26:33.472083 IP 10.64.16.18.520 > 224.0.0.9.520: RIPv2, Response, length: 44
18:26:39.638030 IP 10.64.16.18.520 > 224.0.0.9.520: RIPv2, Response, length: 24
18:26:45.471432 IP 10.64.16.18.520 > 224.0.0.9.520: RIPv2, Response, length: 184
18:26:57.637236 IP 10.64.16.18.520 > 224.0.0.9.520: RIPv2, Response, length: 24
Are there any ideas why this is happening?
Best regards,
Aleksey