Bird RIP does not send some packages

Ondrej Filip feela at network.cz
Thu Feb 21 00:46:55 CET 2013


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
>>
>>  
>>
> 




More information about the Bird-users mailing list