On 5.2.2014 11:13, Tore Anderson wrote:
I've noticed that BIRD doesn't withdraw (i.e., advertising them with metric 16) RIP routes when they disappear from the routing table. This means that the neighbour router ends up waiting for the route to time out before ceasing to send traffic to the BIRD router, rather than doing so immediately.
Hi Tore, unfortunately, the current RIP code is broken. I tried to fix this in git branch rip, but hasn't been merged into master yes. But if you have some capacity to test this branch, it would be very helpful. Ondrej
I'm running v1.4.0 with a bird.conf containing:
log syslog { info, remote, warning, error, auth, fatal }; router id 192.0.2.1; protocol device {} protocol direct {} protocol rip { interface "*" { mode nolisten; ttl security on; }; import none; export all; }
To reproduce the issue, look at "tcpdump -v port 520" while doing:
1) ip address add 192.0.2.2/32 dev lo -> a triggered update appears (advertising 192.0.2.2/32) 2) ip address delete 192.0.2.2/32 dev lo -> a triggered update doesn't appear (it should have)
For what it's worth, step #2 does increase the RIP protocol's "Export withdraws" counter. This issue also applies to RIPng/bird6.
AFAICT, not sending these triggered updates immediately is a standards violation. Quoting RFC 1812 F.2: «A router MUST send a triggered update when routes are deleted or their metrics are increased.» Also see RFC 2453 section 3.10.1.
Tore