<?xml version="1.0" encoding="US-ASCII"?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
    <!ENTITY rfc2119 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
    <!ENTITY rfc0768 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.0768.xml'>
    <!ENTITY rfc2784 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2784.xml'>
    <!ENTITY rfc3056 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3056.xml'>
    <!ENTITY rfc4984 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4984.xml'>
    <!ENTITY rfc6275 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6275.xml'>
    <!ENTITY rfc4866 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4866.xml'>
    <!ENTITY rfc4192 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4192.xml'>
    <!ENTITY rfc3168 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3168.xml'>
    <!ENTITY rfc4086 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4086.xml'>
    <!ENTITY rfc4868 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4868.xml'>
    <!ENTITY rfc2404 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2404.xml'>
    <!ENTITY rfc3232 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3232.xml'>
    <!ENTITY rfc5496 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5496.xml'>
    <!ENTITY rfc1918 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.1918.xml'>
    <!ENTITY rfc4632 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4632.xml'>
    <!ENTITY rfc1034 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.1034.xml'>
    <!ENTITY rfc3261 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3261.xml'>
    <!ENTITY rfc5226 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5226.xml'>
    <!ENTITY rfc5944 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5944.xml'>
    <!ENTITY rfc0791 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.0791.xml'>
    <!ENTITY rfc2460 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2460.xml'>
    <!ENTITY rfc6115 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6115.xml'>
    <!ENTITY rfc4107 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4107.xml'>
    <!ENTITY rfc6480 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6480.xml'>
    <!ENTITY rfc6518 PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6518.xml'>
]>

