<?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" submissionType="IETF" category="std" consensus="true" docName="draft-ietf-tsvwg-rfc6040update-shim-23" number="9601" ipr="pre5378Trust200902" updates="2661, 2784, 3931, 4380, 6040, 7450" obsoletes="" xml:lang="en" tocInclude="true" symRefs="true" sortRefs="true" version="3">

  <front>
    <title abbrev="ECN over IP-shim-(L2)-IP Tunnels">Propagating Explicit
    Congestion Notification across IP Tunnel Headers Separated by a
    Shim</title>
    <seriesInfo name="RFC" value="9601"/>
    <author fullname="Bob Briscoe" initials="B." surname="Briscoe">
      <organization>Independent</organization>
      <address>
        <postal>
          <country>United Kingdom</country>
        </postal>
        <email>ietf@bobbriscoe.net</email>
        <uri>https://bobbriscoe.net/</uri>
      </address>
    </author>
    <date year="2024" month="August"/>
    <area>tsv</area>
    <workgroup>tsvwg</workgroup>
    <keyword>Congestion Control and Management</keyword>
    <keyword>Congestion Notification</keyword>
    <keyword>Information Security</keyword>
    <keyword>Tunnelling</keyword>
    <keyword>Encapsulation &amp; Decapsulation</keyword>
    <keyword>Protocol</keyword>
    <keyword>ECN</keyword>
    <keyword>Layering</keyword>
    <abstract>
      <t>RFC 6040 on "Tunnelling of Explicit Congestion Notification" made the
      rules for propagation of Explicit Congestion Notification (ECN) consistent for all forms of IP-in-IP
      tunnel. This specification updates RFC 6040 to clarify that its scope
      includes tunnels where two IP headers are separated by at least one shim
      header that is not sufficient on its own for wide-area packet
      forwarding. It surveys widely deployed IP tunnelling protocols that use
      such shim headers and updates the specifications of those that do not
      mention ECN propagation (including RFCs 2661, 3931, 2784, 4380
      and 7450, which specify L2TPv2, L2TPv3, Generic Routing Encapsulation (GRE), Teredo, and
      Automatic Multicast Tunneling (AMT), respectively). This specification also updates RFC 6040 with configuration
      requirements needed to make any legacy tunnel ingress safe.</t>
    </abstract>
  </front>
  <middle>

    <section anchor="rfc6040up_Introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t><xref target="RFC6040"/> on "Tunnelling of Explicit Congestion Notification" made the rules for propagation of Explicit Congestion
      Notification (ECN) <xref target="RFC3168" format="default"/> consistent for all forms of
      IP-in-IP tunnel.</t>
      <t>A common pattern for many tunnelling protocols is to encapsulate an
      inner IP header (v4 or v6) with one or more shim headers then an outer IP header
      (v4 or v6). Some of these shim headers are designed as generic
      encapsulations, so they do not necessarily directly encapsulate an inner
      IP header. Instead, they can encapsulate headers such as link-layer (L2) protocols that, in
turn, often encapsulate IP. Thus, the abbreviation 'IP-shim-(L2)-IP' can be used
      for tunnels that are in scope of this document.</t>
      <t>To clear up confusion, this specification clarifies that the scope of
      <xref target="RFC6040"/> includes any IP-in-IP tunnel, including those with one or more shim
      headers and other encapsulations between the IP headers. Where
      necessary, it updates the specifications of the relevant encapsulation
      protocols with the specific text necessary to comply with <xref target="RFC6040"/>.</t>
      <t>This specification also updates <xref target="RFC6040"/> to state how operators ought
      to configure a legacy tunnel ingress to avoid unsafe system
      configurations.</t>
    </section>
    <section anchor="rfc6040up_Reqs_Language" numbered="true" toc="default">
      <name>Terminology</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&nbsp;14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and
      only when, they appear in all capitals, as shown here.</t>
      <t>This specification uses the terminology defined in <xref target="RFC6040" format="default"/>.</t>
    </section>
    <section anchor="rfc6040up_scope" numbered="true" toc="default">
      <name>Scope of RFC 6040</name>
      <t>In <xref target="RFC6040" section="1.1" sectionFormat="of"/>, its scope is defined as: </t>
      
      <blockquote>
          ...ECN field processing at encapsulation and decapsulation for
          any IP-in-IP tunnelling, whether IPsec or non-IPsec tunnels. It
          applies irrespective of whether IPv4 or IPv6 is used for either the
          inner or outer headers.
      </blockquote>
 
      <t>There are two problems with the above scoping statement:</t>
      <t>Problem 1: It was intended to include cases where one or more shim headers sit between
      the IP headers. Many tunnelling implementers have interpreted the scope
      of <xref target="RFC6040"/> as it was intended, but it is ambiguous. Therefore, this
      specification updates <xref target="RFC6040"/> by adding the following scoping text
      after the sentences quoted above:</t>
 
        <blockquote>
          It applies in cases where an outer IP header encapsulates an
          inner IP header either directly or indirectly by encapsulating other
          headers that in turn encapsulate (or might encapsulate) an inner IP
          header.  
	</blockquote>
	
      <t>Problem 2: Like many IETF
      specifications, <xref target="RFC6040"/> is written as a specification that
      implementations can choose to claim compliance with. This means it does
      not cover two important situations:</t>
      <ol spacing="normal" type="1"><li>
          <t>Cases where it is infeasible for an implementation to
          access an inner IP header when adding or removing an outer IP
          header</t>
        </li>
        <li>
          <t>Cases where implementations choose not to propagate ECN between IP
          headers</t>
        </li>
      </ol>
      <t>However, the ECN field is a non-optional part of the IP header (v4
      and v6), so any implementation that creates an outer IP header has to
      give the ECN field some value. There is only one safe value a tunnel
      ingress can use if it does not know whether the egress supports
      propagation of the ECN field; it has to clear the ECN field in any outer
      IP header to 0b00.</t>

      <t>However, an RFC has no jurisdiction over implementations that choose
      not to comply or cannot comply with the RFC, including all
      implementations that predated it. Therefore, it would have been
      unreasonable to add such a requirement to <xref target="RFC6040"/>. Nonetheless, to
      ensure safe propagation of the ECN field over tunnels, it is reasonable
      to add requirements on operators to ensure they configure their tunnels
      safely (where possible). Before resolving 'Problem 2' by stating these configuration requirements
      (in <xref target="rfc6040up_sec_safe" format="default"/>), the factors that determine
      whether propagating ECN is feasible or desirable will be briefly
      introduced.</t>
      <section anchor="rfc6040up_feasibility" numbered="true" toc="default">
        <name>Feasibility of ECN Propagation between Tunnel Headers</name>
        <t>In many cases, one or more shim headers and an outer IP header are
        always added to (or removed from) an inner IP packet as part of the
        same procedure. We call these tightly coupled shim headers.
        Processing a shim and outer header together is often necessary because
        a shim is not sufficient for packet forwarding in its own right; not
        unless complemented by an outer header. In these cases, it will often
        be feasible for an implementation to propagate the ECN field between
        the IP headers.</t>
        <t>In some cases, a tunnel adds an outer IP header and a tightly
        coupled shim header to an inner header that is not an IP header, but
        that, in turn, encapsulates an IP header (or might encapsulate an IP
        header). For instance, an inner Ethernet (or other link-layer) header
        might encapsulate an inner IP header as its payload. We call this a
        tightly coupled shim over an encapsulating header.</t>
        <t>Digging to arbitrary depths to find an inner IP header within an
        encapsulation is strictly a layering violation, so it cannot be a
        required behaviour. 

