]> git.puffer.fish Git - mirror/frr.git/commit
BGP: Fix nexthop registration churn
authorvivek <vivek@cumulusnetworks.com>
Sun, 15 Nov 2015 18:21:12 +0000 (10:21 -0800)
committervivek <vivek@cumulusnetworks.com>
Sun, 15 Nov 2015 18:21:12 +0000 (10:21 -0800)
commit25c38b240e56e41c0742c5260e72c1dd30dffbc7
tree3ee640c4f3942b35bd0c53d224b257684041846d
parentc52d605046bb0e84775c4c18f992598e1e37f2ba
BGP: Fix nexthop registration churn

When a BGP nexthop is registered for resolution, if it is learnt from an
EBGP peer and other conditions warrant (non-multihop peer and connected check
is not disabled), the registration includes a flag that indicates that the
nexthop must be resolved only if it is directly connected. In peculiar
situations - e.g., third-party nexthop or policy configuration - the same
nexthop could be learnt from an IBGP peer, and in general, nexthops learnt
from IBGP peers can be resolved over any route. This scenario was causing
a churn in the nexthop registration with the 'must-be-connected' flag being
repeatedly toggled as routes are received from both peers. The registrations
would in turn trigger significant processing.

The fix is to treat 'must-be-connected' as an overriding condition.

The repeated registration and related processing was also causing heavy memory
usage by BGP - for memory buffers used to hold registration information. This
fix will ensure that is no longer the case.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Ticket: CM-8005, CM-8013
Reviewed By: CCR-3772
Testing Done: Manual, bgpsmoke (on 2.5-br)
bgpd/bgp_nht.c