<rfc category="exp" ipr="trust200902" number="6830" submissionType="IETF" consensus="yes">

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc rfcedstyle="yes"?>

    <front>
        <title abbrev="LISP">The Locator/ID Separation Protocol (LISP)</title>
        <author initials='D' surname="Farinacci" fullname='Dino Farinacci'>
            <organization>Cisco Systems</organization>
            <address><postal>
                <street>Tasman Drive</street>
                <city>San Jose</city> <region>CA</region>
                <code>95134</code>
                <country>USA</country>
              </postal>
            <email>farinacci@gmail.com</email></address>
        </author>

        <author initials='V' surname="Fuller" fullname='Vince Fuller'>
          <organization></organization>
          <address>
            <email>vaf@vaf.net</email>
          </address>
        </author>

        <author initials='D' surname="Meyer" fullname='Dave Meyer'>
            <organization>Cisco Systems</organization>
            <address><postal>
                <street>170 Tasman Drive</street>
                <city>San Jose</city> <region>CA</region>
                <country>USA</country>
              </postal>
            <email>dmm@1-4-5.net</email></address>
        </author>

        <author initials='D' surname="Lewis" fullname='Darrel Lewis'>
            <organization>Cisco Systems</organization>
            <address><postal>
                <street>170 Tasman Drive</street>
                <city>San Jose</city> <region>CA</region>
                <country>USA</country>
              </postal>
            <email>darlewis@cisco.com</email></address>
        </author>

        <date month="January" year="2013"/>

        <abstract>
          <t>This document describes a network-layer-based protocol that
          enables separation of IP addresses into two new numbering
          spaces: Endpoint Identifiers (EIDs) and Routing Locators
          (RLOCs). No changes are required to either host protocol
          stacks or to the "core" of the Internet infrastructure.
          The Locator/ID Separation Protocol (LISP) can be incrementally
          deployed, without a "flag day", and offers Traffic
          Engineering, multihoming, and mobility benefits to
          early adopters, even when there are relatively few LISP-capable
          sites.</t>

          <t>Design and development of LISP was largely motivated by
          the problem statement produced by the October 2006 IAB
          Routing and Addressing Workshop.</t>
        </abstract>
    </front>

    <middle>

        <section title="Introduction">
            <t>This document describes the Locator/Identifier
            Separation Protocol (LISP), which provides a set of
            functions for routers to exchange information used to map
            from Endpoint Identifiers (EIDs) that are not globally routable
            to routable Routing Locators (RLOCs). It also defines a
            mechanism for these LISP routers to encapsulate IP packets
            addressed with EIDs for transmission across a network
            infrastructure that uses RLOCs for routing and forwarding.</t>

            <t>Creation of LISP was initially motivated by discussions
            during the IAB-sponsored Routing and Addressing Workshop
            held in Amsterdam in October 2006 (see
            <xref target="RFC4984" />). A key conclusion of the
            workshop was that the Internet routing and addressing
            system was not scaling well in the face of the explosive
            growth of new sites; one reason for this poor scaling is
            the increasing number of multihomed sites and other sites that
            cannot be addressed as part of topology-based or
            provider-based aggregated prefixes. Additional work that
            more completely describes the problem statement may be
            found in <xref target="RADIR" />.</t>

            <t>A basic observation, made many years ago in early
            networking research such as that documented in
            <xref target="CHIAPPA" /> and <xref target="RFC4984" />,
            is that using a single address field for both identifying
            a device and for determining where it is
            topologically located in the network requires optimization
            along two conflicting axes: for routing to be efficient,
            the address must be assigned topologically; for
            collections of devices to be easily and effectively
            managed, without the need for renumbering in response to
            topological change (such as that caused by adding or
            removing attachment points to the network or by mobility
            events), the address must explicitly not be tied to the
            topology.</t>

            <t>The approach that LISP takes to solving the routing
            scalability problem is to replace IP addresses with two
            new types of numbers: Routing Locators (RLOCs), which are
            topologically assigned to network attachment points (and
            are therefore amenable to aggregation) and used for
            routing and forwarding of packets through the network; and
            Endpoint Identifiers (EIDs), which are assigned
            independently from the network topology, are used for
            numbering devices, and are aggregated along administrative
            boundaries.  LISP then defines functions for mapping
            between the two numbering spaces and for encapsulating
            traffic originated by devices using non-routable EIDs for
            transport across a network infrastructure that routes and
            forwards using RLOCs. Both RLOCs and EIDs are
            syntactically identical to IP addresses; it is the
            semantics of how they are used that differs.</t>

            <t>This document describes the protocol that implements
            these functions. The database that stores the mappings
            between EIDs and RLOCs is explicitly a separate "module"
            to facilitate experimentation with a variety of
            approaches. One database design that is being developed
            for experimentation as part of the LISP working group work
            is <xref target="RFC6836" />. Others that have been described
            include <xref target="CONS" />, <xref target="EMACS" />, and
            <xref target="RFC6837" />.  Finally, <xref target="RFC6833"/>
            documents a general-purpose service interface for
            accessing a mapping database; this interface is intended
            to make the mapping database modular so that different
            approaches can be tried without the need to modify
            installed LISP-capable devices in LISP sites.</t>

            <t>This experimental specification has areas that require
            additional experience and measurement.  It is NOT
            RECOMMENDED for deployment beyond experimental situations.
            Results of experimentation may lead to modifications and
            enhancements of protocol mechanisms defined in this
            document.  See <xref target="known-issues" /> for
            specific, known issues that are in need of further work
            during development, implementation, and
            experimentation.</t>
          
            <t>An examination of the implications of LISP on Internet
            traffic, applications, routers, and security is for future
            study.  This analysis will explain what role LISP can play
            in scalable routing and will also look at scalability and
            levels of state required for encapsulation, decapsulation,
            liveness, and so on.</t>

        </section>

        <section title="Requirements Notation">
            <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
            "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
            and "OPTIONAL" in this document are to be interpreted as
            described in <xref target="RFC2119"/>.</t>
        </section>

        <section title="Definition of Terms" anchor="DEFINITIONS">
            <t><list style="hanging">
                <t hangText="Provider-Independent (PI) Addresses: ">
                PI addresses are an address block assigned from a pool
                where blocks are not associated with any particular
                location in the network (e.g., from a particular
                service provider) and are therefore not topologically
                aggregatable in the routing system. </t>

        <t hangText="Provider-Assigned (PA) Addresses: ">PA addresses are
                an address block assigned to a site by each service 
                provider to which a site connects. Typically, each block is a
                sub-block of a service provider Classless Inter-Domain Routing
                (CIDR) <xref target="RFC4632" /> block and is aggregated
                into the larger block before being advertised into the global
                Internet. Traditionally, IP multihoming has been implemented
                by each multihomed site acquiring its own globally visible
                prefix. LISP uses only topologically assigned and aggregatable
                address blocks for RLOCs, eliminating this demonstrably 
                non-scalable practice.</t>

        <t hangText="Routing Locator (RLOC): ">An RLOC is an IPv4 
                <xref target="RFC0791" /> or IPv6 <xref target="RFC2460" /> 
                address of an Egress Tunnel Router (ETR). An RLOC is
                the output of an EID-to-RLOC mapping lookup. An EID
                maps to one or more RLOCs. Typically, RLOCs are
                numbered from topologically aggregatable blocks that
                are assigned to a site at each point to which it
                attaches to the global Internet; where the topology is
                defined by the connectivity of provider networks,
                RLOCs can be thought of as PA addresses. Multiple
                RLOCs can be assigned to the same ETR device or to
                multiple ETR devices at a site.</t>

        <t hangText="Endpoint ID (EID): ">An EID is a 32-bit (for
                IPv4) or 128-bit (for IPv6) value used in the source
                and destination address fields of the first (most inner)
                LISP header of a packet. The host obtains a
                destination EID the same way it obtains a destination
                address today, for example, through a Domain Name
                System (DNS) <xref target="RFC1034" /> lookup or
                Session Initiation Protocol (SIP)
                <xref target="RFC3261" /> exchange.  The source EID
                is obtained via existing mechanisms used to set a
                host's "local" IP address. An EID used on the public Internet
                must have the same properties as any other IP address used in
                that manner; this means, among other things, that it must be
                globally unique. An EID is allocated to a
                host from an EID-Prefix block associated with the site
                where the host is located.  An EID can be used by a
                host to refer to other hosts.  EIDs MUST NOT be used
                as LISP RLOCs. Note that EID blocks MAY be assigned in
                a hierarchical manner, independent of the network
                topology, to facilitate scaling of the mapping
                database. In addition, an EID block assigned to a site
                may have site-local structure (subnetting) for routing
                within the site; this structure is not visible to the
                global routing system. In theory, the bit
                string that represents an EID for one device can represent
                an RLOC for a different device.  As the
                architecture is realized, if a given bit string is
                both an RLOC and an EID, it must refer to the same
                entity in both cases.  When used in discussions with
                other Locator/ID separation proposals, a LISP EID will
                be called an "LEID". Throughout this document, any
                references to "EID" refer to an LEID.</t>

        <t hangText="EID-Prefix: ">An EID-Prefix is a power-of-two block
                of EIDs that are allocated to a site by an address allocation
                authority.  EID-Prefixes are associated with a set of
                RLOC addresses that make up a "database
                mapping". EID-Prefix allocations can be broken up into
                smaller blocks when an RLOC set is to be associated with
                the larger EID-Prefix block. 

                A globally routed address block (whether PI or PA) is
                not inherently an EID-Prefix.  A globally routed
                address block MAY be used by its assignee as an EID
                block.  The converse is not supported.  That is, a
                site that receives an explicitly allocated EID-Prefix
                may not use that EID-Prefix as a globally routed prefix. This
                would require coordination and cooperation with the
                entities managing the mapping infrastructure.  Once
                this has been done, that block could be removed from
                the globally routed IP system, if other suitable
                transition and access mechanisms are in place.
                Discussion of such transition and access mechanisms
                can be found in <xref target="RFC6832" /> and 
                <xref target="LISP-DEPLOY" />.</t>

        <t hangText="End-system: ">An end-system is an IPv4 or IPv6 device
                that originates packets with a single IPv4 or IPv6 header. The 
                end-system supplies an EID value for the destination 
                address field of the IP header when communicating 
                globally (i.e., outside of its routing domain). 
                An end-system can be a host computer, a switch or router 
                device, or any network appliance.</t>

        <t hangText="Ingress Tunnel Router (ITR): ">An ITR is a router that
                resides in a LISP site. Packets sent by sources inside of
                the LISP site to destinations outside
                of the site are candidates for encapsulation by the ITR. The
                ITR treats the IP destination address as an EID
                and performs an EID-to-RLOC mapping lookup. The router 
                then prepends an "outer" IP header with one of its 
                globally routable RLOCs in the source address field and the 
                result of the mapping lookup in the destination address field.
                Note that this destination RLOC MAY be an intermediate, proxy
                device that has better knowledge of the EID-to-RLOC mapping
                closer to the destination EID. In general, an ITR receives
                IP packets from site end-systems on one side and sends 
                LISP-encapsulated IP packets toward the Internet on the 
                other side.</t>

                <t>Specifically, when a service provider prepends a LISP 
                header for Traffic Engineering purposes, the router that 
                does this is also regarded as an ITR. The outer RLOC the 
                ISP ITR uses can be based on the outer destination 
                address (the originating ITR's supplied RLOC) or the 
                inner destination address (the originating host's 
                supplied EID).</t>

                <t hangText="TE-ITR: ">A TE-ITR is an ITR that is deployed
                in a service provider network that prepends an additional LISP
                header for Traffic Engineering purposes.</t>

        <t hangText="Egress Tunnel Router (ETR): ">An ETR is a router
                that accepts an IP packet where the destination address
                in the "outer" IP header is one of its own RLOCs. The
                router strips the "outer" header and forwards the packet
                based on the next IP header found. In general, an ETR
                receives LISP-encapsulated IP packets from the Internet
                on one side and sends decapsulated IP packets to site
                end-systems on the other side. ETR functionality does
                not have to be limited to a router device.  A server
                host can be the endpoint of a LISP tunnel as well.</t>

                <t hangText="TE-ETR: ">A TE-ETR is an ETR that is deployed in a
                service provider network that strips an outer LISP header for 
                Traffic Engineering purposes.</t>

                <t hangText="xTR: ">An xTR is a reference to an ITR or ETR when
                direction of data flow is not part of the context description.
                "xTR" refers to the router that is the tunnel endpoint and is
                used synonymously with the term "Tunnel Router". For example,
                "An xTR can be located at the Customer Edge (CE) router"
                indicates both ITR and ETR functionality at the CE router.
                </t>

        <t hangText="LISP Router: ">A LISP router is a router that performs
                the functions of any or all of the following:
                ITR, ETR, Proxy-ITR (PITR), or Proxy-ETR (PETR).</t>

        <t hangText="EID-to-RLOC Cache: ">The EID-to-RLOC Cache is a
                short-lived, on-demand table in an ITR that stores,
                tracks, and is responsible for timing out and
                otherwise validating EID-to-RLOC mappings. This cache
                is distinct from the full "database" of EID-to-RLOC
                mappings; it is dynamic, local to the ITR(s), and
                relatively small, while the database is distributed,
                relatively static, and much more global in scope.</t>

        <t hangText="EID-to-RLOC Database: ">The EID-to-RLOC Database
                is a global distributed database that contains all
                known EID-Prefix-to-RLOC mappings.  Each potential ETR
                typically contains a small piece of the database: the
                EID-to-RLOC mappings for the EID-Prefixes "behind" the
                router. These map to one of the router's own
                globally visible IP addresses. The same database
                mapping entries MUST be configured on all ETRs for a
                given site.  In a steady state, the EID-Prefixes for
                the site and the Locator-Set for each EID-Prefix MUST
                be the same on all ETRs. Procedures to enforce and/or
                verify this are outside the scope of this document.

                Note that there MAY be transient conditions when the
                EID-Prefix for the site and Locator-Set for each
                EID-Prefix may not be the same on all ETRs. This has
                no negative implications, since a partial set of Locators
                can be used. </t>

        <t hangText="Recursive Tunneling: ">Recursive Tunneling occurs
                when a packet has more than one LISP IP
                header. Additional layers of tunneling MAY be employed
                to implement Traffic Engineering or other re-routing
                as needed. When this is done, an additional "outer"
                LISP header is added, and the original RLOCs are
                preserved in the "inner" header. Any references to
                tunnels in this specification refer to dynamic
                encapsulating tunnels; they are never statically
                configured.</t>

        <t hangText="Re-encapsulating Tunnels: ">Re-encapsulating Tunneling
                occurs when an ETR removes a LISP header, then acts as an
                ITR to prepend another LISP header. Doing this allows a packet 
                to be re-routed by the re-encapsulating router without adding 
                the overhead of additional tunnel headers. Any references
                to tunnels in this specification refer to dynamic
                encapsulating tunnels; they are never statically
                configured. When using multiple mapping database systems,
                care must be taken to not create re-encapsulation loops
                through misconfiguration.</t>

                <t hangText="LISP Header: ">LISP header is a term used in this
                document to refer to the outer IPv4 or IPv6 header, a UDP
                header, and a LISP-specific 8-octet header that follow
                the UDP header and that an ITR prepends or an ETR strips.</t>

                <t hangText="Address Family Identifier (AFI): ">AFI is a term
                used to describe an address encoding in a packet. An
                address family currently pertains to an IPv4 or IPv6
                address. See <xref target="AFI"/> and <xref target="RFC3232"/>
                for details. An AFI value of
                0 used in this specification indicates an unspecified
                encoded address where the length of the address is 0
                octets following the 16-bit AFI value of 0.</t>

                <t hangText="Negative Mapping Entry: ">A negative
                mapping entry, also known as a negative cache entry,
                is an EID-to-RLOC entry where an EID-Prefix is
                advertised or stored with no RLOCs. That is, the
                Locator-Set for the EID-to-RLOC entry is empty or has
                an encoded Locator count of 0. This type of entry
                could be used to describe a prefix from a non-LISP
                site, which is explicitly not in the mapping
                database. There are a set of well-defined actions that
                are encoded in a Negative Map-Reply (<xref target="MR" />).
                </t>

                <t hangText="Data-Probe: ">A Data-Probe is a
                LISP-encapsulated data packet where the inner-header
                destination address equals the outer-header
                destination address used to trigger a Map-Reply by a
                decapsulating ETR. In addition, the original packet is
                decapsulated and delivered to the destination host if
                the destination EID is in the EID-Prefix range configured
                on the ETR. Otherwise, the packet is discarded. A
                Data-Probe is used in some of the mapping database
                designs to "probe" or request a Map-Reply from an ETR;
                in other cases, Map-Requests are used. See each
                mapping database design for details. When using Data-Probes,
                by sending Map-Requests on the underlying routing system,
                EID-Prefixes must be advertised. However, this is 
                discouraged if the core is to scale by having less
                EID-Prefixes stored in the core router's routing tables.</t> 

                <t hangText="Proxy-ITR (PITR): ">A PITR is defined and
                described in <xref target="RFC6832" />. A PITR acts
                like an ITR but does so on behalf of non-LISP sites
                that send packets to destinations at LISP sites.</t>

                <t hangText="Proxy-ETR (PETR): ">A PETR is defined and
                described in <xref target="RFC6832" />. A PETR acts
                like an ETR but does so on behalf of LISP sites that
                send packets to destinations at non-LISP sites.</t>

                <t hangText="Route-returnability:">Route-returnability
                is an assumption that the underlying routing system
                will deliver packets to the destination. When
                combined with a nonce that is provided by a sender
                and returned by a receiver, this limits off-path data
                insertion. A route-returnability check is verified
                when a message is sent with a nonce, another message
                is returned with the same nonce, and the destination
                of the original message appears as the source of
                the returned message.</t>

                <t hangText="LISP site:">LISP site is a set of routers in an
                edge network that are under a single technical
                administration. LISP routers that reside in the edge
                network are the demarcation points to separate the
                edge network from the core network.</t>

                <t hangText="Client-side:">Client-side is a term used
                in this document to indicate a connection initiation
                attempt by an EID. The ITR(s)
                at the LISP site are the first to get involved in obtaining
                database Map-Cache entries by sending Map-Request messages.</t>

                <t hangText="Server-side:">Server-side is a term used
                in this document to indicate that a connection
                initiation attempt is being accepted for
                a destination EID. The ETR(s) at the destination LISP site are 
                the first to send Map-Replies to the source site initiating
                the connection. The ETR(s) at this destination site can 
                obtain mappings by gleaning information from Map-Requests,
                Data-Probes, or encapsulated packets.</t>

                <t hangText="Locator-Status-Bits (LSBs):">
                Locator-Status-Bits are present in the LISP header. They are
                used by ITRs to inform ETRs about the up/down status
                of all ETRs at the local site. These bits are used as
                a hint to convey up/down router status and not path
                reachability status. The LSBs can be verified by use
                of one of the Locator reachability algorithms
                described in <xref target="loc-reach" />.</t>

                <t hangText="Anycast Address:">Anycast Address is
                a term used in this document to
                refer to the same IPv4 or IPv6 address configured and used on 
                multiple systems at the same time. An EID or RLOC can be an
                anycast address in each of their own address spaces.</t>

            </list></t>
        </section>

        <section title="Basic Overview" anchor="OVERVIEW">
            <t>One key concept of LISP is that end-systems (hosts) operate
            the same way they do today. The IP addresses that
            hosts use for tracking sockets and connections, and for 
            sending and receiving packets, do not change. In LISP terminology,
            these IP addresses are called Endpoint Identifiers (EIDs).</t>

            <t>Routers continue to forward packets based on IP
            destination addresses. When a packet is LISP encapsulated,
            these addresses are referred to as Routing Locators
            (RLOCs). Most routers along a path between two hosts will
            not change; they continue to perform routing/forwarding
            lookups on the destination addresses. For routers between
            the source host and the ITR as well as routers from the ETR to the
            destination host, the destination address is an EID. For the
            routers between the ITR and the ETR, the destination address
            is an RLOC.</t>

            <t>Another key LISP concept is the "Tunnel Router". A
            Tunnel Router prepends LISP headers on host-originated
            packets and strips them prior to final delivery to their
            destination. The IP addresses in this &quot;outer
            header&quot; are RLOCs. During end-to-end packet exchange
            between two Internet hosts, an ITR prepends a new LISP
            header to each packet, and an ETR strips
            the new header. The ITR performs EID-to-RLOC lookups to
            determine the routing path to the ETR, which has the RLOC
            as one of its IP addresses. </t>

            <t>Some basic rules governing LISP are:</t>
            <t><list style="symbols">
                <t>End-systems (hosts) only send to addresses that
                are EIDs. They don't know that addresses are EIDs versus
                RLOCs but assume that packets get to their intended
                destinations.  In a system where LISP is deployed,
                LISP routers intercept EID-addressed packets and
                assist in delivering them across the network core
                where EIDs cannot be routed.
                The procedure a host uses to send IP packets does not 
                change.</t>
                <t>EIDs are always IP addresses assigned to hosts.</t>
                <t>LISP routers mostly deal with Routing Locator addresses. 
                See details in <xref target="MOSTLY" /> to clarify what
                is meant by &quot;mostly&quot;.</t>
                <t>RLOCs are always IP addresses assigned to routers,
                preferably topologically oriented addresses from provider
                CIDR (Classless Inter-Domain Routing) blocks. </t>
                <t>When a router originates packets, it may use as a source
                address either an EID or RLOC. When acting as a host 
                (e.g., when terminating a transport session such as
                Secure SHell (SSH), TELNET, or the
                Simple Network Management Protocol (SNMP)), it may use
                an EID that is explicitly 
                assigned for that purpose. An EID that identifies the router 
                as a host MUST NOT be used as an RLOC; an EID is only routable
                within the scope of a site. 
                A typical BGP configuration might demonstrate this "hybrid" 
                EID/RLOC usage where a router could use its "host-like" EID to 
                terminate iBGP sessions to other routers in a site while at 
                the same time using RLOCs to terminate eBGP sessions to 
                routers outside the site.</t>
                <t>Packets with EIDs in them are not expected to be delivered 
                end-to-end in the absence of an EID-to-RLOC mapping
                operation. They are expected to be used locally for
                intra-site communication or to be encapsulated for inter-site
                communication.</t>
                <t>EID-Prefixes are likely to be hierarchically assigned in
                a manner that is optimized for administrative convenience
                and to facilitate scaling of the EID-to-RLOC mapping
                database. The hierarchy is based on an address allocation
                hierarchy that is independent of the network topology.</t>
                <t>EIDs may also be structured (subnetted) in a manner
                suitable for local routing within an Autonomous System (AS).</t>
            </list></t>

            <t>An additional LISP header MAY be prepended to packets
            by a TE-ITR when re-routing of the path for a packet is
            desired. A potential use-case for this would be an ISP
            router that needs to perform Traffic Engineering for
            packets flowing through its network. In such a situation,
            termed "Recursive Tunneling", an ISP transit acts as an
            additional ITR, and the RLOC it uses for
            the new prepended header would be either a TE-ETR within
            the ISP (along an intra-ISP traffic engineered path) or a
            TE-ETR within another ISP (an inter-ISP traffic engineered
            path, where an agreement to build such a path exists). </t>

            <t>In order to avoid excessive packet overhead as well as
            possible encapsulation loops, this document mandates that
            a maximum of two LISP headers can be prepended to a
            packet. For initial LISP deployments, it is assumed that two
            headers is sufficient, where the first prepended header is
            used at a site for Location/Identity separation and the second
            prepended header is used inside a service provider for
            Traffic Engineering purposes.</t>

            <t>Tunnel Routers can be placed fairly flexibly in a multi-AS 
            topology. For example, the ITR for a particular
            end-to-end packet exchange might be the first-hop or default router
            within a site for the source host. Similarly, the ETR
            might be the last-hop router directly connected to the
            destination host. Another example, perhaps for a VPN service
            outsourced to an ISP by a site, the ITR could
            be the site&apos;s border router at the service provider 
            attachment point. Mixing and matching of site-operated, 
            ISP-operated, and other Tunnel Routers is allowed for maximum
            flexibility. See <xref target="DEPLOYMENT" /> for more details.</t>

            <section title="Packet Flow Sequence" anchor="MOSTLY">
                <t>This section provides an example of the
                unicast packet flow with the following conditions:</t>

                <t><list style="symbols">

                <t>Source host &quot;host1.abc.example.com&quot; is
                sending a packet to &quot;host2.xyz.example.com&quot;, exactly
                what host1 would do if the site was not using
                LISP.</t>

                <t>Each site is multihomed, so each Tunnel Router has
                an address (RLOC) assigned from the service provider
                address block for each provider to which that particular
                Tunnel Router is attached.</t>

                <t>The ITR(s) and ETR(s) are directly connected to the
                source and destination, respectively, but the source and 
                destination can be located anywhere in the LISP site.</t> 

                <t>Map-Requests can be sent on the underlying routing
                system topology, to a mapping database system, or directly
                over an Alternative Logical Topology <xref target="RFC6836" />.
                A Map-Request is sent for an external destination when the 
                destination is not found in
                the forwarding table or matches a default route.</t>

                <t>Map-Replies are sent on the underlying routing system
                topology.</t>           
                </list></t>

                <t>Client host1.abc.example.com wants to communicate
                with server host2.xyz.example.com:</t>

                <t><list style="numbers">

                <t>host1.abc.example.com wants to open a TCP connection to
                host2.xyz.example.com. It does a DNS lookup on
                host2.xyz.example.com. An A/AAAA record is returned. This
                address is the destination EID. The locally assigned
                address of host1.abc.example.com is used as the source EID. An
                IPv4 or IPv6 packet is built and forwarded through the
                LISP site as a normal IP packet until it reaches a
                LISP ITR.</t>

                <t>The LISP ITR must be able to map the destination EID
                to an RLOC of one of the ETRs at the
                destination site. The specific method used to do this
                is not described in this example. See
                <xref target="RFC6836" /> or <xref target="CONS" /> for
                possible solutions.</t>

                <t>The ITR will send a LISP Map-Request. Map-Requests
                SHOULD be rate-limited.</t>

                <t>When an alternate mapping system is not in use, the
                Map-Request packet is routed through the underlying
                routing system.  Otherwise, the Map-Request packet
                is routed on an alternate logical topology, for example,
                the <xref target="RFC6836" /> database mapping system.  In either
                case, when the Map-Request arrives at one of the ETRs
                at the destination site, it will process the packet as
                a control message.</t>

                <t>The ETR looks at the destination EID of the
                Map-Request and matches it against the prefixes in the
                ETR's configured EID-to-RLOC mapping database.  This
                is the list of EID-Prefixes the ETR is supporting for
                the site it resides in. If there is no match, the
                Map-Request is dropped. Otherwise, a LISP Map-Reply is
                returned to the ITR.</t>
                
                <t>The ITR receives the Map-Reply message, parses
                the message (to check for format validity), and stores
                the mapping information from the packet. This
                information is stored in the ITR&apos;s EID-to-RLOC mapping
                cache. Note that the map-cache is an on-demand cache. An ITR
                will manage its map-cache in such a way that optimizes for its
                resource constraints.</t>            

                <t>Subsequent packets from host1.abc.example.com to
                host2.xyz.example.com will have a LISP header prepended by the
                ITR using the appropriate RLOC as the LISP header
                destination address learned from the ETR. Note that the
                packet MAY be sent to a different ETR than the one that
                returned the Map-Reply due to the source site's hashing
                policy or the destination site's Locator-Set policy.</t>

                <t>The ETR receives these packets directly (since the
                destination address is one of its assigned IP
                addresses), checks the validity of the addresses,
                strips the LISP header, and forwards packets to the
                attached destination host.</t>
                </list></t>

                <t>In order to defer the need for a mapping lookup
                in the reverse direction, an ETR MAY create a cache
                entry that maps the source EID (inner-header source IP
                address) to the source RLOC (outer-header source IP
                address) in a received LISP packet. Such a cache entry
                is termed a "gleaned" mapping and only contains a single
                RLOC for the EID in question.  More complete information
                about additional RLOCs SHOULD be verified by sending a
                LISP Map-Request for that EID. Both the ITR and the ETR may
                also influence the decision the other makes in selecting
                an RLOC. See <xref target="mapping" /> for more
                details.</t>
            </section>
        </section>

        <section title="LISP Encapsulation Details">

        <t>Since additional tunnel headers are prepended, the packet
        becomes larger and can exceed the MTU of any link traversed
        from the ITR to the ETR.  It is RECOMMENDED in IPv4 that
        packets do not get fragmented as they are encapsulated by the
        ITR. Instead, the packet is dropped and an ICMP Too Big
        message is returned to the source.</t>

        <t>This specification RECOMMENDS that implementations provide support
        for one of the proposed fragmentation and reassembly
        schemes. Two existing schemes are detailed in 
        <xref target="fragment" />.</t>

        <t>Since IPv4 or IPv6 addresses can be either EIDs or RLOCs,
        the LISP architecture supports IPv4 EIDs with IPv6 RLOCs
        (where the inner header is in IPv4 packet format and the outer
        header is in IPv6 packet format) or IPv6 EIDs with IPv4 RLOCs
        (where the inner header is in IPv6 packet format and the
        outer header is in IPv4 packet format). The next sub-sections
        illustrate packet formats for the homogeneous case
        (IPv4-in-IPv4 and IPv6-in-IPv6), but all 4 combinations MUST be
        supported.</t>

        <section title="LISP IPv4-in-IPv4 Header Format"> 
            <figure> <artwork><![CDATA[
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  / |Version|  IHL  |Type of Service|          Total Length         |
 /  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   |         Identification        |Flags|      Fragment Offset    |
|   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
OH  |  Time to Live | Protocol = 17 |         Header Checksum       |
|   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   |                    Source Routing Locator                     |
 \  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  \ |                 Destination Routing Locator                   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  / |       Source Port = xxxx      |       Dest Port = 4341        |
UDP +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  \ |           UDP Length          |        UDP Checksum           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
L   |N|L|E|V|I|flags|            Nonce/Map-Version                  |
I \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
S / |                 Instance ID/Locator-Status-Bits               |
P   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  / |Version|  IHL  |Type of Service|          Total Length         |
 /  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   |         Identification        |Flags|      Fragment Offset    |
|   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IH  |  Time to Live |    Protocol   |         Header Checksum       |
|   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   |                           Source EID                          |
 \  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  \ |                         Destination EID                       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    IHL = IP-Header-Length
            ]]></artwork> </figure>
            </section>

            <section title="LISP IPv6-in-IPv6 Header Format">
            <figure> <artwork><![CDATA[
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  / |Version| Traffic Class |           Flow Label                  |
 /  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   |         Payload Length        | Next Header=17|   Hop Limit   |
v   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
O   +                                                               +
u   |                                                               |
t   +                     Source Routing Locator                    +
e   |                                                               |
r   +                                                               +
    |                                                               |
H   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
d   |                                                               |
r   +                                                               +
    |                                                               |
^   +                  Destination Routing Locator                  +
|   |                                                               |
 \  +                                                               +
  \ |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  / |       Source Port = xxxx      |       Dest Port = 4341        |
UDP +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  \ |           UDP Length          |        UDP Checksum           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
L   |N|L|E|V|I|flags|            Nonce/Map-Version                  |
I \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
S / |                 Instance ID/Locator-Status-Bits               |
P   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  / |Version| Traffic Class |           Flow Label                  |
 /  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/   |         Payload Length        |  Next Header  |   Hop Limit   |
v   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
I   +                                                               +
n   |                                                               |
n   +                          Source EID                           +
e   |                                                               |
r   +                                                               +
    |                                                               |
H   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
d   |                                                               |
r   +                                                               +
    |                                                               |
^   +                        Destination EID                        +
\   |                                                               |
 \  +                                                               +
  \ |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            ]]></artwork> </figure>

            </section>

            <section title="Tunnel Header Field Descriptions" anchor="LRB" >

            <t><list style="hanging">
            <t hangText="Inner Header (IH):">The inner header is the
            header on the datagram received from the originating host.
            The source and destination IP addresses are EIDs
            <xref target="RFC0791" / > <xref target="RFC2460" />.</t>

            <t hangText="Outer Header: (OH)">The outer header is a new
            header prepended by an ITR. The address fields contain
            RLOCs obtained from the ingress router's EID-to-RLOC
            Cache. The IP protocol number is &quot;UDP (17)&quot; from
            <xref target="RFC0768" />.  The setting of the Don't Fragment
            (DF) bit 'Flags' field
            is according to rules listed in Sections <xref
            target="MTU-STATELESS" format="counter"/> and
            <xref target="MTU-STATEFUL" format="counter"/>.</t>

            <t hangText="UDP Header:">The UDP header contains an ITR
            selected source port when encapsulating a packet. See
            <xref target="loc-hash" /> for details on the hash
            algorithm used to select a source port based on the
            5-tuple of the inner header. The destination port MUST be
            set to the well-known IANA-assigned port value 4341.</t>
        
            <t hangText="UDP Checksum:">The 'UDP Checksum' field SHOULD be
            transmitted as zero by an ITR for either IPv4
            <xref target="RFC0768" /> or IPv6 encapsulation
            <xref target="UDP-TUNNELS" /> <xref target="UDP-ZERO" />.  
            When a packet with a zero
            UDP checksum is received by an ETR, the ETR MUST accept
            the packet for decapsulation.  When an ITR transmits a
            non-zero value for the UDP checksum, it MUST send a
            correctly computed value in this field.  When an ETR
            receives a packet with a non-zero UDP checksum, it MAY
            choose to verify the checksum value.  If it chooses to
            perform such verification, and the verification fails, the
            packet MUST be silently dropped.  If the ETR chooses not
            to perform the verification, or performs the verification
            successfully, the packet MUST be accepted for
            decapsulation. The handling of UDP checksums for all
            tunneling protocols, including LISP, is under active
            discussion within the IETF.  When that discussion
            concludes, any necessary changes will be made to align
            LISP with the outcome of the broader discussion.</t>

            <t hangText="UDP Length:">The 'UDP Length' field is set for
            an IPv4-encapsulated packet to be the sum of the inner-header
            IPv4 Total Length plus the UDP and LISP header lengths.
            For an IPv6-encapsulated packet, the 'UDP Length' field is
            the sum of the inner-header IPv6 Payload
            Length, the size of the IPv6 header (40 octets), and the
            size of the UDP and LISP headers.</t>

            <t hangText="N:">The N-bit is the nonce-present bit. When
            this bit is set to 1, the low-order 24 bits of the first
            32 bits of the LISP header contain a Nonce. See
            <xref target="echo-nonce"/> for details. Both N- and V-bits
            MUST NOT be set in the same packet. If they are, a
            decapsulating ETR MUST treat the 'Nonce/Map-Version' field
            as having a Nonce value present.</t>

            <t hangText="L:">The L-bit is the 'Locator-Status-Bits'
            field enabled bit.  When this bit is set to 1, the
            Locator-Status-Bits in the second 32&nbsp;bits of the LISP
            header are in use.</t>
            </list></t>

            <figure> <artwork><![CDATA[
  x 1 x x 0 x x x
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |N|L|E|V|I|flags|            Nonce/Map-Version                  |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                      Locator-Status-Bits                      |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            ]]></artwork> </figure>

            <t><list style="hanging">

            <t hangText="E:">The E-bit is the echo-nonce-request bit.
            This bit MUST be ignored and has no meaning when the N-bit
            is set to 0.  When the N-bit is set to 1 and this bit is
            set to 1, an ITR is requesting that the nonce value in the 
            'Nonce' field be echoed back in LISP-encapsulated packets when
            the ITR is also an ETR. See <xref target="echo-nonce"/> for 
            details.</t>

            <t hangText="V:">The V-bit is the Map-Version present bit. When
            this bit is set to 1, the N-bit MUST be 0. Refer to 
            <xref target="map-versioning" /> for more details. This bit 
            indicates that the LISP header is encoded in this
            case&nbsp;as:</t>
            </list></t>

            <figure> <artwork><![CDATA[
  0 x 0 1 x x x x
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |N|L|E|V|I|flags|  Source Map-Version   |   Dest Map-Version    |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                 Instance ID/Locator-Status-Bits               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            ]]></artwork> </figure>

            <t><list style="hanging">

            <t hangText="I:">The I-bit is the Instance ID bit. See
            <xref target="instance" /> for more details. When this bit
            is set to 1, the 'Locator-Status-Bits' field is reduced to
            8 bits and the high-order 24 bits are used as an Instance
            ID.  If the L-bit is set to 0, then the low-order 8&nbsp;bits
            are transmitted as zero and ignored on receipt. The format
            of the LISP header would look like this:</t>
            </list></t>

            <figure> <artwork><![CDATA[
  x x x x 1 x x x
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |N|L|E|V|I|flags|            Nonce/Map-Version                  |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                 Instance ID                   |     LSBs      |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            ]]></artwork> </figure>

            <t><list style="hanging">
            <t hangText="flags:">The 'flags' field is a 3-bit field
            reserved for future flag use. It MUST be set to 0 on
            transmit and MUST be ignored on receipt.</t>

            <t hangText="LISP Nonce:">The LISP 'Nonce' field is a 24-bit
            value that is randomly generated by an ITR when the N-bit
            is set to 1. Nonce generation algorithms are an
            implementation matter but are required to generate
            different nonces when sending to different
            destinations. However, the same nonce can be used for a
            period of time to the same destination. 
            The nonce is also used when the E-bit is set
            to request the nonce value to be echoed by the other side
            when packets are returned. When the E-bit is clear but the
            N-bit is set, a remote ITR is either echoing a previously
            requested echo-nonce or providing a random nonce. See
            <xref target="echo-nonce" /> for more details.</t>

            <t hangText="LISP Locator-Status-Bits (LSBs):">When the L-bit
            is also set, the 'Locator-Status-Bits' field
            in the LISP header is set by an ITR to indicate
            to an ETR the up/down status of the Locators in the source
            site. Each RLOC in a Map-Reply is assigned an ordinal
            value from 0 to n-1 (when there are n RLOCs in a mapping
            entry). The Locator-Status-Bits are numbered from 0 to n-1
            from the least significant bit of the field.  The field is
            32 bits when the I-bit is set to 0 and is 8 bits when the
            I-bit is set to 1. When a Locator-Status-Bit is set to 1,
            the ITR is indicating to the ETR that the RLOC associated with
            the bit ordinal has up status. See
            <xref target="loc-reach" /> for details on how an ITR can
            determine the status of the ETRs at the same site.  When
            a site has multiple EID-Prefixes that result in multiple
            mappings (where each could have a different Locator-Set),
            the Locator-Status-Bits setting in an encapsulated packet
            MUST reflect the mapping for the EID-Prefix that the
            inner-header source EID address matches. If the LSB for an anycast 
            Locator is set to 1, then there is at least one RLOC with that 
            address, and the ETR is considered 'up'.
</t>

            </list></t>

            <t>When doing ITR/PITR encapsulation:</t>
            
            <t><list style="symbols">
               <t>The outer-header 'Time to Live' field (or 'Hop Limit'
               field, in the case of IPv6) SHOULD be copied from the
               inner-header 'Time to Live' field. </t>

               <t>The outer-header 'Type of Service' field (or the
               'Traffic Class' field, in the case of IPv6) SHOULD be
               copied from the inner-header 'Type of Service' field
               (with one exception; see below).</t>
             </list></t>
            
            <t>When doing ETR/PETR decapsulation:</t>
        
            <t><list style="symbols">
              <t>The inner-header 'Time to Live' field (or 'Hop Limit'
              field, in the case of IPv6) SHOULD be copied from the
              outer-header 'Time to Live' field, when the Time to Live value
              of the outer header is less than the Time to Live value of the
              inner header.  Failing to perform this check can cause
              the Time to Live of the inner header to increment across
              encapsulation/decapsulation cycles. This check is also
              performed when doing initial encapsulation, when a packet
              comes to an ITR or PITR destined for a LISP site.</t>
 
              <t>The inner-header 'Type of Service' field (or the
              'Traffic Class' field, in the case of IPv6) SHOULD be
              copied from the outer-header 'Type of Service' field (with
              one exception; see below).</t>
            </list></t>

            <t> Note that if an ETR/PETR is also an ITR/PITR and chooses to
            re-encapsulate after decapsulating, the net effect of this
            is that the new outer header will carry the same Time to
            Live as the old outer header minus 1.</t>

            <t>Copying the Time to Live (TTL) serves two purposes:
            first, it preserves the distance the host intended the packet to
            travel; second, and more importantly, it provides for
            suppression of looping packets in the event there is a loop of
            concatenated tunnels due to misconfiguration.
            See <xref target="traceroute" /> for TTL
            exception handling for traceroute packets.</t>

            <t>The Explicit Congestion Notification ('ECN') field occupies
            bits 6 and 7 of both the IPv4 'Type of Service' field and the
            IPv6 'Traffic Class' field <xref target="RFC3168" />.
            The 'ECN' field requires special treatment in order to
            avoid discarding indications of congestion  
            <xref target="RFC3168" />.  ITR
            encapsulation MUST copy the 2-bit 'ECN' field from the inner header
            to the outer header.  Re-encapsulation MUST copy the
            2-bit 'ECN' field from the stripped outer header to the new outer
            header.  If the 'ECN' field contains a congestion indication 
            codepoint (the value is '11', the Congestion Experienced (CE)
            codepoint), then ETR decapsulation MUST copy the 2-bit 'ECN'
            field from the stripped outer header to the surviving inner header
            that is used to forward the packet beyond the ETR.  These
            requirements preserve CE indications when a packet
            that uses ECN traverses a LISP
            tunnel and becomes marked with a CE indication due to
            congestion between the tunnel endpoints.</t>
        </section>

        <section title="Dealing with Large Encapsulated Packets" 
                 anchor="fragment">
        
        <t>This section proposes two mechanisms to deal with
        packets that exceed the path MTU between the ITR and ETR.</t>

        <t>It is left to the implementor to decide if the stateless or 
        stateful mechanism should be implemented. Both or neither can be
        used, since it is a local decision in the ITR regarding how
        to deal with MTU issues, and sites can interoperate with differing 
        mechanisms.</t>

        <t>Both stateless and stateful mechanisms also apply to
        Re-encapsulating and Recursive Tunneling, so any actions
        below referring to an ITR also apply to a TE-ITR.</t>

        <section anchor="MTU-STATELESS" title="A Stateless Solution to MTU Handling">
        <t>An ITR stateless solution to handle MTU issues is described as 
        follows:</t>

        <t><list style="numbers">
        <t>Define H to be the size, in octets, of the outer header an ITR
        prepends to a packet. This includes the UDP and LISP header lengths.</t>
        <t>Define L to be the size, in octets, of the maximum-sized packet 
        an ITR can send to an ETR without the need for the ITR or any 
        intermediate routers to fragment the packet.</t>
        <t>Define an architectural constant S for the maximum size of a
        packet, in octets, an ITR must receive so the effective MTU
        can be met. That is, S = L - H.</t>
        </list></t>

        <t>When an ITR receives a packet from a site-facing interface
        and adds H octets worth of encapsulation to yield a packet size
        greater than L octets, it resolves the MTU issue by first
        splitting the original packet into 2 equal-sized fragments. 
        A LISP header is then prepended to each fragment. The
        size of the encapsulated fragments is then (S/2 + H),
        which is less than the ITR's estimate of the path MTU
        between the ITR and its correspondent ETR.</t>

        <t>When an ETR receives encapsulated fragments, it treats them
        as two individually encapsulated packets. It strips the LISP
        headers and then forwards each fragment to the destination host of
        the destination site.  The two fragments are reassembled at
        the destination host into the single IP datagram that was
        originated by the source host. Note that reassembly can happen
        at the ETR if the encapsulated packet was fragmented at or after the
        ITR.</t>

        <t>This behavior is performed by the ITR when the source host 
        originates a packet with the 'DF' field of the IP header set to 0. 
        When the 'DF' field of the IP header is set to 1, or the packet is an 
        IPv6 packet originated by the source host, the ITR will drop the 
        packet when the size is greater than L and send an ICMP Too Big 
        message to the source with a value of S, where S is (L - H).</t>

        <t>When the outer-header encapsulation uses an IPv4 header, an
        implementation SHOULD set the DF bit to 1 so ETR fragment
        reassembly can be avoided. An implementation MAY set the DF
        bit in such headers to 0 if it has good reason to believe
        there are unresolvable path MTU issues between the sending ITR
        and the receiving ETR.</t>

        <t>This specification RECOMMENDS that L be defined as 1500.</t>
        </section>

        <section anchor="MTU-STATEFUL" title="A Stateful Solution to MTU Handling">
        <t>An ITR stateful solution to handle MTU issues is described as 
        follows and was first introduced in <xref target="OPENLISP" />:</t>

        <t><list style="numbers">
            <t>The ITR will keep state of the effective MTU for each Locator 
            per Map-Cache entry. The effective MTU is what the core network
            can deliver along the path between the ITR and ETR.</t>

            <t>When an IPv6-encapsulated packet, or an IPv4-encapsulated
            packet with the DF bit set to 1, exceeds what the
            core network can deliver, one of the intermediate routers
            on the path will send an ICMP Too Big message to the
            ITR. The ITR will parse the ICMP message to determine
            which Locator is affected by the effective MTU change and
            then record the new effective MTU value in the
            Map-Cache entry.</t>

            <t>When a packet is received by the ITR from a source inside of
            the site and the size of the packet is greater than the effective
            MTU stored with the Map-Cache entry associated with the 
            destination
            EID the packet is for, the ITR will send an ICMP Too Big message
            back to the source. The packet size advertised by the ITR in the 
            ICMP Too Big message is the effective MTU minus the LISP 
            encapsulation length.</t>
        </list></t>

        <t>Even though this mechanism is stateful, it has advantages over
        the stateless IP fragmentation mechanism, by not involving the 
        destination host with reassembly of ITR fragmented packets.</t>
        </section></section>
        
        <section anchor="instance" title="Using Virtualization and Segmentation with LISP">

            <t> When multiple organizations inside of a LISP site are
            using private addresses <xref target="RFC1918" /> as
            EID-Prefixes, their address spaces MUST remain segregated
            due to possible address duplication.  An Instance ID in
            the address encoding can aid in making the entire AFI-based
            address unique. See IANA Considerations
            (<xref target="IANA" />) for details on possible address
            encodings.</t>

            <t>An Instance ID can be carried in a LISP-encapsulated
            packet.  An ITR that prepends a LISP header will copy a
            24-bit value used by the LISP router to uniquely identify
            the address space. The value is copied to the 'Instance ID'
            field of the LISP header, and the I-bit is set to&nbsp;1.</t>

            <t>When an ETR decapsulates a packet, the Instance ID from the
            LISP header is used as a table identifier to locate the 
            forwarding table to use for the inner destination EID 
            lookup.</t>

            <t>For example, an 802.1Q VLAN tag or VPN identifier could be used
            as a 24-bit Instance ID.</t>
        </section>

        </section>

        <section anchor="mapping" title="EID-to-RLOC Mapping">

        <section title="LISP IPv4 and IPv6 Control-Plane Packet Formats">

            <figure>
            <preamble>The following UDP packet formats are used by the LISP 
            control plane.
            </preamble>
            <artwork><![CDATA[
    0                   1                   2                   3   
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |Version|  IHL  |Type of Service|          Total Length         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |         Identification        |Flags|      Fragment Offset    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  Time to Live | Protocol = 17 |         Header Checksum       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                    Source Routing Locator                     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                 Destination Routing Locator                   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  / |           Source Port         |         Dest Port             |
UDP +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  \ |           UDP Length          |        UDP Checksum           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                         LISP Message                          |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |Version| Traffic Class |           Flow Label                  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |         Payload Length        | Next Header=17|   Hop Limit   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    +                                                               +
    |                                                               |
    +                     Source Routing Locator                    +
    |                                                               |
    +                                                               +
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    +                                                               +
    |                                                               |
    +                  Destination Routing Locator                  +
    |                                                               |
    +                                                               +
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  / |           Source Port         |         Dest Port             |
UDP +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  \ |           UDP Length          |        UDP Checksum           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                         LISP Message                          |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            ]]></artwork> </figure>

            <t>The LISP UDP-based messages are the Map-Request and
            Map-Reply messages. When a UDP Map-Request is sent, the
            UDP source port is chosen by the sender and the
            destination UDP port number is set to 4342. When a UDP
            Map-Reply is sent, the source UDP port number is set to
            4342 and the destination UDP port number is copied from
            the source port of either the Map-Request or the invoking
            data packet. Implementations MUST be prepared to accept
            packets when either the source port or destination UDP port
            is set to 4342 due to NATs changing port number values.</t>

            <t>The 'UDP Length' field will reflect the length of the UDP header
            and the LISP Message payload.</t>
            
            <t>The UDP checksum is computed and set to non-zero for
            Map-Request, Map-Reply, Map-Register, and 
            Encapsulated Control Message (ECM) control
            messages. It MUST be checked on receipt, and if the
            checksum fails, the packet MUST be dropped.</t>
            
            <t>The format of control messages includes
            the UDP header so the checksum and length fields can be used
            to protect and delimit message boundaries.</t>

            <section title="LISP Packet Type Allocations">

            <t>This section will be the authoritative source for allocating
            LISP Type values and for defining LISP control message formats.
            Current allocations are:</t>

            <figure> <artwork><![CDATA[
    Reserved:                          0    b'0000'
    LISP Map-Request:                  1    b'0001'
    LISP Map-Reply:                    2    b'0010'
    LISP Map-Register:                 3    b'0011'
    LISP Map-Notify:                   4    b'0100'
    LISP Encapsulated Control Message: 8    b'1000'
            ]]></artwork> </figure>
            </section>

            <section title="Map-Request Message Format" anchor="NONCE">
            <figure> <artwork><![CDATA[
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |Type=1 |A|M|P|S|p|s|    Reserved     |   IRC   | Record Count  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         Nonce . . .                           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         . . . Nonce                           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |         Source-EID-AFI        |   Source EID Address  ...     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |         ITR-RLOC-AFI 1        |    ITR-RLOC Address 1  ...    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                              ...                              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |         ITR-RLOC-AFI n        |    ITR-RLOC Address n  ...    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  / |   Reserved    | EID mask-len  |        EID-Prefix-AFI         |
Rec +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  \ |                       EID-Prefix  ...                         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                   Map-Reply Record  ...                       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            ]]></artwork> </figure>

            <t>Packet field descriptions:</t>
            <t><list style="hanging">

            <t hangText="Type: ">1 (Map-Request)</t>

            <t hangText="A:">
            This is an authoritative bit, which is set to 0 for UDP-based
            Map-Requests sent by an ITR. It is set to 1 when an ITR wants the 
            destination site to return the Map-Reply rather than the mapping
            database system.</t>

            <t hangText="M:">This is the map-data-present bit.
            When set, it indicates that a Map-Reply Record segment is included
            in the Map-Request.</t>

            <t hangText="P:">This is the probe-bit, which indicates
            that a Map-Request SHOULD be treated as a Locator
            reachability probe. The receiver SHOULD respond with a
            Map-Reply with the probe-bit set, indicating that the Map-Reply is
            a Locator reachability probe reply, with the nonce copied
            from the Map-Request. See <xref target="rloc-probe" /> for
            more details.</t>

            <t hangText="S:"> This is the Solicit-Map-Request (SMR)
            bit. See <xref target="SMR"/> for details.</t>

            <t hangText="p:"> This is the PITR bit. This bit is set to 1 when
            a PITR sends a Map-Request.</t>

            <t hangText="s:"> This is the SMR-invoked bit. This bit is set to 1
            when an xTR is sending a Map-Request in response to a received
            SMR-based Map-Request.</t>

            <t hangText="Reserved:">This field MUST be set to 0 on transmit
            and MUST be ignored on receipt.</t>

            <t hangText="IRC:">
            This 5-bit field is the ITR-RLOC Count, which encodes the
            additional number of ('ITR-RLOC-AFI', 'ITR-RLOC Address')
            fields present in this message.  At least one
            (ITR-RLOC-AFI, ITR-RLOC-Address) pair MUST be
            encoded.  Multiple 'ITR-RLOC Address' fields are used, so a
            Map-Replier can select which destination address to use
            for a Map-Reply. The IRC value ranges from 0 to 31. For a 
            value of 0, there is 1 ITR-RLOC address encoded; for a 
            value of 1, there are 2 ITR-RLOC addresses encoded,
            and so on up to 31, which encodes a total of 32 ITR-RLOC
            addresses.</t>

            <t hangText="Record Count:">
            This is the number of records in this Map-Request message.
            A record is comprised of the portion of the packet that is labeled
            'Rec' above and occurs the number of times equal to Record
            Count. For this version of the protocol, a receiver MUST
            accept and process Map-Requests that contain one or more
            records, but a sender MUST only send Map-Requests containing
            one record. Support for requesting multiple EIDs in a single
            Map-Request message will be specified in a future version
            of the protocol.</t>

            <t hangText="Nonce:">
            This is an 8-octet random value created by the sender of the
            Map-Request.  This nonce will be returned in the
            Map-Reply. The security of the LISP mapping protocol
            critically depends on the strength of the nonce in the
            Map-Request message.  The nonce SHOULD be generated by a
            properly seeded pseudo-random (or strong random) source.
            See <xref target="RFC4086" /> for advice on generating 
            security-sensitive random data.</t>

            <t hangText="Source-EID-AFI:">
            This is the address family of the 'Source EID Address' field.
            </t>

            <t hangText="Source EID Address:">
            This is the EID of the source host that originated the
            packet that caused the Map-Request. When
            Map-Requests are used for refreshing a Map-Cache entry or
            for RLOC-Probing, an AFI value 0 is used and this field is
            of zero length.</t>

            <t hangText="ITR-RLOC-AFI:">
            This is the address family of the 'ITR-RLOC Address' field
            that follows this field.</t>

            <t hangText="ITR-RLOC Address:">
            This is used to give the ETR the option of selecting the
            destination address from any address family for the
            Map-Reply message. This address MUST be a routable RLOC
            address of the sender of the Map-Request message.</t>

            <t hangText="EID mask-len:">
            This is the mask length for the EID-Prefix.</t>

            <t hangText="EID-Prefix-AFI:">
            This is the address family of the EID-Prefix according
            to <xref target="AFI" />.</t>

            <t hangText="EID-Prefix:">
            This prefix is 4 octets for an IPv4 address family and
            16 octets for an IPv6 address family.
            When a Map-Request is sent by an ITR because
            a data packet is received for a destination where there is no
            mapping entry, the EID-Prefix is set to the destination IP
            address of the data packet, and the 'EID mask-len' is set to
            32 or 128 for IPv4 or IPv6, respectively. When an xTR wants to 
            query a site
            about the status of a mapping it already has cached, the
            EID-Prefix used in the Map-Request has the same mask length as the
            EID-Prefix returned from the site when it sent a Map-Reply 
            message.</t>

            <t hangText="Map-Reply Record:">
            When the M-bit is set, this field is the size of a single "Record" 
            in the Map-Reply format. This Map-Reply record contains the 
            EID-to-RLOC mapping entry associated with the Source EID. This
            allows the ETR that will receive this Map-Request to cache the
            data if it chooses to do so.</t>

            </list></t>
            </section>

            <section title="EID-to-RLOC UDP Map-Request Message" anchor="MAPREQ">
                <t>A Map-Request is sent from an ITR when it needs a
                mapping for an EID, wants to test an RLOC for
                reachability, or wants to refresh a mapping before TTL
                expiration. For the initial case, the destination IP
                address used for the Map-Request is the data packet's
                destination address (i.e., the destination EID) that
                had a mapping cache lookup failure. For the latter two
                cases, the destination IP address used for the
                Map-Request is one of the RLOC addresses from the
                Locator-Set of the Map-Cache entry. The source address
                is either an IPv4 or IPv6 RLOC address, depending on
                whether the Map-Request is using an IPv4 or IPv6 header,
                respectively. In all cases, the UDP source port number
                for the Map-Request message is a 16-bit value selected by
                the ITR/PITR, and the UDP destination port number is
                set to the well-known destination port number 4342.  A
                successful Map-Reply, which is one that has a nonce
                that matches an outstanding Map-Request nonce, will
                update the cached set of RLOCs associated with the
                EID-Prefix range.</t>

                <t>One or more Map-Request ('ITR-RLOC-AFI',
                'ITR-RLOC-Address') fields MUST be filled in by the
                ITR. The number of fields (minus 1) encoded MUST be
                placed in the 'IRC' field. The ITR MAY include all
                locally configured Locators in this list or just
                provide one locator address from each address family
                it supports. If the ITR erroneously provides no
                ITR-RLOC addresses, the Map-Replier MUST drop the
                Map-Request.</t>

                <t>Map-Requests can also be LISP encapsulated using
                UDP destination port&nbsp;4342 with a LISP Type value set
                to "Encapsulated Control Message", when sent from an
                ITR to a Map-Resolver.  Likewise, Map-Requests are
                LISP encapsulated the same way from a Map-Server to an
                ETR.  Details on Encapsulated Map-Requests and
                Map-Resolvers can be found in <xref target="RFC6833" />.</t>

                <t>Map-Requests MUST be rate-limited. It is RECOMMENDED that
                a Map-Request for the same EID-Prefix be sent no more than 
                once per second.</t>

                <t>An ITR that is configured with mapping database
                information (i.e., it is also an ETR) MAY optionally
                include those mappings in a Map-Request.  When an ETR
                configured to accept and verify such "piggybacked"
                mapping data receives such a Map-Request and it does
                not have this mapping in the map-cache, it MAY
                originate a "verifying Map-Request", addressed to the
                map-requesting ITR and the ETR MAY add a Map-Cache entry. 
                If the ETR has a Map-Cache entry
                that matches the "piggybacked" EID and the RLOC is in
                the Locator-Set for the entry, then it may send the
                "verifying Map-Request" directly to the originating
                Map-Request source. If the RLOC is not in the
                Locator-Set, then the ETR MUST send the "verifying
                Map-Request" to the "piggybacked" EID. Doing this
                forces the "verifying Map-Request" to go through the
                mapping database system to reach the authoritative
                source of information about that EID, guarding against
                RLOC-spoofing in the "piggybacked" mapping data.</t>

            </section>

            <section title="Map-Reply Message Format" anchor="MR-FORMAT">
            <figure> <artwork><![CDATA[
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |Type=2 |P|E|S|          Reserved               | Record Count  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         Nonce . . .                           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         . . . Nonce                           |
+-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   |                          Record TTL                           |
|   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
R   | Locator Count | EID mask-len  | ACT |A|      Reserved         |
e   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
c   | Rsvd  |  Map-Version Number   |       EID-Prefix-AFI          |
o   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
r   |                          EID-Prefix                           |
d   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  /|    Priority   |    Weight     |  M Priority   |   M Weight    |
| L +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| o |        Unused Flags     |L|p|R|           Loc-AFI             |
| c +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  \|                             Locator                           |
+-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            ]]></artwork> </figure>

            <t>Packet field descriptions:</t>
            <t><list style="hanging">

            <t hangText="Type: ">2 (Map-Reply)</t>

            <t hangText="P:">This is the probe-bit, which indicates
            that the Map-Reply is in response to a Locator
            reachability probe Map-Request. The 'Nonce' field MUST
            contain a copy of the nonce value from the original
            Map-Request. See <xref target="rloc-probe" /> for more
            details.</t>

            <t hangText="E:">
            This bit indicates that the ETR that sends this Map-Reply message
            is advertising that the site is enabled for the Echo-Nonce
            Locator reachability algorithm. See
            <xref target="echo-nonce" /> for more details.</t>

            <t hangText="S:">This is the Security bit. When set to 1, the 
            following authentication information will be appended to the end of
            the Map-Reply. The detailed format of the Authentication Data 
            Content is for further study.</t>
            </list></t>

              <figure> <artwork><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |    AD Type    |       Authentication Data Content . . .       |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              ]]></artwork> </figure>

            <t><list style="hanging">
            <t hangText="Reserved:">
            This field MUST be set to 0 on transmit and MUST be ignored
            on receipt.</t>

            <t hangText="Record Count:">
            This is the number of records in this reply message.  A record is
            comprised of that portion of the packet labeled 'Record' above and
            occurs the number of times equal to Record Count.</t>

            <t hangText="Nonce:">
            This is a 24-bit value set in a Data-Probe packet, or a 64&nbhy;bit
            value from
            the Map-Request is echoed in this 'Nonce' field of the Map-Reply.
            When a 24-bit value is supplied, it resides in the low-order
            64 bits of the 'Nonce' field.</t>

            <t hangText="Record TTL:">
            This is the time in minutes the recipient of the Map-Reply will
            store the mapping.  If the TTL is 0, the entry SHOULD be removed
            from the cache immediately.  If the value is 0xffffffff, the
            recipient can decide locally how long to store the mapping.</t>

            <t hangText="Locator Count:">
            This is the number of Locator entries.  A Locator entry comprises
            what is labeled above as &apos;Loc&apos;. The Locator count can be
            0, indicating that there are no Locators for the EID-Prefix.</t>

            <t hangText="EID mask-len:">
            This is the mask length for the EID-Prefix.</t>

            <t hangText="ACT:">
            This 3-bit field describes Negative Map-Reply actions. In
            any other message type, these bits are set to 0 and ignored
            on receipt. These bits are used only when the 'Locator
            Count' field is set to 0. The action bits are encoded only
            in Map-Reply messages. The actions defined are used by an
            ITR or PITR when a destination EID matches a negative
            Map-Cache entry. Unassigned values should cause a
            Map-Cache entry to be created, and when packets match this
            negative cache entry, they will be dropped. The current
            assigned values are:

            <list style="hanging" hangIndent="4">
                <t hangText="(0) No-Action:">The map-cache is kept alive,
              and no packet encapsulation occurs.</t>

                <t hangText="(1) Natively-Forward:">The packet is not 
              encapsulated or dropped but natively forwarded.</t>

                <t hangText="(2) Send-Map-Request:">The packet invokes sending
              a Map-Request.</t>

                <t hangText="(3) Drop:">A packet that matches this map-cache
              entry is dropped. An ICMP Destination Unreachable message SHOULD
              be sent.</t>
            </list></t>

            <t hangText="A:">
            The Authoritative bit, when sent, is always set to 1 by an ETR. 
            When a Map-Server is proxy Map-Replying
            <xref target="RFC6833" />
            for a LISP site, the Authoritative bit is set to 0. This indicates
            to requesting ITRs that the Map-Reply
            was not originated by a LISP node managed at the site that owns
            the EID-Prefix.</t>

            <t hangText="Map-Version Number:">
            When this 12-bit value is non-zero, the Map-Reply
            sender is informing the ITR what the version number is for
            the EID record contained in the Map-Reply. The ETR can
            allocate this number internally but MUST coordinate this
            value with other ETRs for the site. When this value is 0,
            there is no versioning information conveyed. The
            Map-Version Number can be included in Map-Request and
            Map-Register messages. See <xref target="map-versioning" /> 
            for more details.</t>

            <t hangText="EID-Prefix-AFI:">
            Address family of the EID-Prefix according to 
            <xref target="AFI" />.</t>

            <t hangText="EID-Prefix:">
            This prefix is 4 octets for an IPv4 address family and 16 octets
            for an IPv6 address family.</t>

            <t hangText="Priority:">Each RLOC is assigned a unicast Priority.
            Lower values are more preferable. When multiple RLOCs
            have the same Priority, they MAY be used in a load-split fashion.
            A value of 255 means the RLOC MUST NOT be used for unicast
            forwarding.</t>

            <t hangText="Weight:">When priorities are the same for
            multiple RLOCs, the Weight indicates how to balance
            unicast traffic between them. Weight is encoded as a
            relative weight of total unicast packets that match the
            mapping entry. For example, if there are 4 Locators in a
            Locator-Set, where the Weights assigned are 30, 20, 20,
            and 10, the first Locator will get 37.5% of the traffic,
            the 2nd and 3rd Locators will get 25% of the traffic, and the
            4th Locator will get 12.5% of the traffic. If all Weights
            for a Locator-Set are equal, the receiver of the Map-Reply
            will decide how to load-split the traffic. See
            <xref target="loc-hash" /> for a suggested hash algorithm
            to distribute the load across Locators with the same Priority and
            equal Weight values.</t>

            <t hangText="M Priority:">Each RLOC is assigned a multicast
            Priority used by an ETR in a receiver multicast site to select
            an ITR in a source multicast site for building multicast 
            distribution trees. A value of 255 means the RLOC 
            MUST NOT be used for joining a multicast distribution tree. 
            For more details, see <xref target="RFC6831" />.</t>

            <t hangText="M Weight:">When priorities are the same for
            multiple RLOCs, the Weight indicates how to balance
            building multicast distribution trees across multiple
            ITRs. The Weight is encoded as a relative weight (similar
            to the unicast Weights) of the total number of trees built to
            the source site identified by the EID-Prefix. If all
            Weights for a Locator-Set are equal, the receiver of the
            Map-Reply will decide how to distribute multicast state
            across ITRs. For more details, see <xref target="RFC6831" />.</t>

            <t hangText="Unused Flags:">These are set to 0 when sending
            and ignored on receipt.</t>

            <t hangText="L:">When this bit is set, the Locator is
            flagged as a local Locator to the ETR that is sending the
            Map-Reply.  When a Map-Server is doing proxy Map-Replying
            <xref target="RFC6833" /> for a LISP site, the L-bit is
            set to 0 for all Locators in this Locator-Set.</t>

            <t hangText="p:">When this bit is set, an ETR informs the
            RLOC-Probing ITR that the locator address for which this
            bit is set is the one being RLOC-probed and MAY be
            different from the source address of the Map-Reply. An ITR
            that RLOC-probes a particular Locator MUST use this
            Locator for retrieving the data structure used to store
            the fact that the Locator is reachable. The p-bit is set
            for a single Locator in the same Locator-Set. If an
            implementation sets more than one p-bit erroneously, the
            receiver of the Map-Reply MUST select the first
            Locator. The p-bit MUST NOT be set for Locator-Set records
            sent in Map-Request and Map-Register messages.</t>

            <t hangText="R:">This is set when the sender of a Map-Reply has a
            route to the Locator in the Locator data record.  This
            receiver may find this useful to know if the Locator is up
            but not necessarily reachable from the receiver's point of
            view. See also <xref target="eid-reach" /> for another way
            the R-bit may be used.</t>

            <t hangText="Locator:">This is an IPv4 or IPv6 address (as encoded
            by the 'Loc-AFI' field) assigned to an ETR. Note
            that the destination RLOC address MAY be an anycast
            address. A source RLOC can be an anycast address as well.
            The source or destination RLOC MUST NOT be the broadcast
            address (255.255.255.255 or any subnet broadcast address
            known to the router) and MUST NOT be a link-local multicast
            address.  The source RLOC MUST NOT be a multicast
            address. The destination RLOC SHOULD be a multicast address
            if it is being mapped from a multicast destination EID.</t>

            </list></t>
            </section>

            <section title="EID-to-RLOC UDP Map-Reply Message" anchor="MR">
                <t>A Map-Reply returns an EID-Prefix with a prefix
                length that is less than or equal to the EID
                being requested. The EID being requested is
                either from the destination field of an IP header of a
                Data-Probe or the EID record of a Map-Request.  The
                RLOCs in the Map-Reply are globally routable IP
                addresses of all ETRs for the LISP site. Each RLOC
                conveys status reachability but does not convey path
                reachability from a requester's perspective. Separate
                testing of path reachability is required. See
                <xref target="loc-reach" /> for details.</t>

                <t>Note that a Map-Reply may contain different
                EID-Prefix granularity (prefix + length) than the
                Map-Request that triggers it. This might occur if a
                Map-Request were for a prefix that had been returned
                by an earlier Map-Reply. In such a case, the requester
                updates its cache with the new prefix information and
                granularity. For example, a requester with two cached
                EID-Prefixes that are covered by a Map-Reply
                containing one less-specific prefix replaces the
                entry with the less-specific EID-Prefix. Note that the
                reverse, replacement of one less-specific prefix with
                multiple more-specific prefixes, can also occur,
                not by removing the less-specific prefix but rather by
                adding the more-specific prefixes that, during a
                lookup, will override the less-specific prefix.</t>

                <t>When an ETR is configured with overlapping
                EID-Prefixes, a Map-Request with an EID that best
                matches any EID-Prefix MUST be returned in a single
                Map-Reply message. For instance, if an ETR had
                database mapping entries for EID-Prefixes:</t>

                <figure> <artwork><![CDATA[
  10.0.0.0/8
  10.1.0.0/16
  10.1.1.0/24
  10.1.2.0/24
                ]]></artwork>
                <postamble />
                    </figure>

                <t>A Map-Request for EID 10.1.1.1 would cause a Map-Reply
                with a record count of 1 to be returned with a mapping
                record EID-Prefix of 10.1.1.0/24.</t>

                <t>A Map-Request for EID 10.1.5.5 would cause a Map-Reply
                with a record count of 3 to be returned with mapping
                records for EID-Prefixes 10.1.0.0/16, 10.1.1.0/24, and
                10.1.2.0/24.</t>

                <t>Note that not all overlapping EID-Prefixes need to
                be returned but only the more-specific entries (note that
                in the second example above 10.0.0.0/8 was not returned for
                requesting EID 10.1.5.5) for the matching
                EID-Prefix of the requesting EID. When more than one
                EID-Prefix is returned, all SHOULD use the same
                Time to Live value so they can all time out at the
                same time. When a more-specific EID-Prefix is received
                later, its Time to Live value in the Map-Reply record
                can be stored even when other less-specific entries
                exist. When a less-specific EID-Prefix is received
                later, its map-cache expiration time SHOULD be set to
                the minimum expiration time of any more-specific
                EID-Prefix in the map-cache. This is done so the integrity
                of the EID-Prefix set is wholly maintained and so no 
                more-specific entries are removed from the map-cache
                while keeping less-specific entries.</t>

                <t>Map-Replies SHOULD be sent for an EID-Prefix no more often 
                than once per second to the same requesting router. For
                scalability, it is expected that aggregation of EID addresses
                into EID-Prefixes will allow one Map-Reply to satisfy a
                mapping for the EID addresses in the prefix range, thereby
                reducing the number of Map-Request messages.
                </t>

                <t>Map-Reply records can have an empty Locator-Set.  A
                Negative Map-Reply is a Map-Reply with an empty
                Locator-Set.  Negative Map-Replies convey special
                actions by the sender to the ITR or PITR that have
                solicited the Map-Reply.  There are two primary
                applications for Negative Map-Replies. The first is
                for a Map-Resolver to instruct an ITR or PITR when a
                destination is for a LISP site versus a non-LISP
                site, and the other is to source quench Map-Requests
                that are sent for non-allocated EIDs.</t>

                <t>For each Map-Reply record, the list of Locators in
                a Locator-Set MUST appear in the same order for each
                ETR that originates a Map-Reply message.  The
                Locator-Set MUST be sorted in order of ascending IP
                address where an IPv4 locator address is considered
                numerically 'less than' an IPv6 locator address.</t>

                <t>When sending a Map-Reply message, the destination
                address is copied from one of the 'ITR-RLOC' fields from
                the Map-Request. The ETR can choose a locator address from
                one of the address families it supports. For Data-Probes,
                the destination address of the Map-Reply is copied from the 
                source address of the Data-Probe message that is invoking
                the reply. The source address of the Map-Reply is one
                of the local IP addresses chosen to allow Unicast Reverse Path
                Forwarding (uRPF) checks to succeed in the upstream service
                provider. The destination port of a Map-Reply message
                is copied from the source port of the Map-Request or
                Data-Probe, and the source port of the Map-Reply message
                is set to the well-known UDP port 4342.</t>

                <section title="Traffic Redirection with Coarse EID-Prefixes"
                         anchor="RD">
                <t>When an ETR is misconfigured or compromised, it could
                return coarse EID-Prefixes in Map-Reply messages it sends.
                The EID-Prefix could cover EID-Prefixes that are allocated
                to other sites, redirecting their traffic to the Locators
                of the compromised site.</t>

                <t>To solve this problem, there are two basic
                solutions that could be used. The first is to have
                Map-Servers proxy Map-Reply on behalf of ETRs so their
                registered EID-Prefixes are the ones returned in
                Map-Replies. Since the interaction between an ETR
                and Map-Server is secured with shared keys, it is
                easier for an ETR to detect misbehavior. The second
                solution is to have ITRs and PITRs cache EID-Prefixes
                with mask lengths that are greater than or equal to a
                configured prefix length. This limits the damage to
                a specific width of any EID-Prefix advertised but
                needs to be coordinated with the allocation of site
                prefixes. These solutions can be used independently
                or at the same time.</t>

                <t>At the time of this writing, other approaches are being
                  considered and researched.</t>
                     </section>

            </section>

            <section title="Map-Register Message Format">
              <t>The usage details of the Map-Register message can be
              found in specification <xref target="RFC6833" />. This section
              solely defines the message format.</t>

              <t>The message is sent in UDP with a destination UDP 
              port of 4342 and a randomly selected UDP source port number.</t>

              <t>The Map-Register message format is:</t>

              <figure> <artwork><![CDATA[
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |Type=3 |P|            Reserved               |M| Record Count  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         Nonce . . .                           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         . . . Nonce                           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |            Key ID             |  Authentication Data Length   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ~                     Authentication Data                       ~
+-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   |                          Record TTL                           |
|   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
R   | Locator Count | EID mask-len  | ACT |A|      Reserved         |
e   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
c   | Rsvd  |  Map-Version Number   |        EID-Prefix-AFI         |
o   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
r   |                          EID-Prefix                           |
d   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  /|    Priority   |    Weight     |  M Priority   |   M Weight    |
| L +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| o |        Unused Flags     |L|p|R|           Loc-AFI             |
| c +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  \|                             Locator                           |
+-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              ]]></artwork> </figure>

            <t>Packet field descriptions:</t>
            <t><list style="hanging">

            <t hangText="Type: ">3 (Map-Register)</t>

            <t hangText="P:">This is the proxy Map-Reply bit. When set to 1,
            an ETR sends a Map-Register
            message requesting the Map-Server to proxy a Map-Reply. The 
            Map-Server will send non-authoritative Map-Replies on behalf of
            the ETR. Details on this usage can be found in 
            <xref target="RFC6833" />.</t>

            <t hangText="Reserved:">
            This field MUST be set to 0 on transmit and MUST be ignored on
            receipt.</t>

            <t hangText="M:">This is the want-map-notify bit. When set to 1,
            an ETR is requesting a Map-Notify message to be returned in
            response to sending a Map-Register message. The Map-Notify message
            sent by a Map-Server is used to acknowledge receipt of a 
            Map-Register message.</t>

            <t hangText="Record Count:">
            This is the number of records in this Map-Register message.
            A record is comprised of that portion of the packet labeled
            'Record' above and occurs the number of times equal to
            Record Count.</t>

            <t hangText="Nonce:">  
            This 8-octet 'Nonce' field is set to 0 in Map-Register messages.
            Since the Map-Register message is authenticated, the 'Nonce' field
            is not currently used for any security function but may be in
            the future as part of an anti-replay solution.</t> 

            <t hangText="Key ID:"> This is a configured ID to find the
            configured Message Authentication Code (MAC) algorithm and
            key value used for the authentication function. See 
            <xref target="KEYS" /> for codepoint assignments.</t>

            <t hangText="Authentication Data Length:"> This is the length in
            octets of the 'Authentication Data' field that follows this
            field.  The length of the 'Authentication Data' field is
            dependent on the MAC
            algorithm used. The length field allows a device that
            doesn't know the MAC algorithm to correctly parse the
            packet.</t>

            <t hangText="Authentication Data:">This is the message digest used
            from the output of the MAC
            algorithm. The entire Map-Register payload is
            authenticated with this field preset to 0. After the MAC
            is computed, it is placed in this field. Implementations
            of this specification MUST include support for
            HMAC-SHA-1-96 <xref target="RFC2404" />, and support for
            HMAC-SHA-256-128 <xref target="RFC4868" /> is
            RECOMMENDED.</t>
            </list></t>

            <t>The definition of the rest of the Map-Register can be found
            in <xref target="MR-FORMAT"/>.</t>

            </section>

            <section title="Map-Notify Message Format">
              <t>The usage details of the Map-Notify message can be
              found in specification <xref target="RFC6833" />. This section
              solely defines the message format.</t>

              <t>The message is sent inside a UDP packet with source 
              and destination UDP ports equal to 4342.</t>

              <t>The Map-Notify message format is:</t>

              <figure> <artwork><![CDATA[
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |Type=4 |              Reserved                 | Record Count  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         Nonce . . .                           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         . . . Nonce                           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |            Key ID             |  Authentication Data Length   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ~                     Authentication Data                       ~
+-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   |                          Record TTL                           |
|   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
R   | Locator Count | EID mask-len  | ACT |A|      Reserved         |
e   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
c   | Rsvd  |  Map-Version Number   |         EID-Prefix-AFI        |
o   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
r   |                          EID-Prefix                           |
d   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  /|    Priority   |    Weight     |  M Priority   |   M Weight    |
| L +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| o |        Unused Flags     |L|p|R|           Loc-AFI             |
| c +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  \|                             Locator                           |
+-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              ]]></artwork> </figure>

            <t>Packet field descriptions:</t>
            <t><list style="hanging">
            <t hangText="Type: ">4 (Map-Notify)</t>
            </list></t>

            <t>The Map-Notify message has the same contents as a Map-Register
            message. See the Map-Register section for field descriptions.</t>

            </section>

            <section title="Encapsulated Control Message Format">
              <t>An Encapsulated Control Message (ECM) is used to
              encapsulate control packets sent between xTRs and the
              mapping database system described in
              <xref target="RFC6833" />.</t>

              <figure> <artwork><![CDATA[
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  / |                       IPv4 or IPv6 Header                     |
OH  |                      (uses RLOC addresses)                    |
  \ |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  / |       Source Port = xxxx      |       Dest Port = 4342        |
UDP +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  \ |           UDP Length          |        UDP Checksum           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
LH  |Type=8 |S|                  Reserved                           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  / |                       IPv4 or IPv6 Header                     |
IH  |                  (uses RLOC or EID addresses)                 |
  \ |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  / |       Source Port = xxxx      |       Dest Port = yyyy        |
UDP +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  \ |           UDP Length          |        UDP Checksum           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
LCM |                      LISP Control Message                     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork> </figure>
 
            <t>Packet header descriptions:</t>
            <t><list style="hanging" hangIndent="6">

            <t hangText="OH:">The outer IPv4 or IPv6 header, which uses RLOC
            addresses in the source and destination header address fields.</t>

            <t hangText="UDP:">The outer UDP header with destination
            port 4342. The source port is randomly allocated. The
            checksum field MUST be non-zero.</t>

            <t hangText="LH:">Type 8 is defined to be a "LISP Encapsulated
            Control Message", and what follows is either an IPv4 or IPv6
            header as encoded by the first 4 bits after the 'Reserved' field.</t>

            <t hangText="S:">This is the Security bit. When set to 1, the field
            following the 'Reserved' field will have the following format.
            The detailed format of the Authentication Data Content
            is for further study.</t>
            </list></t>

              <figure> <artwork><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |    AD Type    |       Authentication Data Content . . .       |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              ]]></artwork> </figure>

            <t><list style="hanging" hangIndent="6">
            <t hangText="IH:">The inner IPv4 or IPv6 header, which can use
            either RLOC or EID addresses in the header address fields. When
            a Map-Request is encapsulated in this packet format,
            the destination address in this header is an EID.</t>

            <t hangText="UDP:">The inner UDP header, where the port assignments
            depend on the control packet being encapsulated. When the control
            packet is a Map-Request or Map-Register, the source port is 
            selected by the ITR/PITR and the destination port is 4342.
            When the control packet is a Map-Reply, the source port is 4342
            and the destination port is assigned from the source port of 
            the invoking Map-Request. Port number 4341 MUST NOT be
            assigned to either port. The checksum field MUST be non-zero.</t>

            <t hangText="LCM:">The format is one of the control message formats
            described in this section. At this time, only Map-Request messages
            are allowed to be encapsulated. In the future, PIM Join/Prune 
            messages <xref target="RFC6831" /> might be allowed.
            Encapsulating other types of LISP control
            messages is for further study. When Map-Requests are sent for
            RLOC-Probing purposes (i.e., the probe-bit is set), they
            MUST NOT be sent inside Encapsulated Control Messages.</t>

            </list></t>
            
            </section>
            </section>

            <section title="Routing Locator Selection">

            <t>Both the client-side and server-side may need control over 
            the selection of RLOCs for conversations between them. 
            This control is achieved by manipulating the 'Priority' and 'Weight'
            fields in EID-to-RLOC Map-Reply messages. Alternatively,
            RLOC information MAY be gleaned from received tunneled packets or
            EID-to-RLOC Map-Request messages.</t>

            <t>The following are different scenarios for choosing
            RLOCs and the controls that are available:</t>

            <t><list style="symbols">

            <t>The server-side returns one RLOC. The client-side can only 
            use one RLOC. The server-side has complete control of the 
            selection.</t>
 
            <t>The server-side returns a list of RLOCs where a subset 
            of the list has the same best Priority. The client can only use 
            the subset list according to the 
            weighting assigned by the server-side. In this case, the
            server-side controls both the subset list and load-splitting
            across its members. The client-side can use RLOCs outside
            of the subset list if it determines that the subset
            list is unreachable (unless RLOCs are set to a Priority of 255). 
            Some sharing of control exists: the server-side determines
            the destination RLOC list and load distribution while the 
            client-side has the option of using alternatives to this list if
            RLOCs in the list are unreachable.</t>

            <t>The server-side sets a Weight of 0 for the RLOC subset list. In
            this case, the client-side can choose how the traffic load is 
            spread across the subset list. Control is shared by the
            server-side determining the list and the client determining
            load distribution. Again, the client can use alternative RLOCs
            if the server-provided list of RLOCs is unreachable.</t>

            <t>Either side (more likely the server-side ETR)
            decides not to send a Map-Request. For example, if the
            server-side ETR does not send Map-Requests, it gleans
            RLOCs from the client-side ITR, giving the client-side ITR
            responsibility for bidirectional RLOC reachability and
            preferability.  Server-side ETR gleaning of the
            client-side ITR RLOC is done by caching the inner-header
            source EID and the outer-header source RLOC of received
            packets. The client-side ITR controls how traffic is
            returned and can alternate using an outer-header source
            RLOC, which then can be added to the list the server-side
            ETR uses to return traffic. Since no Priority or Weights
            are provided using this method, the server-side ETR MUST
            assume that each client-side ITR RLOC uses the same best
            Priority with a Weight of zero. In addition, since
            EID-Prefix encoding cannot be conveyed in data packets,
            the EID-to-RLOC Cache on Tunnel Routers can grow to be
            very large.</t>

            <t>A "gleaned" Map-Cache entry, one learned from the
            source RLOC of a received encapsulated packet, is only
            stored and used for a few seconds, pending
            verification. Verification is performed by sending a
            Map-Request to the source EID (the inner-header IP source
            address) of the received encapsulated packet.  A reply to
            this "verifying Map-Request" is used to fully populate the
            Map-Cache entry for the "gleaned" EID and is stored and
            used for the time indicated from the 'TTL' field of a received 
            Map-Reply. When a verified Map-Cache entry is stored, data
            gleaning no longer occurs for subsequent packets that have
            a source EID that matches the EID-Prefix of the verified
            entry.</t>

            </list></t>

            <t>RLOCs that appear in EID-to-RLOC Map-Reply messages are
            assumed to be reachable when the R-bit for the Locator
            record is set to 1.  When the R-bit is set to 0, an ITR or
            PITR MUST NOT encapsulate to the RLOC. Neither the
            information contained in a Map-Reply nor that stored in the
            mapping database system provides reachability information
            for RLOCs. Note that reachability is not part of the
            mapping system and is determined using one or more of the
            Routing Locator reachability algorithms described in the
            next section.</t>
            
            </section>

            <section anchor="loc-reach" title="Routing Locator Reachability">

            <t>Several mechanisms for determining RLOC reachability
            are currently defined:</t>

            <t><list style="numbers">

                <t>An ETR may examine the Locator-Status-Bits in the LISP
                header of an encapsulated data packet received from an
                ITR. If the ETR is also acting as an ITR and has
                traffic to return to the original ITR site, it can use
                this status information to help select an RLOC.</t>

                <t>An ITR may receive an ICMP Network Unreachable or Host
                Unreachable message for an RLOC it is using. This
                indicates that the RLOC is likely down. Note that trusting
                ICMP messages may not be desirable, but neither is ignoring
                them completely. Implementations are encouraged to follow
                current best practices in treating these conditions.</t>

                <t>An ITR that participates in the global routing
                system can determine that an RLOC is down if no BGP
                Routing Information Base (RIB) route exists that
                matches the RLOC IP address.</t>

                <t>An ITR may receive an ICMP Port Unreachable message
                from a destination host. This occurs if an ITR
                attempts to use interworking <xref target="RFC6832" /> and 
                LISP-encapsulated data is sent to a
                non-LISP-capable site.</t>

                <t>An ITR may receive a Map-Reply from an ETR in
                response to a previously sent Map-Request. The RLOC
                source of the Map-Reply is likely up, since the
                ETR was able to send the Map-Reply to the ITR.</t>

                <t>When an ETR receives an encapsulated packet from an ITR,
                the source RLOC from the outer header of the packet is likely
                up.</t>

                <t>An ITR/ETR pair can use the Locator reachability algorithms
                described in this section, namely Echo-Noncing or 
                RLOC-Probing.</t>

            </list></t>

            <t>When determining Locator up/down reachability by
            examining the Locator-Status-Bits from the LISP-encapsulated
            data packet, an ETR will receive up-to-date status from an
            encapsulating ITR about reachability for all ETRs at the
            site.  CE-based ITRs at the source site can determine
            reachability relative to each other using the site IGP as
            follows:</t>

            <t><list style="symbols">

                <t>Under normal circumstances, each ITR will advertise
                a default route into the site IGP.</t>

                <t>If an ITR fails or if the upstream link to its PE
                fails, its default route will either time out or be
                withdrawn.</t>

            </list></t>

            <t>Each ITR can thus observe the presence or lack of a
            default route originated by the others to determine the
            Locator-Status-Bits it sets for them.</t>

            <t> RLOCs listed in a Map-Reply are numbered with ordinals
            0 to n-1.  The Locator-Status-Bits in a LISP-encapsulated
            packet are numbered from 0 to n-1 starting with the least
            significant bit. For example, if an RLOC listed in the 3rd
            position of the Map-Reply goes down (ordinal value 2),
            then all ITRs at the site will clear the 3rd least
            significant bit (xxxx x0xx) of the 'Locator-Status-Bits'
            field for the packets they encapsulate.</t>

            <t>When an ETR decapsulates a packet, it will check for
            any change in the 'Locator-Status-Bits' field.  When a bit
            goes from 1 to 0, the ETR, if acting also as an ITR, will
            refrain from encapsulating packets to an RLOC that is
            indicated as down.  It will only resume using that RLOC if
            the corresponding Locator-Status-Bit returns to a value of
            1.  Locator-Status-Bits are associated with a Locator-Set
            per EID-Prefix.  Therefore, when a Locator becomes
            unreachable, the Locator-Status-Bit that corresponds to
            that Locator's position in the list returned by the last
            Map-Reply will be set to zero for that particular
            EID-Prefix.</t>

            <t>When ITRs at the site are not deployed in CE routers, the IGP
            can still be used to determine the reachability of Locators,
            provided they are injected into the IGP. This is
            typically done when a /32 address is configured on a loopback
            interface.</t>            

            <t>When ITRs receive ICMP Network Unreachable or Host Unreachable
            messages as a method to determine unreachability,
            they will refrain from
            using Locators that are described in Locator lists of Map-Replies.
            However, using this approach is unreliable because many network
            operators turn off generation of ICMP Destination Unreachable
            messages.</t>

            <t>If an ITR does receive an ICMP Network Unreachable or Host
            Unreachable message, it MAY originate its own ICMP Destination
            Unreachable message destined for the host that originated
            the data packet the ITR encapsulated.</t>

            <t>Also, BGP-enabled ITRs can unilaterally examine the RIB to
            see if a locator address from a Locator-Set in a mapping entry
            matches a prefix. If it does not find one and BGP is running
            in the Default-Free Zone (DFZ), it can decide to not use the
            Locator even though the Locator-Status-Bits indicate that the
            Locator is up. In this case, the path from the ITR to the
            ETR that is assigned the Locator is not available. More
            details are in <xref target="LOC-ID-ARCH" />.</t>

            <t>Optionally, an ITR can send a Map-Request to a Locator, and if
            a Map-Reply is returned, reachability of the Locator has been
            determined. Obviously, sending such probes increases the number of 
            control messages originated by Tunnel Routers for active flows, so
            Locators are assumed to be reachable when they are advertised.</t>

            <t>This assumption does create a dependency: Locator
            unreachability is detected by the receipt of ICMP Host
            Unreachable messages.  When a Locator has been determined
            to be unreachable, it is not used for active traffic; this
            is the same as if it were listed in a Map-Reply with
            Priority 255.</t>

            <t>The ITR can test the reachability of the unreachable
            Locator by sending periodic Requests. Both Requests and
            Replies MUST be rate-limited. Locator reachability testing
            is never done with data packets, since that increases the
            risk of packet loss for end-to-end sessions.</t>

            <t>When an ETR decapsulates a packet, it knows that it is
            reachable from the encapsulating ITR because that is 
            how the packet arrived. In most cases, the ETR can also
            reach the ITR but cannot assume this to be true, due to the
            possibility of path asymmetry. In the presence of
            unidirectional traffic flow from an ITR to an ETR, the ITR
            SHOULD NOT use the lack of return traffic as an indication
            that the ETR is unreachable. Instead, it MUST use an
            alternate mechanism to determine reachability.</t>

            <section anchor="echo-nonce" title="Echo Nonce Algorithm">

            <t>When data flows bidirectionally between Locators from different
            sites, a data-plane mechanism called "nonce echoing" can be
            used to determine reachability between an ITR and ETR.
            When an ITR wants to solicit a nonce echo, it sets the
            N- and E-bits and places a 24-bit nonce <xref target="RFC4086" />
            in the LISP header of the next encapsulated data packet.</t>

            <t>When this packet is received by the ETR, the
            encapsulated packet is forwarded as normal. When the ETR
            next sends a data packet to the ITR, it includes the nonce
            received earlier with the N-bit set and E-bit cleared. The
            ITR sees this "echoed nonce" and knows that the path to and
            from the ETR is up.</t>

            <t>The ITR will set the E-bit and N-bit for every packet it sends
            while in the echo-nonce-request state.  The time the ITR waits
            to process the echoed nonce before it determines the path
            is unreachable is variable and is a choice left for the
            implementation.</t>

            <t>If the ITR is receiving packets from the ETR but does
            not see the nonce echoed while being in the echo-nonce-request
            state, then the path to the ETR is unreachable. This decision may
            be overridden by other Locator reachability
            algorithms. Once the ITR determines that the path to the ETR is
            down, it can switch to another Locator for that
            EID-Prefix.</t>

            <t>Note that "ITR" and "ETR" are
            relative terms here. Both devices MUST be implementing
            both ITR and ETR functionality for the echo nonce
            mechanism to operate.</t>

            <t>The ITR and ETR may both go into the echo-nonce-request
            state at the same time. The number of packets sent or the
            time during which echo nonce requests are sent is an
            implementation-specific setting. However, when an ITR is
            in the echo-nonce-request state, it can echo the ETR's nonce
            in the next set of packets that it encapsulates and
            subsequently continue sending echo-nonce-request
            packets.</t>

            <t>This mechanism does not completely solve the forward
            path reachability problem, as traffic may be
            unidirectional. That is, the ETR receiving traffic at a
            site may not be the same device as an ITR that
            transmits traffic from that site, or the site-to-site traffic
            is unidirectional so there is no ITR returning traffic.</t>

            <t>The echo-nonce algorithm is bilateral. That is, if one side
            sets the E-bit and the other side is not enabled for echo-noncing,
            then the echoing of the nonce does not occur and the requesting
            side may erroneously consider the Locator unreachable. An ITR
            SHOULD only set the E-bit in an encapsulated data packet when it
            knows the ETR is enabled for echo-noncing. This is conveyed by
            the E-bit in the Map-Reply message.</t>

            <t>Note that other Locator reachability mechanisms are
            being researched and can be used to compliment or even
            override the echo nonce algorithm. See the next section for an
            example of control-plane probing.</t>

            </section>

            <section anchor="rloc-probe" title="RLOC-Probing Algorithm">

            <t>RLOC-Probing is a method that an ITR or PITR can use to
            determine the reachability status of one or more
            Locators that it has cached in a Map-Cache entry. The
            probe-bit of the Map-Request and Map-Reply messages is
            used for RLOC-Probing.</t>

            <t>RLOC-Probing is done in the control plane on a
            timer basis, where an ITR or PITR will originate a Map-Request
            destined to a locator address from one of its
            own locator addresses. A Map-Request used as an RLOC-probe
            is NOT encapsulated and NOT sent to a Map-Server or to the
            mapping database system as one would when soliciting mapping data.
            The EID record encoded in the Map-Request is the EID-Prefix of
            the Map-Cache entry cached by the ITR or PITR. The ITR 
            may include a mapping data record for its own database mapping
            information that contains the local EID-Prefixes and RLOCs for
            its site. RLOC-probes are sent periodically using a jittered
            timer interval. </t>

            <t>When an ETR receives a Map-Request message with the
            probe-bit set, it returns a Map-Reply with the probe-bit
            set. The source address of the Map-Reply is set according to
            the procedure described in <xref target="MR" />. The Map-Reply 
            SHOULD contain mapping data
            for the EID-Prefix contained in the Map-Request. This
            provides the opportunity for the ITR or PITR that sent
            the RLOC-probe to get mapping updates if there were
            changes to the ETR's database mapping entries.</t>

            <t>There are advantages and disadvantages of RLOC-Probing.
            The greatest benefit of RLOC-Probing is that it
            can handle many failure scenarios allowing the ITR to
            determine when the path to a specific Locator is reachable
            or has become unreachable, thus providing a robust
            mechanism for switching to using another Locator from the
            cached Locator.  RLOC-Probing can also provide rough
            Round-Trip Time (RTT)
            estimates between a pair of Locators, which can be useful
            for network management purposes as well as for selecting
            low delay paths. The major disadvantage of RLOC-Probing is
            in the number of control messages required and the amount
            of bandwidth used to obtain those benefits, especially if
            the requirement for failure detection times is very
            small.</t>

            <t>Continued research and testing will attempt to characterize
            the tradeoffs of failure detection times versus message
            overhead.</t>
            </section>

            </section>

            <section anchor="eid-reach" title="EID Reachability within a LISP Site">
                  <t>A site may be multihomed using two or more ETRs.
                The hosts and infrastructure within a site will be
                addressed using one or more EID-Prefixes that are
                mapped to the RLOCs of the relevant ETRs in the
                mapping system.  One possible failure mode is for an
                ETR to lose reachability to one or more of the
                EID-Prefixes within its own site. When this occurs when the ETR
                sends Map-Replies, it can clear the R-bit associated with its
                own Locator. And when the ETR is also an ITR, it can clear its
                Locator-Status-Bit in the encapsulation data header.</t>

                <t>It is recognized that there are no simple solutions to
                the site partitioning problem because it is hard to
                know which part of the EID-Prefix range is
                partitioned and which Locators can reach any
                sub-ranges of the EID-Prefixes.  This problem is under
                investigation with the expectation that experiments will
                tell us more. Note that this is not a new problem introduced
                by the LISP architecture. The problem exists today when a 
                multihomed site uses BGP to advertise its reachability
                upstream.</t>
            </section>

            <section anchor="loc-hash" title="Routing Locator Hashing">
            <t>When an ETR provides an EID-to-RLOC mapping in a
            Map-Reply message to a requesting ITR, the Locator-Set for
            the EID-Prefix may contain different Priority values for
            each locator address.  When more than one best Priority
            Locator exists, the ITR can decide how to load-share traffic
            against the corresponding Locators.</t>

            <t>The following hash algorithm may be used by an ITR to select a 
            Locator for a packet destined to an EID for the EID-to-RLOC 
            mapping:</t>

            <t><list style="numbers">
            <t>Either a source and destination address hash or the traditional
            5-tuple hash can be used.  The traditional 5-tuple hash includes
            the source and destination addresses; source and destination TCP,
            UDP, or Stream Control Transmission Protocol (SCTP) port numbers;
            and the IP protocol number field or IPv6 next-protocol fields of
            a packet that a host originates from within a LISP site. When a
            packet is not a TCP, UDP, or SCTP packet, the source and
            destination addresses only from the header are used to compute
            the hash.</t>

            <t>Take the hash value and divide it by the number of Locators
            stored in the Locator-Set for the EID-to-RLOC mapping.</t>

            <t>The remainder will yield a value of 0 to "number of Locators 
            minus 1". Use the remainder to select the Locator in the   
            Locator-Set.</t>
            </list></t>

            <t>Note that when a packet is LISP encapsulated, the source
            port number in the outer UDP header needs to be
            set. Selecting a hashed value allows core routers that are
            attached to Link Aggregation Groups (LAGs) to load-split the
            encapsulated packets across member links of such
            LAGs. Otherwise, core routers would see a single flow, since
            packets have a source address of the ITR, for packets that are
            originated by different EIDs at the source site. A suggested
            setting for the source port number computed by an ITR is a 
            5-tuple hash function on the inner header, as described above.</t>

            <t>Many core router implementations use a 5-tuple hash to decide
            how to balance packet load across members of a LAG. The 5-tuple
            hash includes the source and destination addresses of the packet
            and the source and destination ports when the protocol number in
            the packet is TCP or UDP. For this reason, UDP encoding is 
            used for LISP encapsulation.</t>

            </section>

            <section title="Changing the Contents of EID-to-RLOC Mappings">

              <t>Since the LISP architecture uses a caching scheme
              to retrieve and store EID-to-RLOC mappings, the only way an
              ITR can get a more up-to-date mapping is to re-request the
              mapping. However, the ITRs do not know when the mappings
              change, and the ETRs do not keep track of which ITRs requested
              its mappings. For scalability reasons, we want to maintain
              this approach but need to provide a way for ETRs to
              change their mappings and inform the sites that are
              currently communicating with the ETR site using such 
              mappings.</t>
  
              <t>When adding a new Locator record in lexicographic order to
              the end of a Locator-Set, it is easy to update
              mappings. We assume that new mappings will maintain the same
              Locator ordering as the old mapping but will just have new
              Locators appended to the end of the list. So, some ITRs
              can have a new mapping while other ITRs have only an old
              mapping that is used until they time out. When an ITR
              has only an old mapping but detects bits set in the
              Locator-Status-Bits that correspond to Locators beyond the
              list it has cached, it simply ignores them. However,
              this can only happen for locator addresses that are
              lexicographically greater than the locator addresses in
              the existing Locator-Set.</t>

              <t>When a Locator record is inserted in the middle of a
              Locator-Set, to maintain lexicographic order, the SMR
              procedure in <xref target="SMR" /> is used to inform ITRs and
              PITRs of the new Locator-Status-Bit mappings.</t>
  
              <t>When a Locator record is removed from a Locator-Set, ITRs that
              have the mapping cached will not use the removed Locator
              because the xTRs will set the Locator-Status-Bit to 0. So, even if
              the Locator is in the list, it will not be used. For new
              mapping requests, the xTRs can set the Locator AFI to 0
              (indicating an unspecified address), 
              as well as setting the corresponding Locator-Status-Bit to
              0. This forces ITRs with old or new mappings to avoid
              using the removed Locator.</t>
  
              <t>If many changes occur to a mapping over a long period of
              time, one will find empty record slots in the middle of the
              Locator-Set and new records appended to the Locator-Set. At
              some point, it would be useful to compact the Locator-Set so
              the Locator-Status-Bit settings can be efficiently packed.</t>
  
              <t>We propose here three approaches for Locator-Set compaction:
              one operational mechanism and two protocol mechanisms.
              The operational approach uses a clock sweep
              method. The protocol approaches use the concept of
              Solicit-Map-Requests and Map-Versioning.</t>
  
            <section title="Clock Sweep">

              <t>The clock sweep approach uses planning in advance and
              the use of count-down TTLs to time out mappings that have
              already been cached.  The default setting for an
              EID-to-RLOC mapping TTL is 24 hours. So, there is a 24-hour
              window to time out old mappings. The following clock sweep
              procedure is used:</t>

              <t><list style="numbers">

                <t>24 hours before a mapping change is to take
                effect, a network administrator configures the ETRs at a
                site to start the clock sweep window.</t>
    
                <t>During the clock sweep window, ETRs continue to send
                Map-Reply messages with the current (unchanged) mapping
                records. The TTL for these mappings is set to 1 hour.</t>
    
                <t>24 hours later, all previous cache entries will have
                timed out, and any active cache entries will time out
                within 1 hour. During this 1-hour window, the ETRs
                continue to send Map-Reply messages with the current
                (unchanged) mapping records with the TTL set to 1
                minute.</t>
    
                <t>At the end of the 1-hour window, the ETRs will send
                Map-Reply messages with the new  (changed) mapping
                records. So, any active caches can get the new mapping
                contents right away if not cached, or in 1 minute if they
                had the mapping cached. The new mappings are cached with
                a TTL equal to the TTL in the Map-Reply.</t>
              </list></t>
            </section>

            <section title="Solicit-Map-Request (SMR)" anchor="SMR">

              <t>Soliciting a Map-Request is a selective way for ETRs, at
              the site where mappings change, to control the rate they
              receive requests for Map-Reply messages. SMRs are also used
              to tell remote ITRs to update the mappings they have cached.</t>
  
              <t>Since the ETRs don't keep track of remote ITRs that
              have cached their mappings, they do not know which ITRs
              need to have their mappings updated. As a result, an ETR
              will solicit Map-Requests (called an SMR message) from
              those sites to which it has been sending encapsulated
              data for the last minute. In particular, an ETR will
              send an SMR to an ITR to which it has recently sent
              encapsulated data.</t>
  
              <t>An SMR message is simply a bit set in a Map-Request message.
              An ITR or PITR will send a Map-Request when they receive an SMR
              message. Both the SMR sender and the Map-Request
              responder MUST rate-limit these messages. Rate-limiting can
              be implemented as a global rate-limiter or one rate-limiter
              per SMR destination.</t>
          
              <t>The following procedure shows how an SMR exchange occurs when
              a site is doing Locator-Set compaction for an EID-to-RLOC 
              mapping:</t>
  
                <t><list style="numbers"> 
                <t>When the database mappings in an ETR change, the ETRs at
                the site begin to send Map-Requests with the SMR bit set for
                each Locator in each Map-Cache entry the ETR caches.</t>

                <t>A remote ITR that receives the SMR message will
                schedule sending a Map-Request message to the source
                locator address of the SMR message or to the mapping database
                system. A newly allocated random
                nonce is selected, and the EID-Prefix used is the one copied
                from the SMR message. If the source Locator is the only
                Locator in the cached Locator-Set, the remote ITR SHOULD
                send a Map-Request to the database mapping system just in
                case the single Locator has changed and may no longer be
                reachable to accept the Map-Request.</t>

                <t>The remote ITR MUST rate-limit the Map-Request
                until it gets a Map-Reply while continuing to use the
                cached mapping. When Map&nbhy;Versioning as described
                in <xref target="map-versioning" /> is used, an SMR sender can
                detect if an ITR is using the most up-to-date database
                mapping.</t>

                <t>The ETRs at the site with the changed mapping will
                reply to the Map-Request with a Map-Reply message that has
                a nonce from the SMR-invoked Map-Request. The Map-Reply messages
                SHOULD be rate-limited. This is important to avoid
                Map-Reply implosion.</t>

                <t>The ETRs at the site with the changed mapping
                record the fact that the site that sent the Map-Request
                has received the new mapping data in the Map-Cache entry
                for the remote site so the Locator-Status-Bits are
                reflective of the new mapping for packets going to the
                remote site. The ETR then stops sending SMR messages.</t>
             </list></t>

             <t>Experimentation is in progress to determine the appropriate
             rate-limit parameters.</t>

             <t>For security reasons, an ITR MUST NOT process
             unsolicited Map-Replies. To avoid Map-Cache entry
             corruption by a third party, a sender of an SMR-based
             Map-Request MUST be verified.  If an ITR receives an
             SMR-based Map-Request and the source is not in the
             Locator-Set for the stored Map-Cache entry, then the
             responding Map-Request MUST be sent with an EID
             destination to the mapping database system. Since the
             mapping database system is a more secure way to reach an
             authoritative ETR, it will deliver the Map-Request to the
             authoritative source of the mapping data.</t>

             <t>When an ITR receives an SMR-based Map-Request for
             which it does not have a cached mapping for the EID in
             the SMR message, it MAY not send an SMR-invoked
             Map-Request. This scenario can occur when an ETR sends
             SMR messages to all Locators in the Locator-Set it has
             stored in its map-cache but the remote ITRs that receive the
             SMR may not be sending packets to the site. There is no
             point in updating the ITRs until they need to send, in
             which case they will send Map-Requests to obtain a
             Map-Cache entry.</t>
          </section>
            
          <section anchor="map-versioning" title="Database Map-Versioning">
              <t>When there is unidirectional packet flow between an ITR and
              ETR, and the EID-to-RLOC mappings change on the ETR, it needs to
              inform the ITR so encapsulation to a removed Locator can stop
              and can instead be started to a new Locator in the
              Locator-Set.</t>

              <t>An ETR, when it sends Map-Reply messages, conveys its
              own Map-Version Number. This is known as the Destination
              Map-Version Number. ITRs include the Destination
              Map-Version Number in packets they encapsulate to the
              site.  When an ETR decapsulates a packet and detects that the
              Destination Map-Version Number is less than the current
              version for its mapping, the SMR procedure described in
              <xref target="SMR" /> occurs.</t>

              <t>An ITR, when it encapsulates packets to ETRs, can convey
              its own Map-Version Number. This is known as the Source 
              Map-Version Number. When an ETR decapsulates a packet and
              detects that the Source Map-Version Number is greater than the
              last Map-Version Number sent in a Map-Reply from the ITR's site, 
              the ETR will send a Map-Request to one of the ETRs for the source
              site.</t>

              <t>A Map-Version Number is used as a sequence number per
              EID-Prefix, so values that are greater are considered to be
              more recent. A value
              of 0 for the Source Map-Version Number or the Destination 
              Map-Version Number conveys no versioning information, and an
              ITR does no comparison with previously received Map-Version
              Numbers.</t>

              <t>A Map-Version Number can be included in Map-Register messages
              as well. This is a good way for the Map-Server to assure that
              all ETRs for a site registering to it will be synchronized
              according to Map-Version Number.</t>

              <t>See <xref target="RFC6834" /> for a more detailed analysis
              and description of Database Map-Versioning.</t>
          </section>

        </section>
        </section>

        <section title="Router Performance Considerations" 
        anchor="PUNT">
            <t>LISP is designed to be very "hardware-based forwarding
            friendly". A few implementation techniques can be used to
            incrementally implement LISP:</t>

            <t><list style="symbols">
                <t>When a tunnel-encapsulated packet is received by an 
                ETR, the outer destination address may not 
                be the address of the router. This makes it challenging for
                the control plane to get packets from the hardware. This
                may be mitigated by creating special Forwarding Information
                Base (FIB) entries for the EID-Prefixes of EIDs served by the
                ETR (those for which the router provides an RLOC translation).
                These FIB entries are marked with a flag indicating that
                control-plane processing should be performed. The 
                forwarding logic of testing for particular IP protocol
                number values is not necessary. There are a few proven cases
                where no changes to existing deployed hardware were needed to 
                support the LISP data-plane.</t>

                <t>On an ITR, prepending a new IP header consists of adding
                more octets to a MAC rewrite string and prepending the
                string as part of the outgoing encapsulation
                procedure.  Routers that support Generic Routing Encapsulation
                (GRE) tunneling <xref target="RFC2784"/> or 6to4 tunneling
                <xref target="RFC3056"/> may already support this
                action.</t>

                <t>A packet's source address or interface the
                packet was received on can be used to select VRF 
                (Virtual Routing/Forwarding). The VRF's routing table 
                can be used to find EID-to-RLOC mappings.</t>
            </list></t>

            <t>For performance issues related to map-cache management, see 
            <xref target="SECURITY" />.</t>
        </section>

        <section anchor="DEPLOYMENT" title="Deployment Scenarios">
            <t>This section will explore how and where ITRs and  ETRs
            can be deployed and will discuss the pros and cons of each
            deployment scenario. For a more detailed deployment recommendation,
            refer to <xref target="LISP-DEPLOY" />.</t>

            <t>There are two basic deployment tradeoffs to consider:
            centralized versus distributed caches; and flat, Recursive,
            or Re-encapsulating Tunneling. When deciding on centralized
            versus distributed caching, the following issues should be
            considered:</t>

            <t><list style="symbols">
                <t>Are the Tunnel Routers spread out so that the caches are
                spread across all the memories of each router? A centralized
                cache is when an ITR keeps a cache for all the EIDs it is
                encapsulating to. The packet takes a direct path to the 
                destination Locator. A distributed cache is when an ITR
                needs help from other re-encapsulating routers because it
                does not store all the cache entries for the EIDs it is
                encapsulating to. So, the packet takes a path through 
                re-encapsulating routers that have a different set of
                cache entries.</t>

                <t>Should management "touch points" be minimized by only
                choosing a few Tunnel Routers, just enough for redundancy?</t>

                <t>In general, using more ITRs doesn't
                increase management load, since caches are built and stored 
                dynamically. On the other hand, using more ETRs
                does require more management, since EID-Prefix-to-RLOC
                mappings need to be explicitly configured.</t>
            </list></t>

            <t>When deciding on flat, Recursive, or Re-encapsulating
            Tunneling, the following issues should be considered:</t>

            <t><list style="symbols">
                <t>Flat tunneling implements a single tunnel between the
                source site and destination site. This generally offers
                better paths between sources and destinations with a 
                single tunnel path.</t>

                <t>Recursive Tunneling is when tunneled traffic is again 
                further encapsulated in another tunnel, either to
                implement VPNs or to perform Traffic Engineering. When doing
                VPN-based tunneling, the site has some control, since the site
                is prepending a new tunnel header. In the case of TE-based 
                tunneling, the site may have control if it is prepending a 
                new tunnel header, but if the site's ISP is doing the TE, 
                then the site has no control. Recursive Tunneling generally 
                will result in suboptimal paths but with the benefit of
                steering traffic to parts of the network that have more
                resources available.</t>

                <t>The technique of re-encapsulation ensures that packets 
                only require one tunnel header. So, if a 
                packet needs to be re-routed, it is first decapsulated
                by the ETR and then re-encapsulated with a
                new tunnel header using a new RLOC.</t>

            </list></t>

            <t>The next sub-sections will examine where Tunnel Routers can
            reside in the network.</t>

            <section title="First-Hop/Last-Hop Tunnel Routers">
                <t>By locating Tunnel Routers close to hosts, the EID-Prefix
                set is at the granularity of an IP subnet. So, at the expense
                of more EID-Prefix-to-RLOC sets for the site, the caches
                in each Tunnel Router can remain relatively small. But caches
                always depend on the number of non-aggregated EID destination 
                flows active through these Tunnel Routers.</t>

                <t>With more Tunnel Routers doing encapsulation, the
                increase in control traffic grows as well: since the
                EID granularity is greater, more Map-Requests and
                Map-Replies are traveling between more routers.</t>

                <t>The advantage of placing the caches and databases at these
                stub routers is that the products deployed in this part of
                the network have better price-memory ratios than their core
                router counterparts. Memory is typically less expensive
                in these devices, and fewer routes are stored (only IGP
                routes). These devices tend to have excess capacity, both
                for forwarding and routing states.</t>

                <t>LISP functionality can also be deployed in edge
                switches. These devices generally have layer-2 ports facing 
                hosts and layer-3 ports facing the Internet. Spare capacity is
                also often available in these devices.</t>

            </section>

            <section title="Border/Edge Tunnel Routers">
                <t>Using Customer Edge (CE) routers for tunnel
                endpoints allows the EID space associated with a site
                to be reachable via a small set of RLOCs assigned to
                the CE routers for that site. This is the default
                behavior envisioned in the rest of this
                specification.</t>

                <t>This offers the opposite benefit of the first-hop/last-hop
                Tunnel Router scenario: the number of mapping entries 
                and network management touch points is reduced, allowing
                better scaling.</t>

                <t>One disadvantage is that fewer network resources
                are used to reach host endpoints, thereby centralizing the
                point-of-failure domain and creating network choke points
                at the CE router.</t>

                <t>Note that more than one CE router at a site can be 
                configured with the same IP address. In this case, an RLOC is
                an anycast address. This allows resilience between the CE
                routers. That is, if a CE router fails, traffic is 
                automatically routed to the other routers using the same
                anycast address. However, this comes with the disadvantage 
                where the site cannot control the entrance point when the 
                anycast route is advertised out from all border routers.
                Another disadvantage of using anycast Locators is the limited
                advertisement scope of /32 (or /128 for IPv6) routes.</t>

            </section>

            <section title="ISP Provider Edge (PE) Tunnel Routers">
                <t>The use of ISP PE routers as tunnel endpoint routers is
                not the typical deployment scenario envisioned in this
                specification.  This section attempts to capture some
                of the reasoning behind this preference for implementing
                LISP on CE routers.</t>

                <t>The use of ISP PE routers as tunnel endpoint routers
                gives an ISP, rather than a site, control over the
                location of the egress tunnel endpoints. That is, the
                ISP can decide whether the tunnel endpoints are in the
                destination site (in either CE routers or last-hop
                routers within a site) or at other PE edges. The
                advantage of this case is that two tunnel headers can
                be avoided. By having the PE be the first router on
                the path to encapsulate, it can choose a TE path
                first, and the ETR can decapsulate and re-encapsulate
                for a tunnel to the destination end site.</t>

                <t>An obvious disadvantage is that the end site has no
                control over where its packets flow or over the RLOCs
                used. Other disadvantages include difficulty in
                synchronizing path liveness updates between CE and PE
                routers.</t>

                <t>As mentioned in earlier sections, a combination of these
                scenarios is possible at the expense of extra packet header
                overhead; if both site and provider want control, then
                Recursive or Re-encapsulating Tunnels are used.
                </t>
            </section>

            <section title="LISP Functionality with Conventional NATs">
                <t>LISP routers can be deployed behind Network Address 
                Translator (NAT) devices to provide the same set of packet
                services hosts have today when they are addressed out of
                private address space.</t>

                <t>It is important to note that a locator address in
                any LISP control message MUST be a globally routable
                address and therefore SHOULD NOT contain
                <xref target="RFC1918" /> addresses. If a LISP router
                is configured with private addresses, they MUST be
                used only in the outer IP header so the NAT device can
                translate properly. Otherwise, EID addresses MUST be
                translated before encapsulation is performed. Both NAT
                translation and LISP encapsulation functions could be
                co-located in the same device.</t>

                <t>More details on LISP address translation can be found in
                <xref target="RFC6832" />.</t>
            </section>              

            <section anchor="packets-egress" title="Packets Egressing a LISP Site">
              <t>When a LISP site is using two ITRs for redundancy,
              the failure of one ITR will likely shift outbound
              traffic to the second.  This second ITR's cache may not
              be populated with the same EID-to-RLOC mapping
              entries as the first. If this second ITR does not have
              these mappings, traffic will be dropped while the
              mappings are retrieved from the mapping system.  The
              retrieval of these messages may increase the load of
              requests being sent into the mapping system. Deployment
              and experimentation will determine whether this issue
              requires more attention.</t>
            </section>              

        </section>

        <section title="Traceroute Considerations">
            <t>When a source host in a LISP site initiates a traceroute to
            a destination host in another LISP site, it is highly desirable 
            for it to see the entire path. Since packets are
            encapsulated from the ITR to the ETR, the hop across the tunnel
            could be viewed as a single hop. However, LISP traceroute will
            provide the entire path so the user can see 3 distinct segments
            of the path from a source LISP host to a destination LISP host:</t>

            <figure> <artwork><![CDATA[
   Segment 1 (in source LISP site based on EIDs):

       source host ---> first hop ... next hop ---> ITR

   Segment 2 (in the core network based on RLOCs):

       ITR ---> next hop ... next hop ---> ETR

   Segment 3 (in the destination LISP site based on EIDs):

       ETR ---> next hop ... last hop ---> destination host
            ]]></artwork> </figure>

             <t>For segment 1 of the path, ICMP Time Exceeded messages are
             returned in the normal manner as they are today. The ITR performs
             a TTL decrement and tests for 0 before encapsulating. Therefore,
             the ITR's hop is seen by the traceroute source as having an EID
             address (the address of the site-facing interface).</t>
 
             <t>For segment 2 of the path, ICMP Time Exceeded messages are
             returned to the ITR because the TTL decrement to 0 is done on the
             outer header, so the destinations of the ICMP messages are the 
             ITR RLOC address and the source RLOC address of the
             encapsulated traceroute packet. 
             The ITR looks inside of the ICMP payload to inspect the traceroute
             source so it can return the ICMP message to the address of the
             traceroute client and also retain the core 
             router IP address in the ICMP message. This is so the traceroute 
             client can display the core
             router address (the RLOC address) in the traceroute output. The
             ETR returns its RLOC address and responds to the TTL decrement
             to 0, as the previous core routers did.</t>
  
             <t>For segment 3, the next-hop router downstream from the ETR will
             be decrementing the TTL for the packet that was encapsulated,
             sent into the core, decapsulated by the ETR, and forwarded
             because it isn't the final destination.
             If the TTL is decremented to 0, any router on the path to the
             destination of the traceroute, including the next-hop router or
             destination, will send an ICMP
             Time Exceeded message to the source EID of the traceroute client. 
             The ICMP
             message will be encapsulated by the local ITR and sent back to the
             ETR in the originated traceroute source site, where the packet 
             will be delivered to the host.</t>
 
             <section title="IPv6 Traceroute">
                 <t>IPv6 traceroute follows the procedure described above,
                 since the entire traceroute data packet is included in the
                 ICMP Time Exceeded message payload. Therefore, only the ITR
                 needs to pay special attention to forwarding ICMP messages
                 back to the traceroute source.</t>
             </section>
     
             <section title="IPv4 Traceroute">
                 <t>For IPv4 traceroute, we cannot follow the above procedure,
                 since IPv4 ICMP Time Exceeded messages only include the 
                 invoking IP header and 8&nbsp;octets that follow the
                 IP header.
                 Therefore, when a core router sends an IPv4 Time Exceeded
                 message to an ITR, all the ITR has in the ICMP payload is the
                 encapsulated header it prepended, followed by a UDP header.
                 The original invoking IP header, and therefore the
                 identity of the traceroute source, is lost.</t>
 
                 <t>The solution we propose to solve this problem is
                 to cache traceroute IPv4 headers in the ITR and to
                 match them up with corresponding IPv4 Time Exceeded
                 messages received from core routers and the ETR. The
                 ITR will use a circular buffer for caching the IPv4
                 and UDP headers of traceroute packets. It will select
                 a 16-bit number as a key to find them later when the
                 IPv4 Time Exceeded messages are received. When an ITR
                 encapsulates an IPv4 traceroute packet, it will use
                 the 16-bit number as the UDP source port in the
                 encapsulating header.  When the ICMP Time Exceeded
                 message is returned to the ITR, the UDP header of the
                 encapsulating header is present in the ICMP payload,
                 thereby allowing the ITR to find the cached headers
                 for the traceroute source. The ITR puts the cached
                 headers in the payload and sends the ICMP Time
                 Exceeded message to the traceroute source retaining
                 the source address of the original ICMP Time Exceeded
                 message (a core router or the ETR of the site of the
                 traceroute destination).</t>

                 <t>The signature of a traceroute packet comes in two forms.
                 The first form is encoded as a UDP message where the
                 destination port is inspected for a range of values. The second
                 form is encoded as an ICMP message where the IP identification
                 field is inspected for a well-known value.</t>
             </section>
      
             <section anchor="traceroute" title="Traceroute Using Mixed Locators">
                 <t>When either an IPv4 traceroute or IPv6 traceroute
                 is originated and the ITR encapsulates it in the
                 other address family header, one cannot get all 3
                 segments of the traceroute.  Segment 2 of the
                 traceroute cannot be conveyed to the traceroute
                 source, since it is expecting addresses from
                 intermediate hops in the same address format for the
                 type of traceroute it originated. Therefore, in this
                 case, segment 2 will make the tunnel look like one
                 hop. All the ITR has to do to make this work is to
                 not copy the inner TTL to the outer, encapsulating
                 header's TTL when a traceroute packet is encapsulated
                 using an RLOC from a different address family. This
                 will cause no TTL decrement to 0 to occur in core
                 routers between the ITR and ETR.</t>
             </section>
        </section>


    <section title="Mobility Considerations">
      <t>There are several kinds of mobility, of which only some might
        be of concern to LISP.  Essentially, they are as follows.
      </t>

      <section title="Site Mobility">
        <t>A site wishes to change its attachment points to the
          Internet, and its LISP Tunnel Routers will have
          new RLOCs when it changes upstream providers.  Changes in
          EID-to-RLOC mappings for sites are expected to be handled by
          configuration, outside of LISP.
        </t>
      </section> 

      <section title="Slow Endpoint Mobility">
        <t>An individual endpoint wishes to move but is not concerned
        about maintaining session continuity.  Renumbering is
        involved.  LISP can help with the issues surrounding
        renumbering <xref target="RFC4192"/> <xref target="LISA96"/>
        by decoupling the address space used by a site
        from the address spaces used by its ISPs <xref target="RFC4984" />.
        </t>
      </section>

      <section title="Fast Endpoint Mobility">
        <t>Fast endpoint mobility occurs when an endpoint moves relatively
          rapidly, changing its IP-layer network attachment point.
          Maintenance of session continuity is a goal.  This is where
          the Mobile IPv4 <xref target="RFC5944"/> and Mobile
          IPv6 <xref target="RFC6275"/> <xref target="RFC4866"/> mechanisms 
          are used and primarily where interactions with LISP need to be 
          explored.
        </t>
        <t>The problem is that as an endpoint moves, it may require
          changes to the mapping between its EID and a set of RLOCs
          for its new network location. When this is added to the overhead of
          Mobile IP binding updates, some packets might be delayed or
          dropped.
        </t>
        <t>In IPv4 mobility, when an endpoint is away from home,
          packets to it are encapsulated and forwarded via a home agent 
          that resides in the home area the endpoint's address belongs to.
          The home agent will encapsulate and forward packets either
          directly to the endpoint or to a foreign agent that resides where
          the endpoint has moved to. Packets from the endpoint may be
          sent directly to the correspondent node, may be sent via the
          foreign agent, or may be reverse-tunneled back to the home
          agent for delivery to the mobile node.  As the mobile node's EID 
          or available
          RLOC changes, LISP EID-to-RLOC mappings are required for 
          communication
          between the mobile node and the home agent, whether via the
          foreign agent or not. As a mobile endpoint changes networks, up to 
          three LISP mapping changes may be required: 
          <list style="symbols">
            <t>The mobile node moves from an old location to a new
              visited network location and notifies its home agent
              that it has done so. The Mobile IPv4 control
              packets the mobile node sends pass through one of the
              new visited network's ITRs, which needs an EID-to-RLOC
              mapping for the home agent.
            </t>
            <t>The home agent might not have the EID-to-RLOC mappings for the 
              mobile node's "care-of" address
              or its foreign agent in the new visited network, in
              which case it will need to acquire them.
            </t>
            <t>When packets are sent directly to the correspondent node,
              it may be that no traffic has been sent from the new
              visited network to the correspondent node's network, and 
              the new visited network's ITR will need to obtain an
              EID-to-RLOC mapping for the correspondent node's site.
            </t>
          </list>
        </t>
        <t>In addition, if the IPv4 endpoint is sending packets from
          the new visited network using its original EID, then LISP will
          need to perform a route-returnability check on the new
          EID-to-RLOC mapping for that EID.
        </t>
        <t>In IPv6 mobility, packets can flow directly between the
          mobile node and the correspondent node in either direction.
          The mobile node uses its "care-of" address (EID). In this
          case, the route-returnability check would not be needed but
          one more LISP mapping lookup may be required instead:
          <list style="symbols">
            <t>As above, three mapping changes may be needed for the
              mobile node to communicate with its home agent and to
              send packets to the correspondent node.</t>
            <t>In addition, another mapping will be needed in the
              correspondent node's ITR, in order for the correspondent
              node to send packets to the mobile node's "care-of" address 
              (EID) at the new network location.
            </t>
          </list>
        </t>
        <t>When both endpoints are mobile, the number of potential
          mapping lookups increases accordingly. </t>
        <t>As a mobile node moves, there are not only mobility state
          changes in the mobile node, correspondent node, and home
          agent, but also state changes in the ITRs and ETRs for at
          least some EID-Prefixes.  </t>
        <t>The goal is to support rapid adaptation, with little delay
          or packet loss for the entire system. Also, IP mobility can be
          modified to require fewer mapping changes.  In order to
          increase overall system performance, there may be a need to reduce
          the optimization of one area in order to place fewer demands
          on another.</t>
        <t>In LISP, one possibility is to "glean" information.  When a
          packet arrives, the ETR could examine the EID-to-RLOC mapping
          and use that mapping for all outgoing traffic to that EID.
          It can do this after performing a route-returnability check,
          to ensure that the new network location does have an internal 
          route to that
          endpoint. However, this does not cover the case where an ITR
          (the node assigned the RLOC)
          at the mobile-node location has been compromised.</t>
        <t>
        </t>
        <t>Mobile IP packet exchange is designed for an environment
          in which all routing information is disseminated before
          packets can be forwarded.  In order to allow the Internet to
          grow to support expected future use, we are moving to an 
          environment where some information may
          have to be obtained after packets are in flight.
          Modifications to IP mobility should be considered in order
          to optimize the behavior of the overall system.  Anything
          that decreases the number of new EID-to-RLOC mappings needed
          when a node moves, or maintains the validity of an EID-to-RLOC
          mapping for a longer time, is useful.</t>
      </section>
      <section title="Fast Network Mobility">
        <t>In addition to endpoints, a network can be mobile, possibly
          changing xTRs.  A "network" can be as small as a single
          router and as large as a whole site.  This is different from
          site mobility in that it is fast and possibly short-lived,
          but different from endpoint mobility in that a whole prefix
          is changing RLOCs.  However, the mechanisms are the same, and
          there is no new overhead in LISP.  A map request for any
          endpoint will return a binding for the entire mobile prefix.
        </t>
        <t>If mobile networks become a more common occurrence, it may
          be useful to revisit the design of the mapping service and
          allow for dynamic updates of the database.
        </t>
      <t>The issue of interactions between mobility and LISP needs to
        be explored further.  Specific improvements to the entire
        system will depend on the details of mapping mechanisms.
        Mapping mechanisms should be evaluated on how well they
        support session continuity for mobile nodes.
      </t>
      </section>
      <section title="LISP Mobile Node Mobility">

          <t>A mobile device can use the LISP infrastructure to achieve
          mobility by implementing the LISP encapsulation and
          decapsulation functions and acting as a simple ITR/ETR. By
          doing this, such a "LISP mobile node" can use
          topologically independent EID IP addresses that are not
          advertised into and do not impose a cost on the global
          routing system. These EIDs are maintained at the edges of
          the mapping system (in LISP Map-Servers and Map-Resolvers)
          and are provided on demand to only the correspondents of the
          LISP mobile node.</t>
 
          <t>Refer to <xref target="LISP-MN" /> for more details.</t>
      </section>
    </section>

        <section title="Multicast Considerations">
        <t>A multicast group address, as defined in the original Internet
        architecture, is an identifier of a grouping of topologically 
        independent receiver host locations. The address encoding itself
        does not determine the location of the receiver(s). The multicast
        routing protocol, and the network-based state the protocol creates,
        determine where the receivers are located.</t>

        <t>In the context of LISP, a multicast group address is both
        an EID and a Routing Locator. Therefore, no specific
        semantic or action needs to be taken for a destination
        address, as it would appear in an IP header. Therefore, a
        group address that appears in an inner IP header built by a
        source host will be used as the destination EID. The outer
        IP header (the destination Routing Locator address),
        prepended by a LISP router, will use the same group address
        as the destination Routing Locator.</t>

        <t>Having said that, only the source EID and source Routing 
        Locator need to be dealt with. Therefore, an ITR merely needs
        to put its own IP address in the source 'Routing Locator' field when
        prepending the outer IP header. This source Routing Locator 
        address, like any other Routing Locator address, MUST be 
        globally routable.</t>

        <t>Therefore, an EID-to-RLOC mapping does not need to be 
        performed by an ITR when a received data packet is a multicast
        data packet or when processing a source-specific Join (either by 
        IGMPv3 or PIM). But the source Routing Locator is decided
        by the multicast routing protocol in a receiver site. That is,
        an EID-to-RLOC translation is done at control time.</t>

        <t>Another approach is to have the ITR not encapsulate a multicast
        packet and allow the packet built by the host to flow into the core 
        even if the source address is allocated out of the EID namespace.
        If the RPF-Vector TLV <xref target="RFC5496" /> is used by PIM in
        the core, then core routers can RPF to the ITR (the locator
        address, which is injected into core routing) rather than the host
        source address (the EID address, which is not injected into core 
        routing).</t>

        <t>To avoid any EID-based multicast state in the network core,
        the first approach is chosen for LISP-Multicast. Details for
        LISP-Multicast and interworking with non-LISP sites are described 
        in <xref target="RFC6831" /> and <xref target="RFC6832"/>.</t>
        </section>

        <section title="Security Considerations" anchor="SECURITY">

            <t>It is believed that most of the security mechanisms
            will be part of the mapping database service when using
            control-plane procedures for obtaining EID-to-RLOC
            mappings. For data-plane-triggered mappings, as described
            in this specification, protection is provided against ETR
            spoofing by using route-returnability
            (see <xref target="DEFINITIONS" />) mechanisms evidenced by the
            use of a 24-bit 'Nonce' field in the LISP encapsulation
            header and a 64-bit 'Nonce' field in the LISP control
            message.</t>

            <t>The nonce, coupled with the ITR accepting only solicited
            Map-Replies, provides a basic level of security, in many
            ways similar to the security experienced in the current
            Internet routing system. It is hard for off-path attackers
            to launch attacks against these LISP mechanisms, as they
            do not have the nonce values. Sending a large number of
            packets to accidentally find the right nonce value is
            possible but would already by itself be a
            denial-of-service (DoS) attack. On-path attackers can perform
            far more serious attacks, but on-path attackers can launch
            serious attacks in the current Internet as well, including
            eavesdropping, blocking, or redirecting traffic. See more
            discussion on this topic in <xref target="RD" />.</t>

            <t>LISP does not rely on a PKI or a more heavyweight
            authentication system.  These systems challenge one of the
            primary design goals of LISP -- scalability.</t>

            <t>DoS attack prevention will depend on implementations 
            rate-limiting Map-Requests and Map-Replies to the control plane 
            as well as rate-limiting the number of data-triggered 
            Map-Replies.</t>

            <t>An incorrectly implemented or malicious ITR might
            choose to ignore the Priority and Weights provided by the
            ETR in its Map-Reply. This traffic-steering would be
            limited to the traffic that is sent by this ITR's site
            and no more severe than if the site initiated a bandwidth
            DoS attack on (one of) the ETR's ingress links.  The ITR's
            site would typically gain no benefit from not respecting
            the Weights and would likely receive better service by
            abiding by them.</t>

        <t>To deal with map-cache exhaustion attempts in an ITR/PITR, the
        implementation should consider putting a maximum cap on the
        number of entries stored with a reserve list for special or
        frequently accessed sites. This should be a configuration
        policy control set by the network administrator who manages
        ITRs and PITRs. When overlapping EID-Prefixes occur across multiple 
        Map-Cache entries, the integrity of the set must be wholly maintained. 
        So, if a more-specific entry cannot be added due to reaching the
        maximum cap, then none of the less-specific entries should be
        stored in the map-cache.</t>

        <t>Given that the ITR/PITR maintains a cache of EID-to-RLOC
        mappings, cache sizing and maintenance are issues to be kept
        in mind during implementation.  It is a good idea to have
        instrumentation in place to detect thrashing of the
        cache. Implementation experimentation will be used to
        determine which cache management strategies work best.
        In general, it is difficult to defend against cache-thrashing attacks.
        It should be noted that an undersized cache in an ITR/PITR
        not only causes adverse effects on the site or region it supports
        but may also cause increased Map-Request loads on the mapping
        system.</t>

        <t>"Piggybacked" mapping data as discussed in
        <xref target="MAPREQ" /> specifies how to handle such mappings
        and includes the possibility for an ETR to temporarily accept
        such a mapping before verification when running in "trusted"
        environments. In such cases, there is a potential threat that a
        fake mapping could be inserted (even if only for a short
        period) into a map-cache. As noted in <xref target="MAPREQ" />,
        an ETR MUST be specifically configured to run in such a mode
        and might usefully only consider some specific ITRs as also
        running in that same trusted environment.</t>

        <t>There is a security risk implicit in the fact that ETRs
        generate the EID-Prefix to which they are responding.  An ETR
        can claim a shorter prefix than it is actually responsible
        for.  Various mechanisms to ameliorate or resolve this issue
        will be examined in the future <xref target="LISP-SEC" />.</t>

        <t>Spoofing of inner-header addresses of LISP-encapsulated
        packets is possible, as with any tunneling mechanism.  ITRs
        MUST verify the source address of a packet to be an EID that
        belongs to the site's EID-Prefix range prior to encapsulation.
        An ETR must only decapsulate and forward datagrams with an
        inner-header destination that matches one of its EID-Prefix
        ranges. If, upon receipt and decapsulation, the destination
        EID of a datagram does not match one of the ETR's configured
        EID-Prefixes, the ETR MUST drop the datagram. If a
        LISP-encapsulated packet arrives at an ETR, it SHOULD compare the
        inner-header source EID address and the outer-header source
        RLOC address with the mapping that exists in the mapping
        database. Then, when spoofing attacks occur, the outer-header
        source RLOC address can be used to trace back the attack to
        the source site, using existing operational tools.</t>

        <t>This experimental specification does not address automated
        key management (AKM). BCP 107 <xref target="RFC4107"/> provides
        guidance in this area.
        In addition, at the time of this writing, substantial work is
        being undertaken to improve security of the routing system
        <xref target="RFC6518" /> <xref target="RFC6480" />
        <xref target="BGP-SEC" /> <xref target="LISP-SEC" />.
        Future work on LISP should address the issues discussed in BCP 107
        as well as other open security considerations, which may require
        changes to this specification.</t>

        </section>            

        <section title="Network Management Considerations">
          <t>Considerations for network management tools exist so the LISP
          protocol suite can be operationally managed.
          These mechanisms can be found in <xref target="LISP-MIB" /> and
          <xref target="RFC6835" />.</t>
        </section>

        <section title="IANA Considerations">
          <t>This section provides guidance to the Internet Assigned
          Numbers Authority (IANA) regarding registration of values
          related to the LISP specification, in accordance with BCP 26
          <xref target="RFC5226" />.</t>

          <t>There are four namespaces (listed in the sub-sections below)
          in LISP that have been registered.</t>

          <t><list style="symbols">
            <t>LISP IANA registry allocations should not be made for
            purposes unrelated to LISP routing or transport
            protocols.</t>

            <t>The following policies are used here with the meanings
            defined in BCP 26: "Specification Required", "IETF Review",
            "Experimental Use", and "First Come First Served".</t>
          </list></t>

          <section title="LISP ACT and Flag Fields">
            <t>New ACT values (<xref target="MR-FORMAT" />) can be
            allocated through IETF review or IESG approval. Four
            values have already been allocated by this specification
            (<xref target="MR-FORMAT" />).</t>

            <t>In addition, LISP has a number of flag fields and
            reserved fields, such as the LISP header flags field
            (<xref target="LRB" />). New bits for flags in these fields
            can be implemented after IETF review or IESG approval,
            but these need not be managed by IANA.</t>
          </section>

          <section anchor="IANA" title="LISP Address Type Codes">
            <t>LISP Address <xref target="LCAF" /> type codes have a
            range from 0 to 255. New type codes MUST be allocated
            consecutively, starting at 0.  Type Codes 0-127 are to be
            assigned by IETF review or IESG approval.</t>

            <t>Type Codes 128-255 are available according to the
            <xref target="RFC5226"/> First Come First Served 
            policy.</t>

            <t>This registry, initially empty, is constructed for
            future use in experimental work related to LISP Canonical
            Address Format (LCAF) values. See <xref target="LCAF" /> for
            details of other possible unapproved address encodings.
            The unapproved LCAF encodings are an area for further
            study and experimentation.</t>

          </section>


          <section title="LISP UDP Port Numbers">
            <t>The IANA registry has allocated UDP port numbers 4341
            and 4342 for lisp-data and lisp-control operation,
            respectively.  IANA has updated the description
            for UDP ports 4341 and 4342 as follows:</t>

            <figure> <artwork><![CDATA[
    lisp-data      4341 udp    LISP Data Packets
    lisp-control   4342 udp    LISP Control Packets
            ]]></artwork> </figure>

          </section>

          <section title="LISP Key ID Numbers" anchor="KEYS">
            <t>The following Key ID values are defined by this specification
            as used in any packet type that references a 'Key ID' field:</t>
              
            <figure> <artwork><![CDATA[
    Name                 Number          Defined in
    -----------------------------------------------
    None                 0               n/a
    HMAC-SHA-1-96        1               [RFC2404]
    HMAC-SHA-256-128     2               [RFC4868]
            ]]></artwork> </figure>

            <t>Number values are in the range of 0 to 65535. The
            allocation of values is on a first come first served basis.</t>
          </section>

        </section>            

        <section anchor="known-issues" title="Known Open Issues and Areas of Future Work">

          <t>As an experimental specification, this work is, by
          definition, incomplete.  Specific areas where additional
          experience and work are needed include the following:</t>

          <t><list style="symbols">
            <t>At present, only <xref target="RFC6836" /> is defined for
            implementing a database of EID-to-RLOC mapping
            information. Additional research on other mapping database
            systems is strongly encouraged.</t>
    
            <t>Failure and recovery of LISP site partitioning (see
            <xref target="eid-reach" />) in the presence of
            redundant configuration (see <xref target="packets-egress" />) 
            needs further research and experimentation.</t>

            <t>The characteristics of map-cache management under
            exceptional conditions, such as denial-of-service attacks,
            are not fully understood.  Further experience is needed to
            determine whether current caching methods are practical or
            in need of further development. In particular, the
            performance, scaling, and security characteristics of the
            map-cache will be discovered as part of this
            experiment. Performance metrics to be observed are packet
            reordering associated with the LISP Data-Probe and loss of
            the first packet in a flow associated with
            map-caching. The impact of these upon TCP will be
            observed. See <xref target="SECURITY" /> for
            additional thoughts and considerations.</t>

            <t>Preliminary work has been done to ensure that sites
            employing LISP can interconnect with the rest of the
            Internet. This work is documented in
            <xref target="RFC6832" />, but further experimentation
            and experience are needed.</t>

            <t>At present, no mechanism for automated key management
            for message authentication is defined. Addressing
            automated key management is necessary before this
            specification can be developed into a Standards Track
            RFC.  See <xref target="SECURITY" /> for further details
            regarding security considerations.</t>

            <t>In order to maintain security and stability, Internet
            protocols typically isolate the control and data
            planes. Therefore, user activity cannot cause control-plane
            state to be created or destroyed. LISP does not
            maintain this separation. The degree to which the loss of
            separation impacts security and stability is a topic for
            experimental observation.</t>

            <t>LISP allows for the use of different mapping database systems.
            While only one <xref target="RFC6836" /> is currently well defined,
            each mapping database will likely have
            some impact on the security of the EID-to-RLOC mappings. 
            How each mapping database system's security properties
            impact LISP overall is for further study.</t>

            <t>An examination of the implications of LISP on Internet
            traffic, applications, routers, and security is needed.
            This will help implementors understand the consequences for
            network stability, routing protocol function, routing
            scalability, migration and backward compatibility, and
            implementation scalability (as influenced by additional
            protocol components; additional state; and additional
            processing for encapsulation, decapsulation, and liveness).</t>

            <t>Experiments need to verify that LISP produces no
            significant change in the behavior of protocols run
            between end-systems over a LISP infrastructure versus
            being run directly between those same end-systems.</t>

            <t>Experiments need to verify that the issues raised in the
            Critique section of <xref target="RFC6115" /> are either
            insignificant or have been addressed by updates to LISP.</t>

          </list></t>
          <t>Other LISP documents may also include open issues and areas for
          future work.</t>
        </section>
    </middle>

    <back>
      <?rfc rfcedstyle="no"?>
        <references title='Normative References'>
            &rfc2119;
            &rfc0768;
            &rfc6275;
            &rfc3168;
            &rfc4086;
            &rfc4868;
            &rfc2404;
            &rfc3232;
            &rfc5496;
            &rfc1918;
            &rfc4632;
            &rfc5226;
            &rfc5944;
            &rfc0791;
            &rfc2460;
            &rfc6115;