Nonetheless, some tunnel endpoints already look
        within a Layer 2 (L2) header for an IP header, for instance, to map the Diffserv
        codepoint between an encapsulated IP header and an outer IP header
        <xref target="RFC2983" format="default"/>. In such cases at least, it should be
        feasible to also (independently) propagate the ECN field between the
        same IP headers. Thus, access to the ECN field within an encapsulating
        header can be a useful and benign optimization. The guidelines in
        <xref target="RFC9599" section="5" sectionFormat="of"/> give
        the conditions for this layering violation to be benign.</t>
      </section>
      <section anchor="rfc6040up_desirability" numbered="true" toc="default">
        <name>Desirability of ECN Propagation between Tunnel Headers</name>
        <t>Developers and network operators are encouraged to implement and
        deploy tunnel endpoints compliant with <xref target="RFC6040"/> (as updated by the
        present specification) in order to provide the benefits of wider ECN
        deployment <xref target="RFC8087" format="default"/>. Nonetheless, propagation of ECN
        between IP headers, whether separated by shim headers or not, has to
        be optional to implement and to use, because:</t>
        <ul spacing="normal">
          <li>
            <t>legacy implementations of tunnels without any ECN support
            already exist;</t>
          </li>
          <li>
            <t>a network might be designed so that there is usually no
            bottleneck within the tunnel; and</t>
          </li>
          <li>
            <t>if the tunnel endpoints would have to search within an L2
            header to find an encapsulated IP header, it might not be worth
            the potential performance hit.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="rfc6040up_sec_safe" numbered="true" toc="default">
      <name>Making a Non-ECN Tunnel Ingress Safe by Configuration</name>
      <t>Even when no specific attempt has been made to implement propagation
      of the ECN field at a tunnel ingress, it ought to be possible for the
      operator to render a tunnel ingress safe by configuration. The main
      safety concern is to disable (clear to zero) the ECN capability in the
      outer IP header at the ingress if the egress of the tunnel does not
      implement ECN logic to propagate any ECN markings into the packet
      forwarded beyond the tunnel. Otherwise, the non-ECN egress could discard
      any ECN marking introduced within the tunnel, which would break all the
      ECN-based control loops that regulate the traffic load over the
      tunnel.</t>
      <t>Therefore, this specification updates <xref target="RFC6040" section="4.3"/> by inserting the
      following text at the end of the section:</t>

      <blockquote>

<t>Whether or not an ingress implementation
          claims compliance with <xref target="RFC6040"/>, <xref target="RFC4301"/>, or <xref target="RFC3168"/>, when the outer
          tunnel header is IP (v4 or v6), if possible, the ingress <bcp14>MUST</bcp14> be
          configured to zero the outer ECN field in all of the following
          cases:</t>	  
          <ul spacing="normal">
            <li>
	      <t>if it is known that the tunnel egress does not support any of
              the RFCs that define propagation of the ECN field (<xref target="RFC6040"/>, <xref target="RFC4301"/>, or the full functionality mode of <xref target="RFC3168"/>);</t>
            </li>
              <li>
             <t>if the behaviour of the egress is not known or an egress
              with unknown behaviour might be dynamically paired with the
              ingress (one way for an operator of a tunnel ingress to
              determine the behaviour of an otherwise unknown egress is
              described in <xref target="decap-test" format="default"/>);</t>
            </li>
            <li>
            <t>if an IP header might be encapsulated within a non-IP
              header that the tunnel ingress is encapsulating, but the ingress
              does not inspect within the encapsulation.</t>
            </li>
            </ul>
         <t>For the avoidance of doubt, the above only concerns the
          outer IP header. The ingress <bcp14>MUST NOT</bcp14> alter the ECN field of the
          arriving IP header that will become the inner IP header.</t>
         <t>In order that the network operator can comply with the above
          safety rules, an implementation of a tunnel ingress:</t>
          <ul spacing="normal">
            <li>
              <t><bcp14>MUST NOT</bcp14> treat the former Type of Service (ToS) octet (IPv4) or the former
              Traffic Class octet (IPv6) as a single 8-bit field. This is because the
              resulting linkage of ECN and Diffserv field propagation between
              inner and outer headers is not consistent with the definition of the
              6-bit Diffserv field in <xref target="RFC2474" format="default"/> and <xref target="RFC3260" format="default"/>.</t>
            </li>
            <li>
              <t><bcp14>SHOULD</bcp14> be able to be configured to zero the ECN field of
              the outer header.</t>
            </li>
          </ul>
          <t>These last two rules apply even if an implementation of a tunnel ingress does not
          claim to support <xref target="RFC6040"/>, <xref target="RFC4301"/>, or the full functionality mode
          of <xref target="RFC3168"/></t>
      </blockquote>

