On Sat, Dec 20, 2014 at 10:13:44AM -0800, dave seddon wrote:
> Greetings,
> 
> I'm a big fan of Bird, which I've been using for various experiments, where
> I've found it very powerful and really fast (and way less buggy than
> Juniper).  Thanks for all your great efforts!
> 
> I apologize if this topic keeps coming up and you are sick of it, but I'm
> just hoping to document, via this email, a little more detail about
> mutually recursive routes, which is why there is not more than one (1)
> level of route recursion for BGP routes.
> 
> Very stupidly, I ran into an issue recently because I naively configured
> Bird to install routes learnt in a route reflector scenario into the kernel
> routing table (FIB).  After rereading the BGP RFC about "Mutually recursive
> routes (routes resolving each other or themselves) also fail the
> resolvability check." it became clear this was correct behaviour. (face
> palm)

Well, BIRD is more restrictive than the condition in BGP RFC.

> (I must admit that while there is no real need, and it would be non-RFC
> compliant, it would be kind of cool/sneaky to have a flag to allow multiple
> levels of recursion, either globally, in kernel protocol section, or maybe
> on a per BGP neighbour basis.  In my scenario installing the routes would
> actually be fine.)

BIRD has two classes of routes, regular and recursive, where recursive
could depend on regular but not on other recursive ones. Which one is
used is configured per protocol (in BGP). This is simple to implement and
ensures that there is no mutually recursive routes, but may be too
restrictive in some cases. This could be extended in several ways:

First, we could implement to set regular/recursive by filters per route
instead of per protocol.

Second, we could have multiple levels of dependency, where routes of
higher level could depend on routes lower levels, but level values would
be static (set per protocol or per route by filter). That would be simple
to add.

Third, we could have fully dynamic recursive routes that works in all
cases where are no mutually recursive routes, but that would be more
complicated implementation and i wonder if there is really any reasonable
need for such setting. It seems to me that in most cases it is either
misconfiguration or some ill-conceived idea.

> Anyway, to help other fools like me, I wonder if we could add an additional
> comment to the "gateway direct|recursive" section at

We should probably mention that there.

-- 
Elen sila lumenn' omentielvo

Ondrej 'Santiago' Zajicek (email: santi...@crfreenet.org)
OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net)
"To err is human -- to blame it on a computer is even more so."

Attachment: signature.asc
Description: Digital signature

Reply via email to