Network Working Group                                       B. Carpenter
Internet-Draft                                                       IBM
Intended status: Informational                              June 4, 2007
Expires: December 6, 2007


           General Identifier-Locator Mapping Considerations
                   draft-carpenter-idloc-map-cons-01

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on December 6, 2007.

Copyright Notice

   Copyright (C) The IETF Trust (2007).

Abstract

   This document presents various general considerations about the
   mapping between identifiers and locators at the network and routing
   level in the Internet.








Carpenter               Expires December 6, 2007                [Page 1]


Internet-Draft         Identifier-Locator Mapping              June 2007


Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
     1.1.  Definition of terms  . . . . . . . . . . . . . . . . . . .  3
     1.2.  Related Work . . . . . . . . . . . . . . . . . . . . . . .  5
   2.  Identifier and Locator Behaviour Today . . . . . . . . . . . .  5
   3.  Is a Split the Solution? . . . . . . . . . . . . . . . . . . .  8
     3.1.  Completely Disjoint Namespaces . . . . . . . . . . . . . .  9
     3.2.  Partially Disjoint Namespaces  . . . . . . . . . . . . . . 10
     3.3.  Common Requirements  . . . . . . . . . . . . . . . . . . . 11
   4.  Mapping Goals  . . . . . . . . . . . . . . . . . . . . . . . . 12
     4.1.  Many Locator Namespaces  . . . . . . . . . . . . . . . . . 13
     4.2.  One Identifier Namespace . . . . . . . . . . . . . . . . . 13
     4.3.  Reversible Mapping Issues  . . . . . . . . . . . . . . . . 13
     4.4.  Two-Faced Maps?  . . . . . . . . . . . . . . . . . . . . . 13
     4.5.  Is the Map Isotropic?  . . . . . . . . . . . . . . . . . . 13
     4.6.  Scale  . . . . . . . . . . . . . . . . . . . . . . . . . . 14
     4.7.  What Does an Identifier Look Like? . . . . . . . . . . . . 14
     4.8.  Do Identifiers have Useful Properties? . . . . . . . . . . 14
     4.9.  What Does a Locator Look Like? . . . . . . . . . . . . . . 15
     4.10. Who Needs the Map? . . . . . . . . . . . . . . . . . . . . 15
     4.11. What is the lifetime of a mapping? . . . . . . . . . . . . 16
     4.12. How Does the Map Relate to Mobility? . . . . . . . . . . . 16
     4.13. Who chooses the Locator? . . . . . . . . . . . . . . . . . 17
     4.14. Push, Pull, Push/Pull  . . . . . . . . . . . . . . . . . . 17
   5.  Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 17
   6.  Security Considerations  . . . . . . . . . . . . . . . . . . . 18
   7.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 18
   8.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 18
   9.  Change log [RFC Editor: please remove this section]  . . . . . 19
   10. Informative References . . . . . . . . . . . . . . . . . . . . 19
   Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 21
   Intellectual Property and Copyright Statements . . . . . . . . . . 22


















Carpenter               Expires December 6, 2007                [Page 2]


Internet-Draft         Identifier-Locator Mapping              June 2007


1.  Introduction

   In the discussions following the IAB Routing and Addressing workshop
   [I-D.iab-raws-report], a common observation is that a key issue in
   today's Internet is the overlapping semantics of IP addresses used as
   'locators' and as 'identifiers.'  A common conclusion from this is
   that the architectural solution is a 'identifier-locator split'
   (sometimes abbreviated as 'id-loc').  This conclusion is discussed
   below.  However, if we accept that locators and identifiers have
   different (even if possibly overlapping) semantics, the question
   immediately arises of how they can be mapped onto one another.  Given
   a locator, which identifier(s) refer to the same entity?  Given an
   identifier, which locator(s) refer to the same enity?  The main part
   of this document discusses the considerations raised by these
   questions.

   Suggested discussion list: ram@iab.org.

1.1.  Definition of terms

   IP Address: an IPv4 or IPv6 address, viewed as an opaque 32 or 128
   bit quantity.

   Stack: An active instantiation of the TCP/IP model; one participant
   or the process on one side of an end-to-end communication.  That
   participant may move and may be represented by multiple hosts.
   Quoting from an unpublished document produced within the former
   Namespace Research Group [NSRG]:

   ------------Start Quotation------------





















Carpenter               Expires December 6, 2007                [Page 3]


Internet-Draft         Identifier-Locator Mapping              June 2007


   Today, a host may represent multiple entities.  This happens when a
   service provider hosts many web sites on one server.  Similarly, a
   single entity may be represented by multiple hosts.  Replicated web
   servers are just such an example.  These entities are "protocol
   stacks" or simply "stacks", instantiations of the TCP/IP model, be
   they across one or many hosts.  A stack is defined as one
   participant or the process on one side of an end-to-end
   communication.  That participant may move and may be represented by
   multiple hosts.

                __________________   ________________________
              |                  | |                        |
              |   _______________| |____________________    |
              |  /_______________| |___________________ /|  |
              | |       A P P L I| |C A T I O N        |f|  |
              | |----------------| |-------------------|o|  |
              | |        T R A N | | P O R T           |o|  |
              | |----------------| |-------------------|.|  |
              | |         I N T E| |R N E T            |c|  |
              | |----------------| |-------------------|o|  |
              | |         F R A M| | I N G             |m|  |
              | |----------------| |-------------------| /  |
              | |________________| |___________________|/   |
              |                  | |                        |
              |__________________| |________________________|


   Figure 4: Another application: single stack represented by multiple
   hosts

   Each instance of a stack has a name, a "stack name".  At an
   architectural level the Name Space Research Group debated the value
   of such names, and their associated costs.  Forms of this name are
   used in numerous places today.  SSH uses public/private key pairs to
   identify end points.  An HTTP cookie anonymously identifies one end
   of a communication, in such a manner that both the connection and the
   IP address of the other end point may change many times.  Stack names
   are intended to identify mobile nodes, devices behind NATs, and
   participants in a content delivery or overlay network.

   ------------End Quotation------------

   Locator: A binary quantity (not necessarily an IP Address) that can
   be used by a routing or forwarding device to decide where to send a
   packet.

   Identifier: A binary quantity (not necessarily an IP Address) that
   can be used by a Stack "A" to uniquely identify another Stack "B"