<t>For instance, if a tunnel ingress with no ECN-specific logic had a
      configuration capability to refer to the last 2 bits of the old ToS Byte
      of the outer (e.g., with a 0x3 mask) and set them to zero, while
      also being able to allow the DSCP to be re-mapped independently, that
      would be sufficient to satisfy both implementation
      requirements above.</t>
      <t>There might be concern that the above "<bcp14>MUST NOT</bcp14>" makes compliant
      implementations non-compliant at a stroke. However, by definition, it
      solely applies to equipment that provides Diffserv configuration. Any
      such Diffserv equipment that is configuring treatment of the former ToS
      octet (IPv4) or the former Traffic Class octet (IPv6) as a single 8-bit
      field must have always been non-compliant with the definition of the
      6-bit Diffserv field in <xref target="RFC2474" format="default"/> and <xref target="RFC3260" format="default"/>. If a tunnel ingress does not have any ECN logic,
      copying the ECN field as a side effect of copying the DSCP is a
      seriously unsafe bug that risks breaking the feedback loops that
      regulate load on a tunnel, because it omits to check the ECN capability of the tunnel egress.</t>
      <t>Zeroing the outer ECN field of all packets in all circumstances would
      be safe, but it would not be sufficient to claim compliance with <xref target="RFC6040"/> because it would not meet the aim of introducing ECN support to
      tunnels (see <xref target="RFC6040" section="4.3" sectionFormat="of"/>).</t>
    </section>
    <section numbered="true" toc="default">
      <name>ECN Propagation and Fragmentation/Reassembly</name>
      <t>The following requirements update <xref target="RFC6040"/>, which omitted handling of
      the ECN field during fragmentation or reassembly. These changes might
      alter how many ECN-marked packets are propagated by a tunnel that
      fragments packets, but this would not raise any backward compatibility
      issues.</t>
      <t>If a tunnel ingress fragments a packet, it <bcp14>MUST</bcp14> set the outer ECN
      field of all the fragments to the same value as it would have set if it
      had not fragmented the packet.</t>
      <t><xref target="RFC3168" section="5.3" sectionFormat="of"/> specifies ECN requirements
      for reassembly of sets of 'outer fragments' into packets (in 'outer
      fragmentation', the fragmentation is visible in the outer header so that
      the tunnel egress can reassemble the fragments <xref target="I-D.ietf-intarea-tunnels" format="default"/>). Additionally, the following 
      requirements apply at a tunnel egress:</t>
      <ul spacing="normal">
        <li>
          During reassembly of outer fragments, the packet <bcp14>MUST</bcp14> be discarded if the ECN fields of the
          outer headers being reassembled into a single packet consist of a
          mixture of Not ECN-Capable Transport (Not-ECT) and other ECN codepoints.
        </li>
        <li>
          If there is mix of ECT(0) and ECT(1) outer fragments, then the
          reassembled packet <bcp14>MUST</bcp14> be set to ECT(1).</li>
</ul>
          <t indent="3">Reasoning: <xref target="RFC3168" format="default"/>
          originally defined ECT(0) and ECT(1) as equivalent, but <xref target="RFC3168"/> has been
          updated by <xref target="RFC8311" format="default"/> to make ECT(1) available for
          congestion marking differences. The rule is independent of the
          current experimental use of ECT(1) for Low Latency, Low Loss, and Scalable throughput (L4S) <xref target="RFC9331" format="default"/>.
          The rule is compatible with Pre-Congestion Notification (PCN) <xref target="RFC6660" format="default"/>, which uses
          2 levels of congestion severity, with the ranking of severity from
          highest to lowest being Congestion Experienced (CE), ECT(1), ECT(0). The decapsulation rules
          in <xref target="RFC6040" format="default"/> take a similar approach.</t>
    </section>
    <section anchor="rfc6040up_IP-IP_Coupled_Shim_Tunnels" numbered="true" toc="default">
      <name>IP-in-IP Tunnels with Tightly Coupled Shim Headers</name>
