]> git.puffer.fish Git - mirror/frr.git/commit
zebra: Fix Startup with > 1k interfaces
authorDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 31 Mar 2016 12:20:53 +0000 (08:20 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 31 Mar 2016 12:20:53 +0000 (08:20 -0400)
commit6c12c8ab7629d5b1f11595bf779a1ebb5ba09746
tree414ba386b4b870e8b988d0292dd04c68ede8d90f
parent0974ce9a0d7401829000acae071422888cbd572b
zebra: Fix Startup with > 1k interfaces

Zebra in rt_netlink.c has a while (1) loop that handles
recvmsg from the netlink socket.  In early bootup a
situation can occur whereby the netlink messages
take a long time to parse.  This time starts to
take an exponential amount of time the more netlink
messages that you read in.  There reaches
a point where the incoming netlink messages are
coming in at about the same rate that they are processed.
This ends up causing the while (1) loop to never exit.
Eventually this causes quagga to fail when the watchdog message
is never sent to systemd.

This patch attempts to address this deficiency in that
we allow for a pause from reading in netlink messages
to allow other work to be done.  This pause drains
the work queue items created by the netlink received
data and allows zebra to respond to other system input.

I believe we will need to come back in and modify zebra
startup a bit more.  There are ineffiencies that need
to be addressed as part of boot up.

Ticket: CM-9992
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Don Slice <dslice@cumulusnetworks.com>
Reviewed-by: Wilson Kok <wkok@cumulusnetworks.com>
zebra/rt_netlink.c