<?xml version="1.0" encoding="UTF-8"?>

<!-- This template is for creating an Internet Draft using xml2rfc,
    which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" docName="draft-ietf-lisp-gpe-19"  number="0000" ipr="trust200902" obsoletes="" updates="" submissionType="IETF" category="std" consensus="true" xml:lang="en" tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" version="3">

  <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>
    <seriesInfo name="RFC" value="0000"/>
    <!-- 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>
        <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>darlewis@cisco.com</email>
        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>
    <author fullname="Michael Smith" initials="M." surname="Smith">
      <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>michsmit@cisco.com</email>
        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>
    <date month="September" year="2020"/>
    <!-- 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 extensions to the Locator/ID Separation
      Protocol (LISP) Data-Plane, via changes to the LISP header, to support
      multi-protocol encapsulation and allow to introduce new protocol
      capabilities.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="Introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>The LISP Data-Plane is defined in <xref target="RFCYYY1" format="default"/>. 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" format="default"/> (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="RFCYYY1" format="default"/>, 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="RFCYYY1" format="default"/>. Those two features are no longer
      available when the P-bit is used. However, appropriate LISP-GPE (LISP
      Generic Protocol Extension) shim headers can be defined to specify
      capabilities that are equivalent to echo-noncing and/or
      map-versioning.</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" format="default"/> or of the In-situ Operations,
      Administration, and Maintenance (IOAM) header <xref target="I-D.brockners-ippm-ioam-vxlan-gpe" format="default"/> with LISP-GPE, can be
      considered an extension to add support in the Data-Plane for Group-Based
      Policy functionalities or IOAM metadata.</t>
      <section anchor="Conventions" numbered="true" toc="default">
        <name>Conventions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>",
        "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and
        "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described in BCP
        14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and only
        when, they appear in all capitals, as shown here.</t>
      </section>
      <section anchor="Abbreviations" numbered="true" toc="default">
        <name>Definition of Terms</name>
        <t>This document uses terms already defined in <xref target="RFCYYY1" format="default"/>.</t>
      </section>
    </section>
    <section anchor="LISP_header" numbered="true" toc="default">
      <name>LISP Header Without Protocol Extensions</name>
      <t>As described in <xref target="Introduction" format="default"/>, 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="RFCYYY1" format="default"/> 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 anchor="LISP_Header">
        <name>LISP Header</name>
        <artwork align="left" name="" type="" alt=""><![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" numbered="true" toc="default">
      <name>Generic Protocol Extension for LISP (LISP-GPE)</name>
      <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 document specifies the
      protocol behavior when the P-bit is set to 1, no changes are introduced
      when the P-bit is set to 0. The LISP-GPE header is shown in <xref target="GPE_Header" format="default"> </xref> and described below.</t>
      <figure anchor="GPE_Header">
        <name>LISP-GPE Header</name>
        <artwork align="left" name="" type="" alt=""><![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|P|K|K|        Nonce/Map-Version/Next Protocol        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                 Instance ID/Locator-Status-Bits               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           ]]></artwork>
      </figure>
      
      <dl newline="false" spacing="normal" indent="">
	
        <dt>P-Bit:</dt><dd><t>Flag bit 5 is defined as the Next Protocol bit.
          The P-bit is set to 1 to indicate the presence of the 8 bit Next
        Protocol field.</t>
     
      
        <t>If the P-bit is clear (0) the LISP header is
          bit-by-bit equivalent to the definition in <xref target="RFCYYY1" format="default"/>.</t>
        
        <t>When the P-bit is set to 1, bits N, E, V, and bits 8-23 of the
          'Nonce/Map-Version/Next Protocol' field <bcp14>MUST</bcp14> be set to zero on
          transmission and <bcp14>MUST</bcp14> be ignored on receipt. Features equivalent to
          those that were implemented with bits N,E and V in <xref target="RFCYYY1" format="default"/>, such as echo-noncing and map-versioning, can be implemented by defining appropriate LISP-GPE shim headers.</t>
        
        <t>When the P-bit is set to 1, the LISP-GPE header is encoded
          as:</t>
      
          <figure anchor="GPE_Header_Next_Protocol">
            <name>LISP-GPE with P-bit set to 1</name>
            <artwork align="left" name="" type="" alt=""><![CDATA[      
 0 x 0 0 x 1 x x 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|N|L|E|V|I|P|K|K|             0x0000            | Next Protocol |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 Instance ID/Locator-Status-Bits               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           ]]></artwork>
          </figure>
</dd>
   
        <dt>Next Protocol:</dt>
        <dd><t>When the P-bit is set to 1, 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>

          <dl newline="false" spacing="normal">
            <dt>0x00 :</dt>
            <dd>Reserved</dd>
            <dt>0x01 :</dt>
            <dd>IPv4</dd>
            <dt>0x02 :</dt>
            <dd>IPv6</dd>
            <dt>0x03 :</dt>
            <dd>Ethernet</dd>
            <dt>0x04 :</dt>
            <dd>Network Service Header (NSH) <xref target="RFC8300" format="default"/></dd>
            <dt>0x05 to 0x7D:</dt>
            <dd>Unassigned</dd>
            <dt>0x7E, 0x7F:</dt>
            <dd>Experimentation and testing</dd>
            <dt>0x80 to 0xFD:</dt>
            <dd>Unassigned (shim headers)</dd>
            <dt>0xFE, 0xFF:</dt>
            <dd>Experimentation and testing (shim
              headers)</dd>
          </dl>
       
        <t>The values are tracked in the IANA LISP-GPE Next
        Protocol Registry as described in <xref target="Next_protocol" format="default"/>.</t>
	</dd>
      </dl>
      
      <t>Next protocol values 0x7E, 0x7F and 0xFE, 0xFF are assigned for
      experimentation and testing as per <xref target="RFC3692" format="default"/>.</t>
      <t>Next protocol values from Ox80 to 0xFD are assigned to protocols
      encoded as generic "shim" headers. All shim protocols <bcp14>MUST</bcp14> use the
      header structure in <xref target="shim" format="default"/>, which includes a Next
      Protocol field. When shim headers are used with other protocols
      identified by next protocol values from 0x00 to 0x7F, all the shim
      headers <bcp14>MUST</bcp14> come first.</t>
      <t>Shim headers can be used to incrementally deploy new GPE features,
      keeping the processing of shim headers known to a given xTR
      implementation in the 'fast' path (typically an ASIC), while punting the
      processing of the remaining new GPE features to the 'slow' path.</t>
      <t>Shim protocols <bcp14>MUST</bcp14> have the first 32 bits defined as:</t>
      <t keepWithNext="true"/>
      <figure anchor="shim">
        <name>Shim Header</name>
        <artwork name="" type="" align="left" alt=""><![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>
      </figure>
      <t keepWithPrevious="true"/>
      <t>Where:</t>
      <dl newline="false" spacing="normal">
        <dt>Type:</dt>
        <dd>This field identifies the different messages of
          this protocol.</dd>
        <dt>Length:</dt>
        <dd>The length, in 4-octet units, of this protocol
          message not including the first 4 octets.</dd>
        <dt>Reserved:</dt>
        <dd>The use of this field is reserved to the
          protocol defined in this message.</dd>
        <dt>Next Protocol Field:</dt>
        <dd>The next protocol field contains
          the protocol of the encapsulated payload. The values are tracked in
          the IANA LISP-GPE Next Protocol Registry as described in <xref target="Next_protocol" format="default"/>.</dd>
      </dl>
    </section>
    <section anchor="Deployments" numbered="true" toc="default">
      <name>Implementation and Deployment Considerations</name>
      <section anchor="Applicability" numbered="true" toc="default">
        <name>Applicability Statement</name>
        <t>LISP-GPE conforms, as an UDP-based encapsulation protocol, to the
        UDP usage guidelines as specified in <xref target="RFC8085" format="default"/>. The
        applicability of these guidelines are dependent on the underlay IP
        network and the nature of the encapsulated payload.</t>
        <t><xref target="RFC8085" format="default"/> 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="RFCYYY1" format="default"/> 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" format="default"/>.</t>
        <t>For the purpose of this document, a traffic-managed controlled
        environment (TMCE), outlined in <xref target="RFC8086" format="default"/>, 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" format="default"/>.</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" numbered="true" toc="default">
        <name>Congestion Control Functionality</name>
        <t>LISP-GPE does not natively provide congestion control functionality
        and relies on the payload protocol traffic for congestion control. As
        such LISP-GPE <bcp14>MUST</bcp14> 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>Keeping in mind the reccomendation above, new encapsulated
        payloads, when registered with LISP-GPE, <bcp14>MUST</bcp14> be accompained by a set
        of guidelines derived from <xref target="RFCYYY1" format="default"/>.
        Such new protocols should be designed for explicit congestion signals
        to propagate consistently from lower layer protocols into IP. Then the
        IP internetwork layer can act as a portability layer to carry
        congestion notification from non-IP-aware congested nodes up to the
        transport layer (L4). By following the guidelines in <xref target="I-D.ietf-tsvwg-ecn-encap-guidelines" format="default"/>, subnetwork designers
        can enable a layer-2 protocol to participate in congestion control
        without dropping packets via propagation of explicit congestion
        notification (ECN <xref target="RFC3168" format="default"/> ) to receivers.</t>
      </section>
      <section anchor="UDPChecksum" numbered="true" toc="default">
        <name>UDP Checksum</name>
        <t>For IP payloads, <xref target="RFCYYY1" section="5.3" sectionFormat="of"/> specifies how to handle UDP
        Checksums encouraging implementors to consider UDP checksum usage
        guidelines in <xref target="RFC8085" section="3.4" sectionFormat="of"/> 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 <bcp14>SHOULD</bcp14>
        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
        <xref target="RFC8085" section="3.4" sectionFormat="of"/>). In deployments where such a
        risk exists, an operator <bcp14>SHOULD</bcp14> use additional data integrity
        mechanisms such as offered by IPSec.</t>
        <t>An operator <bcp14>MAY</bcp14> 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" format="default"/> a, b, c are
        met.</t>
        <section anchor="IPv6Checksum" numbered="true" toc="default">
          <name>UDP Zero Checksum Handling with IPv6</name>
          <t>By default, UDP checksum <bcp14>MUST</bcp14> be used when LISP-GPE is
          transported over IPv6. A tunnel endpoint <bcp14>MAY</bcp14> be configured for use
          with zero UDP checksum if additional requirements described in this
          section are met.</t>
          <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 <bcp14>MUST</bcp14> use UDP
          checksum when transported over IPv6. An operator <bcp14>MAY</bcp14> choose to
          configure to operate with zero UDP checksum if operating in a
          traffic managed controlled environment as stated in <xref target="Applicability" format="default"/> if one of the following conditions are
          met:</t>

	  
          <ol spacing="normal" type="a"><li>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</li>
            <li>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</li>
            <li>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)</li>
          </ol>
          <t>In addition LISP-GPE tunnel implementations using Zero UDP
          checksum <bcp14>MUST</bcp14> meet the following requirements:</t>
          <ol spacing="normal" type="1"><li>Use of UDP checksum over IPv6 <bcp14>MUST</bcp14> be the default
              configuration for all LISP-GPE tunnels</li>
            <li>If LISP-GPE is used with zero UDP checksum over IPv6 then
              such xTR implementation <bcp14>MUST</bcp14> meet all the requirements specified
              in <xref target="RFC6936" section="4" sectionFormat="of"/> and requirements 1 as
              specified in <xref target="RFC6936" section="5" sectionFormat="of"/></li>
            <li>The ETR that decapsulates the packet <bcp14>SHOULD</bcp14> 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</li>
            <li>The ITR that encapsulates the packet <bcp14>MAY</bcp14> 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 <bcp14>RECOMMENDED</bcp14>
              to use each source address for as few LISP-GPE tunnels that use
              zero UDP checksum as is feasible</li>
            <li>Measures <bcp14>SHOULD</bcp14> 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</li>
          </ol>
          <t>The above requirements do not change either the
          requirements specified in <xref target="RFC2460" format="default"/> as modified by
          <xref target="RFC6935" format="default"/> or the requirements specified in <xref target="RFC6936" format="default"/>.</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="DSCP" numbered="true" toc="default">
        <name>DSCP, ECN, TTL, and 802.1Q</name>
        <t>When encapsulating IP (including over Ethernet) packets <xref target="RFC2983" format="default"/> provides guidance for mapping DSCP between inner
        and outer IP headers. The Pipe model typically fits better Network
        virtualization. The DSCP value on the tunnel header is set based on a
        policy (which may be a fixed value, one based on the inner traffic
        class, or some other mechanism for grouping traffic). Some aspects of
        the Uniform model (which treats the inner and outer DSCP value as a
        single field by copying on ingress and egress) may also apply, such as
        the ability to remark the inner header on tunnel egress based on
        transit marking. However, the Uniform model is not conceptually
        consistent with network virtualization, which seeks to provide strong
        isolation between encapsulated traffic and the physical network.</t>
        <t><xref target="RFC6040" format="default"/> describes the mechanism for exposing ECN
        capabilities on IP tunnels and propagating congestion markers to the
        inner packets. This behavior <bcp14>MUST</bcp14> be followed for IP packets
        encapsulated in LISP-GPE.</t>
        <t>Though Uniform or Pipe models could be used for TTL (or Hop Limit
        in case of IPv6) handling when tunneling IP packets, Pipe model is
        more aligned with network virtualization. <xref target="RFC2003" format="default"/>
        provides guidance on handling TTL between inner IP header and outer IP
        tunnels; this model is more aligned with the Pipe model and is
        recommended for use with LISP-GPE for network virtualization
        applications.</t>
        <t>When a LISP-GPE router performs Ethernet encapsulation, the inner
        802.1Q <xref target="IEEE.802.1Q_2014" format="default"/> 3-bit priority code point
        (PCP) field <bcp14>MAY</bcp14> be mapped from the encapsulated frame to the DSCP
        codepoint of the DS field defined in <xref target="RFC2474" format="default"/>.</t>
        <t>When a LISP-GPE router performs Ethernet encapsulation, the inner
        header 802.1Q <xref target="IEEE.802.1Q_2014" format="default"/> VLAN Identifier (VID)
        <bcp14>MAY</bcp14> be mapped to, or used to determine the LISP Instance IDentifier
        (IID) field.</t>
        <t>Refer to <xref target="Security" format="default"/> for consideration about the use
        of integrity protection for deployments, such as the public Internet,
        concerned with on-path attackers.</t>
      </section>
    </section>
    <section anchor="Compatibility" numbered="true" toc="default">
      <name>Backward Compatibility</name>
      <t>LISP-GPE uses the same UDP destination port (4341) allocated to
      LISP.</t>
      <t>When encapsulating IP packets to a non LISP-GPE capable router the
      P-bit <bcp14>MUST</bcp14> be set to 0. That is, the encapsulation format defined in
      this document <bcp14>MUST NOT</bcp14> 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="RFCYYY1" format="default"/>) and so
      would misinterpret the other LISP header fields possibly causing
      significant errors.</t>
      <section anchor="ETR_CAPABILITIES" numbered="true" toc="default">
        <name>Detection of ETR Capabilities</name>
        <t>The discovery of xTR capabilities to support LISP-GPE is out of the
        scope of this document. Given that the applicability domain of
        LISP-GPE is a traffic-managed controlled environment, ITR/ETR (xTR)
        configuration mechanisms may be used for this purpose.</t>
      </section>
    </section>
    <section anchor="IANA" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t/>
      <section anchor="Next_protocol" numbered="true" toc="default">
        <name>LISP-GPE Next Protocol Registry</name>
        <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" format="default"/>. The protocols
        that are being assigned values do not themselves need to be IETF
        standards track protocols.</t>
        <table align="center">
          <thead>
            <tr>
              <th align="left">Next Protocol</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0</td>
              <td align="left">Reserved</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">0x1</td>
              <td align="left">IPv4</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">0x2</td>
              <td align="left">IPv6</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">0x3</td>
              <td align="left">Ethernet</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">0x4</td>
              <td align="left">NSH</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">0x05..0x7D</td>
              <td align="left">Unassigned</td>
              <td align="left"/>
            </tr>
            <tr>
              <td align="left">0x7E..0x7F</td>
              <td align="left">Experimentation and testing</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">0x80..0xFD</td>
              <td align="left">Unassigned (shim headers)</td>
              <td align="left"/>
            </tr>
            <tr>
              <td align="left">0x8E..0x8F</td>
              <td align="left">Experimentation and testing (shim headers)</td>
              <td align="left">This Document</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="Security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>LISP-GPE security considerations are similar to the LISP security
      considerations and mitigation techniques documented in <xref target="RFC7835" format="default"/>.</t>
      <t>LISP-GPE, as many encapsulations that use optional extensions, is
      subject to on-path adversaries that can make arbitrary modifications to
      the packet (including the P-Bit) to change or remove any part of the
      payload, or claim to encapsulate any protocol payload type. Typical
      integrity protection mechanisms (such as IPsec) <bcp14>SHOULD</bcp14> 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" numbered="true" toc="default">
      <name>Acknowledgements and Contributors</name>
      <t>A special thank you goes to <contact fullname="Dino Farinacci"/> for his guidance and
      detailed review. Thanks to <contact fullname="Tom Herbert"/> for the suggestion to assign
      codepoints for experimentations and testing.</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><contact fullname="Darrel Lewis"/>, Cisco Systems, Inc.</t>
	<t><contact fullname="Fabio Maino"><organization>Cisco Systems, Inc.</organization></contact></t>
        <t><contact fullname="Paul Quinn"/>, Cisco Systems, Inc.</t>
        <t><contact fullname="Michael Smith"/>, Cisco Systems, Inc.</t>
        <t><contact fullname="Navindra Yadav"/>, Cisco Systems, Inc.</t>
        <t><contact fullname="Larry Kreeger"/></t>
        <t><contact fullname="Jennifer Lemon"/>, Broadcom</t>
        <t><contact fullname="Puneet Agarwal"/>, Innovium</t>
      
    </section>
  </middle>
  <!--  *****BACK MATTER ***** v-->

  <back>
   