<t>Below is a list of specifications of encapsulations with tightly coupled
shim header(s) in rough chronological order. This list is confined to
Standards Track or widely deployed protocols. So, for the avoidance of doubt,
the updated scope of <xref target="RFC6040"/> is defined in <xref target="rfc6040up_scope"
format="default"/> and is not limited to this list.</t>
      <ul spacing="normal">
        <li>
          <t>Point-to-Point Tunneling Protocol (PPTP) <xref target="RFC2637" format="default"/></t>
        </li>
        <li>
          <t>Layer Two Tunneling Protocol (L2TP), specifically L2TPv2 <xref target="RFC2661" format="default"/> and L2TPv3 <xref target="RFC3931" format="default"/>, which not
          only includes all the L2-specific specializations of L2TP, but also
          derivatives such as the Keyed IPv6 Tunnel <xref target="RFC8159" format="default"/></t>
        </li>
        <li>
          <t>Generic Routing Encapsulation (GRE) <xref target="RFC2784" format="default"/> and Network Virtualization using GRE (NVGRE) <xref target="RFC7637" format="default"/></t>
        </li>
        <li>
          <t>GPRS Tunnelling Protocol (GTP), specifically GTPv1 <xref target="GTPv1" format="default"/>, GTP v1 User Plane <xref target="GTPv1-U" format="default"/>, and GTP v2
          Control Plane <xref target="GTPv2-C" format="default"/></t>
        </li>
        <li>
          <t>Teredo <xref target="RFC4380" format="default"/></t>
        </li>
        <li>
          <t>Control And Provisioning of Wireless Access Points (CAPWAP) <xref target="RFC5415" format="default"/></t>
        </li>
        <li>
          <t>Locator/Identifier Separation Protocol (LISP) <xref target="RFC9300" format="default"/></t>
        </li>
        <li>
          <t>Automatic Multicast Tunneling (AMT) <xref target="RFC7450" format="default"/></t>
        </li>
        <li>
          <t>Virtual eXtensible Local Area Network (VXLAN) <xref target="RFC7348" format="default"/> and Generic Protocol Extensions for VXLAN (VXLAN-GPE) <xref target="I-D.ietf-nvo3-vxlan-gpe" format="default"/></t>
        </li>
        <li>
          <t>The Network Service Header (NSH) <xref target="RFC8300" format="default"/> for
          Service Function Chaining (SFC)</t>
        </li>
        <li>
          <t>Geneve <xref target="RFC8926" format="default"/></t>
        </li>
        <li>
          <t>Direct tunnelling of an IP packet within a UDP/IP datagram (see <xref target="RFC8085" section="3.1.11" sectionFormat="of"/>)</t>
        </li>
        <li>
          <t>TCP Encapsulation of Internet Key Exchange Protocol (IKE) and IPsec Packets (see <xref target="RFC9329" section="9.5" sectionFormat="of"/>)</t>
        </li>
      </ul>
      <t>Some of the listed protocols enable encapsulation of a variety of
      network layer protocols as inner and/or outer. This specification
      applies to the cases where there is an inner and outer IP header as
      described in <xref target="rfc6040up_scope" format="default"/>. Otherwise, <xref target="RFC9599" format="default"/> gives guidance on how to
      design propagation of ECN into other protocols that might encapsulate
      IP.</t>
      <t>Where protocols in the above list need to be updated to specify ECN
      propagation and are under IETF change control, update text is given
      in the following subsections. For those not under IETF control, it is
      <bcp14>RECOMMENDED</bcp14> that implementations of encapsulation and decapsulation
      comply with <xref target="RFC6040"/>. It is also <bcp14>RECOMMENDED</bcp14> that their specifications
      are updated to add a requirement to comply with <xref target="RFC6040"/> (as updated by
      the present document).</t>
      <t>PPTP is not under the change control of the IETF, but it has been
      documented in an Informational RFC <xref target="RFC2637" format="default"/>. However,
      there is no need for the present specification to update PPTP because
      L2TP has been developed as a standardized replacement.</t>
      <t>NVGRE is not under the change control of the IETF, but it has been
      documented in an Informational RFC <xref target="RFC7637" format="default"/>. NVGRE is a
      specific use case of GRE (it re-purposes the key field from the initial
      specification of GRE <xref target="RFC1701" format="default"/> as a Virtual Subnet ID).
      Therefore, the text that updates GRE in <xref target="rfc6040up_GRE" format="default"/>
      below is also intended to update NVGRE.</t>
      <t>Although the definition of the various GTP shim headers is under the
      control of the Third Generation Partnership Project (3GPP), it is hard to
      determine whether the 3GPP or the IETF controls standardization of the
      <em>process</em> of adding both a GTP and an IP
      header to an inner IP header. Nonetheless, the present specification is
      provided so that the 3GPP can refer to it from any of its own
      specifications of GTP and IP header processing.</t>
      <t>The specification of CAPWAP already specifies <xref target="RFC3168"/> ECN
      propagation and ECN capability negotiation. Without modification, the
      CAPWAP specification already interworks with the backward-compatible
      updates to <xref target="RFC3168"/> in <xref target="RFC6040"/>.</t>
      <t>LISP made the ECN propagation procedures in <xref target="RFC3168"/> mandatory from
      the start. <xref target="RFC3168"/> has since been updated by <xref target="RFC6040"/>, but the changes
      are backwards compatible, so there is still no need for LISP tunnel
      endpoints to negotiate their ECN capabilities.</t>
      <t>VXLAN is not under the change control of the IETF, but it has been
      documented in an Informational RFC. It is
      <bcp14>RECOMMENDED</bcp14> that VXLAN implementations comply with <xref target="RFC6040"/>
      when the VXLAN header is inserted between (or removed from between)
      IP headers. The authors of any future update of the VXLAN spec are also 
      encouraged to add a requirement to comply with <xref target="RFC6040"/> as updated by
      the present specification. In contrast,
      VXLAN-GPE is being documented under IETF change control and it does
      require compliance with <xref target="RFC6040"/>.
      </t>
      <t>The Network Service Header (NSH) <xref target="RFC8300" format="default"/> has been
      defined as a shim-based encapsulation to identify the Service Function
      Path (SFP) in the Service Function Chaining (SFC) architecture <xref target="RFC7665" format="default"/>. A proposal has been made for the processing of ECN
      when handling transport encapsulation <xref target="I-D.ietf-sfc-nsh-ecn-support" format="default"/>.</t>
      <t>The specification of Geneve already refers to <xref target="RFC6040"/> for ECN
      encapsulation.</t>
      <t><xref target="RFC8085" section="3.1.11" sectionFormat="of"/> already explains that a tunnel that
      encapsulates an IP header within a UDP/IP datagram needs to follow <xref target="RFC6040"/> when propagating the ECN field between inner and outer IP headers.
      <xref target="rfc6040up_scope" format="default"/> of the present specification updates
      <xref target="RFC6040"/> to clarify that its scope includes cases with a shim header
      between the IP headers. So it indirectly updates the scope of <xref target="RFC8085"/>
      to include cases with a shim header as well as a UDP header between the
      IP headers.</t>

      <t>The requirements in <xref target="rfc6040up_sec_safe" format="default"/> update <xref target="RFC6040"/>, and hence also indirectly update the UDP usage guidelines in <xref target="RFC8085"/>
      to add the important but previously unstated requirement that, if the
      UDP tunnel egress does not, or might not, support ECN propagation, a UDP
      tunnel ingress has to clear the outer IP ECN field to 0b00, e.g., by
      configuration.</t>
      <t><xref target="RFC9329" sectionFormat="of" section="9.5"/> already recommends the compatibility mode of <xref target="RFC6040"/>
      in this case because there is not a one-to-one mapping between inner
      and outer packets when TCP encapsulates IKE or IPsec.</t>
      <section anchor="rfc6040up_rfc-updates" numbered="true" toc="default">
        <name>Specific Updates to Protocols under IETF Change Control</name>
        <section anchor="rfc6040up_L2TPv3" numbered="true" toc="default">
          <name>L2TP (v2 and v3) ECN Extension</name>
          <t>The L2TP terminology used here is defined in <xref target="RFC2661" format="default"/> and <xref target="RFC3931" format="default"/>.</t>
          <t>L2TPv3 <xref target="RFC3931" format="default"/> is used as a
          shim header between any packet-switched network (PSN) header (e.g.,
          IPv4, IPv6, and MPLS) and many types of L2 headers. The L2TPv3 shim
          header encapsulates an L2-specific sub-layer, then an L2 header that
          is likely to contain an inner IP header (v4 or v6). 
