[quagga-dev 5308] Re: intermittent communication between bgpd and zebra?

Ray Barnes rrb at colo4jax.com
Fri Apr 18 21:24:40 BST 2008

Thanks Andy.  The issue is that bgpd is simply not aggressive enough in its
communication attempts toward zebra.  If it made an attempt once every 2-3
seconds, that'd surely satisfy my requirement for HA/failover using BGP.
But even with 'watchquagga' which I understand to simply restart quagga
daemons if they fail, that solution is not adequate.  Per my previous
message, if zebra is restarted for some reason, it will not receive updates
from bgpd until bgpd has something to update.  If bgpd never makes an
update, zebra will not receive routes.  I've seen this condition persist
over and over again, for several hours at a time in my environment.

In fact, the thing that prompted all of this digging on my part, was that my
box lost its default route in zebra.  Although bgpd had defaults from both
peers, the route simply *fell out* of zebra and the kernel.  That's a bug
which will definitely preclude my use of quagga as currently deployed, and
maybe even overall.

Perhaps it would be wise to drop calls to bgp_zebra_init into the main bgp
scanning loop?  Maybe periodic route refreshes in bgpd would work (any idea
how I can make bgpd induce this from the peer?)


On 4/18/08, Andrew J. Schorr <aschorr at telemetry-investments.com> wrote:
> Hi Ray,
> On Fri, Apr 18, 2008 at 01:32:54AM -0400, Ray Barnes wrote:
> > The problem I'm having is that if I start bgpd
> > before zebra, those routes will never get propagated into zebra if they
> > don't change.
> I believe that it is necessary to start zebra before bgpd.
> IIRC, when bgpd starts, it will make a few attempts to contact zebra,
> and then give up.  This is done by calling lib/zclient.c:zclient_init
> from bgp_zebra_init.
> In general, zebra needs to be started before the other daemons.
> If, for example, you were to use 'watchquagga -A' to manage your daemons,
> you would get the proper behavior.  For example, on my linux FC6
> box, this does the trick:
>   watchquagga -d -Az -b_ -r/sbin/service_%s_restart
> -s/sbin/service_%s_start \
>                -k/sbin/service_%s_stop zebra bgpd
> Regards,
> Andy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.quagga.net/pipermail/quagga-dev/attachments/20080418/21e1c3ea/attachment-0001.html>

More information about the Quagga-dev mailing list