<displayreference target="I-D.ietf-tsvwg-ecn-encap-guidelines" to="ENCAP-GUIDE"/> 
<displayreference target="I-D.lemon-vxlan-lisp-gpe-gbp" to="VXLAN-LISP"/>
<displayreference target="I-D.brockners-ippm-ioam-vxlan-gpe" to="VXLAN-GPE"/>

 <!-- 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>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>

<!-- [rfced] [IEEE.802.1Q_2014] The URL below is correct DOI https://doi.org/10.1109/IEEESTD.2014.6991462 -->

        <reference anchor="IEEE.802.1Q_2014" target="http://ieeexplore.ieee.org/servlet/opac?punumber=6991460" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml6/reference.IEEE.802.1Q_2014.xml">
          <front>
            <title>IEEE Standard for Local and metropolitan area networks--Bridges and Bridged Networks</title>
            <author>
              <organization>IEEE</organization>
            </author>
            <date day="18" month="December" year="2014"/>
            <abstract>
              <t>This standard specifies how the Media Access Control (MAC) Service is supported by Bridged Networks, the principles of operation of those networks, and the operation of MAC Bridges and VLAN Bridges, including management, protocols, and algorithms</t>
            </abstract>
          </front>
          <seriesInfo name="IEEE" value="802.1Q-2014"/>
          <seriesInfo name="DOI" value="10.1109/ieeestd.2014.6991462"/>
        </reference>

