On Thu, Jul 27, 2017 at 07:23:46PM -0700, Fred Baker wrote:
> > On Jul 27, 2017, at 2:06 AM, Matthieu Boutier <[email protected]> wrote:
> > 
> > Did you agree that:
> > 
> >  1. destination first give the correct behaviour as-is.
> > 
> >  2. source first needs extra mechanism and route duplication.
> 
> Actually, I don't. I can produce cases in which source first gives the
> wrong route, and in which destination first gives the wrong route. The
> only way I see to make doing either one first *always* gives the right
> result is if a small set of routes is duplicated.

You're right, and we have a SNAFU in terminology here.
rtgwg-dst-src-routing isn't suggesting "destination-first".  It's
"destination-first with fallthrough".

The set of routes that need to be duplicated for destination-first is
exactly this small set that is covered by fallthrough.  Duplicating
these routes is what appendix A.1. of dst-src-routing-05 is describing;
particularly because this duplication significantly reduces
worst-case forwarding/lookup cost - going from "129x129" to "129+129".

[Conversely, appendix A.2. describes translation to "source-first".]

I'll check the draft for whether this terminology SNAFU is in there too.
It explicitly describes the fallthrough as backtracking, so it's
definitely not a content/specification issue, but it may well be jumbled
wording.

FWIW, the Linux kernel implements "destination-first with fallthrough"
plus the separate source-first policy routing feature.  Also, somewhat
relatedly, there were quite a few caching issues back when this was
fresh.

> The issue is when prefixes overlap. If you have sources S1 and S2,
> destinations D1 and D2, D1 is a more specific of D2, and D1 is
> advertised by S1 but not S2, and D2 is advertised by S2. If you are
> looking from S1, you should find S1->D1, and if you are looking from
> S2, you should find S2->D2. If you look destination first, and happen
> to be looking from S2, I think you wind up trying to find S2->D1,
> which doesn't exist.

Right, hence the fallthrough from D1 to D2.

> Every time I get my head into this space, I have to rethink it, and
> the emails I wrote a few years back are unavailable to me now as I am
> no longer at Cisco. I need to think the source version through again.
> But you get the idea. I have pretty much convinced myself that you
> need to duplicate S2->D2 as S2->D1 but with the next hop associated
> with S2->D2 in order to make destination first work. There is a
> similar case regarding source-first lookup.

Source-first lookup simply requires a lot more duplicated routes to get
the same local connectivity coverage. (And fallthrough doesn't help,
because the source-first entry would usually have a default route.)

> This is the reason I have suggested a PATRICIA algorithm or something
> like it that looks up both addresses at the same time.

I've tried to describe the behaviour in terms of functional
requirements;  hence A.1 and A.2 as appendixes describing efficient
implementation choices.

Cheers,


-David

_______________________________________________
rtgwg mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/rtgwg

Reply via email to