Then this whole stack of headers can be encapsulated within an optional
outer UDP header and an outer PSN header that is typically IP (v4 or v6).
</t>
          <t>L2TPv2 is used as a shim header between any PSN header and a PPP
          header, which is in turn likely to encapsulate an IP header.</t>
          <t>Even though these shims are rather fat (particularly in the case
          of L2TPv3), they still fit the definition of a tightly coupled shim
          header over an encapsulating header (<xref target="rfc6040up_feasibility" format="default"/>) because all the headers
          encapsulating the L2 header are added (or removed) together. L2TPv2
          and L2TPv3 are therefore within the scope of <xref target="RFC6040"/>, as updated by
          <xref target="rfc6040up_scope" format="default"/>.</t>
          <t>Implementation of the ECN extension to L2TPv2 and L2TPv3 defined
          in <xref target="rfc6040up_L2TP_ECN" format="default"/> is <bcp14>RECOMMENDED</bcp14> in
          order to provide the benefits of ECN <xref target="RFC8087" format="default"/>
          whenever a node within an L2TP tunnel becomes the bottleneck for an
          end-to-end traffic flow.</t>
          <section anchor="rfc6040up_L2TP_Safe" numbered="true" toc="default">
            <name>Safe Configuration of a "Non-ECN" Ingress LCCE</name>
            <t>The following text is appended to both <xref target="RFC2661" section="5.3" sectionFormat="of"/> and <xref target="RFC3931" section="4.5" sectionFormat="of"/> as
            an update to the base L2TPv2 and L2TPv3 specifications:</t>
<blockquote>The operator of an LCCE that does not support the ECN extension in
<xref target="rfc6040up_L2TP_ECN" format="default"/> of RFC 9601
<bcp14>MUST</bcp14> follow the configuration requirements in <xref
target="rfc6040up_sec_safe" format="default"/> of RFC 9601 to ensure it
clears the outer IP ECN field to 0b00 when the outer PSN header is IP (v4 or
v6).
</blockquote>
           
            <t>In particular, for an L2TP Control Connection Endpoint (LCCE)
            implementation that does not support the ECN extension, this means
            that configuration of how it propagates the ECN field between
            inner and outer IP headers <bcp14>MUST</bcp14> be independent of any
            configuration of the Diffserv extension of L2TP <xref target="RFC3308" format="default"/>.</t>
          </section>
          <section anchor="rfc6040up_L2TP_ECN" numbered="true" toc="default">
            <name>ECN Extension for L2TP (v2 or v3)</name>
            <t>When the outer PSN header and the payload inside the L2 header
            are both IP (v4 or v6), an LCCE will propagate
            the ECN field at ingress and egress by following the rules in
            <xref target="RFC6040" section="4" sectionFormat="of"/>.</t>
            <t>Before encapsulating any data packets, <xref target="RFC6040"/>
            requires an ingress LCCE to check that the egress LCCE supports
            ECN propagation as defined in <xref target="RFC6040"/> or one of
            its compatible predecessors (<xref target="RFC4301"
            format="default"/> or the full functionality mode of <xref
            target="RFC3168" format="default"/>). 
If the egress supports ECN
            propagation, the ingress LCCE can use the normal mode of
            encapsulation (copying the ECN field from inner to outer).
            Otherwise, the ingress LCCE has to use compatibility mode <xref
            target="RFC6040" format="default"/> (clearing the outer IP ECN
            field to 0b00).</t>
            <t>An LCCE can determine the remote LCCE's support for ECN either
            statically (by configuration) or by dynamic discovery during setup
            of each control connection between the LCCEs using the ECN
            Capability Attribute-Value Pair (AVP) defined in <xref target="rfc6040up_L2TP_ECN_Capability_AVP" format="default"/>.</t>
            <t>Where the outer PSN header is some protocol other than IP that
            supports ECN, the appropriate ECN propagation specification will
            need to be followed, e.g., <xref target="RFC5129" format="default"/> for MPLS. Where no specification exists for
            ECN propagation by a particular PSN, <xref target="RFC9599" format="default"/> gives general
            guidance on how to design ECN propagation into a protocol that
            encapsulates IP.</t>
            <section anchor="rfc6040up_L2TP_ECN_Capability_AVP" numbered="true" toc="default">
              <name>ECN Capability AVP for Negotiation between LCCEs</name>
              <t>The ECN Capability AVP defined here
              has Attribute Type 103. The AVP has the following format:</t>
              <figure anchor="Fig_rfc6040up_LCCE_ECN_Capabiliy_AVP">
                <name>ECN Capability AVP for L2TP (v2 or v3)</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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|M|H|0|0|0|0|      Length       |          Vendor ID            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             103               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
              </figure>
              <t>This AVP <bcp14>MAY</bcp14> be present in the Start-Control-Connection-Request (SCCRQ) and Start-Control-Connection-Reply (SCCRP) message types. This AVP <bcp14>MAY</bcp14> be hidden (the
              H-bit is set to 0 or 1) and is optional (the M-bit is not set). The length
              (before hiding) of this AVP is 6 octets. The Vendor ID is the
              IETF Vendor ID of 0.</t>
              <t>When an LCCE sends an ECN Capability AVP, it indicates that
              it supports ECN propagation. When no ECN Capability AVP is
              present, it indicates that the sender does not support ECN
              propagation.</t>
              <t>If an LCCE initiating a control connection supports ECN
              propagation, it will send an SCCRQ containing an ECN Capability AVP. If the tunnel
              terminator supports ECN, it will return an
              SCCRP that also includes an ECN
              Capability AVP. 
