]> git.proxmox.com Git - mirror_frr.git/commit
bgpd: speed up "no-hit" withdraws for routeservers
authorDavid Lamparter <equinox@opensourcerouting.org>
Mon, 13 Apr 2015 07:50:00 +0000 (09:50 +0200)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 8 Jun 2016 18:58:21 +0000 (14:58 -0400)
commit6b87f736187d1a40a6b4f8d4fe42716bac09e857
tree2f8032eee91b59957713c5d8cbc7ae32678a7720
parent801e0e14920b7ad91080fb65b07c9283179eaf31
bgpd: speed up "no-hit" withdraws for routeservers

This accelerates handling of incoming Withdraw messages for routes that
don't exist in the table to begin with.  Cisco IOS 12.4(24)T4 has a bug
in this regard - it sends withdraws instead of doing nothing for
prefixes that are filtered.

Pulling up the adj_in removal in Quagga should have no ill effect, but
we can avoid the costly iteration over all rsclients if there was no
adj_in entry.

Performance impact of this change on routeserver with 3 buggy peers,
startup/sync time:

before patch:  143.12 seconds (user cpu)
after patch:     7.01 seconds (user cpu)

Many thanks to Nick Hilliard & INEX for providing real-world test data!

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Acked-by: Paul Jakma <paul@jakma.org>
bgpd/bgp_advertise.c
bgpd/bgp_advertise.h
bgpd/bgp_route.c