mirror_frr/ospfd
Dinesh Dutt 91e6a0e5ca ospf: Convert MAX_AGE LSA list to tree
Store the MaxAge LSA list in a tree instead of a linked list for efficient access.
Walking the list can be quite inefficient in some large systems and under certain tests.

ospfd maintains the list of LSA's that have been MaxAge'd out in a separate
linked list for removal by a remover/walker thread. When a new LSA is to be
installed, the old LSA is ejected and when it is ejected, the MaxAge LSA list
is traversed to ensure that the old LSA is also removed from this list if it
exists on this list.

When a large number (> 5K) MaxAge LSAs are bombarding the system, walking this
list takes a significant time causing timers to fire and actions to be taken
such as expiring neighbors due to expiry of DeadInterval (especially when timer
is really low, <= 12s), creating a spiral of instability.

By making this MaxAge LSA list be a tree, this problem is mitigated.

Signed-off-by: Dinesh Dutt <ddutt@cumulusnetworks.com>
Reviewed-by: Ayan Banerjee <ayan@cumulusnetworks.com>
Reviewed-by: Scott Feldman <sfeldma@cumulusnetworks.com>
Reviewed-by: Shrijeet Mukherjee <shm@cumulusnetworks.com>
Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
2013-01-07 09:59:43 -08:00
..
.gitignore [administrivia] Git should ignore backup files and .loT files 2008-08-22 20:00:46 +01:00
ChangeLog.opaque.txt Initial revision 2003-02-03 16:31:16 +00:00
Makefile.am build: correct libtool parameter used within Makefiles 2012-09-25 05:56:00 +02:00
ospf_abr.c ospfd: respect max-metric over configured cost for summary LSAs 2012-10-25 10:15:58 -07:00
ospf_abr.h 2005-09-29 Alain Ritoux <alain.ritoux@6wind.com> 2005-09-29 13:52:57 +00:00
ospf_api.c *: use array_size() helper macro 2012-10-25 10:15:59 -07:00
ospf_api.h 2005-05-06 Paul Jakma <paul.jakma@sun.com> 2005-05-06 21:37:42 +00:00
ospf_apiserver.c ospfd: remove some buggy extra ';' symbols. 2012-11-05 15:15:57 -05:00
ospf_apiserver.h ospf: Fix OSPF API and ospf-te LSA refreshers to match recent API change 2011-04-13 15:13:33 +01:00
ospf_asbr.c ospfd: avoid redundant lookup in ospf_redistribute_withdraw 2011-12-06 15:02:52 +04:00
ospf_asbr.h [ospfd] CID #28, remove another ospf_lookup call - ospf_redistribute_withdraw 2006-05-12 23:02:46 +00:00
ospf_ase.c ospfd: address more trivial compiler warnings 2012-01-08 11:43:07 +00:00
ospf_ase.h 2005-05-06 Paul Jakma <paul.jakma@sun.com> 2005-05-06 21:37:42 +00:00
ospf_dump.c ospfd: introduce ospf_auth_type_str[] 2012-03-12 11:05:34 +01:00
ospf_dump.h ospfd: introduce ospf_auth_type_str[] 2012-03-12 11:05:34 +01:00
ospf_flood.c ospfd: improve fix to CVE-2011-3326 (BZ#586) 2011-11-15 20:50:48 +04:00
ospf_flood.h ospfd: Fix maxage/flush to not try flood twice, remember maxages for longer 2010-12-08 17:13:19 +00:00
ospf_ia.c [ospfd] CID #14, NULL check ospf->backbone before use, ospf_update_router_route 2006-05-12 23:04:45 +00:00
ospf_ia.h 2005-05-06 Paul Jakma <paul.jakma@sun.com> 2005-05-06 21:37:42 +00:00
ospf_interface.c ospfd: Optimize and improve SPF nexthop calculation 2012-07-25 18:07:30 +02:00
ospf_interface.h ospfd: Optimize and improve SPF nexthop calculation 2012-07-25 18:07:30 +02:00
ospf_ism.c ospfd: Unify router and network LSA refresh logic with general refresher 2010-12-08 17:13:19 +00:00
ospf_ism.h [ospfd] Make OSPF_ISM_TIMER_OFF macro safer. 2005-11-16 19:33:22 +00:00
ospf_lsa.c ospf: Convert MAX_AGE LSA list to tree 2013-01-07 09:59:43 -08:00
ospf_lsa.h ospfd: adjust OSPF_ROUTER_LSA_MIN_SIZE for VL case 2012-04-11 23:18:29 +02:00
ospf_lsdb.c ospf: Convert MAX_AGE LSA list to tree 2013-01-07 09:59:43 -08:00
ospf_lsdb.h ospf: Convert MAX_AGE LSA list to tree 2013-01-07 09:59:43 -08:00
ospf_main.c *: use array_size() helper macro 2012-10-25 10:15:59 -07:00
ospf_neighbor.c [cleanup] Convert XMALLOC/memset to XCALLOC 2009-06-12 17:07:49 +01:00
ospf_neighbor.h [ospfd] Additional NSM neighbour state change stats/information 2006-07-25 20:44:12 +00:00
ospf_network.c lib: simplify interface of setsockopt_multicast_ipv4(). 2011-09-27 21:37:35 +04:00
ospf_network.h Bug #362 is fixed now. 2007-08-21 16:32:56 +00:00
ospf_nsm.c ospfd: Compile fix for opaque support 2011-03-22 15:23:55 +00:00
ospf_nsm.h ospfd: Reset neighbour inactivity timer for any packet arrival 2010-12-08 17:11:18 +00:00
ospf_opaque.c ospfd: Compile fix for opaque support 2011-03-22 15:23:55 +00:00
ospf_opaque.h ospfd: Compile fix for opaque support 2011-03-22 15:23:55 +00:00
ospf_packet.c lib: improve fletcher checksum validation 2012-10-25 10:15:58 -07:00
ospf_packet.h ospfd: introduce ospf_lsa_minlen[] (BZ#705) 2012-03-12 11:05:28 +01:00
ospf_route.c ospf: suppress delete using replacement 2013-01-07 09:59:40 -08:00
ospf_route.h ospfd: blackhole route removal for area range 2012-10-25 10:15:58 -07:00
ospf_routemap.c [compiler] miscellaneous trivial compiler warning fixes 2006-01-19 20:16:55 +00:00
ospf_snmp.c snmp: let handlers accept OID from a lesser prefix 2012-06-25 19:03:23 +02:00
ospf_snmp.h 2005-09-29 Alain Ritoux <alain.ritoux@6wind.com> 2005-09-29 16:34:30 +00:00
ospf_spf.c Revert "ospfd: Do not fall back to intervening router." 2012-10-19 11:49:09 +01:00
ospf_spf.h [ospfd] Fix SPF of virtual-links 2006-05-04 07:32:57 +00:00
ospf_te.c ospf: Fix OSPF API and ospf-te LSA refreshers to match recent API change 2011-04-13 15:13:33 +01:00
ospf_te.h 2005-11-03 Paul Jakma <paul.jakma@sun.com> 2005-11-03 09:08:29 +00:00
ospf_vty.c ospf: Convert MAX_AGE LSA list to tree 2013-01-07 09:59:43 -08:00
ospf_vty.h 2005-05-06 Paul Jakma <paul.jakma@sun.com> 2005-05-06 21:37:42 +00:00
ospf_zebra.c ospfd: use ZEBRA_NEXTHOP_IPV4_IFINDEX 2012-07-25 18:07:45 +02:00
ospf_zebra.h ospfd: justify ospf_default_originate_timer() 2012-01-08 11:46:11 +00:00
OSPF-ALIGNMENT.txt add note about alignment in LS updates due to opaque LSAs. 2004-11-17 17:59:52 +00:00
OSPF-MIB.txt spelling: s/supress/suppress/ 2004-11-05 13:24:12 +00:00
OSPF-TRAP-MIB.txt Initial revision 2002-12-13 20:15:29 +00:00
ospfd.c ospf: Convert MAX_AGE LSA list to tree 2013-01-07 09:59:43 -08:00
ospfd.conf.sample Initial revision 2002-12-13 20:15:29 +00:00
ospfd.h ospf: Convert MAX_AGE LSA list to tree 2013-01-07 09:59:43 -08:00