Carpenter               Expires December 6, 2007                [Page 4]


Internet-Draft         Identifier-Locator Mapping              June 2007


   both for bilateral communication and for informing a third Stack "C"
   that it should communicate with Stack "B".  (Note that there is an
   assumption in this definition that a Stack is the entity we require
   to identify; in this era of virtualized servers with failover
   capabilities, and of mobile clients, this seems to be a reasonable
   assumption.)

   Namespace: a set of natural numbers, each of which is referred to as
   a name.  Since it is a set, by definition each name is unique and
   thus the namespace is unambiguous.  Locators and Identifiers must
   belong to specific namespaces.

   Namespace Context: the context within which a given namespace retains
   its uniqueness property.  (For example, the Namespace Context of the
   Namespace created by [RFC1918] is a single Internet site.)

1.2.  Related Work

   [I-D.nikander-ram-ilse] discusses the design space for Identifier-
   Locator Separation and contains excellent background references.
   [I-D.farinacci-lisp], [I-D.wang-ietf-efit], and [I-D.templin-ipvlx]
   discuss solutions along the encapsulation axis.  SHIM6
   [I-D.ietf-shim6-proto] is a host-based solution along the dynamic
   translation axis.  [GSE] was a router-based solution along the
   dynamic translation axis.  HIP [RFC4423] is a real new namespace.

   Early thinking on this whole topic should be credited to Noel Chiappa
   [ENDPOINTS], who in turn cites related work back to 1978.


2.  Identifier and Locator Behaviour Today

   [RFC2101] discussed "IPv4 Address Behaviour Today" (where "today" was
   February 1997).  It focused on the then new issues caused by private
   addresses [RFC1918], dynamic address allocation, and network address
   translation.  Its fundamental observations remain true:

   ------------Start Quotation------------













Carpenter               Expires December 6, 2007                [Page 5]


Internet-Draft         Identifier-Locator Mapping              June 2007


   Due to dynamic address allocation and increasingly frequent
   network renumbering, temporal uniqueness of IPv4 addresses is no
   longer globally guaranteed, which puts their use as identifiers
   into severe question.  Due to the proliferation of Intranets,
   spatial uniqueness is also no longer guaranteed across routing
   realms; interconnecting routing realms could be accomplished via
   either ALGs or NATs. In principle such interconnection will have
   less functionality than if those Intranets were directly
   connected. In practice the difference in functionality may or may
   not matter, depending on individual circumstances.
   ...
   As far as temporal uniqueness (identifier-like behaviour) is
   concerned, the IPv6 model [RFC 1884] is very similar to the current
   state of the IPv4 model, only more so.  IPv6 will provide mechanisms
   to autoconfigure IPv6 addresses on IPv6 hosts. Prefix changes,
   requiring the global IPv6 addresses of all hosts under a given prefix
   to change, are to be expected. Thus, IPv6 will amplify the existing
   problem of finding stable identifiers to be used for end-to-end
   security and for session bindings such as TCP state.

   The IAB feels that this is unfortunate, and that the transition to
   IPv6 would be an ideal occasion to provide upper layer end-to-end
   protocols with temporally unique identifiers. The exact nature of
   these identifiers requires further study.

   ------------End Quotation------------

   How is the discrepancy between identifier and locator namespaces
   handled today (2007)?

   The discrepancy can be summarised as follows: the progressive
   shortage of IPv4 addresses, coupled with the lack of economic
   incentive to deploy IPv6, has led to generalised use of private
   addresses within enterprise and home networks.  Thus, we have
   disjoint Locator Namespaces - roughly speaking, one very large
   Locator Namespace commonly referred to as the Internet, and a
   separate Locator Namespace for every network "behind" a NAT.
   However, much software, and many protocols, have been designed on the
   assumption that we have a single Identifier Namespace, which is
   furthermore assumed to be identical to the Internet Locator
   Namespace.  Neither of these assumptions is true.

   We should also note that with IPv6 partially deployed, we already
   have two distinct Internet Locator Namespaces.  Mathematically, we
   could consider them as a single Locator Namespace (with the
   unambiguous IPv4 space being mapped as a subset of IPv6 space), but
   little existing software is prepared to treat IPv4 and IPv6 as a
   single Identifier Namespace, even though IPv6 does not suffer from



Carpenter               Expires December 6, 2007                [Page 6]