Then, for any sessions created by that control
              connection, both ends of the tunnel can use the normal mode of
              <xref target="RFC6040"/>; i.e., they can copy the IP ECN field from inner to
              outer when encapsulating data packets.</t>
              <t>On the other hand, if the tunnel terminator does not support
              ECN, it will ignore the ECN Capability AVP and send an SCCRP to
              the tunnel initiator without an ECN Capability AVP. The tunnel
              initiator interprets the absence of the ECN Capability flag in
              the SCCRP as an indication that the tunnel terminator is
              incapable of supporting ECN. When encapsulating data packets for
              any sessions created by that control connection, the tunnel
              initiator will then use the compatibility mode of <xref target="RFC6040"/> to
              clear the ECN field of the outer IP header to 0b00.</t>
              <t>If the tunnel terminator does not support this ECN extension,
              the network operator is still expected to configure it to comply
              with the safety provisions set out in <xref target="rfc6040up_L2TP_Safe" format="default"/> when it acts as an ingress
              LCCE.</t>
              <t>If ECN support by the ingress and egress LCCEs is configured
              statically, as allowed in <xref target="rfc6040up_L2TP_ECN" format="default"/>,
              they both ignore the presence or absence of any ECN capability AVP.</t>
            </section>
          </section>
        </section>
        <section anchor="rfc6040up_GRE" numbered="true" toc="default">
          <name>GRE</name>
          <t>The GRE terminology used here is defined in <xref target="RFC2784" format="default"/>. GRE is often used as a tightly coupled shim
          header between IP headers. Sometimes, the GRE shim header
          encapsulates an L2 header, which might in turn encapsulate an IP
          header. Therefore, GRE is within the scope of <xref target="RFC6040"/> as updated by
          <xref target="rfc6040up_scope" format="default"/>.</t>
          <t>Implementation of support for <xref target="RFC6040" format="default"/> as updated
          by the present specification is <bcp14>RECOMMENDED</bcp14> for GRE tunnel
          endpoints in order to provide the benefits of ECN <xref target="RFC8087" format="default"/> whenever a node within a GRE tunnel becomes the
          bottleneck for an end-to-end IP traffic flow tunnelled over GRE
          using IP as the delivery protocol (outer header).</t>
          <t>GRE itself does not support dynamic setup and configuration of
          tunnels. However, control plane protocols, such as Next Hop
          Resolution Protocol (NHRP) <xref target="RFC2332" format="default"/>, Mobile IPv4
          (MIP4) <xref target="RFC5944" format="default"/>, Mobile IPv6 (MIP6) <xref target="RFC6275" format="default"/>, Proxy Mobile IP (PMIP) <xref target="RFC5845" format="default"/>,
          and IKEv2 <xref target="RFC7296" format="default"/>, are sometimes used to set up GRE
          tunnels dynamically.</t>
          <t>When these control protocols set up IP-in-IP or IPsec tunnels, it
          is likely that the resulting tunnels will propagate the ECN field as
          defined in <xref target="RFC6040"/> or one of its compatible predecessors (<xref target="RFC4301"/>
          or the full functionality mode of <xref target="RFC3168"/>). However, if they use a
          GRE encapsulation, this presumption is less sound.</t>
          <t>Therefore, if the outer delivery protocol is IP (v4 or v6), the
          operator is obliged to follow the safe configuration requirements in
          <xref target="rfc6040up_sec_safe" format="default"/>. <xref target="rfc6040up_GRE_Safe" format="default"/> updates the base GRE
          specification with this requirement to emphasize its
          importance.</t>
          <t>Where the delivery protocol is some protocol other than IP that
          supports ECN, the appropriate ECN propagation specification will
          need to be followed, e.g., <xref target="RFC5129" format="default"/> for MPLS. Where no specification exists for ECN
          propagation by a particular PSN, <xref target="RFC9599" format="default"/> gives more general
          guidance on how to propagate ECN to and from protocols that
          encapsulate IP.</t>
          <section anchor="rfc6040up_GRE_Safe" numbered="true" toc="default">
            <name>Safe Configuration of a "Non-ECN" GRE Ingress</name>
            <t>The following text is appended to <xref target="RFC2784" section="3" sectionFormat="of"/> as an update to the base GRE
            specification:</t>
       <blockquote>     
The operator of a GRE tunnel ingress <bcp14>MUST</bcp14> follow the configuration requirements in <xref target="rfc6040up_sec_safe" format="default"/> of RFC 9601 when the outer delivery protocol is IP (v4 or v6).
</blockquote>
           
          </section>
        </section>
        <section numbered="true" toc="default">
          <name>Teredo</name>
          <t>Teredo <xref target="RFC4380" format="default"/> provides a way to tunnel IPv6
          over an IPv4 network with a UDP-based shim header between the
          two.</t>
          <t>For Teredo tunnel endpoints to provide the benefits of ECN, the
          Teredo specification would have to be updated to include negotiation
          of the ECN capability between Teredo tunnel endpoints. Otherwise, it
          would be unsafe for a Teredo tunnel ingress to copy the ECN field to
          the IPv6 outer.</t>
          <t>Those implementations known to the authors at the time of writing
          do not support propagation of ECN, but they do safely zero the
          ECN field in the outer IPv6 header. However, the specification does
          not mention anything about this.</t>
          <t>To make existing Teredo deployments safe, it would be possible to
          add ECN capability negotiation to those that are subject to remote
          OS update. However, for those implementations not subject to remote
          OS update, it will not be feasible to require them to be configured
          correctly because Teredo tunnel endpoints are generally deployed on
          hosts.</t>
          <t>Therefore, until ECN support is added to the specification of
          Teredo, the only feasible further safety precaution available here
          is to update the specification of Teredo implementations with the
          following text as a new section:</t>
<blockquote>
              <t>5.1.3.  Safe "Non-ECN" Teredo Encapsulation</t>
              <t>A Teredo tunnel ingress implementation that does
              not support ECN propagation as defined in <xref target="RFC6040"/> or one of its
              compatible predecessors (<xref target="RFC4301"/> or the full functionality mode
              of <xref target="RFC3168"/>) <bcp14>MUST</bcp14> zero the ECN field in the outer IPv6
              header.</t>
