[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RRG] How to avoid the side effect of cache in ITR



    > From: Scott Brim <swb@employees.org>

    >> On 10 Oct 2007 at 21:46 -0400, Noel Chiappa allegedly wrote:

    >> .. separate mapping entries for 1.1.1.0/24 and 1.1.0.0/16, and the ITR
    >> looks up the mapping for 1.1.2.17, and that returns the 1.1.0.0/16
    >> mapping, which it caches. Now assume the ITR needs to look up the
    >> mapping for 1.1.1.17; the 1.1.0.0/16 mapping which it already has
    >> cached will satisfy that request, even though it is not the right
    >> mapping.

    > I don't see why this would happen except by a configuration error. The
    > mapping replies have (EID prefix) -> (set of RLOCs to reach it). There
    > is no reason why these would be aggregated in flight unless the result
    > were known to be true.

??? I wasn't positing any mapping in flight; I was just positing that there
were two mappings configured:

    1.1/16 -> (RLocSet A)
    1.1.1/24 -> (RLocSet B)

I.e. the second entry is for a "punch-out" in the first entry.

Now, maybe you want to say that "punch-outs" should be illegal, i.e. that no
two EIDRange->RLocSet mappings can have overlapping EIDRange's, but like I
said, I don't recall recall whether that's currently allowed or not.

If it *is* allowed, then we have the problem I describe (at least in schemes
which do caching; more on this below).


If it is not allowed, then to configure something like the example above, one
would have to configure ~256 entries, one looking like the second one, and
the other ~255 all looking like

    1.1.X/24 -> (RLocSet A)

for all X other than 1.

Unless we do as I suggest below, which amounts to automatically 'converting'
things that look like the first, to the ~256 entry version I just described:

    >> I would say that the fix is to not allow a larger mapping to be
    >> returned if it 'covers' a smaller one. I.e. the entity which maintains
    >> the authoritative mappings would only have two entries, for 1.1.1.0/24
    >> and 1.1.0.0/16. However, whenever a request came in for any
    >> 1.1.<anything> which was not 1.1.1.N, it would have to reply with a
    >> 'made up' mapping entry of 1.1.<something>/24, to avoid 'covering up'
    >> the 1.1.1.0/24 mapping.

    > The authoritative source should only return what it is authoritative
    > for.

Well, but it's authoritative for both 1.1/16 and 1.1.1/24. The issue is the
punchout;


    > In CONS there are two different sorts of information flowing. First is
    > CONS-internal routing information to get to the authoritative source
    > (aCAR). Second is the mapping replies themselves.

Yes, in CONS there are two kinds of mappings/bindings (in the generic sense of
the word), the first being:

  EIDRange->CDR/aCAR

which allows you to find the second:

  EIDRange->RLocSet

which is what you actually want. (And I have proposed that we have different
terms for the two kinds of mapping, to prevent confusion - I forget now
exactly what terminology I suggested.)

However:

    > You aggregate how to find the aCARs (the CONS-internal routing
    > information), but you don't aggregate the mapping replies.

Right, but this problem has little to do with how EIDRange->RLocSet bindings
are distributed; rather, it's mostly a property of how we allowed EIDRange's
to be configured.

I say "little" above, not "nothing", because if you're using a full push
scheme (i.e. all ITR's have the *complete* table of EIDRange->RLocSet
bindings) we can fix this problem, whilst allowing punchout configurations,
simply by saying you have to do longest-match lookups in the table.

But as long as i) ITR's can have incomplete tables, and ii) punchout
configurations are allowed, we have this problem.

	Noel

--
to unsubscribe send a message to rrg-request@psg.com with the
word 'unsubscribe' in a single line as the message text body.
archive: <http://psg.com/lists/rrg/> & ftp://psg.com/pub/lists/rrg