Re: [lisp] LISP does not involve separate namespaces

Robin Whittle <rw@firstpr.com.au> Fri, 31 July 2009 01:32 UTC

Return-Path: <rw@firstpr.com.au>
X-Original-To: lisp@core3.amsl.com
Delivered-To: lisp@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id A5CB33A6A08 for <lisp@core3.amsl.com>; Thu, 30 Jul 2009 18:32:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.895
X-Spam-Level:
X-Spam-Status: No, score=-1.895 tagged_above=-999 required=5 tests=[AWL=0.000, BAYES_00=-2.599, HELO_EQ_AU=0.377, HOST_EQ_AU=0.327]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wQ5Ec8tLQpZc for <lisp@core3.amsl.com>; Thu, 30 Jul 2009 18:32:13 -0700 (PDT)
Received: from gair.firstpr.com.au (gair.firstpr.com.au [150.101.162.123]) by core3.amsl.com (Postfix) with ESMTP id 9DA4A3A6B60 for <lisp@ietf.org>; Thu, 30 Jul 2009 18:32:12 -0700 (PDT)
Received: from [10.0.0.6] (wira.firstpr.com.au [10.0.0.6]) by gair.firstpr.com.au (Postfix) with ESMTP id 9B8A6175C6E; Fri, 31 Jul 2009 11:32:13 +1000 (EST)
Message-ID: <4A7249A4.7040004@firstpr.com.au>
Date: Fri, 31 Jul 2009 11:32:20 +1000
From: Robin Whittle <rw@firstpr.com.au>
Organization: First Principles
User-Agent: Thunderbird 2.0.0.22 (Windows/20090605)
MIME-Version: 1.0
To: lisp@ietf.org
References: <20090730031536.1CB5E6BE58C@mercury.lcs.mit.edu> <4A719822.1090000@firstpr.com.au> <2DC01886-6E0D-4135-B65A-0EEF9AF1A1CC@cisco.com> <4A71A34A.3080503@gmail.com> <A991AE36-B5F5-4A65-90CA-CF5E819B6AED@cisco.com>
In-Reply-To: <A991AE36-B5F5-4A65-90CA-CF5E819B6AED@cisco.com>
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
Cc: Scott Brim <scott.brim@gmail.com>, Noel Chiappa <jnc@mercury.lcs.mit.edu>
Subject: Re: [lisp] LISP does not involve separate namespaces
X-BeenThere: lisp@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: List for the discussion of the Locator/ID Separation Protocol <lisp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/lisp>, <mailto:lisp-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/lisp>
List-Post: <mailto:lisp@ietf.org>
List-Help: <mailto:lisp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/lisp>, <mailto:lisp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 31 Jul 2009 01:32:14 -0000

I am replying to 5 sequential messages here - 2 from Dino, 2 from
Noel and 1 from Scott.

Dino's message:

  http://www.ietf.org/mail-archive/web/lisp/current/msg00752.html

2610:00d0::/32 and 2002::/16 are two separate subsets of the set of
addresses which are global unicast.  There is nothing about these
which accords with the definition of "namespace" Noel and I agree on:

  msg00748:

  RW:  A namespace is a context within which a number or name is
       interpreted.

  NC:  Exactly.

Dino - what is your definition of "namespace"?

When an ordinary router receives a packet with a destination address
matching either of these prefixes, it doesn't have any concept of
LISP or of the EID or RLOC role the address may be playing.