</blockquote>
        </section>
        <section anchor="rfc6040up_AMT" numbered="true" toc="default">
          <name>AMT</name>
          <t>AMT <xref target="RFC7450" format="default"/> is a
          tightly coupled shim header that encapsulates an IP packet and is
          encapsulated within a UDP/IP datagram. Therefore, AMT is
          within the scope of <xref target="RFC6040"/> as updated by <xref target="rfc6040up_scope" format="default"/>.</t>
          <t>Implementation of support for <xref target="RFC6040" format="default"/> as updated
          by the present specification is <bcp14>RECOMMENDED</bcp14> for AMT tunnel
          endpoints in order to provide the benefits of ECN <xref target="RFC8087" format="default"/> whenever a node within an AMT tunnel becomes the
          bottleneck for an IP traffic flow tunnelled over AMT.</t>
          <t>To comply with <xref target="RFC6040"/>, an AMT relay and gateway will follow the
          rules for propagation of the ECN field at ingress and egress,
          respectively, as described in <xref target="RFC6040" section="4" sectionFormat="of"/>.</t>
          <t>Before encapsulating any data packets, <xref target="RFC6040"/> requires an
          ingress AMT relay to check that the egress AMT gateway supports ECN
          propagation as defined in <xref target="RFC6040"/> or one of its compatible
          predecessors (<xref target="RFC4301"/> or the full functionality mode of <xref target="RFC3168"/>).
          If the egress gateway supports ECN, the ingress relay can use the
          normal mode of encapsulation (copying the IP ECN field from inner to
          outer). Otherwise, the ingress relay has to use compatibility mode,
          which means it has to clear the outer ECN field to zero <xref target="RFC6040" format="default"/>.</t>
          <t>An AMT tunnel is created dynamically (not manually), so the relay
          will need to determine the remote gateway's support for ECN using
          the ECN capability declaration defined in <xref target="rfc6040up_AMT_ECN_Capability" format="default"/>.</t>
          <section anchor="rfc6040up_AMT_Safe" numbered="true" toc="default">
            <name>Safe Configuration of a "Non-ECN" Ingress AMT Relay</name>
            <t>The following text is appended to <xref target="RFC7450" section="4.2.2" sectionFormat="of"/> as an update to the AMT specification:</t>
            <blockquote>       
                The operator of an AMT relay that does not support <xref target="RFC6040"/>
                or one of its compatible predecessors (<xref target="RFC4301"/> or the full
                functionality mode of <xref target="RFC3168"/>) <bcp14>MUST</bcp14> follow the configuration
                requirements in <xref target="rfc6040up_sec_safe" format="default"/> of RFC 9601 to ensure it clears the outer IP ECN field to
                zero.
            </blockquote>

          </section>
          <section anchor="rfc6040up_AMT_ECN_Capability" numbered="true" toc="default">
            <name>ECN Capability Declaration of an AMT Gateway</name>
            <figure anchor="Fig_rfc6040up_AMT_ECN_Capability_Declaration">
              <name>Updated AMT Request Message Format</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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  V=0  |Type=3 |  Reserved |E|P|            Reserved           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Request Nonce                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure>
            <t>Bit 14 of the AMT Request Message counting from 0 (or bit 7 of
            the Reserved field counting from 1) is defined here as the AMT
            Gateway ECN Capability flag (E) as shown in <xref target="Fig_rfc6040up_AMT_ECN_Capability_Declaration" format="default"/>. The
            definitions of all other fields in the AMT Request Message are
            unchanged from <xref target="RFC7450"/>.</t>
            <t>When the E flag is set to 1, it indicates that the sender of
            the message supports <xref target="RFC6040"/> ECN propagation. When it is cleared
            to zero, it indicates the sender of the message does not support
            <xref target="RFC6040"/> ECN propagation. An AMT gateway "that supports <xref target="RFC6040"/>
            ECN propagation" means one that propagates the ECN field to the
            forwarded data packet based on the combination of arriving inner
            and outer ECN fields as defined in <xref target="RFC6040" section="4" sectionFormat="of"/>.</t>
            <t>The other bits of the Reserved field remain reserved. They will
            continue to be cleared to zero when sent and ignored when either
            received or forwarded as specified in <xref target="RFC7450" section="5.1.3.3" sectionFormat="of"/>.</t>
            <t>An AMT gateway that does not support <xref target="RFC6040"/> <bcp14>MUST NOT</bcp14> set the
            E flag of its Request Message to 1.</t>
            <t>An AMT gateway that supports <xref target="RFC6040"/> ECN propagation <bcp14>MUST</bcp14> set
            the E flag of its Relay Discovery Message to 1.</t>
            <t>The action of the corresponding AMT relay that receives a
            Request message with the E flag set to 1 depends on whether the
            relay itself supports <xref target="RFC6040"/> ECN propagation:</t>
            <ul spacing="normal">
              <li>
                <t>If the relay supports <xref target="RFC6040"/> ECN propagation, it will
                store the ECN capability of the gateway along with its
                address. Then, whenever it tunnels datagrams towards this
                gateway, it <bcp14>MUST</bcp14> use the normal mode of <xref target="RFC6040"/> to propagate
                the ECN field when encapsulating datagrams (i.e., it
                copies the IP ECN field from inner to outer header).</t>
              </li>
              <li>
                <t>If the discovered AMT relay does not support <xref target="RFC6040"/> ECN
                propagation, it will ignore the E flag in the Reserved field
                as per <xref target="RFC7450" section="5.1.3.3" sectionFormat="of"/>. </t>
                <t>If the AMT relay does not support <xref target="RFC6040"/> ECN
                propagation, the network operator is still expected to
                configure it to comply with the safety provisions set out in
                <xref target="rfc6040up_AMT_Safe" format="default"/>.</t>
              </li>
            </ul>
          </section>
        </section>
      </section>
    </section>

    <section anchor="rfc6040up_IANA_Considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>IANA has assigned the following AVP in the L2TP "Control Message Attribute Value Pairs" registry:</t>
      <table align="center">
        <thead>
          <tr>
            <th align="left">Attribute Type</th>
            <th align="left">Description</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">103</td>
            <td align="left">ECN Capability</td>
            <td align="left">RFC 9601</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="rfc6040up_Security_Considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>The Security Considerations in <xref target="RFC6040" format="default"/> and <xref target="RFC9599" format="default"/> apply equally to the
      scope defined for the present specification.</t>
    </section>
  </middle>
  <back>