<!-- draft-ietf-lisp-alt (RFC 6836) -->
            <reference anchor="RFC6836">
                  <front>
                    <title>Locator/ID Separation Protocol Alternative Logical Topology (LISP+ALT)</title>
                    <author initials="D." surname="Farinacci">
                        <organization /> </author>
                    <author initials="V." surname="Fuller">
                        <organization /> </author>
                    <author initials="D." surname="Meyer">
                        <organization /> </author>
                    <author initials="D." surname="Lewis">
                        <organization /> </author>
                  <date month="January" year="2013"/>
                </front>
                <seriesInfo name="RFC" value="6836" />
            </reference>

<!-- draft-ietf-lisp-ms (RFC 6833) -->
            <reference anchor="RFC6833">
                  <front>
                    <title>Locator/ID Separation Protocol (LISP) Map-Server Interface</title>
                    <author initials="D" surname="Farinacci">
                        <organization /> </author>
                    <author initials="V" surname="Fuller">
                        <organization /> </author>
                  <date month="January" year="2013"/>
                </front>
                <seriesInfo name="RFC" value="6833" />
            </reference>

<!-- draft-ietf-lisp-map-versioning (RFC 6834) -->
            <reference anchor="RFC6834">
                  <front>
                    <title>Locator/ID Separation Protocol (LISP) Map-Versioning</title>
                    <author initials="L" surname="Iannone">
                        <organization /> </author>
                    <author initials="D" surname="Saucez">
                        <organization /> </author>
                    <author initials="O" surname="Bonaventure">
                        <organization /> </author>
                  <date month="January" year="2013"/>
                </front>
                <seriesInfo name="RFC" value="6834" />
            </reference>

        </references>

        <references title="Informative References">
         &rfc4107;
         &rfc4192;
         &rfc1034;
         &rfc3261;
         &rfc2784;
         &rfc3056;
         &rfc4866;
         &rfc4984;
         &rfc6480; <!-- draft-ietf-sidr-arch (PUBed 2012-02) -->
         &rfc6518; <!-- draft-ietf-karp-design-guide (PUBed 2012-02) -->

