<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>

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

  <front>
    <title abbrev="LISP-GPE">Locator/ID Separation Protocol (LISP) Generic Protocol Extension</title>
    <seriesInfo name="RFC" value="9305"/>
    <author fullname="Fabio Maino" initials="F." role="editor" surname="Maino">
      <organization abbrev="Cisco">Cisco Systems</organization>
      <address>
        <postal>
          <street/>
          <city>San Jose</city>
          <region>CA</region>
          <code></code>
          <country>United States of America</country>
        </postal>
        <email>fmaino@cisco.com</email>
      </address>
    </author>
    <author fullname="Jennifer Lemon" initials="J." surname="Lemon">
      <organization/>
      <address>
        <email>jalemon@meus.us</email>
      </address>
    </author>
    <author fullname="Puneet Agarwal" initials="P." surname="Agarwal">
      <organization>Innovium</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <region/>
          <code/>
          <country>United States of America</country>
        </postal>
        <email>puneet@acm.org</email>
      </address>
    </author>
    <author fullname="Darrel Lewis" initials="D." surname="Lewis">
      <organization abbrev="Cisco">Cisco Systems</organization>
      <address>
        <postal>
          <street/>
          <city>San Jose</city>
          <region>CA</region>
          <country>United States of America</country>
        </postal>
        <email>darlewis@cisco.com</email>
      </address>
    </author>
    <author fullname="Michael Smith" initials="M." surname="Smith">
      <organization abbrev="Cisco">Cisco Systems</organization>
      <address>
        <postal>
          <street/>
          <city>San Jose</city>
          <region>CA</region>
          <code>95134</code>
          <country>United States of America</country>
        </postal>
        <email>michsmit@cisco.com</email>
      </address>
    </author>
    <date month="October" year="2022"/>
    <area>Routing</area>
    <workgroup>lisp</workgroup>
    <keyword>security</keyword>
    <keyword>policy</keyword>
    <abstract>
      <t>This document describes extensions to the Locator/ID Separation
      Protocol (LISP) data plane, via changes to the LISP header, to support
      multiprotocol encapsulation and allow the introduction of 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="RFC9300" 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 the Virtual eXtensible Local
      Area Network (VXLAN) protocol <xref target="RFC7348" format="default"/> (which defines a header format similar 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="RFC9300" 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 -- 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="RFC9300" format="default"/>. Those two features are no longer
      available when the P-bit is used. However, appropriate LISP
      Generic Protocol Extension (LISP-GPE) 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 implement new 
      data plane functions not supported in the LISP header. For example, the use
      of the Group-Based Policy (GBP) header <xref target="VXLAN-LISP" format="default"/> or of the In situ Operations,
      Administration, and Maintenance (IOAM) header <xref target="VXLAN-GPE" format="default"/> with LISP-GPE can be
      considered an extension to add support in the data plane for GBP 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>Definitions of Terms</name>
        <t>This document uses terms already defined in <xref target="RFC9300" 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="RFC9300" format="default"/> contains a
      series of flags (some defined, some reserved), a 'Nonce/Map-Version' field,
      and an 'Instance ID/Locator-Status-Bits' 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>LISP Generic Protocol Extension (LISP-GPE)</name>
      <t>This document defines two changes to the LISP header in order to
      support multiprotocol 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">
        <dt>P-Bit:</dt>
	<dd>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.</dd>
      </dl>
        <t>If the P-bit is clear (0), the LISP header is
          bit-by-bit equivalent to the definition in <xref target="RFC9300" format="default"/>.</t>
        <t>When the P-bit is set to 1, bits N, E, and 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="RFC9300" 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>

<dl newline="false" spacing="normal">   
        <dt>Next Protocol:</dt>
        <dd>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.</dd>
	</dl>
    
    <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 and 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>
      
      <t>Next Protocol values 0x7E, 0x7F, 0xFE, and 0xFF are assigned for
      experimentation and testing, as per <xref target="RFC3692" format="default"/>.</t>
      <t>Next Protocol values from 0x80 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 Tunnel Router (xTR)
      implementation in the 'fast' path (typically an Application-Specific Integrated 
      Circuit (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>This field indicates 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:</dt>
        <dd>This 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 a UDP-based encapsulation protocol, to the
        UDP usage guidelines specified in <xref target="RFC8085" format="default"/>. The
        applicability of these guidelines is 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) the general Internet and 2) a controlled environment.
        A 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 the 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 the general Internet.</t>
        <t>The LISP-GPE scope of applicability is the same set of use cases
        covered by <xref target="RFC9300" format="default"/> for the LISP
        data plane 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 fit 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 the use of traffic rate limiters) to avoid congestion.
        Significant portions of the 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 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 recommendation above, new encapsulated
        payloads, when registered with LISP-GPE, <bcp14>MUST</bcp14> be accompanied by a set
        of guidelines derived from <xref target="RFC9300" format="default" sectionFormat="of" section="5"/>.
        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 notifications 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) data <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="RFC9300" 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 protect the integrity of LISP-GPE headers, options, and
        payloads (for example, to avoid misdelivery of payloads to different
        tenant systems in the case of data corruption), the 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 modifications 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 those offered by IPsec.</t>
        <t>An operator <bcp14>MAY</bcp14> choose to disable a UDP checksum and use a 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, or c) is
        met.</t>
        <section anchor="IPv6Checksum" numbered="true" toc="default">
          <name>UDP Zero Checksum Handling with IPv6</name>
          <t>By default, a 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 a zero UDP checksum if additional requirements described in this
          section are met.</t>
          <t>When LISP-GPE is used over IPv6, a UDP checksum is used to protect
          IPv6 headers, UDP headers, and LISP-GPE headers and payloads from
          potential data corruption. As such, by default, LISP-GPE <bcp14>MUST</bcp14> use a UDP
          checksum when transported over IPv6. An operator <bcp14>MAY</bcp14> choose to
          configure to operate with a 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 is met:</t>
          <ol spacing="normal" type="a">
	    <li>It is known that packet corruption is exceptionally
              unlikely (perhaps based on an operator's knowledge of equipment types in their
              underlay network), and the operator is willing to take the risk of
              undetected packet corruption.</li>
              <li>It is determined through observational measurements
	      (perhaps
     through historic or current traffic flows that use a non-zero
     checksum) that the level of packet corruption is tolerably low,
     and the operator is willing to take the risk of undetected
     corruption.</li>
            <li>LISP-GPE payloads are 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 a zero UDP
          checksum <bcp14>MUST</bcp14> meet the following requirements:</t>
          <ol spacing="normal" type="1">
	    <li>Use of a UDP checksum over IPv6 <bcp14>MUST</bcp14> be the default
              configuration for all LISP-GPE tunnels.</li>
            <li>If LISP-GPE is used with a zero UDP checksum over IPv6, then
              such xTR implementations <bcp14>MUST</bcp14> meet all the requirements specified
              in <xref target="RFC6936" section="4" sectionFormat="of"/> and requirement 1 
              specified in <xref target="RFC6936" section="5" sectionFormat="of"/>.</li>
            <li>The Egress Tunnel Router (ETR) that decapsulates the packet <bcp14>SHOULD</bcp14> 
	    check that the source
              and destination IPv6 addresses are valid for the LISP-GPE tunnel
              that is configured to receive a zero UDP checksum and discard
              other packets that fail such checks.</li>
            <li>The Ingress Tunnel Router (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 a
            zero UDP checksum as is feasible.</li>
            <li>Measures <bcp14>SHOULD</bcp14> be taken to prevent LISP-GPE traffic over
              IPv6 with a zero UDP checksum from escaping into the general
              Internet. Examples of such measures include employing packet
              filters at the Proxy Egress Tunnel Router (PETR) and/or keeping logical or physical
              separation of the LISP network from networks in the general
              Internet.</li>
          </ol>
          <t>The above requirements do not change the
          requirements specified in <xref target="RFC6935"/>,
	  <xref target="RFC6936" format="default"/>, or <xref target="RFC8200" format="default"/>.</t>
          <t>The requirement to check the source IPv6 address in addition to
          the destination IPv6 address, plus the recommendation against the 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 the 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 packets that contain Differentiated Services Code Point 
	(DSCP) information between inner
        and outer IP headers. The Pipe model typically fits better with 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 the Uniform model or the Pipe model could be used for TTL (or Hop Limit
        in the case of IPv6) handling when tunneling IP packets, the Pipe model is
        more aligned with network virtualization. <xref target="RFC2003" format="default"/>
        provides guidance on handling TTL between inner IP headers 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 3-bit Priority Code Point
        ('PCP') field <xref target="IEEE.802.1Q_2014" format="default"/> <bcp14>MAY</bcp14> be mapped from the encapsulated frame to the DSCP
        codepoint of the Differentiated Services ('DS') field defined in <xref 
	target="RFC2474" format="default"/>.</t>
        <t>When a LISP-GPE router performs Ethernet encapsulation, the
        inner-header 802.1Q VLAN Identifier (VID) <xref target="IEEE.802.1Q_2014" format="default"/>
        <bcp14>MAY</bcp14> be mapped to, or used to determine, the LISP 'Instance ID'
        (IID) field.</t>
        <t>Refer to <xref target="Security" format="default"/> for considerations 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="RFC9300" 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 has created a registry called "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">0x00</td> <!-- 0 -->
              <td align="left">Reserved</td>
              <td align="left">RFC 9305</td>
            </tr>
            <tr>
              <td align="left">0x01</td> <!-- 1 -->
              <td align="left">IPv4</td>
              <td align="left">RFC 9305</td>
            </tr>
            <tr>
              <td align="left">0x02</td><!-- 2 -->
              <td align="left">IPv6</td>
              <td align="left">RFC 9305</td>
            </tr>
            <tr>
              <td align="left">0x03</td><!-- 3 -->
              <td align="left">Ethernet</td>
              <td align="left">RFC 9305</td>
            </tr>
            <tr>
              <td align="left">0x04</td> <!-- 4 -->
              <td align="left">NSH</td>
              <td align="left">RFC 9305</td>
            </tr>
            <tr>
              <td align="left">0x05-0x7D</td><!-- 5-125 -->
              <td align="left">Unassigned</td>
              <td align="left"/>
            </tr>
            <tr>
              <td align="left">0x7E-0x7F</td><!-- 126-127 -->
              <td align="left">Experimentation and testing</td>
              <td align="left">RFC 9305</td>
            </tr>
            <tr>
              <td align="left">0x80-0xFD</td><!-- 128-253 -->
              <td align="left">Unassigned (shim headers)</td>
              <td align="left"/>
            </tr>
            <tr>
              <td align="left">0xFE-0xFF</td><!-- 254-255 -->
              <td align="left">Experimentation and testing (shim headers)</td>
              <td align="left">RFC 9305</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>As is the case for many encapsulations that use optional extensions, LISP-GPE 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 against 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>
  </middle>
  <back>
   
<displayreference target="I-D.ietf-tsvwg-ecn-encap-guidelines" to="ENCAP-GUIDE"/> 

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

        <reference anchor="IEEE.802.1Q_2014" target="https://ieeexplore.ieee.org/document/6991462">
          <front>
            <title>IEEE Standard for Local and metropolitan area networks--Bridges and Bridged Networks</title>
            <author>
              <organization>IEEE</organization>
            </author>
            <date month="December" year="2014"/>
          </front>
          <refcontent>IEEE Std 802.1Q-2014</refcontent>
        </reference>

<reference anchor='RFC9300' target="https://www.rfc-editor.org/info/rfc9300">
<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' fullname='Albert Cabellos' role='editor'>
    <organization />
</author>
<date month='October' year='2022' />
</front>
<seriesInfo name="RFC" value="9300"/>
<seriesInfo name="DOI" value="10.17487/RFC9300"/>
</reference>
      </references>
      <references>
        <name>Informative References</name>

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

<reference anchor='VXLAN-LISP'>
<front>
<title>Group Policy Encoding with VXLAN-GPE and LISP-GPE</title>
<author initials='J' surname='Lemon' fullname='John Lemon' role='editor'>
    <organization />
</author>
<author initials='F' surname='Maino' fullname='Fabio Maino'>
    <organization />
</author>
<author initials='M' surname='Smith' fullname='Michael Smith'>
    <organization />
</author>
<author initials='A' surname='Isaac' fullname='Aldrin Isaac'>
    <organization />
</author>
<date month='April' day='30' year='2019' />
</front>
<seriesInfo name='Internet-Draft' value='draft-lemon-vxlan-lisp-gpe-gbp-02' />
</reference>

<reference anchor="VXLAN-GPE">
   <front>
      <title>VXLAN-GPE Encapsulation for In-situ OAM Data</title>
      <author initials="F." surname="Brockners" fullname="Frank Brockners">
         <organization>Cisco Systems, Inc.</organization>
      </author>
      <author initials="S." surname="Bhandari" fullname="Shwetha Bhandari">
         <organization>Cisco Systems, Inc.</organization>
      </author>
      <author initials="V." surname="Govindan" fullname="Vengada Prasad Govindan">
         <organization>Cisco Systems, Inc.</organization>
      </author>
      <author initials="C." surname="Pignataro" fullname="Carlos Pignataro">
         <organization>Cisco Systems, Inc.</organization>
      </author>
      <author initials="H." surname="Gredler" fullname="Hannes Gredler">
         <organization>RtBrick Inc.</organization>
      </author>
      <author initials="J." surname="Leddy" fullname="John Leddy">
         </author>
      <author initials="S." surname="Youell" fullname="Stephen Youell">
         <organization>JP Morgan Chase</organization>
      </author>
      <author initials="T." surname="Mizrahi" fullname="Tal Mizrahi">
         <organization>Huawei Network.IO Innovation Lab</organization>
      </author>
      <author initials="A." surname="Kfir" fullname="Aviv Kfir">
         <organization>Mellanox Technologies, Inc.</organization>
      </author>
      <author initials="B." surname="Gafni" fullname="Barak Gafni">
         <organization>Mellanox Technologies, Inc.</organization>
      </author>
      <author initials="P." surname="Lapukhov" fullname="Petr Lapukhov">
         <organization>Facebook</organization>
      </author>
      <author initials="M." surname="Spiegel" fullname="Mickey Spiegel">
         <organization>Barefoot Networks</organization>
      </author>
      <date month="November" day="4" year="2019" />
   </front>
   <seriesInfo name="Internet-Draft" value="draft-brockners-ippm-ioam-vxlan-gpe-03" />
</reference>

        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8200.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.8300.xml"/>
      </references>
    </references>
    <section anchor="Acknowledgments" numbered="false" toc="default">
      <name>Acknowledgments</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>
    </section>
    <section anchor="Contributors" numbered="false" toc="default">
      <name>Contributors</name>
      <t>The editor of this document would like to thank and recognize the
   following coauthors and contributors for their contributions.  These
   coauthors and contributors provided invaluable concepts and content
   for this document's creation.</t>
     
      <contact fullname="Darrel Lewis">
        <organization>Cisco Systems, Inc.</organization>
        <address/>
    </contact>
    <contact fullname="Fabio Maino">
        <organization>Cisco Systems, Inc.</organization>
	<address/>
      </contact>
      <contact fullname="Paul Quinn">
	<organization>Cisco Systems, Inc.</organization>
	<address/>
      </contact>
      <contact fullname="Michael Smith">
        <organization>Cisco Systems, Inc.</organization>
	<address/>
      </contact>
      <contact fullname="Navindra Yadav">
        <organization>Cisco Systems, Inc.</organization>
	<address/>
      </contact>
      <contact fullname="Larry Kreeger">
        <organization/>
	<address/>
      </contact>
      <contact fullname="Jennifer Lemon">
	<organization>Broadcom</organization>
	<address/>
      </contact>
      <contact fullname="Puneet Agarwal">
	<organization>Innovium</organization>
	<address/>
      </contact>
    </section>
  </back>
  </rfc>