Internet-Draft         Identifier-Locator Mapping              June 2007


   IPv4's problem of ambiguous addresses.

   To work around these false assumptions, several measures have been
   taken, none of them as a result of architectural design:
   o  Network Address Translation.  Effectively, a NAT creates a dynamic
      mapping between two Locator Namespace Contexts (sometimes using a
      port number to tag the mapping).  The focus of a NAT is to enable
      packet delivery despite the namespace being fragmented; thus it
      acts as a context boundary in the Identifier Namespace.  NATs and
      their associated ALGs attempt to hide this by (for example)
      recomputing TCP checksums.  However, it is a fundamental fact that
      the NATs and ALGs cannot know how the two ends of a communication
      use the Identifier Namespace, and therefore it is logically
      impossible for them to fix up the Identifier Namespace in general.
      Furthermore, NATs do not publish the Identifier/Locator mappings
      they have created, so the affected Stacks have no sure way to
      discover it.
   o  Discovery by probing.  For a specific application or set of
      applications, a way round the namespace discrepancy can be
      constructed, essentially by deducing from external evidence the
      Identifier/Locator mapping that a NAT has created, and signalling
      that mapping to all interested Stacks.  The best known examples
      are STUN [RFC3489] and ICE [I-D.ietf-mmusic-ice].
   o  Build your own namespace.  Fortunately for people wishing to
      construct novel Internet applications, there is a very convenient
      way to ignore the whole problem: make use of the fact that every
      NAT has an associated ALG that translates HTTP/TCP packets
      appropriately, and incidentally that HTTP passes through most
      security checks.  Similarly, an HTTP proxy can hide an IPv4/IPv6
      boundary.  Thus, despite the strong recommendation to the contrary
      in [RFC3205], many application suites have been built to run over
      HTTP, basing the roots of their own Identifier Namespaces in some
      way in the DNS.  An interesting example is the massive Web
      Services suite, whose XML-based namespace derives its uniqueness
      from the uniqueness of DNS names
      [<http://www.w3.org/TR/ws-addr-core/#namespaces>].  It is clear
      that if this technique were not available, we would have
      confronted the network's Identifier Namespace problem years ago,
      or all innovation would have stopped.

   A separate observation about today's situation is that we can loosely
   divide upper layer implementations (transport layer and above) into
   two classes:
   1.  Those that use a socket API, or the equivalent, on the
       traditional assumption that an IP Address is simultaneously a
       unique Locator and a unique Identifier.  These are automatically
       subject to unpredictable problems when they encounter Identifier/
       Locator ambiguity.



Carpenter               Expires December 6, 2007                [Page 7]


Internet-Draft         Identifier-Locator Mapping              June 2007


   2.  Those that avoid this assumption, for example by creating their
       own namespace or relying completely on the DNS.

   Confusion can nevertheless occur, for example in an application that
   believes that using a URL-based namespace protects it from ambiguity,
   but encounters a URL containing a literal Net 10 address.  One can
   easily imagine http://10.1.1.1:80/ referring to different entities at
   the two ends of a session.

   A related issue is the way network elements are monitored and
   managed.  Network operations staff know that the IP Address of a
   network element (router, switch, bridge, server or user device) both
   identifies and locates it.  In a network of any size, the IP
   Addresses of network elements are embedded in network configuration
   and monitoring systems in many ways.  The assumption generally made
   by operations staff is that there is a single namespace, but this may
   be false.  An illustration of this assumption is that many MIBs
   include IP Addresses; the contents of such MIBs cannot readily be
   used outside their original Namespace Context.  In enterprise
   networks that contain internal NATs, this is a known source of
   operational difficulty.  It is in fact the motivator for one of the
   largest reported IPv6 deployment projects
   [<http://www.nanog.org/mtg-0606/pdf/alain-durand.pdf>].


3.  Is a Split the Solution?

   Given that our problem is overlapping namespaces, it's tempting to
   conclude immediately that splitting them is the solution.  In a split
   solution, sites and hosts would have global network-level identities
   independent of the routing system and of individual service
   providers.  The routing system would be free to assign and manipulate
   locators so as to assist route aggregation, support multihoming, and
   implement path selection policies.  But what would a split mean, and
   is it practical?

   As implied by the previous section, there are cases where a split
   would increase rather than decrease confusion.  Enterprise network
   operations would be strongly affected - would the normal way to
   identify a misbehaving box be its locator or its identifier?  Network
   management systems and configuration databases would have to be
   upgraded to support both.  Firewalls would have to deal with
   fundamental change, since identifiers rather than locators would be
   the focus of many attacks.  The way the DNS and the socket API are
   related to each other might change.  Any upper layer implementation
   that believes that an IP Address is both a Locator and an Identifier
   would be in even greater trouble than today.  And of course the
   fragile superstructure built on NATs and ALGs would be severely



Carpenter               Expires December 6, 2007                [Page 8]


Internet-Draft         Identifier-Locator Mapping              June 2007


   challenged, especially during the transitional phase.

   This is, no doubt, why the IAB's suggestion in [RFC2101], quoted
   above, has borne no fruit, except for HIP [RFC4423], which still
   remains R&D. But if we are to respond to the currently perceived
   routing and addressing problem, a choice must be made.

   Two different approaches seem to be possible:
   1.  Completely disjoint namespaces.  Identifiers can never be used as
       Locators, and vice versa.
   2.  Partially disjoint namespaces.  In some Namespace Contexts,
       Identifiers can be used as Locators, and vice versa.  In other
       Namespace Contexts, they cannot.

   Since the choice between these two approaches will have significant
   impact on the mapping mechanism, they are now discussed in more
   detail.

3.1.  Completely Disjoint Namespaces

   In this class of solution, there is no overlap or possible ambiguity
   between an Identifier and a Locator.  They are defined and managed
   orthogonally, apart from the mapping function.  They never need to be
   disentangled by use of context information.  They will not be
   equivalent when used as parameters of an API.

   Conceptually, in this document, Identifiers identify stacks, not end-
   systems or application instances.  Thus, http://www.example.com
   cannot be a stack Identifier.  The full process of sending the first
   packet of a session would consist of these conceptual stages:
   1.  Map 'www.example.com' to an Identifier (i.e. map the application
       Namespace into the network stack Namespace).
   2.  Construct the first packet to be sent to this stack at this
       Identifier.
   3.  Map the Identifier into a Locator.
   4.  Forward the packet towards that Locator.
   5.  At or near the receiving stack, restore the original Identifier
       if it has not been trasmitted in the packet.  This requires a
       reverse map from Locator to Identifier.

   We may assume for present purposes that step 1 will involve the DNS.
   Step 3 will use the mapping service that is the object of this
   document.  It may take place in the sending host, or it may take
   place in a nearby router.  But since the two namespaces are disjoint,
   it will happen exactly once.  Step 5 is the converse, if needed.

   It seems evident that this model of completely disjoint namespaces is
   'correct' from a logical (computer science) point of view.  It is in



Carpenter               Expires December 6, 2007                [Page 9]


Internet-Draft         Identifier-Locator Mapping              June 2007


   fact a classical layering solution reminiscent of, but not mapping
   exactly onto, the OSI model.  ("Stacks" are a new layer, above the
   network endpoint layer and below the transport layer.)  It definitely
   requires a namespace mapping mechanism acting at the layer boundary.
   If fully executed, this would clean up many of the glitches caused by
   IP address fragmentation today.  From a practical point of view, the
   technical community will have to decide if there is an operationally
   and economically viable path to deployment of such a solution.

3.2.  Partially Disjoint Namespaces

   In this class of solution, we decide in advance that the syntax of an
   Identifier and that of a Locator are the same.  Thus we can have
   overlapping scopes.  A given token could simultaneously be a member
   of two Namespaces, distinguished only by context.

   One simple model for this is illustrated as follows.  Identifiers are
   defined to be all global in scope - there is exactly one Internet
   Identifier Namespace.  Locators are defined to have either 'stub
   scope' or 'Internet scope'.  A 'stub' is what is sometimes called a
   site network or an enterprise network; its main distinguishing
   characteristic is that it is not providing transit.


    _______________________________________________________________
   |                                                               |
   |                Internet Identifier Context                    |
   |  _________________   _____________________   _______________  |
   | |  Stub1 Locator  | |   Internet Locator  | | Stub2 Locator | |
   | |   Context       |-|       Context       |-|  Context      | |
   | |_________________| |_____________________| |_______________| |
   |                                                               |
   |_______________________________________________________________|



   In this simple model, and assuming the same syntax for Identifiers
   and Locators, we could for example decide that a Stack inside Stub1
   has Identifier=Locator in that context, but has different Locators in
   the Internet and Stub2 contexts.  A Stack inside Stub2 has
   Identifier=Locator in that context, but different Locators in the
   Internet and Stub1 contexts.  It is this ability to equate Identifier
   and Locator in the local stub network that principally distinguishes
   the partially disjoint model from the completely disjoint model.  As
   far out from the sending host as that equality is valid, the
   Identifier/Locator behaves exactly like a classical IP Address.

   To be clear, there is no reason why all Locators could not be



Carpenter               Expires December 6, 2007               [Page 10]


Internet-Draft         Identifier-Locator Mapping              June 2007


   globally unique - today's ambiguous IPv4 addresses are a side-effect
   of the limited size of IPv4 addresses.  If that constraint was
   applied, the three Locator Namespaces shown above could be strict
   subsets of the Internet Identifier Namespace, as a design choice.

   It should be noted that there are echoes of this model in both SHIM6
   [I-D.ietf-shim6-proto] and LISP [I-D.farinacci-lisp], but they both
   have rather more complexity than described above.

   An operational advantage of this class of model is that it allows
   upper layers and management systems to treat the Identifier and
   Locator Namespaces as identical within the local (stub) context.
   Network management systems, as long as they stay within a single
   Locator Namespace Context, will be essentially unaffected.  On the
   other hand, management across a Locator Namespace boundary would be
   just as awkward as management across a NAT today, unless the
   management system was updated to address network elements by
   Identifier.

   Another practical advantage of this class of model is that if
   Identifiers and Locators, which share syntax, are in the same format
   as today's IPv6 addresses, upper layer software can to a large extent
   continue to use today's APIs.

   A corresponding disadvantage is that, unlike the completely disjoint
   model, there is no 'a priori' distinction between an Identifier and a
   Locator.  Network elements and Stacks would need to be able to treat
   tokens that look like an IP Address much as they do today, but with a
   clear definition of the context within which Identifiers and Locators
   are the same thing, and of the contexts in which they are not.  As
   has been discovered for IPv6 scoped addresses [RFC4007], there is
   significant complexity in attaching scope rules to what is otherwise
   an architecturally opaque address value.  Any design based on a
   partially disjoint model needs to specify how context and scope are
   managed, and this may add to the requirements for a mapping service
   and for APIs.

3.3.  Common Requirements

   Consider three Stacks A, B and C in three adminstratively separate
   sites.  What Locator and Identitfier properties do they require?

   Within its site, A must have an Identifier and Locator that are
   conveniently mapped for the operational staff (if not equal), and do
   not vary in a way unexpected by those operational staff.  The same is
   true for B and C respectively.

   When communicating with B, A must provide an Identifier that B can



Carpenter               Expires December 6, 2007               [Page 11]


Internet-Draft         Identifier-Locator Mapping              June 2007


   rely on, and conversely.  To send its packets, A must either know a
   Locator for B that is valid in the context of site A, or send the
   packet to a router that knows such a Locator (given B's Identifier).
   The same is true in the reverse direction.

   It is irrelevant to A and B if the Locator used by A (or A's router)
   is only valid locally at site A, i.e. if the locator changes once or
   several times along the way.  All that matters is that the packet be
   delivered to B, still carrying A's Identifier.

   A must also be able to communicate with C on the same basis, and
   furthermore tell C that it may communicate with B as part of the same
   application.  Since we have admitted that the Locator that A (or A's
   router) knows for B may only be valid locally, it is required that A
   only needs to communicate B's Identifier to C.

   However, we must be careful not to read too much into this.  By
   communicating an Identifier to C, A does not undertake to tell C how
   to reach B. Finding a Locator for B is out-of-band, and should be
   subject to B's security policies and whatever routing arrangements
   are in place between C and B.

   We conclude that:
   o  On-site, Identifiers and Locators may or may not be split,
      depending on whether the completely or partially disjoint model is
      chosen.
   o  To go off-site, it is necessary to know which Locator leads
      towards a given Identifier.  Either the sending Stack or its
      router could know this.
   o  The Identifier of the sending Stack must be delivered unchanged to
      the receiving Stack.
   o  It must be possible to refer third party Stacks to a remote
      Stack's Identifier.

   Another likely common requirement is that whatever plays the part of
   the socket API should provide sufficient features for the upper layer
   protocol that it can deal with transitional situations, where some
   Stacks support the id-loc split and others don't.  In the case of
   partially disjoint namespaces, the API must provide features to allow
   the upper layer protocol to discriminate between Locators and
   Identifiers if necessary.


4.  Mapping Goals

   With the above as background we can consider the goals of a mapping
   mechanism between Identifier Namespace and Locator Namespaces (note
   the plural).



Carpenter               Expires December 6, 2007               [Page 12]


Internet-Draft         Identifier-Locator Mapping              June 2007


   It is assumed that application Namespaces, and in particular domain
   names, will be mapped to Identifiers independently, for example using
   existing or new DNS RR types.

4.1.  Many Locator Namespaces

   Every site using [RFC1918] has its own Locator Namespace.  The IPv4
   Internet constitutes another Locator Namespace, and IPv6 constitutes
   a Locator Namespace.  Furthermore, sites using IPv6 ULAs [RFC4193]
   will have their own Locator Namespaces.  We cannot exclude the
   existence of additional (possibly secret) Locator Namespaces.

4.2.  One Identifier Namespace

   Going forward, we should aim to have exactly one Identifier Namespace
   at network level.  In different contexts, it will be mapped to
   different Locator Namespaces.

4.3.  Reversible Mapping Issues

   Clearly mapping from an Identifier to a set of Locators must be
   possible.  Since we require every packet to be delivered carrying its
   original Identifier, reverse mapping would be needed if packets do
   not carry their original Identifier en route.  This has important
   implications.  If reverse mapping is not required, it would be quite
   possible for the Locator used for transport across the Internet to be
   highly multiplexed - in the limit, all packets sent to a given site
   could be sent to the same Locator.  (For an analogy, compare the way
   that all IPv6 packets for a 6to4 site are sent to the same IPv4
   address [RFC3056]).  Such a simpification could have a dramatic
   effect on the size and frequency of mapping updates.

4.4.  Two-Faced Maps?

   Since the Locator Namespace within a site is in the general case
   different from the Internet Locator Namespace, there could in theory
   be a need for two maps at a given site: Identifier Namespace to the
   site's Locator Namespace, and Identifier Namespace to the Internet
   Locator Namespace (plus some complications due to IPv4 and IPv6 being
   different Internet Locator Namespaces).  Two-faced maps can be
   avoided only if we choose the partially disjoint option and deem that
   within the site, Identifier equals Locator.

4.5.  Is the Map Isotropic?

   The short answer is: highly unlikely.  It is not true by construction
   that if the best Locator for B when sending from A has value L(A,B),
   and the best Locator for B when sending from C has value L(C,B), then



Carpenter               Expires December 6, 2007               [Page 13]


Internet-Draft         Identifier-Locator Mapping              June 2007


   L(A,B)=L(C,B).  In fact, it is not true by construction that L(A,B)
   is necessarily a valid locator when sending from C to B. A trivial
   example is when L(A,B) is 10.1.1.1/32.  It may be true that B has
   some Locators that are globally valid, but this cannot be assumed
   unless the system is designed that way.

   The map will therefore almost certainly have some of the properties
   of a routing system - the entries for a given Identifier will be
   different at different points in the topology.

4.6.  Scale

   We want no arbitrary scaling limits.  However, proposed scaling
   targets are 10 to 100 billion Stacks (which scales the Identifier
   Namespace), and 10 million sites.  Although the latter does not
   directly scale the Internet's Locator Namespace, it indicates the
   worst-case granularity of the routing table for that Locator
   Namespace.  If we don't do better than random allocation of address
   blocks to sites, we will end up with 10 million routing table
   entries.

4.7.  What Does an Identifier Look Like?

   This is of course a question that HIP [RFC4423] has looked at,
   although focussed on "hosts" rather than Stacks.  In practice, the
   difference is probably not so important - a Stack can be viewed as a
   virtual host - and HIP in fact settled on using a HIT (Host Identity
   Tag) as a 128-bit representation for a Host Identity in actual
   packets.  HIP further posits that "a HIT should be unique in the
   whole IP universe as long as it is being used."  Whether or not we
   accept the HIP/HIT model, in the partially disjoint model, choosing
   near-128 bit opaque binary objects as the baseline for Stack
   Identifiers seems like the obvious conclusion, and can easily be
   rendered compatible with IPv6 or embedded IPv4 addresses.  In the
   fully disjoint model, the format of an Identifier is currently
   unconstrained.

4.8.  Do Identifiers have Useful Properties?

   Thus far we assumed that Identifiers are opaque binary objects.  Is
   this a correct assumption?  We may want them to be designed for
   efficient lookup, and we may discover cryptographic requirements.
   Both architectural and design decisions need to be taken on this
   point.

   If they are truly opaque (e.g., HITs) they have no structure, cannot
   be aggregated in any sort of hierarchy, and cannot be used for any
   kind of structured lookup.  If used on-site as Locators, HITs force



Carpenter               Expires December 6, 2007               [Page 14]


Internet-Draft         Identifier-Locator Mapping              June 2007


   use of flat routing.  If Identifiers are (for example) equated
   locally to Locators, and specifically to IPv6 Unique Local Addresses
   (ULA) [RFC4193], they can be organized to match a site's subnet
   infrastructure and be used in a convenient way in on-site routing and
   in reverse DNS.  However, for mobile systems, this argument can only
   apply on the home site; once the system roams to another site, its
   ULA can no longer be used as a Locator even it remains as the
   Identifier.  Therefore, we must be cautious about relying on any
   address-like properties of Identifiers.

4.9.  What Does a Locator Look Like?

   Unless we plan to destroy the Internet and build a new one, it seems
   probable that it will look like an IPv4 or IPv6 prefix.  Note that it
   doesn't need to be a full address: routing an IPv4 packet to the site
   border router handling a given /24 may be necessary and sufficient,
   if that border router knows how to resolve the Identifier to a local
   Stack Locator.  So it is suggested that Locators in the map look
   like:
      Address type:Prefix/MaskLength

   and of course it is legitimate to use /32 or /128 masks.

4.10.  Who Needs the Map?

   The minimal model is that the map is needed at every border router
   that connects a customer site (or a local ISP) to one or more transit
   providers.  In that case, Stack A will simply send a packet to Stack
   Identifier B in care of its default router, and the border router
   will invoke the map to forward the packet to a Locator for B's site.
   B's border router will remap, if necessary, to B's local Locator.
   (However, that remapping will be a no-operation if, in the partially
   disjoint model, Identifier equals stub Locator.)

   In more complex scenarios, several Locator remappings could occur in
   transit.  In other words, in addition to A's and B's border routers,
   which both sit at a point where the Locator Namespace Context
   changes, the packet flows through another router at which such a
   change occurs.  Although this would represent a discontinuity in the
   Internet Locator Namespace, it would not break the Identifier/Locator
   mapping model.  In fact, a Locator remapping can be regarded as a
   property of the routing system and quite distinct from the
   Identifier/Locator map.  It's an open question whether a general
   Locator/Locator mapping system is needed.

   Note that if sites A and B were actually interconnected by an IP-
   level VPN rather than by the Internet, this could readily be
   represented in the map held by the two border routers.  It's really



Carpenter               Expires December 6, 2007               [Page 15]


Internet-Draft         Identifier-Locator Mapping              June 2007


   just a different way of representing a specific route.

   Finally, the map could be held by the sending hosts.  In a sense this
   is what SHIM6 [I-D.ietf-shim6-proto] proposes, except that SHIM6
   derives its map session-by-session without directly involving the
   routing system.  But SHIM6 could certainly work equally well if it
   acquired the map globally from some source, and moving SHIM6
   functionality from the host to a proxy is being studied.

4.11.  What is the lifetime of a mapping?

   At a given instant in time, an Identifier will correspond to one or
   more Locators.  The mapping between a given Identifier and a given
   Locator must have some valid lifetime, which is unlikely to be
   infinite.  For example, imagine a server with a permanent Identifier.
   Assume it has four corresponding Locators, the IPv6 and IPv4
   addresses of the site's border routers, which are connected to two
   different ISPs.  When the site decides to cancel one of its ISPs, the
   two corresponding locators become invalid.

   Lifetime could be much shorter for client machines configured
   dynamically each time they connect to a site network, using DHCP or
   IPv6 Neighbor Discovery.  When such a machine boots up, it might
   acquire a new Identifier, possibly equal to its Locator in the site
   context.  This will need to be mapped to all external Locators valid
   for the site.  That mapping will be valid only until the client
   machine is removed from the site network.  Even if there is a way to
   give a client machine a permanent Identifier, its Locator mappings
   will be created at reboot.

   How quickly will such changes in the map be propagated through the
   Internet?  Will old mappings be deleted from cache when a lifetime
   expires, or will there be an explicit delete?

4.12.  How Does the Map Relate to Mobility?

   Is it correct, and sufficient, to say that whatever Locator a mobile
   system is currently using belongs to some site or other, and the
   Identifier/Locator mapping for that site applies?  In other words,
   can we deem that id-loc mapping is orthogonal to mobility?  Or must
   we ask how a site discovers the appropriate mapping when a visiting
   mobile node appears?  Alternatively, should we consider that dynamic
   id-loc mapping is itself a mobility mechanism?  What lessons can we
   learn from Mobile IP?  In fact, is Mobile IP anything other than an
   id-loc mapping system, where the Home Agent fulfils the role of an
   id-loc mapper?





Carpenter               Expires December 6, 2007               [Page 16]


Internet-Draft         Identifier-Locator Mapping              June 2007


4.13.  Who chooses the Locator?

   Because of multihoming, it's likely that the map will contain more
   than one Locator for a given Identifier.  An important consideration
   is that the choice of locator should be under policy control, in
   order that traffic should flow along the paths preferred by site or
   ISP managers.  The map needs to provide for some elementary policy
   constructs such as precedence.

4.14.  Push, Pull, Push/Pull

   In a naive push model, the originator of a mapping entry pushes it
   out to all those who may need it, which in the limiting case is every
   node in the Internet.  In a naive pull model, a node that needs a
   mapping entry (to map the first packet of a session) pulls the entry
   when it needs it.  Clearly, as described, both of these models have
   major issues.

   The naive push model would need to flood the entire Internet whenever
   a mapping entry changes.  Even if we can design to have one mapping
   entry per site, that makes a target of flooding the Internet with
   updates from 10 million sites.  The rate is unknown, but presumably
   many times today's BGP4 update rate, and presumably unsustainable.

   The naive pull model would insert a substantial lookup delay
   (probably measured in tens or hundreds of milliseconds) at the
   beginning of every applications session that could not make use of a
   locally cached mapping entry.  This would be a major problem,
   particularly for massive server farms serving tens of thousands of
   effectively random Internet users, where the chance of having a
   suitable cached mapping entry would be low.  Also, it would cause a
   risk of unacceptable glitches in real time sessions, if dynamic
   remapping became necessary during a session.

   The answer probably lies in some intermediate Push/Pull model where
   mapping changes are opportunistically flooded to caching map servers
   around the network, and opportunistically discovered by mapping
   nodes, with a fallback to a pull model when needed.  While the DNS
   may serve as a general model for such a solution, it is far from
   obvious that the DNS is the right tool as it stands today.


5.  Conclusion

   This document doesn't draw a conclusion as to whether the completely
   disjoint or partially disjoint namespaces model is better, but the
   community needs to make a clear decision.  Neither does it analyze
   map distribution mechanisms in detail, where again a community choice



Carpenter               Expires December 6, 2007               [Page 17]


Internet-Draft         Identifier-Locator Mapping              June 2007


   of mechanism is needed.  It is hoped the foregoing discussion will
   provide background for the choices to be made.


6.  Security Considerations

   An important decision must be made whether the mapping mechanism will
   exist only in boxes deemed to be intrinsically trusted (i.e. routers
   accessible exclusively by trusted personnel) or whether it will also
   exist in boxes liable to general attack threats (i.e. hosts
   accessible to a wide variety of users and not necessarily maintained
   professionally).  The threat analysis for a solution will be
   significantly different in the two cases.

   This document does not attempt a threat analysis in a vacuum.  It is
   clear that if Internet routing comes to depend on an Identifier to
   Locator mapping service, that service could become an attack vector
   for either packet diversion or denial of service unless adequately
   protected.  Thus, it seems very likely that the mapping elements must
   be cryptographicaly authenticated to prevent tampering, and possible
   DoS attacks must be anticipated.  The threat analyses for MULTI6
   [RFC4218], SHIM6 (see Security Considerations in
   [I-D.ietf-shim6-proto]) and LISP [I-D.bagnulo-lisp-threat] are
   illustrative.

   A major purpose of a Stack Identifier is to give assurance to the
   other end of a communication that it's talking to the right entity.
   There are various cases in current-day TCP/IP where the IP Address is
   used for that, on the theory that we know the packets we send are
   being directed there; we should be looking for something stronger.
   This implies a possible need for Identifiers to be authenticated,
   regardless of mapping issues.

   Any id-loc mapping scheme will have an impact on privacy, e.g.
   facilitating or hindering the tracking of an individual's or host's
   activities over time.  Whatever id-loc schemes are proposed should be
   specific about their impact in this area.  Also, is there any
   relation to topology hiding [RFC4864]?


7.  IANA Considerations

   This document requests no action by the IANA.


8.  Acknowledgements

   There are years of previous thinking and writing on this topic in the



Carpenter               Expires December 6, 2007               [Page 18]


Internet-Draft         Identifier-Locator Mapping              June 2007


   Internet technical community.  No claim to originality is made, and
   overlooked references will be gladly added.

   Contributions and comments by Eliot Lear, Russ White, Stephen
   Farrell, Noel Chiappa, John Leslie, Alvaro Vives and others are
   gratefully acknowledged.

   This document was produced using the xml2rfc tool [RFC2629].


9.  Change log [RFC Editor: please remove this section]

   draft-carpenter-idloc-map-cons-01: significant reorganization,
   especially distinguishing disjoint and overlapping namespace models;
   included feedback comments, 2007-06-04

   draft-carpenter-idloc-map-cons-00: original version, 2007-04-17


10.  Informative References

   [ENDPOINTS]
              Chiappa, N., "Endpoints and Endpoint Names: A Proposed
              Enhancement to the Internet Architecture  [unpublished,
              see http://ana.lcs.mit.edu/~jnc//tech/endpoints.txt]",
              June 1995.

   [GSE]      O'Dell, M., "GSE - An Alternate Addressing Architecture
              for IPv6 [unpublished]", February 1997.

   [I-D.bagnulo-lisp-threat]
              Bagnulo, M., "Preliminary LISP Threat Analysis",
              draft-bagnulo-lisp-threat-00 (work in progress),
              March 2007.

   [I-D.farinacci-lisp]
              Farinacci, D., "Locator/ID Separation Protocol (LISP)",
              draft-farinacci-lisp-00 (work in progress), January 2007.

   [I-D.iab-raws-report]
              Meyers, D., "Report from the IAB Workshop on Routing and
              Addressing", draft-iab-raws-report-02 (work in progress),
              April 2007.

   [I-D.ietf-mmusic-ice]
              Rosenberg, J., "Interactive Connectivity Establishment
              (ICE): A Methodology for Network  Address Translator (NAT)
              Traversal for Offer/Answer Protocols",



Carpenter               Expires December 6, 2007               [Page 19]


Internet-Draft         Identifier-Locator Mapping              June 2007


              draft-ietf-mmusic-ice-15 (work in progress), March 2007.

   [I-D.ietf-shim6-proto]
              Bagnulo, M. and E. Nordmark, "Shim6: Level 3 Multihoming
              Shim Protocol for IPv6", draft-ietf-shim6-proto-08 (work
              in progress), April 2007.

   [I-D.nikander-ram-ilse]
              Nikander, P., "Identifier / Locator Separation:
              Exploration of the Design Space (ILSE)",
              draft-nikander-ram-ilse-00 (work in progress),
              February 2007.

   [I-D.templin-ipvlx]
              Templin, F., "The IPvLX Architecture",
              draft-templin-ipvlx-08 (work in progress), May 2007.

   [I-D.wang-ietf-efit]
              Massey, D., "A Proposal for Scalable Internet Routing &
              Addressing", draft-wang-ietf-efit-00 (work in progress),
              February 2007.

   [NSRG]     Lear, E. and R. Droms, "What's In A Name: Thoughts from
              the NSRG [unpublished]", September 2003.

   [RFC1918]  Rekhter, Y., Moskowitz, R., Karrenberg, D., Groot, G., and
              E. Lear, "Address Allocation for Private Internets",
              BCP 5, RFC 1918, February 1996.

   [RFC2101]  Carpenter, B., Crowcroft, J., and Y. Rekhter, "IPv4
              Address Behaviour Today", RFC 2101, February 1997.

   [RFC2629]  Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629,
              June 1999.

   [RFC3056]  Carpenter, B. and K. Moore, "Connection of IPv6 Domains
              via IPv4 Clouds", RFC 3056, February 2001.

   [RFC3205]  Moore, K., "On the use of HTTP as a Substrate", BCP 56,
              RFC 3205, February 2002.

   [RFC3489]  Rosenberg, J., Weinberger, J., Huitema, C., and R. Mahy,
              "STUN - Simple Traversal of User Datagram Protocol (UDP)
              Through Network Address Translators (NATs)", RFC 3489,
              March 2003.

   [RFC4007]  Deering, S., Haberman, B., Jinmei, T., Nordmark, E., and
              B. Zill, "IPv6 Scoped Address Architecture", RFC 4007,



Carpenter               Expires December 6, 2007               [Page 20]


Internet-Draft         Identifier-Locator Mapping              June 2007


              March 2005.

   [RFC4193]  Hinden, R. and B. Haberman, "Unique Local IPv6 Unicast
              Addresses", RFC 4193, October 2005.

   [RFC4218]  Nordmark, E. and T. Li, "Threats Relating to IPv6
              Multihoming Solutions", RFC 4218, October 2005.

   [RFC4423]  Moskowitz, R. and P. Nikander, "Host Identity Protocol
              (HIP) Architecture", RFC 4423, May 2006.

   [RFC4864]  Van de Velde, G., Hain, T., Droms, R., Carpenter, B., and
              E. Klein, "Local Network Protection for IPv6", RFC 4864,
              May 2007.


Author's Address

   Brian Carpenter
   IBM
   8 Chemin de Blandonnet
   1214 Vernier,
   Switzerland

   Email: brian.e.carpenter@gmail.com


























Carpenter               Expires December 6, 2007               [Page 21]


Internet-Draft         Identifier-Locator Mapping              June 2007


Full Copyright Statement

   Copyright (C) The IETF Trust (2007).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
   THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
   OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.


Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.


Acknowledgment

   Funding for the RFC Editor function is provided by the IETF
   Administrative Support Activity (IASA).





Carpenter               Expires December 6, 2007               [Page 22]