<!-- draft-ietf-6man-udpchecksums (IESG Evaluation:Telechat) -->
            <reference anchor="UDP-TUNNELS">
                  <front>
                    <title>IPv6 and UDP Checksums for Tunneled Packets</title>
                    <author initials="M" surname="Eubanks">
                        <organization /> </author>
                    <author initials="P" surname="Chimento">
                        <organization /> </author>
                    <author initials="M" surname="Westerlund">
                        <organization /> </author>
                    <date month="January" year="2013" />
                </front>
                <seriesInfo name="Work in" value="Progress" />
            </reference>

<!-- draft-ietf-6man-udpzero (IESG Evaluation:Telechat) -->
            <reference anchor="UDP-ZERO">
                  <front>
                    <title>Applicability Statement for the use of IPv6 UDP
Datagrams with Zero Checksums</title>
                    <author initials="G" surname="Fairhurst">
                        <organization /> </author>
                    <author initials="M" surname="Westerlund">
                        <organization /> </author>
                    <date month="December" year="2012" />
                </front>
                <seriesInfo name="Work in" value="Progress" />
            </reference>

<!-- draft-ietf-lisp-interworking (RFC 6832) -->
            <reference anchor="RFC6832">
                  <front>
                    <title>Interworking between Locator/ID Separation Protocol