<displayreference target="I-D.ietf-nvo3-vxlan-gpe" to="NVO3-VXLAN-GPE"/>
<displayreference target="I-D.ietf-intarea-tunnels" to="INTAREA-TUNNELS"/>
<displayreference target="I-D.ietf-sfc-nsh-ecn-support" to="SFC-NSH-ECN"/>


    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>

<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2474.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2661.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2784.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3168.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3931.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4301.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4380.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5129.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6040.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6660.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7450.xml"/>

<reference anchor="RFC9599" target="https://www.rfc-editor.org/info/rfc9599">
<front>
<title>Guidelines for Adding Congestion Notification to Protocols that Encapsulate IP</title>
<author initials='B' surname='Briscoe' fullname='Bob Briscoe'>
<organization />
</author>
<author initials='J' surname='Kaippallimalil' fullname='John Kaippallimalil'>
<organization />
</author>
<date month='August' year='2024' />
</front>
<seriesInfo name="RFC" value="9599"/>
<seriesInfo name="DOI" value="10.17487/RFC9599"/>
</reference>

      </references>
      <references>
        <name>Informative References</name>

<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1701.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2332.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2637.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2983.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3260.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3308.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5415.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5944.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6275.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5845.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7296.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9300.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7059.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7348.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7637.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7665.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8085.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8087.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8159.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8300.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8311.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8926.xml"/>

<!-- [I-D.ietf-nvo3-vxlan-gpe] IESG state I-D Exists -->

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

<reference anchor="I-D.ietf-sfc-nsh-ecn-support" target="https://datatracker.ietf.org/doc/html/draft-ietf-sfc-nsh-ecn-support-13">
<front>
<title>
Explicit Congestion Notification (ECN) and Congestion Feedback Using the Network Service Header (NSH) and IPFIX
</title>
<author initials="D." surname="Eastlake 3rd" fullname="Donald E. Eastlake 3rd">
<organization>Independent</organization>
</author>
<author initials="B." surname="Briscoe" fullname="Bob Briscoe">
</author>
<author initials="S." surname="Zhuang" fullname="Shunwan Zhuang">
<organization>Huawei Technologies</organization>
</author>
<author initials="A." surname="Malis" fullname="Andrew G. Malis">
<organization>Malis Consulting</organization>
</author>
<author initials="X." surname="Wei" fullname="Xinpeng Wei">
<organization>Huawei Technologies</organization>
</author>
<date month="April" day="15" year="2024"/>
</front>
<seriesInfo name="Internet-Draft" value="draft-ietf-sfc-nsh-ecn-support-13"/>
</reference>

<!-- [I-D.ietf-intarea-tunnels] IESG state Expired -->

<xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.ietf-intarea-tunnels.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9329.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9331.xml"/>

        <reference anchor="GTPv1">
          <front>
            <title>General Packet Radio Service (GPRS); GPRS Tunnelling
            Protocol (GTP) across the Gn and Gp interface</title>
            <author>
              <organization>3GPP</organization>
            </author>
          </front>
          <seriesInfo name="Technical Specification" value="29.060"/>
        </reference>

        <reference anchor="GTPv1-U">
          <front>
            <title>General Packet Radio System (GPRS) Tunnelling Protocol User
          Plane (GTPv1-U)</title>
            <author>
              <organization>3GPP</organization>
            </author>
          </front>
          <seriesInfo name="Technical Specification" value="29.281"/>
        </reference>

        <reference anchor="GTPv2-C">
          <front>
            <title>3GPP Evolved Packet System (EPS); Evolved General Packet
            Radio Service (GPRS) Tunnelling Protocol for Control plane
            (GTPv2-C); Stage 3</title>
            <author>
              <organization>3GPP</organization>
            </author>
            <date year=""/>
          </front>
          <seriesInfo name="Technical Specification" value="29.274"/>
        </reference>

        <reference anchor="decap-test" target="https://arxiv.org/abs/2311.16825">
          <front>
            <title>A Test for IP-ECN Propagation by a Remote Tunnel Endpoint</title>
            <author fullname="Bob" initials="B." surname="Briscoe">
              <organization>Independent</organization>
            </author>
            <date month="November" year="2023"/>
          </front>
          <seriesInfo name="DOI" value="10.48550/arXiv.2311.16825"/>
          <refcontent>Technical Report, TR-BB-2023-003</refcontent>
          <format target="https://arxiv.org/pdf/2311.16825.pdf" type="PDF"/>
        </reference>
      </references>
    </references>

    <section numbered="false" toc="default">
      <name>Acknowledgements</name>
      <t>Thanks to <contact fullname="Ing-jyh (Inton) Tsang"/> for initial
      discussions on the need for ECN propagation in L2TP and its
      applicability. Thanks also to <contact fullname="Carlos Pignataro"/>,
      <contact fullname="Tom Herbert"/>, <contact fullname="Ignacio Goyret"/>,
      <contact fullname="Alia Atlas"/>, <contact fullname="Praveen
      Balasubramanian"/>, <contact fullname="Joe Touch"/>, <contact
      fullname="Mohamed Boucadair"/>, <contact fullname="David Black"/>,
      <contact fullname="Jake Holland"/>, <contact fullname="Sri
      Gundavelli"/>, <contact fullname="Gorry Fairhurst"/>, and <contact
      fullname="Martin Duke"/> for helpful advice and comments. <xref
      target="RFC7059" format="default"/> helped to identify a number of
      tunnelling protocols to include within the scope of this document.</t>

      <t><contact fullname="Bob Briscoe"/>    was part-funded by the Research Council of Norway through                                 
   the TimeIn project for early drafts, and he was funded by Apple Inc. for later draft versions (from -17). The views expressed here are solely those of
      the authors.</t>
    </section>
  </back>
</rfc>
