Hi,

Good to see the NHT work finally merged in! I'm working now to have the
nhrp code rebased on top of master.

I carry the following commit:
http://git.alpinelinux.org/cgit/user/tteras/quagga/commit/?h=nhrp&id=76aaa0456a3804a0a1d2948d9a391383b62cbe37

I remember we discussed this earlier. And I was hoping it would have
been fixed. IIRC, there's some use-case that relies on the current
behaviour. However, I have use case that fails with it.

The root problem is that Zebra RIB code in
zebra_rib.c:364:nexthop_active_ipv4 and
zebra_rib.c:499:nexthop_active_ipv6 have check when the Next Hop can be
installed.

For ZEBRA_FLAG_INTERNAL routes the check is:
        if (CHECK_FLAG (newhop->flags, NEXTHOP_FLAG_FIB)       
            && ! CHECK_FLAG (newhop->flags, NEXTHOP_FLAG_RECURSIVE))

Where as the current NHT test is:
        if ((CHECK_FLAG (nexthop->flags, NEXTHOP_FLAG_FIB) ||
             CHECK_FLAG (nexthop->flags, NEXTHOP_FLAG_RECURSIVE)) &&

This causes the problem that NHT says that nexthop matching route with
ZEBRA_FLAG_INTERNAL + NEXTHOP_FLAG_RECURSIVE is valid. However, when
it's tried to be installed to RIB, it's rejected in zebra_rib.c because
of the above mentioned check. For me, this results BGP announcing
subnets as valid, but ending up to blackhole since the matching route
is not installed in kernel.

We really should make these check consistent. Preferably have this
check in separate function, so both RIB and NHT would use the same
check. However, I'm not fully certain what the Cumulus use case is
needing Recursive nexthop routes. Are they "Internal" routes? If not,
then we could just use that as additional check in NHT side.

Additionally, I carry also:
http://git.alpinelinux.org/cgit/user/tteras/quagga/commit/?h=nhrp&id=c781f72ef56e0db6bbde126ce2565f5a7a833da2

For current master it's not big issue, since no one uses the
fib-override routes yet. I'll submit this along with the nhrpd. Just
wanted to give a heads up on what's coming.

Thanks,
Timo

_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
https://lists.quagga.net/mailman/listinfo/quagga-dev

Reply via email to