<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
    which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY ieee_802_1Q SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml6/reference.IEEE.802.1Q_2014.xml">
]>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
    please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
    (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
    (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std" docName="draft-ietf-lisp-gpe-10" ipr="trust200902">
  <!-- category values: std, bcp, info, exp, and historic
    ipr values: trust200902, noModificationTrust200902, noDerivativesTrust200902,
       or pre5378Trust200902
    you can add the attributes updates="NNNN" and obsoletes="NNNN" 
    they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the 
        full title is longer than 39 characters -->

    <title>LISP Generic Protocol Extension</title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Fabio Maino" initials="F." role="editor" surname="Maino">
      <organization abbrev="Cisco">Cisco Systems</organization>

      <address>
        <postal>
          <street/>

          <!-- Reorder these if your country does things differently -->

          <city>San Jose</city>

          <region>CA</region>

          <code>95134</code>

          <country>USA</country>
        </postal>

        <email>fmaino@cisco.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Jennifer Lemon" initials="J." surname="Lemon">
      <organization>Broadcom</organization>

      <address>
        <postal>
          <street>270 Innovation Drive</street>

          <!-- Reorder these if your country does things differently -->

          <city>San Jose</city>

          <region>CA</region>

          <code>95134</code>

          <country>USA</country>
        </postal>

        <email>jennifer.lemon@broadcom.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Puneet Agarwal" initials="P." surname="Agarwal">
      <organization>Innovium</organization>

      <address>
        <postal>
          <street/>

          <!-- Reorder these if your country does things differently -->

          <city/>

          <region/>

          <code/>

          <country>USA</country>
        </postal>

        <email>puneet@acm.org</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Darrel Lewis" initials="D." surname="Lewis">
      <organization abbrev="Cisco">Cisco Systems</organization>

      <address>
        <email>darlewis@cisco.com</email>
      </address>
    </author>

    <author fullname="Michael Smith" initials="M." surname="Smith">
      <organization abbrev="Cisco">Cisco Systems</organization>

      <address>
        <email>michsmit@cisco.com</email>
      </address>
    </author>

    <date day="4" month="November" year="2019"/>

    <!-- If the month and year are both specified and are the current ones, xml2rfc will fill 
        in the current day for you. If only the current year is specified, xml2rfc will fill 
	 in the current day and month for you. If the year is not the current one, it is 
	 necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the 
	 purpose of calculating the expiry date).  With drafts it is normally sufficient to 
	 specify just the year. -->

    <!-- Meta-data Declarations -->

    <area>General</area>

    <workgroup>Internet Engineering Task Force</workgroup>

    <!-- WG name at the upperleft corner of the doc,
        IETF is fine for individual submissions.  
	 If this element is not present, the default is "Network Working Group",
        which is used by the RFC Editor as a nod to the history of the IETF. -->

    <keyword>security</keyword>

    <keyword>policy</keyword>

    <!-- Keywords will be incorporated into HTML output
        files in a meta tag but they have no effect on text or nroff
        output. If you submit your draft to the RFC Editor, the
        keywords will be used for the search engine. -->

    <abstract>
      <t>This document describes extentions to the Locator/ID Separation
      Protocol (LISP) Data-Plane, via changes to the LISP header, to support
      multi-protocol encapsulation.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="Introduction" title="Introduction">
      <t>The LISP Data-Plane is defined in <xref
      target="I-D.ietf-lisp-rfc6830bis"/>. It specifies an encapsulation
      format that carries IPv4 or IPv6 packets (henceforth jointly referred to
      as IP) in a LISP header and outer UDP/IP transport.</t>

      <t>The LISP Data-Plane header does not specify the protocol being
      encapsulated and therefore is currently limited to encapsulating only IP
      packet payloads. Other protocols, most notably Virtual eXtensible Local
      Area Network (VXLAN) <xref target="RFC7348"/> (which defines a similar
      header format to LISP), are used to encapsulate Layer-2 (L2) protocols
      such as Ethernet.</t>

      <t>This document defines an extension for the LISP header, as defined in
      <xref target="I-D.ietf-lisp-rfc6830bis"/>, to indicate the inner
      protocol, enabling the encapsulation of Ethernet, IP or any other
      desired protocol all the while ensuring compatibility with existing LISP
      deployments.</t>

      <t>A flag in the LISP header, called the P-bit, is used to signal the
      presence of the 8-bit Next Protocol field. The Next Protocol field, when
      present, uses 8 bits of the field that was allocated to the echo-noncing
      and map-versioning features in <xref
      target="I-D.ietf-lisp-rfc6830bis"/>. </t>

      <t>Since all of the reserved bits of the LISP Data-Plane header have
      been allocated, LISP-GPE can also be used to extend the LISP Data-Plane
      header by defining Next Protocol "shim" headers that implements new data
      plane functions not supported in the LISP header. For example, the use
      of the Group-Based Policy (GBP) header <xref
      target="I-D.lemon-vxlan-lisp-gpe-gbp"/> or of the In-situ Operations,
      Administration, and Maintenance (IOAM) header <xref
      target="I-D.brockners-ippm-ioam-vxlan-gpe"/> with LISP-GPE, can be
      considered an extension to add support in the Data-Plane for Group-Based
      Policy functionalities or IOAM metadata.</t>

      <t>Nonce, Map-Versioning and Locator Status Bit fields are not part of
      the LISP-GPE header. Shim headers can be used to specify features such
      as echo-noncing, map-versioning or reachability by defining fields of
      the same size, or larger, of those specified in <xref
      target="I-D.ietf-lisp-rfc6830bis"/>. </t>

      <section anchor="Conventions" title="Conventions">
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
        "OPTIONAL" in this document are to be interpreted as described in BCP
        14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only
        when, they appear in all capitals, as shown here.</t>
      </section>

      <section anchor="Abbreviations" title="Definition of Terms">
        <t>This document uses terms already defined in <xref
        target="I-D.ietf-lisp-rfc6830bis"/>.</t>
      </section>
    </section>

    <section anchor="LISP_header"
             title="LISP Header Without Protocol Extensions">
      <t>As described in <xref target="Introduction"/>, the LISP header has no
      protocol identifier that indicates the type of payload being carried.
      Because of this, LISP is limited to carrying IP payloads.</t>

      <t>The LISP header <xref target="I-D.ietf-lisp-rfc6830bis"/> contains a
      series of flags (some defined, some reserved), a Nonce/Map-version field
      and an instance ID/Locator-status-bit field. The flags provide
      flexibility to define how the various fields are encoded. Notably, Flag
      bit 5 is the last reserved bit in the LISP header.</t>

      <figure align="left" anchor="LISP_Header" title="LISP Header">
        <artwork align="left"><![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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |N|L|E|V|I|R|K|K|            Nonce/Map-Version                  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                 Instance ID/Locator-Status-Bits               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

           ]]></artwork>
      </figure>
    </section>

    <section anchor="LISP_GPE"
             title="Generic Protocol Extension for LISP (LISP-GPE)">
      <t>This document defines two changes to the LISP header in order to
      support multi-protocol encapsulation: the introduction of the P-bit and
      the definition of a Next Protocol field. This is shown in <xref
      target="GPE_Header"> </xref> and described below.</t>

      <figure align="left" anchor="GPE_Header" title="LISP-GPE Header">
        <artwork align="left"><![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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Res.  |I|P|K|K|        Nonce/Map-Version      | Next Protocol |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                        Instance ID                            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

           ]]></artwork>
      </figure>

      <t/>

      <t><list style="hanging">
          <t hangText="Bits 0-3:">Bits 0-3 of the LISP-GPE header are
          Reserved. They MUST be set to zero on transmission and ignored on
          receipt.</t>

          <t>Features that were implemented with bits 0-3 in <xref
          target="I-D.ietf-lisp-rfc6830bis"/>, such as echo-noncing,
          map-versioning and reachability, can be implemented by defining the
          appropriate shim headers.</t>

          <t hangText="Instance ID">When the I-Bit is set to 1 the high-order
          24 bits of the Instance ID field are used as an Instance ID, as
          specified in <xref target="I-D.ietf-lisp-rfc6830bis"/>. The
          low-order 8 bits are set to zero, as the Locator-Status-Bits feature
          is not supported in LISP-GPE. </t>

          <t hangText="P-Bit:">Flag bit 5 is defined as the Next Protocol
          bit.</t>

          <t hangText="">If the P-bit is clear (0) the LISP header is
          bit-by-bit equivalent to the definition in <xref
          target="I-D.ietf-lisp-rfc6830bis"/> with bits N, L, E and V set to
          0.</t>

          <t>The P-bit is set to 1 to indicate the presence of the 8 bit Next
          Protocol field. The combinations of bits that are allowed when the
          P-bit is set are the same allowed by <xref
          target="I-D.ietf-lisp-rfc6830bis"/> when bits N, L, E and V are set
          to 0.</t>

          <t hangText="Next Protocol:">The lower 8 bits of the first 32-bit
          word are used to carry a Next Protocol. This Next Protocol field
          contains the protocol of the encapsulated payload packet.</t>

          <t>This document defines the following Next Protocol values:</t>

          <t><list style="hanging">
              <t hangText="0x01 :">IPv4</t>

              <t hangText="0x02 :">IPv6</t>

              <t hangText="0x03 :">Ethernet</t>

              <t hangText="0x04 :">Network Service Header (NSH) <xref
              target="RFC8300"/></t>

              <t hangText="0x05 to 0x7F:">Unassigned</t>

              <t hangText="0x80 to 0xFF:">Unassigned (shim headers)</t>
            </list></t>

          <t hangText="">The values are tracked in an IANA registry as
          described in <xref target="Next_protocol"/>.</t>
        </list></t>

      <t>Next protocol values from Ox80 to 0xFF are assigned to protocols
      encoded as generic "shim" headers. Shim protocols all use a common
      header structure, which includes a next header field using the same
      values as described above. When a shim header protocol is used with
      other data described by protocols identified by next protocol values
      from 0x0 to 0x7F, the shim header MUST come before the further protocol,
      and the next header of the shim will indicate what follows the shim
      protocol.</t>

      <t>Implementations that are not aware of a given shim header MUST ignore
      the header and proceed to parse the next protocol. Shim protocols MUST
      have the first 32 bits defined as:</t>

      <t><figure anchor="shim" title="Shim Header">
          <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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Length     |   Reserved    | Next Protocol |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                    Protocol Specific Fields                   ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>

          <postamble/>
        </figure></t>

      <t>Where:</t>

      <t><list style="hanging">
          <t hangText="Type:">This field identifies the different messages of
          this protocol.</t>

          <t hangText="Length:">The length, in 4-octect units, of this
          protocol message not including the first 4 octects.</t>

          <t hangText="Reserved:">The use of this field is reserved to the
          protocol defined in this message.</t>

          <t hangText="Next Protocol Field:">This next protocol field contains
          the protocol of the encapsulated payload. The protocol registry will
          be requested from IANA as per section 10.2.</t>
        </list></t>
    </section>

    <section anchor="Deployments"
             title="Implementation and Deployment Considerations">
      <section anchor="Applicability" title="Applicability Statement">
        <t>LISP-GPE conforms, as an UDP-based encapsulation protocol, to the
        UDP usage guidelines as specified in <xref target="RFC8085"/>. The
        applicability of these guidelines are dependent on the underlay IP
        network and the nature of the encapsulated payload.</t>

        <t><xref target="RFC8085"/> outlines two applicability scenarios for
        UDP applications, 1) general Internet and 2) controlled environment.
        The controlled environment means a single administrative domain or
        adjacent set of cooperating domains. A network in a controlled
        environment can be managed to operate under certain conditions whereas
        in general Internet this cannot be done. Hence requirements for a
        tunnel protocol operating under a controlled environment can be less
        restrictive than the requirements of general internet.</t>

        <t>LISP-GPE scope of applicability is the same set of use cases
        covered by<xref target="I-D.ietf-lisp-rfc6830bis"/> for the LISP
        dataplane protocol. The common property of these use cases is a large
        set of cooperating entities seeking to communicate over the public
        Internet or other large underlay IP infrastructures, while keeping the
        addressing and topology of the cooperating entities separate from the
        underlay and Internet topology, routing, and addressing.</t>

        <t>LISP-GPE is meant to be deployed in network environments operated
        by a single operator or adjacent set of cooperating network operators
        that fits with the definition of controlled environments in <xref
        target="RFC8085"/>.</t>

        <t>For the purpose of this document, a traffic-managed controlled
        environment (TMCE), outlined in <xref target="RFC8086"/>, is defined
        as an IP network that is traffic-engineered and/or otherwise managed
        (e.g., via use of traffic rate limiters) to avoid congestion.
        Significant portions of text in this Section are based on <xref
        target="RFC8086"/>.</t>

        <t>It is the responsibility of the network operators to ensure that
        the guidelines/requirements in this section are followed as applicable
        to their LISP-GPE deployments</t>
      </section>

      <section anchor="CongestionControl"
               title="Congestion Control Functionality">
        <t>LISP-GPE does not natively provide congestion control functionality
        and relies on the payload protocol traffic for congestion control. As
        such LISP-GPE MUST be used with congestion controlled traffic or
        within a network that is traffic managed to avoid congestion (TMCE).
        An operator of a traffic managed network (TMCE) may avoid congestion
        by careful provisioning of their networks, rate-limiting of user data
        traffic and traffic engineering according to path capacity.</t>

        <t>Encapsulated payloads may have Explicit Congestion Notification
        mechanisms that may or may not be mapped to the outer IP header ECN
        field. Such new encapsulated payolads, when registered with LISP-GPE,
        MUST be accompanied by a set of guidelines derived from <xref
        target="I-D.ietf-tsvwg-ecn-encap-guidelines"/> and <xref
        target="RFC6040"/>.</t>
      </section>

      <section anchor="UDPChecksum" title="UDP Checksum">
        <t>For IP payloads, section 5.3 of <xref
        target="I-D.ietf-lisp-rfc6830bis"/> specifies how to handle UDP
        Checksums encouraging implementors to consider UDP checksum usage
        guidelines in section 3.4 of <xref target="RFC8085"/> when it is
        desirable to protect UDP and LISP headers against corruption.</t>

        <t>In order to provide integrity of LISP-GPE headers, options and
        payload, for example to avoid mis-delivery of payload to different
        tenant systems in case of data corruption, outer UDP checksum SHOULD
        be used with LISP-GPE when transported over IPv4. The UDP checksum
        provides a statistical guarantee that a payload was not corrupted in
        transit. These integrity checks are not strong from a coding or
        cryptographic perspective and are not designed to detect
        physical-layer errors or malicious modification of the datagram (see
        Section 3.4 of <xref target="RFC8085"/>). In deployments where such a
        risk exists, an operator SHOULD use additional data integrity
        mechanisms such as offered by IPSec.</t>

        <t>An operator MAY choose to disable UDP checksum and use zero
        checksum if LISP-GPE packet integrity is provided by other data
        integrity mechanisms such as IPsec or additional checksums or if one
        of the conditions in <xref target="IPv6Checksum"/> a, b, c are
        met.</t>

        <t>By default, UDP checksum MUST be used when LISP-GPE is transported
        over IPv6. A tunnel endpoint MAY be configured for use with zero UDP
        checksum if additional requirements in <xref target="IPv6Checksum"/>
        are met.</t>

        <t/>

        <section anchor="IPv6Checksum"
                 title="UDP Zero Checksum Handling with IPv6">
          <t>When LISP-GPE is used over IPv6, UDP checksum is used to protect
          IPv6 headers, UDP headers and LISP-GPE headers and payload from
          potential data corruption. As such by default LISP-GPE MUST use UDP
          checksum when transported over IPv6. An operator MAY choose to
          configure to operate with zero UDP checksum if operating in a
          traffic managed controlled environment as stated in <xref
          target="Applicability"/> if one of the following conditions are
          met:</t>

          <t><list style="letters">
              <t>It is known that the packet corruption is exceptionally
              unlikely (perhaps based on knowledge of equipment types in their
              underlay network) and the operator is willing to take a risk of
              undetected packet corruption</t>

              <t>It is judged through observational measurements (perhaps
              through historic or current traffic flows that use non zero
              checksum) that the level of packet corruption is tolerably low
              and where the operator is willing to take the risk of undetected
              corruption</t>

              <t>LISP-GPE payload is carrying applications that are tolerant
              of misdelivered or corrupted packets (perhaps through higher
              layer checksum validation and/or reliability through
              retransmission)</t>
            </list>In addition LISP-GPE tunnel implementations using Zero UDP
          checksum MUST meet the following requirements:</t>

          <t><list style="numbers">
              <t>Use of UDP checksum over IPv6 MUST be the default
              configuration for all LISP-GPE tunnels</t>

              <t>If LISP-GPE is used with zero UDP checksum over IPv6 then
              such xTR implementation MUST meet all the requirements specified
              in section 4 of <xref target="RFC6936"/> and requirements 1 as
              specified in section 5 of <xref target="RFC6936"/></t>

              <t>The ETR that decapsulates the packet SHOULD check the source
              and destination IPv6 addresses are valid for the LISP-GPE tunnel
              that is configured to receive Zero UDP checksum and discard
              other packets for which such check fails</t>

              <t>The ITR that encapsulates the packet MAY use different IPv6
              source addresses for each LISP-GPE tunnel that uses Zero UDP
              checksum mode in order to strengthen the decapsulator's check of
              the IPv6 source address (i.e the same IPv6 source address is not
              to be used with more than one IPv6 destination address,
              irrespective of whether that destination address is a unicast or
              multicast address). When this is not possible, it is RECOMMENDED
              to use each source address for as few LISP-GPE tunnels that use
              zero UDP checksum as is feasible</t>

              <t>Measures SHOULD be taken to prevent LISP-GPE traffic over
              IPv6 with zero UDP checksum from escaping into the general
              Internet. Examples of such measures include employing packet
              filters at the PETR and/or keeping logical or physical
              separation of LISP network from networks carrying General
              Internet</t>
            </list>The above requirements do not change either the
          requirements specified in <xref target="RFC2460"/> as modified by
          <xref target="RFC6935"/> or the requirements specified in <xref
          target="RFC6936"/>.</t>

          <t>The requirement to check the source IPv6 address in addition to
          the destination IPv6 address, plus the recommendation against reuse
          of source IPv6 addresses among LISP-GPE tunnels collectively provide
          some mitigation for the absence of UDP checksum coverage of the IPv6
          header. A traffic-managed controlled environment that satisfies at
          least one of three conditions listed at the beginning of this
          section provides additional assurance.</t>
        </section>
      </section>

      <section anchor="Ethernet" title="Ethernet Encapsulated Payloads ">
        <t>When a LISP-GPE router performs Ethernet encapsulation, the inner
        802.1Q <xref target="IEEE.802.1Q_2014"/> 3-bit priority code point
        (PCP) field MAY be mapped from the encapsulated frame to the 3-bit
        Type of Service field in the outer IPv4 header, or in the case of IPv6
        the 'Traffic Class' field.</t>

        <t>When a LISP-GPE router performs Ethernet encapsulation, the inner
        header 802.1Q <xref target="IEEE.802.1Q_2014"/> VLAN Identifier (VID)
        MAY be mapped to, or used to determine the LISP Instance IDentifier
        (IID) field.</t>
      </section>
    </section>

    <section anchor="Compatibility" title="Backward Compatibility">
      <t>LISP-GPE uses the same UDP destination port (4341) allocated to
      LISP.</t>

      <t>The next Section describes a method to determine the Data-Plane
      capabilities of a LISP ETR, based on the use of the "Multiple
      Data-Planes" LISP Canonical Address Format (LCAF) type defined in <xref
      target="RFC8060"/>. Other mechanisms can be used, including static
      ETR/ITR (xTR) configuration, but are out of the scope of this
      document.</t>

      <t>When encapsulating IP packets to a non LISP-GPE capable router the
      P-bit MUST be set to 0. That is, the encapsulation format defined in
      this document MUST NOT be sent to a router that has not indicated that
      it supports this specification because such a router would ignore the
      P-bit (as described in <xref target="I-D.ietf-lisp-rfc6830bis"/>) and so
      would misinterpret the other LISP header fields possibly causing
      significant errors.</t>

      <section anchor="MULTIDATAPLANE"
               title="Use of &quot;Multiple Data-Planes&quot; LCAF to Determine ETR Capabilities">
        <t><xref target="RFC8060">LISP Canonical Address Format (LCAF)</xref>
        defines the "Multiple Data-Planes" LCAF type, that can be included by
        an ETR in a Map-Reply to encode the encapsulation formats supported by
        a given RLOC. In this way an ITR can be made aware of the capability
        to support LISP-GPE, as well as other encapsulations, on a given RLOC
        of that ETR.</t>

        <t>The 3rd 32-bit word of the "Multiple Data-Planes" LCAF type, as
        defined in <xref target="RFC8060"/>, is a bitmap whose bits are set to
        one (1) to represent support for each Data-Plane encapsulation. The
        values are tracked in an IANA registry as described in <xref
        target="MDP_encap_registry"/>.</t>

        <t>This document defines bit 24 in the third 32-bit word of the
        "Multiple Data-Planes" LCAF as:</t>

        <t><list style="hanging">
            <t hangText="g-Bit:">The RLOCs listed in the Address Family
            Identifier (AFI) encoded addresses in the next longword can accept
            LISP-GPE (Generic Protocol Extension) encapsulation using
            destination UDP port 4341</t>
          </list></t>
      </section>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t/>

      <section anchor="Next_protocol" title="LISP-GPE Next Protocol Registry">
        <t>IANA is requested to set up a registry of LISP-GPE "Next Protocol".
        These are 8-bit values. Next Protocol values in the table below are
        defined in this document. New values are assigned under the
        Specification Required policy <xref target="RFC8126"/>. The protocols
        that are being assigned values do not themselves need to be IETF
        standards track protocols.</t>

        <texttable>
          <ttcol>Next Protocol</ttcol>

          <ttcol>Description</ttcol>

          <ttcol>Reference</ttcol>

          <c>0x00</c>

          <c>Reserved</c>

          <c>This Document</c>

          <c>0x01</c>

          <c>IPv4</c>

          <c>This Document</c>

          <c>0x02</c>

          <c>IPv6</c>

          <c>This Document</c>

          <c>0x03</c>

          <c>Ethernet</c>

          <c>This Document</c>

          <c>0x04</c>

          <c>NSH</c>

          <c>This Document</c>

          <c>0x05..0x7F</c>

          <c>Unassigned</c>

          <c/>

          <c>0x82..0xFF</c>

          <c>Unassigned</c>

          <c/>
        </texttable>
      </section>

      <section anchor="MDP_encap_registry"
               title="Multiple Data-Planes Encapsulation Bitmap Registry">
        <t>IANA is requested to set up a registry of "Multiple Data-Planes
        Encapsulation Bitmap" to identify the encapsulations supported by an
        ETR in the Multiple Data-Planes LCAF Type defined in <xref
        target="RFC8060"/>. The bitmap is the 3rd 32-bit word of the Multiple
        Data-Planes LCAF type. Each bit of the bitmap represents a Data-Plane
        Encapsulation. New values are assigned under the Specification
        Required policy <xref target="RFC8126"/>.</t>

        <t>Bits 0-23 are unassigned. This document assigns bits 24-31. Bit 24
        (bit 'g') is assigned to LISP-GPE.</t>

        <texttable>
          <ttcol>Bit Position</ttcol>

          <ttcol>Bit Name</ttcol>

          <ttcol>Assigned to</ttcol>

          <ttcol>Reference</ttcol>

          <c>0-23</c>

          <c/>

          <c>Unassigned</c>

          <c/>

          <c>24</c>

          <c>g</c>

          <c>LISP Generic Protocol Extension (LISP-GPE)</c>

          <c>This Document</c>

          <c>25</c>

          <c>U</c>

          <c>Generic UDP Encapsulation (GUE)</c>

          <c>This Document</c>

          <c>26</c>

          <c>G</c>

          <c>Generic Network Virtualization Encapsulation (GENEVE)</c>

          <c>This Document</c>

          <c>27</c>

          <c>N</c>

          <c>Network Virtualization - Generic Routing Encapsulation
          (NV-GRE)</c>

          <c>This Document</c>

          <c>28</c>

          <c>v</c>

          <c>VXLAN Generic Protocol Extension (VXLAN-GPE)</c>

          <c>This Document</c>

          <c>29</c>

          <c>V</c>

          <c>Virtual eXtensible Local Area Network (VXLAN)</c>

          <c>This Document</c>

          <c>30</c>

          <c>l</c>

          <c>Layer 2 LISP (LISP-L2)</c>

          <c>This Document</c>

          <c>31</c>

          <c>L</c>

          <c>Locator/ID Separation Protocol (LISP)</c>

          <c>This Document</c>
        </texttable>

        <t/>

        <t>Editorial Note (The following paragraph to be removed by the RFC
        Editor before publication)</t>

        <t>The "Multiple Data-Planes Encapsulation Bitmap" was "hardcoded" in
        RFC8060, assigning values to bits 25-31. This draft allocates the
        "Multiple Data-Planes Encapsulation Bitmap" registry assigning a value
        to bit 24 for the LISP-GPE encapsulation, assigning bits 25-31 values
        that are conformant with RFC8060. This will allow future allocation of
        values 0-23.</t>
      </section>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>LISP-GPE security considerations are similar to the LISP security
      considerations and mitigation techniques documented in <xref
      target="RFC7835"/>.</t>

      <t>LISP-GPE, as many encapsulations that use optional extensions, is
      subject to on-path adversaries that by manipulating the g-Bit and the
      packet itself can remove part of the payload. Typical integrity
      protection mechanisms (such as IPsec) SHOULD be used in combination with
      LISP-GPE by those protocol extensions that want to protect from on-path
      attackers.</t>

      <t>With LISP-GPE, issues such as data-plane spoofing, flooding, and
      traffic redirection may depend on the particular protocol payload
      encapsulated.</t>
    </section>

    <!-- Possibly a 'Contributors' section ... -->

    <section anchor="Acknowledgements"
             title="Acknowledgements and Contributors">
      <t>A special thank you goes to Dino Farinacci for his guidance and
      detailed review.</t>

      <t>This Working Group (WG) document originated as draft-lewis-lisp-gpe;
      the following are its coauthors and contributors along with their
      respective affiliations at the time of WG adoption. The editor of this
      document would like to thank and recognize them and their contributions.
      These coauthors and contributors provided invaluable concepts and
      content for this document's creation.</t>

      <t><list style="symbols">
          <t>Darrel Lewis, Cisco Systems, Inc.</t>

          <t>Fabio Maino, Cisco Systems, Inc.</t>

          <t>Paul Quinn, Cisco Systems, Inc.</t>

          <t>Michael Smith, Cisco Systems, Inc.</t>

          <t>Navindra Yadav, Cisco Systems, Inc.</t>

          <t>Larry Kreeger</t>

          <t>John Lemon, Broadcom</t>

          <t>Puneet Agarwal, Innovium</t>
        </list></t>
    </section>
  </middle>

  <!--  *****BACK MATTER ***** v-->

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
    1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
    2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
       (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")
       
    Both are cited textually in the same manner: by using xref elements.
    If you use the PI option, xml2rfc will, by default, try to find included files in the same
    directory as the including file. You can also define the XML_LIBRARY environment variable
    with a value containing a set of directories to search.  These can be either in the local
    filing system or remote ones accessed by http (http://domain/dir/... ).-->

    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>

      &ieee_802_1Q;

      <?rfc include="reference.I-D.ietf-lisp-rfc6830bis"
?>

      <?rfc include="reference.RFC.6040"?>
    </references>

    <references title="Informative References">
      <!-- Here we use entities that we defined at the beginning. -->

      <?rfc include="reference.I-D.ietf-tsvwg-ecn-encap-guidelines"
?>

      <?rfc include="reference.I-D.lemon-vxlan-lisp-gpe-gbp"?>

      <?rfc include="reference.I-D.brockners-ippm-ioam-vxlan-gpe"?>

      <?rfc include="reference.RFC.2460"?>

      <?rfc include="reference.RFC.6935"?>

      <?rfc include="reference.RFC.6936"?>

      <?rfc include="reference.RFC.7348"?>

      <?rfc include="reference.RFC.7835"
?>

      <?rfc include="reference.RFC.8060"?>

      <?rfc include="reference.RFC.8085"?>

      <?rfc include="reference.RFC.8086"?>

      <?rfc include="reference.RFC.8126"?>

      <?rfc include="reference.RFC.8174"?>

      <?rfc include="reference.RFC.8300"?>
    </references>

    <!-- Change Log

v00.01 2017-01-24  FM    Renamed as draft-ietf-lisp-gpe to reflect WG adoption 
v00.02 2017-12-12  FM    Changed to reflect RFC6830bis header format
-->

    <!--v00.03 2017-12-14  FM    Changed Intended Status to Standard Track
v01.00 2018-03-05  FM    Removed reference to GBP draft (informational) and fixed paulq email address-->

    <!--v02.00 2018-03-22  FM    Updated Section 4. Backward Compatibilty to be consistent with RFC8061 and addressed WG chair comments-->

    <!--v04.00 2018-07-19  FM    Addressed WG chair editorial comments-->

    <!--v05.00 2018-08-15  FM    Addressed rtgdir comments -->

    <!--v06.00 2018-09-20  FM    Addressed secdir, tsvart + Mirja comments. Some tsvart comments are still to be resolved
v07.00 2018-10-    FM    Fixed a few nits, added support for shim protoocls GBP and iOAM.
                         Introduced concept of LISP-GPE shim headers, new section 4 dealing with deployment considerations: 
                         Applicability, Congestion Control, UDP checksum, Ethernet Payoads
-->
  </back>
</rfc>