<!-- [rfced] [I-D.ietf-lisp-rfc6830bis] IESG state IESG Evaluation::AD Followup; companion document RFC YYY1 -->

<reference anchor='RFCYYY1'>
<front>
<title>The Locator/ID Separation Protocol (LISP)</title>

<author initials='D' surname='Farinacci' fullname='Dino Farinacci'>
    <organization />
</author>

<author initials='V' surname='Fuller' fullname='Vince Fuller'>
    <organization />
</author>

<author initials='D' surname='Meyer' fullname='David Meyer'>
    <organization />
</author>

<author initials='D' surname='Lewis' fullname='Darrel Lewis'>
    <organization />
</author>

<author initials='A' surname='Cabellos-Aparicio' fullname='Albert Cabellos-Aparicio'>
    <organization />
</author>

<date month='September' day='9' year='2020' />

<abstract><t>This document describes the Data-Plane protocol for the Locator/ID Separation Protocol (LISP).  LISP defines two namespaces, End-point Identifiers (EIDs) that identify end-hosts and Routing Locators (RLOCs) that identify network attachment points.  With this, LISP effectively separates control from data, and allows routers to create overlay networks.  LISP-capable routers exchange encapsulated packets according to EID-to-RLOC mappings stored in a local Map-Cache.  LISP requires no change to either host protocol stacks or to underlay routers and offers Traffic Engineering, multihoming and mobility, among other features.  This document obsoletes RFC 6830.</t></abstract>

</front>
<seriesInfo name="RFC" value="YYY1"/>
<seriesInfo name="DOI" value="10.17487/RFCYYY1"/>
</reference>

        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6040.xml"/>
      </references>
      <references>
        <name>Informative References</name>
        <!-- Here we use entities that we defined at the beginning. -->

<!-- [rfced] [I-D.ietf-tsvwg-ecn-encap-guidelines] IESG state Expired -->

      <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.ietf-tsvwg-ecn-encap-guidelines.xml"/>

<!-- [rfced] [I-D.lemon-vxlan-lisp-gpe-gbp] IESG state Expired -->

      <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.lemon-vxlan-lisp-gpe-gbp-02.xml"/>

<!-- [rfced] [I-D.brockners-ippm-ioam-vxlan-gpe] IESG state Expired -->

      <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.brockners-ippm-ioam-vxlan-gpe-03.xml"/>

        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2460.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2003.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2474.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2983.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3168.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3692.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6935.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6936.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7348.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7835.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8085.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8086.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8300.xml"/>
      </references>
    </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>