(LISP) and Non-LISP Sites</title>
                    <author initials="D" surname="Lewis">
                        <organization /> </author>
                    <author initials="D" surname="Meyer">
                        <organization /> </author>
                    <author initials="D" surname="Farinacci">
                        <organization /> </author>
                    <author initials="V" surname="Fuller">
                        <organization /> </author>
                  <date month="January" year="2013"/>
                </front>
                <seriesInfo name="RFC" value="6832" />
            </reference>

<!-- draft-lepinski-bgpsec-overview (Replaced; now -->
<!-- draft-ietf-sidr-bgpsec-overview (Expired)) -->
            <reference anchor="BGP-SEC">
                  <front>
                    <title>An Overview of BGPSEC</title>
                    <author initials="M" surname="Lepinski">
                        <organization /> </author>
                    <author initials="S" surname="Turner">
                        <organization /> </author>
                    <date month="May" year="2012" />
                </front>
                <seriesInfo name="Work in" value="Progress" />
            </reference>

<!-- draft-narten-radir-problem-statement (Expired) -->
            <reference anchor="RADIR">
                  <front>
                    <title>On the Scalability of Internet Routing</title> 
                    <author initials="T." surname="Narten">
                        <organization /> </author>
                  <date month="February" year="2010"/>
                 </front>
                <seriesInfo name="Work in" value="Progress" />
            </reference>

            <reference anchor="LISA96">
                <front>
                    <title>Renumbering: Threat or Menace?</title>
                    <author initials="E." surname="Lear">
                        <organization /> </author>
                    <author initials="D." surname="Tharp">
                        <organization /> </author>
                    <author initials="J." surname="Katinsky">
                        <organization /> </author>
                    <author initials="J." surname="Coffin">
                        <organization /> </author>
                  <date month="October" year="1996"/>
                </front>
                <seriesInfo name="Usenix" value="Tenth System Administration
