On Sat, 1 Aug 2015 15:04:39 -0700
Dinesh Dutt <[email protected]> wrote:

> > On Aug 1, 2015, at 6:31 AM, Timo Teras <[email protected]> wrote:
> >
> > As prerequisite the Cumulus tree next-hop-tracking should get in.
> > 
> > I did have to revert one patch: "A valid BGP nexthop is flagged as
> > invalid" which considers recursive routes as valid nexthops - but
> > that's not how zebra works when calculating FIB candidates. Perhaps
> > this is fixed somehow else in cumulus tree on later commits?
> 
> We need that to support static routes based on dynamically learnt
> routes, only BGP based Data centers with third party next hops etc. 

Hmm... The proper check would probably be:

        if (CHECK_FLAG (nexthop->flags, NEXTHOP_FLAG_FIB) &&
            (rn->match == ZEBRA_ROUTE_CONNECT ||
             ! CHECK_FLAG (nexthop->flags, NEXTHOP_FLAG_RECURSIVE)) &&
            CHECK_FLAG (nexthop->flags, NEXTHOP_FLAG_ACTIVE))       

The code in zebra_rib.c allows to always use ZEBRA_ROUTE_CONNECT always
as recursive next hop, but recursive prefix learned from routing daemon
is not allowed as recursive nexthop.

This should fix both cases.

My problem is was that when I have multiple iBGP connection, but there
was disconnects with few links. I got mismatch with BGP table and FIB.
BGP thought a prefix was valid but the nexthop was not learned from
other iBGP link. This caused it to still announce that route out, but
zebra refused to install it to FIB.

Thanks,
Timo

_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev

Reply via email to