zebra: Only install a minimal amount of times

The code was installing the nexthop group again using
the NLM_F_REPLACE function causing extremely large
route installation times.  This reduces the time from
installing 1 million routes from sharpd with a nhg
from > 200 seconds ( where I gave up ) to ~15
seconds on my machine for 32 x ecmp.  As a side note 1 million
routes using master sharpd takes ~50 seconds to do
the same thing.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
Donald Sharp 2020-06-11 07:34:18 -04:00 committed by Stephen Worley
parent cc6a0d7d80
commit e3b9c0f2f6

View File

@ -2553,8 +2553,7 @@ void zebra_nhg_install_kernel(struct nhg_hash_entry *nhe)
}
if (CHECK_FLAG(nhe->flags, NEXTHOP_GROUP_VALID)
&& (!CHECK_FLAG(nhe->flags, NEXTHOP_GROUP_INSTALLED)
|| nhe->id >= ZEBRA_NHG_PROTO_LOWER)
&& !CHECK_FLAG(nhe->flags, NEXTHOP_GROUP_INSTALLED)
&& !CHECK_FLAG(nhe->flags, NEXTHOP_GROUP_QUEUED)) {
/* Change its type to us since we are installing it */
if (!ZEBRA_NHG_CREATED(nhe))