Conference (LISA 96)" />
            </reference>

            <reference anchor="CHIAPPA" target="http://mercury.lcs.mit.edu/~jnc/tech/endpoints.txt">
                <front>
                    <title>Endpoints and Endpoint names: A Proposed 
                    Enhancement to the Internet Architecture</title>
                    <author initials="J." surname="Chiappa">
                        <organization /> </author>

                <date year="1999"/>
                </front>
            </reference>

<!-- draft-meyer-lisp-con (Expired) -->
            <reference anchor="CONS">
                  <front>
                    <title>LISP-CONS: A Content distribution Overlay Network Service for LISP</title>
                    <author initials="S." surname="Brim">
                        <organization /> </author>
                    <author initials="N." surname="Chiappa">
                        <organization /> </author>
                    <author initials="D." surname="Farinacci">
                        <organization /> </author>
                    <author initials="V." surname="Fuller">
                        <organization /> </author>
                    <author initials="D." surname="Lewis">
                        <organization /> </author>
                    <author initials="D." surname="Meyer">
                        <organization /> </author>
                  <date month="April" year="2008"/>
                </front>
                <seriesInfo name="Work in" value="Progress" />        
            </reference>

<!-- draft-lear-lisp-nerd (RFC 6837) -->
	    <reference anchor="RFC6837">
  	        <front>
	            <title>NERD: A Not-so-novel Endpoint ID (EID) to Routing Locator (RLOC) Database</title>
		    <author initials="E" surname="Lear">
		        <organization />
   		    </author>
                 <date month="January" year="2013"/>
	        </front>
	        <seriesInfo name="RFC" value="6837"/>
	    </reference>