With Mobile LISP, the destination address could be in an RLOC role
(of the MN's internal ETR function) at the same time as being in an
EID role since it is a LISP-mapped EID address.

So there is no such different interpretation of addresses in these
prefixed by ordinary routers.

Nor would an ITR which supports Mobile LISP treat them any differently.

If an ITR receives, or generates within itself (as in Mobile LISP), a
packet with an address which the mapping system returns one or more
RLOCs for, then it will encapsulate the packet with one of those
RLOCs as the destination address of the outermost header.

So these are just subsets of the global unicast address space.
Before Mobile LISP they were non-overlapping (disjoint) subsets.
Now, with Mobile LISP, they are potentially overlapping sets.  These
sets - the fact that an address could be playing an EID and/or an
RLOC role - have nothing at all to do with separate namespaces.



Noel wrote:

  RW: > "RLOC" and "EID" are not, and never have been, separate
      > namespaces.

  Yes, that's why we don't need a translation service to map from one
  to another. Got it.

Rather than just blowing me off, please respond to my messages
msg00747 and msg00751 by showing in detail how LISP, as currently
defined or as it could be introduced in any practical manner,
involves separate namespaces for an address depending on the EID or
RLOC role it is playing.

There no such thing as translation from one namespace to another.

There is no translation between namespaces for the Cisco phone number
526-4000.  That number on its own is useless unless you happen to be
calling from close to Cisco's head office.  The namespace within
which this number can be interpreted to identify the Cisco head
office phone service is the US area code (400) namespace.

There is no such thing as translating the meaning which 526-4000 has
in the (400) namespace into an identical, similar or related meaning
in the (399) namespace, the (401) namespace or any other namespace.

RLOC and EID are roles an address can play within the LISP system.
Sometimes an address plays both roles, as does the YY address in
msg00751.


Scott wrote in msg00747, responding to Dino:

> How does the endpoint's site network, or xTR, tell whether the
> destination address is an RLOC or an EID if the address spaces
> overlap?

Before Mobile LISP, and as LISP as currently defined by
draft-farinacci-lisp-12 EID and RLOC address spaces are disjoint sets:

  EIDs MUST NOT be used as LISP RLOCs.

therefore, it would be possible for an xTR (ITR or ETR) to determine
which set a given address YY falls into.  It would do this by sending
a map request for YY.  If it receives mapping, then YY is an EID.  If
not, YY is an RLOC.   Before Mobile LISP, if a packet was addressed
to an EID, then the ITR would encapsulate it.  Then, since the
resulting outer header was and RLOC address, and since an RLOC
address could not also be an EID address, there was no need to
examine the packet further.  So the ITR simply forwards it.

With Mobile LISP, the set of addresses which are playing an EID role
can overlap with the set which are playing an RLOC role.  So there is
no clear notion of an address being "an EID" or "an RLOC".

An address might be playing the EID role in one relationship and an
RLOC role in another.  Please see my attempt to explain how Mobile
LISP works, with addresses XX, YY and ZZ in the double-encapsulation
system, in msg00751.

YY plays both roles at once.  It is a member of both the EID and the
RLOC subsets, which overlap.

There is no separate namespace for handling addresses which are
playing one role or another.  Ordinary routers treat packets just the
same, oblivious to LISP and the role the destination address might be
playing in various parts of the LISP system.

ETRs treat them just the same.  If an ETR receives a packet with the
outer destination address matching one of its ("RLOC") addresses, it
strips off that outer header and then processes the packet according
to the next header.

ITRs treat them just the same.  If an ITR receives, or generates
within itself, a packet with YY as the destination address, it looks
up the mapping for YY.  It makes no difference whether or not YY was
playing the RLOC role for an ETR which happens to be the internal ETR
function of a MN.  If the ITR receives mapping for YY, this tells it
that YY is part of the set of addresses which are playing an EID
role, so it encapsulates the packet with another set of headers (IP,
UDP and LISP) with an outer destination address selected from the one
or more "RLOC" addresses returned in the mapping.

None of this involves separate namespaces.


Noel wrote in msg00755:

> People seem to be forgetting the words 'incremental' and
> 'practical' here.  Yes, if we were doing a 'clean sheet' design, we
> could make a clear separation between the two. HELLO! We don't have
> that luxury. Some ugliness is therefore inevitable.

>From the perspective of architectural purity, I agree, ideally we
would have separate namespaces so we could re-use the entire global
unicast address space in an "RLOC" role without upsetting the
existing "EID" role.

On this basis, not having separate namespaces for addresses being
used in these roles is indeed "ugly".  On this basis, HIP is
beautiful and LISP, APT, Ivip and TRRP are ugly.


The routing scaling problem is a practical matter involving billions
of dollars and the capacity of the Internet to work efficiently -
including matters of economics, address space utilisation and access
for new entrants.  Billions of people depend on the Internet for
business, interpersonal, emergency and political communications.  The
Internet is of vast practical value.

As an academic exercise, the routing scaling problem probably would
be best solved with a clean-slate design, separate namespaces or
whatever.

Our task is a practical one, and the constraints imposed by the need
for very widespread voluntary adoption:

  http://www.firstpr.com.au/ip/ivip/RRG-2009/constraints/

mean that practical considerations are more important than
theoretical ideals.

LISP, APT, Ivip and TRRP all share the important attribute that they
can work with all devices - existing hosts and routers - continuing
to use the same single namespace for interpreting the meanings of
addresses which are used in both the RLOC and EID roles.  HIP can't
do this.

I am sure there could be a version of LISP with separate namespaces
for the EID and RLOC functions.  However, this would have nothing to
so with LISP as a potentially practical solution to the routing
scaling problem, which is what we are discussing on this list.

With billions of dollars and the fate of one of humanity's greatest
creations at stake, the fact that LISP, APT, Ivip, TRRP and any other
core-edge separation scheme does not involve separate namespaces for
EIDs and RLOCs is *beautiful*.


Dino, in msg00756, demonstrates how an ITR treats destination
addresses the same way irrespective of whatever EID or RLOC role they
may be playing in some part of the LISP system.  (I am assuming here
that the ITR supports Mobile LISP.)

The prefixes which are flagged "Negative cache entry" are flagged in
effect: "Don't bother looking up the mapping for any address which
matches this prefix - the ITR has already been told there is none.
Therefore, treat this address as if it is playing an RLOC role and
forward the packet, as it is, to the destination".

Prefixes which have "Locator ..." are in effect: "Any destination
address matching this prefix will be regarded as an EID by the ITR,
and so its packet will be encapsulated, with the outer destination
address being one of the "RLOC" addresses (xxx.xxx.xxx.xxx in Dino's
listing) which have already been cached from a previous map request.

If a packet arrives, or is generated internally, with a destination
address which does not match any of the prefixes in the cache, then
the ITR will request its mapping and a new entry will be added to the
cache.  Then, it will treat the package as described in one of the
two previous paragraphs.

The ITR doesn't know or care whether the destination address is
playing an EID or an RLOC role.  There is no separate namespace for
EIDs and RLOCs.

  - Robin