route withdrawals are not sent upon protocol removal

Thomás S. Bregolin thoms3rd at gmail.com
Wed Jun 6 16:49:57 CEST 2018


On Wed, Jun 6, 2018 at 3:39 PM, Ondrej Zajicek <santiago at crfreenet.org>
wrote:

> On Wed, Jun 06, 2018 at 03:17:37PM +0100, Thomás S. Bregolin wrote:
> > On Wed, Jun 6, 2018 at 2:25 PM, Ondrej Zajicek <santiago at crfreenet.org>
> > wrote:
> >
> > > On Wed, Jun 06, 2018 at 01:33:53PM +0100, Thomás S. Bregolin wrote:
> > > [...]
> > > > I've attached a modified version of the test-withdraw script showing
> the
> > > > issue. It seems my problem is related to the "start delay time"
> option.
> > > > When I set it to 1, sometimes the withdrawal is sent, and sometimes
> it
> > > > isn't. However, when it *isn't* sent, it is *never* sent, no matter
> how
> > > > long I wait. The problem is solved by setting the timeout to a higher
> > > > value, or using the default 5 seconds.
> > >
> > > Hello
> > >
> > > Note that in the modified version no protocols are removed, both
> testproto
> > > and testproto2 are still configured and running. Just the BGP export
> > > filter was changed, and because 'configure soft' was used, then it was
> > > not reloaded. That is expected.
> > >
> > > But it is likely that if both changes happen simultaneously, i.e. a
> > > static protocol is removed and a BGP export filter is changed to no
> > > longer allow routes from that protocol, then withdraws are not sent.
> This
> > > is likely a bug, could be avoided by not doing both protocol removal
> and
> > > export filter change at the same time.
> > >
> >
> > Oh, interesting! Indeed, if I remove just the filter or both the filter
> and
> > route, the withdrawals are not sent. However, if I remove only the route,
> > the withdrawal is sent.
>
> If you remove just the filter, then withdrawal is not sent, because you
> used 'configure soft' and not 'configure'. That is expected and will be
> fixed when you use 'reload' command.
>
> The problem is only when a route is removed during such interval, as then
> during 'reload' BIRD no longer knows about it and therefore does not send
> a withdrawal.
>
> Also note that when both sides has BGP with 'enhanced route refresh', the
> issue should not be problem. As in such case 'reload out' is delimited by
> Begin-RR and End-RR messages and received should remove all routes that
> were not received during that interval.
>
> As BIRD has this feature for a long time, not sure why it does not happen
> in your case. Do you have something different than BIRD on the other side?
> What is reported in 'Neighbor caps' in 'show protocols all' for BGP
> session?
>

I see. It's not BIRD on the other side. In this instance I'm using a QFX
with JUNOS 15. But I believe I've seen the issue with Cisco and Arista
routers, too. Will have to confirm, though.

I have this in neighboor caps:

Neighbor caps:    refresh restart-aware AS4


I'll check about the enhanced route refresh.

- Thomás
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://trubka.network.cz/pipermail/bird-users/attachments/20180606/20abecf9/attachment.html>


More information about the Bird-users mailing list