<!-- draft-curran-lisp-emacs (Expired) -->
            <reference anchor="EMACS">
                  <front>
                    <title>EID Mappings Multicast Across Cooperating Systems for LISP</title>
                    <author initials="S." surname="Brim">
                        <organization /> </author>
                    <author initials="D." surname="Farinacci">
                        <organization /> </author>
                    <author initials="D." surname="Meyer">
                        <organization /> </author>
                    <author initials="J." surname="Curran">
                        <organization /> </author>
                  <date month="November" year="2007"/>
                </front>
                <seriesInfo name="Work in" value="Progress" />
            </reference>

            <reference anchor="AFI" target="http://www.iana.org/assignments/address-family-numbers">
                  <front>
                    <title>Address Family Numbers</title>
                    <author>
                        <organization>IANA</organization> </author>
                </front>
            </reference>

<!-- draft-iannone-openlisp-implementation (Expired) -->
            <reference anchor="OPENLISP">
                  <front>
                    <title>OpenLISP Implementation Report</title>
                    <author initials="L" surname="Iannone">
                        <organization /> </author>
                    <author initials="D" surname="Saucez">
                        <organization /> </author>
                    <author initials="O" surname="Bonaventure">
                        <organization /> </author>
                   <date month="July" year="2008"/>
                </front>
                <seriesInfo name="Work in" value="Progress" />
            </reference>

<!-- draft-ietf-lisp-multicast (RFC 6831) -->
            <reference anchor="RFC6831">
                  <front>
                    <title>The Locator/ID Separation Protocol (LISP) for Multicast Environments</title>
                    <author initials="D" surname="Farinacci">
                        <organization /> </author>
                    <author initials="D" surname="Meyer">
                        <organization /> </author>
                    <author initials="J" surname="Zwiebel">
                        <organization /> </author>
                    <author initials="S" surname="Venaas">
                        <organization /> </author>
                <date month="January" year="2013"/>
                </front>
             <seriesInfo name="RFC" value="6831"/>
            </reference>

<!-- draft-meyer-loc-id-implications (Expired) -->
            <reference anchor="LOC-ID-ARCH">
                  <front>
                    <title>Architectural Implications of Locator/ID Separation</title>
                    <author initials="D" surname="Meyer">
                        <organization /> </author>
                    <author initials="D" surname="Lewis">
                        <organization /> </author>
                  <date month="January" year="2009"/>
                </front>
                <seriesInfo name="Work in" value="Progress" />
            </reference>

<!-- draft-meyer-lisp-mn (I-D Exists) -->
            <reference anchor="LISP-MN">
                  <front>
                    <title>LISP Mobile Node</title>
                    <author initials="D" surname="Farinacci">
                        <organization /> </author>
                    <author initials="D" surname="Lewis">
                        <organization /> </author>
                    <author initials="D" surname="Meyer">
                        <organization /> </author>
                    <author initials="C" surname="White">
                        <organization /> </author>
                  <date month="October" year="2012"/>
                </front>
                <seriesInfo name="Work in" value="Progress" />
            </reference>

<!-- draft-ietf-lisp-lcaf (I-D Exists) -->
            <reference anchor="LCAF">
                  <front>
                    <title>LISP Canonical Address Format (LCAF)</title>
                    <author initials="D" surname="Farinacci">
                        <organization /> </author>
                    <author initials="D" surname="Meyer">
                        <organization /> </author>
                    <author initials="J" surname="Snijders">
                        <organization /> </author>
                 <date month="January" year="2013"/>
                </front>
                <seriesInfo name="Work in" value="Progress" />
            </reference>

<!-- draft-ietf-lisp-sec (I-D Exists) -->
            <reference anchor="LISP-SEC">
                  <front>
                    <title>LISP-Security (LISP-SEC)</title>
                    <author initials="F" surname="Maino">
                        <organization /> </author>
                    <author initials="V" surname="Ermagan">
                        <organization /> </author>
                    <author initials="A" surname="Cabellos">
                        <organization /> </author>
                    <author initials="D" surname="Saucez">
                        <organization /> </author>
                    <author initials="O" surname="Bonaventure">
                        <organization /> </author>
                  <date month="October" year="2012"/>
                </front>
                <seriesInfo name="Work in" value="Progress" />
            </reference>

<!-- draft-ietf-lisp-mib (In Last Call) -->
            <reference anchor="LISP-MIB">
                  <front>
                    <title>LISP MIB</title>
                    <author initials="G" surname="Schudel">
                        <organization /> </author>
                    <author initials="A" surname="Jain">
                        <organization /> </author>
                    <author initials="V" surname="Moreno">
                        <organization /> </author>
                   <date month="January" year="2013"/>
                </front>
                <seriesInfo name="Work in" value="Progress" />
            </reference>

<!-- draft-ietf-lisp-lig (RFC 6835) -->
            <reference anchor="RFC6835">
                  <front>
                    <title>The Locator/ID Separation Protocol Internet Groper (LIG)</title>
                    <author initials="D" surname="Farinacci">
                        <organization /> </author>
                    <author initials="D" surname="Meyer">
                        <organization /> </author>
                    <date month="January" year="2013" />
                </front>
                <seriesInfo name="RFC" value="6835" />
            </reference>

<!-- draft-ietf-lisp-deployment (I-D Exists) -->
            <reference anchor="LISP-DEPLOY">
                  <front>
                    <title>LISP Network Element Deployment Considerations</title>
                    <author initials="L" surname="Jakab">
                        <organization /> </author>
                    <author initials="A" surname="Cabellos-Aparicio">
                        <organization /> </author>
                    <author initials="F" surname="Coras">
                        <organization /> </author>
                    <author initials="J" surname="Domingo-Pascual">
                        <organization /> </author>
                    <author initials="D" surname="Lewis">
                        <organization /> </author>
                  <date month="October" year="2012"/>
                </front>
                <seriesInfo name="Work in" value="Progress" />
            </reference>
        </references>
     <?rfc rfcedstyle="yes"?>

        <section title="Acknowledgments">
            <t>An initial thank you goes to Dave Oran for planting the seeds
            for the initial ideas for LISP. His consultation continues to
            provide value to the LISP authors.</t>

            <t>A special and appreciative thank you goes to Noel Chiappa for
            providing architectural impetus over the past decades on separation
            of location and identity, as well as detailed reviews of the LISP
            architecture and documents, coupled with enthusiasm for making LISP
            a practical and incremental transition for the Internet.</t>

            <t>The authors would like to gratefully acknowledge many
            people who have contributed discussions and ideas to the
            making of this proposal.  They include Scott Brim, Andrew
            Partan, John Zwiebel, Jason Schiller, Lixia Zhang, Dorian
            Kim, Peter Schoenmaker, Vijay Gill, Geoff Huston, David
            Conrad, Mark Handley, Ron Bonica, Ted Seely, Mark
            Townsley, Chris Morrow, Brian Weis, Dave McGrew, Peter
            Lothberg, Dave Thaler, Eliot Lear, Shane Amante, Ved
            Kafle, Olivier Bonaventure, Luigi Iannone, Robin Whittle,
            Brian Carpenter, Joel Halpern, Terry Manderson, Roger Jorgensen,
            Ran Atkinson, Stig Venaas, Iljitsch van Beijnum, Roland Bless,
            Dana Blair, Bill Lynch, Marc Woolward, Damien Saucez,
            Damian Lezama, Attilla De Groot, Parantap Lahiri, David
            Black, Roque Gagliano, Isidor Kouvelas, Jesper Skriver,
            Fred Templin, Margaret Wasserman, Sam Hartman, Michael
            Hofling, Pedro Marques, Jari Arkko, Gregg Schudel, Srinivas 
            Subramanian, Amit Jain, Xu Xiaohu, Dhirendra Trivedi, Yakov
            Rekhter, John Scudder, John Drake, Dimitri Papadimitriou, 
            Ross Callon, Selina Heimlich, Job Snijders, Vina Ermagan,
            Albert Cabellos, Fabio Maino, Victor Moreno, Chris White,
            Clarence Filsfils, and Alia Atlas.</t>

            <t>This work originated in the Routing Research Group (RRG) of the
            IRTF. An individual submission was converted into the IETF LISP
            working group document that became this RFC.</t>

            <t>The LISP working group would like to give a special thanks to
            Jari Arkko, the Internet Area AD at the time that the set of LISP
            documents were being prepared for IESG last call, and for his 
            meticulous reviews and detailed commentaries on the 7 working group
            last call documents progressing toward experimental RFCs.</t>
        </section>

    </back>

</rfc>
