rfc9599.original.xml   rfc9599.xml 
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE rfc [
<!ENTITY nbsp "&#160;">
<!ENTITY ouml "&#246;">
<!ENTITY zwsp "&#8203;">
<!ENTITY nbhy "&#8209;">
<!ENTITY wj "&#8288;">
<!ENTITY ndash "&#8211;">
<!ENTITY mdash "&#8212;">
<!DOCTYPE rfc [
<!ENTITY nbsp "&#160;">
<!ENTITY zwsp "&#8203;">
<!ENTITY nbhy "&#8209;">
<!ENTITY wj "&#8288;">
]> ]>
<?xml-stylesheet type='text/xsl' href='https://xml.resource.org/authoring/rfc262
9.xslt' ?> <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="bcp" consensus="true"
<!-- Alterations to I-D/RFC boilerplate --> docName="draft-ietf-tsvwg-ecn-encap-guidelines-22" number="9599" ipr="trust20090
<?rfc private="" ?> 2" updates="3819" obsoletes="" submissionType="IETF" xml:lang="en" tocInclude="t
<!-- Default private="" Produce an internal memo 2.5pp shorter than an I-D or RF rue" symRefs="true" sortRefs="true" version="3">
C -->
<?rfc rfcprocack="yes" ?>
<!-- Default rfcprocack="no" add a short sentence acknowledging xml2rfc -->
<?rfc strict="no" ?>
<!-- Default strict="no" Don't check I-D nits -->
<?rfc rfcedstyle="yes" ?>
<!-- Default rfcedstyle="yes" attempt to closely follow finer details from the l
atest observable RFC-Editor style -->
<!-- IETF process -->
<?rfc iprnotified="no" ?>
<!-- Default iprnotified="no" I haven't disclosed existence of IPR to IETF -->
<!-- ToC format -->
<?rfc toc="yes" ?>
<!-- Default toc="no" No Table of Contents -->
<!-- Cross referencing, footnotes, comments -->
<?rfc symrefs="yes"?>
<!-- Default symrefs="no" Don't use anchors, but use numbers for refs -->
<?rfc sortrefs="yes"?>
<!-- Default sortrefs="no" Don't sort references into order -->
<?rfc comments="yes" ?>
<!-- Default comments="no" Don't render comments -->
<?rfc inline="no" ?>
<!-- Default inline="no" if comments is "yes", then render comments inline; othe
rwise render them in an `Editorial Comments' section -->
<!-- Pagination control -->
<?rfc compact="yes"?>
<!-- Default compact="no" Start sections on new pages -->
<?rfc subcompact="no"?>
<!-- Default subcompact="(as compact setting)" yes/no is not quite as compact as
yes/yes -->
<!-- HTML formatting control -->
<?rfc emoticonic="yes" ?>
<!-- Default emoticonic="no" Doesn't prettify HTML format -->
<rfc xmlns:xi="https://www.w3.org/2001/XInclude" category="bcp" consensus="true"
docName="draft-ietf-tsvwg-ecn-encap-guidelines-22" ipr="pre5378Trust200902" upd
ates="3819" obsoletes="" submissionType="IETF" xml:lang="en" tocInclude="true" s
ymRefs="true" sortRefs="true" version="3">
<!-- xml2rfc v2v3 conversion 3.18.0 -->
<front> <front>
<title abbrev="ECN Encapsulation Guidelines">Guidelines for Adding <title abbrev="ECN Encapsulation Guidelines">Guidelines for Adding
Congestion Notification to Protocols that Encapsulate IP</title> Congestion Notification to Protocols That Encapsulate IP</title>
<seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-ecn-encap-guidelin <seriesInfo name="RFC" value="9599"/>
es-22"/>
<seriesInfo name="BCP" value="89"/> <seriesInfo name="BCP" value="89"/>
<author fullname="Bob Briscoe" initials="B." surname="Briscoe"> <author fullname="Bob Briscoe" initials="B." surname="Briscoe">
<organization>Independent</organization> <organization>Independent</organization>
<address> <address>
<postal> <postal>
<street/> <country>United Kingdom</country>
<country>UK</country>
</postal> </postal>
<email>ietf@bobbriscoe.net</email> <email>ietf@bobbriscoe.net</email>
<uri>https://bobbriscoe.net/</uri> <uri>https://bobbriscoe.net/</uri>
</address> </address>
</author> </author>
<author fullname="John Kaippallimalil" initials="J." surname="Kaippallimalil "> <author fullname="John Kaippallimalil" initials="J." surname="Kaippallimalil ">
<organization>Futurewei</organization> <organization>Futurewei</organization>
<address> <address>
<postal> <postal>
<street>5700 Tennyson Parkway, Suite 600</street> <street>5700 Tennyson Parkway, Suite 600</street>
<city>Plano</city> <city>Plano</city>
<region>Texas</region> <region>Texas</region>
<code>75024</code> <code>75024</code>
<country>USA</country> <country>United States of America</country>
</postal> </postal>
<email>kjohn@futurewei.com</email> <email>kjohn@futurewei.com</email>
</address> </address>
</author> </author>
<date year=""/>
<area>Transport</area> <date month="August" year="2024"/>
<workgroup>Transport Area Working Group</workgroup>
<area>WIT</area>
<workgroup>tsvwg</workgroup>
<keyword>Congestion Control and Management</keyword> <keyword>Congestion Control and Management</keyword>
<keyword>Congestion Notification</keyword> <keyword>Congestion Notification</keyword>
<keyword>Information Security</keyword> <keyword>Information Security</keyword>
<keyword>Tunnelling</keyword> <keyword>Tunnelling</keyword>
<keyword>Encapsulation &amp; Decapsulation</keyword> <keyword>Encapsulation</keyword>
<keyword>Decapsulation</keyword>
<keyword>Protocol</keyword> <keyword>Protocol</keyword>
<keyword>ECN</keyword> <keyword>ECN</keyword>
<keyword>Layering</keyword> <keyword>Layering</keyword>
<abstract> <abstract>
<t>The purpose of this document is to guide the design of congestion <t>The purpose of this document is to guide the design of congestion
notification in any lower layer or tunnelling protocol that encapsulates notification in any lower-layer or tunnelling protocol that encapsulates
IP. The aim is for explicit congestion signals to propagate consistently IP. The aim is for explicit congestion signals to propagate consistently
from lower layer protocols into IP. Then the IP internetwork layer can from lower-layer protocols into IP.
act as a portability layer to carry congestion notification from Then, the IP internetwork layer can act as a portability layer to carry
non-IP-aware congested nodes up to the transport layer (L4). Following congestion notification from non-IP-aware congested nodes up to the transport
these guidelines should assure interworking among IP layer and lower layer (L4). Specifications that follow these guidelines, whether produced by the
layer congestion notification mechanisms, whether specified by the IETF IETF or other standards bodies, should assure interworking among IP-layer
or other standards bodies. This document is included in BCP 89 and updates and lower-layer congestion notification mechanisms.
the single paragraph of advice to subnetwork designers about ECN in This document is included in BCP 89 and updates the
Section 13 of RFC 3819, by replacing it with a reference to the whole of single paragraph of advice to subnetwork designers about Explicit Congestion
this document.</t> Notification (ECN) in Section 13 of RFC 3819 by replacing it with a reference
to this document.</t>
</abstract> </abstract>
</front> </front>
<!-- ================================================================ -->
<middle> <middle>
<!-- ================================================================ -->
<section anchor="ecnencap_Introduction" numbered="true" toc="default"> <section anchor="ecnencap_Introduction" numbered="true" toc="default">
<name>Introduction</name> <name>Introduction</name>
<t>The benefits of Explicit Congestion Notification (ECN) described in <t>In certain networks, it might be possible for traffic to congest non-IP
-aware nodes.
In such networks, the benefits of Explicit Congestion Notification (ECN) d
escribed in
<xref target="RFC8087" format="default"/> and summarized below can only be fully realized <xref target="RFC8087" format="default"/> and summarized below can only be fully realized
if support for ECN is added to the relevant subnetwork technology, as if support for congestion notification is added to the relevant subnetwork
well as to IP. When a lower layer buffer drops a packet obviously it technology, as
well as to IP. When a lower-layer buffer implicitly notifies congestion by
dropping a packet, it obviously
does not just drop at that layer; the packet disappears from all layers. does not just drop at that layer; the packet disappears from all layers.
In contrast, when active queue management (AQM) at a lower layer marks a In contrast, when active queue management (AQM) at a lower layer buffer ex
packet with ECN, the marking needs to be explicitly propagated up the plicitly notifies congestion
by marking a frame header, the marking needs to be explicitly propagated u
p the
layers. The same is true if AQM marks the outer header of a packet that layers. The same is true if AQM marks the outer header of a packet that
encapsulates inner tunnelled headers. Forwarding ECN is not as encapsulates inner tunnelled headers. Forwarding ECN is not as
straightforward as other headers because it has to be assumed ECN may be straightforward as other headers because it has to be assumed ECN may be
only partially deployed. If a lower layer header that contains ECN only partially deployed. If a lower-layer header that contains
congestion indications is stripped off by a subnet egress that is not congestion indications is stripped off by a subnet egress that is not
ECN-aware, or if the ultimate receiver or sender is not ECN-aware, ECN-aware, or if the ultimate receiver or sender is not ECN-aware,
congestion needs to be indicated by dropping the packet, not marking congestion needs to be indicated by dropping the packet, not marking
it.</t> it.</t>
<t>The purpose of this document is to guide the addition of congestion <t>The purpose of this document is to guide the addition of congestion
notification to any subnet technology or tunnelling protocol, so that notification to any subnet technology or tunnelling protocol so that
lower layer AQM algorithms can signal congestion explicitly and it will lower-layer AQM algorithms can signal congestion explicitly and that signa
propagate consistently into encapsulated (higher layer) headers, l will
otherwise the signals will not reach their ultimate destination.</t> propagate consistently into encapsulated (higher-layer) headers.
Otherwise, the signals will not reach their ultimate destination.</t>
<t>ECN is defined in the IP header (IPv4 and IPv6) <xref target="RFC3168" format="default"/> <t>ECN is defined in the IP header (IPv4 and IPv6) <xref target="RFC3168" format="default"/>
to allow a resource to notify the onset of queue build-up without having to allow a resource to notify the onset of queue buildup without having
to drop packets, by explicitly marking a proportion of packets with the to drop packets by explicitly marking a proportion of packets with the
congestion experienced (CE) codepoint.<!--In the layered model of communic congestion experienced (CE) codepoint.
ation, each layer accepts requests to forward PDUs and eventually returns
a status code to the higher layer. Without ECN, each layer returns either a 'del
ivered' status code or an
implicit 'not delivered'. Explicit notification of congestion adds a useful 'del
ivered but congestion
experienced' status code to each layer interface.-->
</t> </t>
<t>Given a suitable marking scheme, ECN removes nearly all congestion <t>Given a suitable marking scheme, ECN removes nearly all congestion
loss and it cuts delays for two main reasons: </t> loss and it cuts delays for two main reasons: </t>
<ul spacing="normal"> <ul spacing="normal">
<li>It avoids the delay when recovering from congestion losses, which <li>It avoids the delay when recovering from congestion losses, which
particularly benefits small flows or real-time flows, making their particularly benefits small flows or real-time flows, making their
delivery time predictably short <xref target="RFC2884" format="default delivery time predictably short <xref target="RFC2884" format="default
"/>;</li> "/>.</li>
<li>As ECN is used more widely by end-systems, it will gradually <li>As ECN is used more widely by end systems, it will gradually
remove the need to configure a degree of delay into buffers before remove the need to configure a degree of delay into buffers before
they start to notify congestion (the cause of bufferbloat). This is they start to notify congestion (the cause of bufferbloat).
This is
because drop involves a trade-off between sending a timely signal because drop involves a trade-off between sending a timely signal
and trying to avoid impairment, whereas ECN is solely a signal not and trying to avoid impairment, whereas ECN is solely a signal and not
an impairment, so there is no harm triggering it earlier.</li> an impairment, so there is no harm triggering it earlier.</li>
</ul> </ul>
<t>Some lower layer technologies (e.g. MPLS, Ethernet) are used to form <t>Some lower-layer technologies (e.g., MPLS, Ethernet) are used to form
subnetworks with IP-aware nodes only at the edges. These networks are subnetworks with IP-aware nodes only at the edges. These networks are
often sized so that it is rare for interior queues to overflow. However, often sized so that it is rare for interior queues to overflow. However,
until recently this was more due to the inability of TCP to saturate the until recently, this was more due to the inability of TCP to saturate the
links. For many years, fixes such as window scaling <xref target="RFC7323" links. For many years, fixes such as window scaling <xref target="RFC7323"
format="default"/> proved hard to deploy. And the Reno variant of TCP format="default"/> proved hard to deploy and the Reno variant of TCP
has remained in widespread use despite its inability to scale to high remained in widespread use despite its inability to scale to high
flow rates. However, now that modern operating systems are finally flow rates. However, now that modern operating systems are finally
capable of saturating interior links, even the buffers of capable of saturating interior links, even the buffers of
well-provisioned interior switches will need to signal episodes of well-provisioned interior switches will need to signal episodes of
queuing.</t> queuing.</t>
<t>Propagation of ECN is defined for MPLS <xref target="RFC5129" format="d <t>Propagation of ECN is defined for MPLS <xref target="RFC5129" format="d
efault"/>, and efault"/> and TRILL <xref target="RFC7780" format="default"/> <xref target="RFC9
has been defined for TRILL <xref target="RFC7780" format="default"/>, <xre 600" format="default"/>, but it has yet to be defined for
f target="I-D.ietf-trill-ecn-support" format="default"/>, but it remains to be d
efined for
a number of other subnetwork technologies.</t> a number of other subnetwork technologies.</t>
<t>Similarly, ECN propagation is yet to be defined for many tunnelling <t>Similarly, ECN propagation is yet to be defined for many tunnelling
protocols. <xref target="RFC6040" format="default"/> defines how ECN shoul protocols. <xref target="RFC6040" format="default"/> defines how ECN
d be propagated should be propagated for IP-in-IPv4 <xref target="RFC2003"
for IP-in-IPv4 <xref target="RFC2003" format="default"/>, IP-in-IPv6 <xref format="default"/>, IP-in-IPv6 <xref target="RFC2473"
target="RFC2473" format="default"/> and IPsec <xref target="RFC4301" format="de format="default"/>, and IPsec <xref target="RFC4301" format="default"/>
fault"/> tunnels, but there tunnels, but there are numerous other tunnelling protocols with a shim
are numerous other tunnelling protocols with a shim and/or a layer 2 and/or a Layer 2 (L2) header between two IP headers (IPv4 or IPv6). Some
header between two IP headers (IPv4 or IPv6). Some address ECN propagation address ECN propagation between the IP headers, but many do not. This
between the IP headers, but many do not. This document gives guidance on document gives guidance on how to address ECN propagation for future
how to address ECN propagation for future tunnelling protocols, and a tunnelling protocols, and a companion Standards Track specification
companion standards track specification <xref target="I-D.ietf-tsvwg-rfc60 <xref target="RFC9601" format="default"/> updates existing tunnelling
40update-shim" format="default"/> updates those existing protocols with a shim between IP headers that are under IETF change
IP-shim-(L2)-IP protocols that are under IETF change control and still control and still widely used.</t>
widely used.</t>
<t>Incremental deployment is the most delicate aspect when adding <t>Incremental deployment is the most delicate aspect when adding
support for ECN. The original ECN protocol in IP <xref target="RFC3168" fo rmat="default"/> was carefully designed so that a congested buffer support for ECN. The original ECN protocol in IP <xref target="RFC3168" fo rmat="default"/> was carefully designed so that a congested buffer
would not mark a packet (rather than drop it) unless both source and would not mark a packet (rather than drop it) unless both source and
destination hosts were ECN-capable. Otherwise, its congestion markings destination hosts were ECN-capable. Otherwise, its congestion markings
would never be detected and congestion would just build up further. would never be detected and congestion would just build up further.
However, to support congestion marking below the IP layer or within However, to support congestion marking below the IP layer or within
tunnels, it is not sufficient to only check that the two layer 4 tunnels, it is not sufficient to only check that the two layer 4
transport end-points support ECN; correct operation also depends on the transport endpoints support ECN; correct operation also depends on the
decapsulator at each subnet or tunnel egress faithfully propagating decapsulator at each subnet or tunnel egress faithfully propagating
congestion notifications to the higher layer. Otherwise, a legacy congestion notification to the higher layer.
decapsulator might silently fail to propagate any ECN signals from the Otherwise, a legacy decapsulator might silently fail to propagate any congestion
outer to the forwarded header. Then the lost signals would never be signals from the outer header to the forwarded header. Then, the lost signals wo
detected and again congestion would build up further. The guidelines uld
given later require protocol designers to carefully consider incremental never be detected and congestion would build up further. The guidelines given
deployment, and suggest various safe approaches for different later require protocol designers to carefully consider incremental deployment
circumstances.</t> and suggest various safe approaches for different circumstances.</t>
<t>Of course, the IETF does not have standards authority over every link <t>Of
layer protocol. So this document gives guidelines for designing course, the IETF does not have standards authority over every link-layer
propagation of congestion notification across the interface between IP protocol; thus, this document gives guidelines for designing propagation of
and protocols that may encapsulate IP (i.e. that can be layered beneath congestion notification across the interface between IP and protocols that may
IP). Each lower layer technology will exhibit different issues and encapsulate IP (i.e., that can be layered beneath IP). Each lower-layer
compromises, so the IETF or the relevant standards body must be free to technology will exhibit different issues and compromises, so the IETF or the
define the specifics of each lower layer congestion notification scheme. relevant standards body must be free to define the specifics of each lower-layer
Nonetheless, if the guidelines are followed, congestion notification congestion notification scheme. Nonetheless, if the guidelines are
should interwork between different technologies, using IP in its role as followed, congestion notification should interwork between different
a 'portability layer'.</t> technologies using IP in its role as a 'portability layer'.</t>
<t>Therefore, the capitalized terms 'SHOULD' or 'SHOULD NOT' are often <t>Therefore, the capitalized terms '<bcp14>SHOULD</bcp14>' or '<bcp14>SHO
used in preference to 'MUST' or 'MUST NOT', because it is difficult to ULD NOT</bcp14>' are often
used in preference to '<bcp14>MUST</bcp14>' or '<bcp14>MUST NOT</bcp14>' b
ecause it is difficult to
know the compromises that will be necessary in each protocol design. If know the compromises that will be necessary in each protocol design. If
a particular protocol design chooses not to follow a 'SHOULD (NOT)' a particular protocol design chooses not to follow a '<bcp14>SHOULD</bcp14
given in the advice below, it MUST include a sound justification.</t> >' or '<bcp14>SHOULD NOT</bcp14>'
<t>It has not been possible to give common guidelines for all lower given in the advice below, it <bcp14>MUST</bcp14> include a sound justific
layer technologies, because they do not all fit a common pattern. ation.</t>
Instead, they have been divided into a few distinct modes of operation: <t>It has not been possible to give common guidelines for all
feed-forward-and-upward; feed-upward-and-forward; feed-backward; and lower-layer technologies because they do not all fit a common pattern.
null mode. These modes are described in <xref target="ecnencap_Modes" form Instead, they have been divided into a few distinct modes of
at="default"/>, operation: feed-forward-and-up, feed-up-and-forward,
then in the subsequent sections separate guidelines are given for each feed-backward, and null mode. These modes are described in <xref
mode.</t> target="ecnencap_Modes" format="default"/>, and separate guidelines are
given for each mode in subsequent sections.</t>
<section numbered="true" toc="default"> <section numbered="true" toc="default">
<name>Update to RFC 3819</name> <name>Update to RFC 3819</name>
<t>This document updates the brief advice to subnetwork designers <t>This document updates the brief advice to subnetwork designers
about ECN in <xref section="13" target="RFC3819" format="default"/>, by replacing the about ECN in <xref section="13" target="RFC3819" format="default"/> by a dding this document (RFC 9599) as an informative reference and replacing the
last two paragraphs with the following sentence:</t> last two paragraphs with the following sentence:</t>
<ul empty="true" spacing="normal"> <blockquote>
<li>By following the guidelines in [this document], subnetwork By following the guidelines in [RFC9599], subnetwork
designers can enable a layer-2 protocol to participate in designers can enable a layer-2 protocol to participate in
congestion control without dropping packets via propagation of congestion control without dropping packets via propagation of
explicit congestion notification (ECN <xref target="RFC3168" format= Explicit Congestion Notification (ECN) <xref target="RFC3168" format
"default"/>) to ="default"/> to
receivers.</li> receivers.</blockquote>
</ul>
<t>and adding [this document] as an informative reference. {RFC
Editor: Please replace both instances of [this document] above with
the number of the present RFC when published.}</t>
</section> </section>
<section anchor="ecnencap_Scope" numbered="true" toc="default"> <section anchor="ecnencap_Scope" numbered="true" toc="default">
<name>Scope</name> <name>Scope</name>
<t>This document only concerns wire protocol processing of explicit <t>This document only concerns wire protocol processing of explicit
notification of congestion. It makes no changes or recommendations notification of congestion. It makes no changes or recommendations
concerning algorithms for congestion marking or for congestion concerning algorithms for congestion marking or congestion
response, because algorithm issues should be independent of the layer response because algorithm issues should be independent of the layer
the algorithm operates in.</t> that the algorithm operates in.</t>
<t>The default ECN semantics are described in <xref target="RFC3168" for mat="default"/> <t>The default ECN semantics are described in <xref target="RFC3168" for mat="default"/>
and updated by <xref target="RFC8311" format="default"/>. Also, the guid elines for AQM and updated by <xref target="RFC8311" format="default"/>. Also, the guid elines for AQM
designers <xref target="RFC7567" format="default"/> clarify the semantic s of both drop designers <xref target="RFC7567" format="default"/> clarify the semantic s of both drop
and ECN signals from AQM algorithms. <xref target="RFC4774" format="defa ult"/> is the and ECN signals from AQM algorithms. <xref target="RFC4774" format="defa ult"/> is the
appropriate best current practice specification of how algorithms with appropriate best current practice specification of how algorithms with
alternative semantics for the ECN field can be partitioned from alternative semantics for the ECN field can be partitioned from
Internet traffic that uses the default ECN semantics. There are two Internet traffic that uses the default ECN semantics. There are two
main examples for how alternative ECN semantics have been defined in main examples for how alternative ECN semantics have been defined in
practice:</t> practice:</t>
<ul spacing="normal"> <ul spacing="normal">
<li>RFC 4774 suggests using the ECN field in combination with a <li><xref target="RFC4774"/> suggests using the ECN field in combinati
Diffserv codepoint such as in PCN <xref target="RFC6660" format="def on with a
ault"/>, Voice Diffserv codepoint, such as in Pre-Congestion Notification (PCN) <xr
over 3G <xref target="UTRAN" format="default"/> or Voice over LTE (V ef target="RFC6660" format="default"/>, Voice
oLTE) <xref target="LTE-RA" format="default"/>;</li> over 3G <xref target="UTRAN" format="default"/>, or Voice over LTE (
<li>RFC 8311 suggests using the ECT(1) codepoint of the ECN field VoLTE) <xref target="LTE-RA" format="default"/>.</li>
to indicate alternative semantics such as for the experimental Low <li><xref target="RFC8311"/> suggests using the ECT(1) codepoint of th
Latency Low Loss Scalable throughput (L4S) service <xref target="RFC e ECN field
9331" format="default"/>).</li> to indicate alternative semantics, such as for the experimental Low
Latency, Low Loss, and Scalable throughput (L4S) service <xref targe
t="RFC9331" format="default"/>.</li>
</ul> </ul>
<t>The aim is that the default rules for encapsulating and <t>The aim is that the default rules for encapsulating and
decapsulating the ECN field are sufficiently generic that tunnels and decapsulating the ECN field are sufficiently generic that tunnels and
subnets will encapsulate and decapsulate packets without regard to how subnets will encapsulate and decapsulate packets without regard to how
algorithms elsewhere are setting or interpreting the semantics of the algorithms elsewhere are setting or interpreting the semantics of the
ECN field. <xref target="RFC6040" format="default"/> updates RFC 4774 to allow ECN field. <xref target="RFC6040" format="default"/> updates <xref targe t="RFC4774"/> to allow
alternative encapsulation and decapsulation behaviours to be defined alternative encapsulation and decapsulation behaviours to be defined
for alternative ECN semantics. However, it reinforces the same point - for alternative ECN semantics. However, it reinforces the same point --
that it is far preferable to try to fit within the common ECN it is far preferable to try to fit within the common ECN
encapsulation and decapsulation behaviours, because expecting all encapsulation and decapsulation behaviours because expecting all
lower layer technologies and tunnels to be updated is likely to be lower-layer technologies and tunnels to be updated is likely to be
completely impractical.</t> completely impractical.</t>
<t>Alternative semantics for the ECN field can be defined to depend on <t>Alternative semantics for the ECN field can be defined to depend on
the traffic class indicated by the DSCP. Therefore, correct propagation the traffic class indicated by the Differentiated Services Code Point (D SCP). Therefore, correct propagation
of congestion signals could depend on correct propagation of the DSCP of congestion signals could depend on correct propagation of the DSCP
between the layers and along the path. For instance, if the meaning of between the layers and along the path. For instance, if the meaning of
the ECN field depends on the DSCP (as in PCN or VoLTE) and if the the ECN field depends on the DSCP (as in PCN or VoLTE) and the
outer DSCP is stripped on descapsulation, as in the pipe model of outer DSCP is stripped on descapsulation, as in the pipe model of
<xref target="RFC2983" format="default"/>, the special semantics of the ECN field would <xref target="RFC2983" format="default"/>, the special semantics of the ECN field would
be lost. Similarly, if the DSCP is changed at the boundary between be lost. Similarly, if the DSCP is changed at the boundary between
Diffserv domains, the special ECN semantics would also be lost. This Diffserv domains, the special ECN semantics would also be lost. This
is an important implication of the localized scope of most Diffserv is an important implication of the localized scope of most Diffserv
arrangements. In this document, correct propagation of traffic class arrangements. In this document, correct propagation of traffic class
information is assumed, while what 'correct' means and how it is information is assumed while the meaning of 'correct' and how it is
achieved is covered elsewhere (e.g. RFC 2983) and is outside the scope achieved is covered elsewhere (e.g., <xref target="RFC2983"/>) and is ou
of the present document.</t> tside the scope
of this document.</t>
<t>The guidelines in this document do ensure that common encapsulation <t>The guidelines in this document do ensure that common encapsulation
and decapsulation rules are sufficiently generic to cover cases where and decapsulation rules are sufficiently generic to cover cases where
ECT(1) is used instead of ECT(0) to identify alternative ECN semantics ECT(1) is used instead of ECT(0) to identify alternative ECN semantics
(as in L4S <xref target="RFC9331" format="default"/>) and where ECN mark (as in L4S <xref target="RFC9331" format="default"/>) and where ECN-mark
ing algorithms ing algorithms
use ECT(1) to encode 3 severity levels into the ECN field (e.g. PCN use ECT(1) to encode three severity levels into the ECN field (e.g., PCN
<xref target="RFC6660" format="default"/>) rather than the default of 2. <xref target="RFC6660" format="default"/>) rather than the default of tw
All these o. All these
different semantics for the ECN field work because it has been different semantics for the ECN field work because it has been
possible to define common default decapsulation rules that allow for possible to define common default decapsulation rules that allow for
all cases.</t> all cases <xref target="RFC6040" format="default"/>.</t>
<t>Note that the guidelines in this document do not necessarily <t>Note that the guidelines in this document do not necessarily
require the subnet wire protocol to be changed to add support for require the subnet wire protocol to be changed to add support for
congestion notification. For instance, the Feed-Up-and-Forward Mode congestion notification. For instance, the feed-up-and-forward mode
(<xref target="ecnencap_Up" format="default"/>) and the Null Mode (<xref (<xref target="ecnencap_Up" format="default"/>) and the null mode (<xref
target="ecnencap_Null" format="default"/>) do not. Another way to add congestio target="ecnencap_Null" format="default"/>) do not. Another way to add congestio
n n
notification without consuming header space in the subnet protocol notification without consuming header space in the subnet protocol
might be to use a parallel control plane protocol.</t> might be to use a parallel control plane protocol.</t>
<t>This document focuses on the congestion notification interface <t>This document focuses on the congestion notification interface
between IP and lower layer or tunnel protocols that can encapsulate between IP and lower-layer or tunnel protocols that can encapsulate
IP, where the term 'IP' includes IPv4 or IPv6, unicast, multicast or IP, where the term 'IP' includes IPv4 or IPv6, unicast, multicast, or
anycast. However, it is likely that the guidelines will also be useful anycast.
when a lower layer protocol or tunnel encapsulates itself, e.g. However, it is likely that the guidelines will also be useful
Ethernet MAC in MAC (<xref target="IEEE802.1Q" format="default"/>; previ when a lower-layer protocol or tunnel encapsulates itself, e.g.,
ously 802.1ah) Ethernet Media Access Control (MAC) in MAC (<xref target="IEEE802.1Q" fo
rmat="default"/>; previously 802.1ah),
or when it encapsulates other protocols. In the feed-backward mode, or when it encapsulates other protocols. In the feed-backward mode,
propagation of congestion signals for multicast and anycast packets is propagation of congestion signals for multicast and anycast packets is
out-of-scope (because the complexity would make it unlikely to be out of scope (because the complexity would make it unlikely to be
attempted).</t> attempted).</t>
</section> </section>
</section> </section>
<!-- ================================================================ -->
<section anchor="ecnencap_Reqs_Language" numbered="true" toc="default"> <section anchor="ecnencap_Reqs_Language" numbered="true" toc="default">
<name>Terminology</name> <name>Terminology</name>
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and >REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>",
"OPTIONAL" in this document are to be interpreted as described in "<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 descri
bed in
BCP&nbsp;14 <xref target="RFC2119" format="default"/> BCP&nbsp;14 <xref target="RFC2119" format="default"/>
<xref target="RFC8174" format="default"/> when, and only when, they <xref target="RFC8174" format="default"/> when, and only when, they
appear in all capitals, as shown here.</t> appear in all capitals, as shown here.</t>
<t>Further terminology used within this document:</t> <t>Further terminology used within this document:</t>
<dl newline="false" spacing="normal"> <dl newline="false" spacing="normal">
<dt>Protocol data unit (PDU):</dt> <dt>Protocol data unit (PDU):</dt>
<dd>Information that is <dd>Information that is
delivered as a unit among peer entities of a layered network delivered as a unit among peer entities of a layered network
consisting of protocol control information (typically a header) and consisting of protocol control information (typically a header) and
possibly user data (payload) of that layer. The scope of this possibly user data (payload) of that layer. The scope of this
document includes layer 2 and layer 3 networks, where the PDU is document includes Layer 2 and Layer 3 networks, where the PDU is
respectively termed a frame or a packet (or a cell in ATM). PDU is a respectively termed a frame or a packet (or a cell in ATM). PDU is a
general term for any of these. This definition also includes a general term for any of these. This definition also includes a
payload with a shim header lying somewhere between layer 2 and payload with a shim header lying somewhere between layer 2 and
3.</dd> 3.</dd>
<dt>Transport:</dt> <dt>Transport:</dt>
<dd>The end-to-end transmission control <dd>The end-to-end transmission control function, conventionally
function, conventionally considered at layer-4 in the OSI reference considered at layer 4 in the OSI reference model. Given the audience
model. Given the audience for this document will often use the word for this document will often use the word transport to mean low-level
transport to mean low level bit carriage, whenever the term is used bit carriage, the term will be qualified whenever it is used,
it will be qualified, e.g. 'L4 transport'.</dd> e.g., 'L4 transport'.</dd>
<dt>Encapsulator:</dt> <dt>Encapsulator:</dt>
<dd>The link or tunnel endpoint function <dd>The link or tunnel endpoint function
that adds an outer header to a PDU (also termed the 'link ingress', that adds an outer header to a PDU (also termed the 'link ingress',
the 'subnet ingress', the 'ingress tunnel endpoint' or just the the 'subnet ingress', the 'ingress tunnel endpoint', or just the
'ingress' where the context is clear).</dd> 'ingress' where the context is clear).</dd>
<dt>Decapsulator:</dt> <dt>Decapsulator:</dt>
<dd>The link or tunnel endpoint function <dd>The link or tunnel endpoint function
that removes an outer header from a PDU (also termed the 'link that removes an outer header from a PDU (also termed the 'link
egress', the 'subnet egress', the 'egress tunnel endpoint' or just egress', the 'subnet egress', the 'egress tunnel endpoint', or just
the 'egress' where the context is clear).</dd> the 'egress' where the context is clear).</dd>
<dt>Incoming header:</dt> <dt>Incoming header:</dt>
<dd>The header of an arriving PDU before <dd>The header of an arriving PDU before
encapsulation.</dd> encapsulation.</dd>
<dt>Outer header:</dt> <dt>Outer header:</dt>
<dd>The header added to encapsulate a <dd>The header added to encapsulate a
PDU.</dd> PDU.</dd>
<dt>Inner header:</dt> <dt>Inner header:</dt>
<dd>The header encapsulated by the outer <dd>The header encapsulated by the outer
header.</dd> header.</dd>
<dt>Outgoing header:</dt> <dt>Outgoing header:</dt>
<dd>The header forwarded by the <dd>The header forwarded by the
decapsulator.</dd> decapsulator.</dd>
<dt>CE:</dt> <dt>CE:</dt>
<dd>Congestion Experienced <xref target="RFC3168" format="default"/></dd > <dd>Congestion Experienced <xref target="RFC3168" format="default"/></dd >
<dt>ECT:</dt> <dt>ECT:</dt>
<dd>ECN-Capable (L4) Transport <xref target="RFC3168" format="default"/> </dd> <dd>ECN-Capable (L4) Transport <xref target="RFC3168" format="default"/> </dd>
<dt>Not-ECT:</dt> <dt>Not-ECT:</dt>
<dd>Not ECN-Capable (L4) Transport <xref target="RFC3168" format="defaul t"/></dd> <dd>Not ECN-Capable (L4) Transport <xref target="RFC3168" format="defaul t"/></dd>
<dt>Load Regulator:</dt> <dt>Load Regulator:</dt>
<dd>For each flow of PDUs, the transport <dd>For each flow of PDUs, the transport function that is capable of
function that is capable of controlling the data rate. Typically controlling the data rate. Typically located at the data source, but
located at the data source, but in-path nodes can regulate load in in-path nodes can regulate load in some congestion control
some congestion control arrangements (e.g. admission control, arrangements (e.g., admission control, policing nodes, or transport
policing nodes or transport circuit-breakers <xref target="RFC8084" fo circuit-breakers <xref target="RFC8084" format="default"/>). Note that
rmat="default"/>). Note the term "a function capable of "a function capable of controlling the load" deliberately
controlling the load" deliberately includes a transport that does includes a transport that does not actually control the load
not actually control the load responsively but ideally it ought to responsively, but ideally it ought to (e.g., a sending application
(e.g. a sending application without congestion control that uses without congestion control that uses UDP).</dd>
UDP).</dd>
<dt>ECN-PDU:</dt> <dt>ECN-PDU:</dt>
<dd>A PDU at the IP layer or below with a <dd>A PDU at the IP layer or below with a
capacity to signal congestion that is part of a congestion control capacity to signal congestion that is part of a congestion control
feedback loop within which all the nodes necessary to propagate the feedback loop within which all the nodes necessary to propagate the
signal back to the Load Regulator are capable of doing that signal back to the Load Regulator are capable of doing that
propagation. An IP packet with a non-zero ECN field implies that the propagation. An IP packet with a non-zero ECN field implies that the
endpoints are ECN-capable, so this would be an ECN-PDU. However, endpoints are ECN-capable, so this would be an ECN-PDU. However,
ECN-PDU is intended to be a general term for a PDU at lower layers, ECN-PDU is intended to be a general term for a PDU at lower layers,
as well as at the IP layer.</dd> as well as at the IP layer.</dd>
<dt>Not-ECN-PDU:</dt> <dt>Not-ECN-PDU:</dt>
<dd>A PDU at the IP layer or below that is <dd>A PDU at the IP layer or below that is
part of a congestion control feedback loop that is not capable of part of a congestion control feedback loop that is not capable of
propagating explicit congestion notification signals back to the Load propagating ECN signals back to the Load
Regulator, because at least one of the nodes necessary to propagate Regulator because at least one of the nodes necessary to propagate
the signals is incapable of doing that propagation. Note that this the signals is incapable of doing that propagation. Note that this
definition is a property of the feedback-loop, not necessarily of the definition is a property of the feedback loop, not necessarily of the
PDU itself, because in some protocols the PDU will self-describe the PDU itself; certainly the PDU will self-describe the
property, but in others the property might be carried in a separate property in some protocols, but in others, the property might be carri
control-plane context that is somehow bound to the PDU.</dd> ed in a separate
control plane context (which is somehow bound to the PDU).</dd>
</dl> </dl>
</section> </section>
<section anchor="ecnencap_Modes" numbered="true" toc="default"> <section anchor="ecnencap_Modes" numbered="true" toc="default">
<name>Modes of Operation</name> <name>Modes of Operation</name>
<t>This section sets down the different modes by which congestion <t>This section sets down the different modes by which congestion
information is passed between the lower layer and the higher one. It information is passed between the lower layer and the higher one. It
acts as a reference framework for the following sections, which give acts as a reference framework for the subsequent sections that give
normative guidelines for designers of explicit congestion notification normative guidelines for designers of congestion notification protocols, t
protocols, taking each mode in turn:</t> aking each mode in
turn:</t>
<dl newline="false" spacing="normal"> <dl newline="false" spacing="normal">
<dt>Feed-Forward-and-Up:</dt> <dt>Feed-Forward-and-Up:</dt>
<dd> <dd>
<t>Nodes feed forward congestion <t>Nodes feed forward congestion
notification towards the egress within the lower layer then up and notification towards the egress within the lower layer, then up and
along the layers towards the end-to-end destination at the transport along the layers towards the end-to-end destination at the transport
layer. The following local optimisation is possible:</t> layer. The following local optimization is possible:</t>
<dl newline="false" spacing="normal"> <dl newline="false" spacing="normal">
<dt>Feed-Up-and-Forward:</dt> <dt>Feed-Up-and-Forward:</dt>
<dd>A lower layer switch feeds-up <dd>A lower-layer switch feeds up
congestion notification directly into the higher layer (e.g. congestion notification directly into the higher layer (e.g.,
into the ECN field in the IP header), irrespective of whether into the ECN field in the IP header), irrespective of whether
the node is at the egress of a subnet.</dd> the node is at the egress of a subnet.</dd>
</dl> </dl>
</dd> </dd>
<dt>Feed-Backward:</dt> <dt>Feed-Backward:</dt>
<dd>Nodes feed back congestion signals <dd>Nodes feed back congestion signals
towards the ingress of the lower layer and (optionally) attempt to towards the ingress of the lower layer and (optionally) attempt to
control congestion within their own layer.</dd> control congestion within their own layer.</dd>
<dt>Null:</dt> <dt>Null:</dt>
<dd>Nodes cannot experience congestion at the lower <dd>Nodes cannot experience congestion at the lower
layer except at ingress nodes (which are IP-aware or equivalently layer except at the ingress nodes of the subnet (which are IP-aware or equivalently
higher-layer-aware).</dd> higher-layer-aware).</dd>
</dl> </dl>
<section anchor="ecnencap_Forward" numbered="true" toc="default"> <section anchor="ecnencap_Forward" numbered="true" toc="default">
<name>Feed-Forward-and-Up Mode</name> <name>Feed-Forward-and-Up Mode</name>
<t>Like IP and MPLS, many subnet technologies are based on <t>Like IP and MPLS, many subnet technologies are based on
self-contained protocol data units (PDUs) or frames sent unreliably. self-contained PDUs or frames sent unreliably.
They provide no feedback channel at the subnetwork layer, instead They provide no feedback channel at the subnetwork layer, instead
relying on higher layers (e.g. TCP) to feed back loss signals.</t> relying on higher layers (e.g., TCP) to feed back loss signals.</t>
<t>In these cases, ECN may best be supported by standardising explicit <t>In these cases, ECN may best be supported by standardising explicit
notification of congestion into the lower layer protocol that carries notification of congestion into the lower-layer protocol that carries
the data forwards. Then a specification is needed for how the egress the data forwards. Then, a specification is needed for how the egress
of the lower layer subnet propagates this explicit signal into the of the lower-layer subnet propagates this explicit signal into the
forwarded upper layer (IP) header. This signal continues forwards forwarded upper-layer (IP) header. This signal continues forwards
until it finally reaches the destination transport (at L4). Then until it finally reaches the destination transport (at L4).
typically the destination will feed this congestion notification back Typically, the destination will feed this congestion notification back
to the source transport using an end-to-end protocol (e.g. TCP). This to the source transport using an end-to-end protocol (e.g., TCP). This
is the arrangement that has already been used to add ECN to IP-in-IP is the arrangement that has already been used to add ECN to IP-in-IP
tunnels <xref target="RFC6040" format="default"/>, IP-in-MPLS and MPLS-i n-MPLS <xref target="RFC5129" format="default"/>.</t> tunnels <xref target="RFC6040" format="default"/>, IP-in-MPLS, and MPLS- in-MPLS <xref target="RFC5129" format="default"/>.</t>
<t>This mode is illustrated in <xref target="ecnencap_Fig_Feed-Forward-a nd-Up" format="default"/>. Along the middle of the <t>This mode is illustrated in <xref target="ecnencap_Fig_Feed-Forward-a nd-Up" format="default"/>. Along the middle of the
figure, layers 2, 3 and 4 of the protocol stack are shown, and one figure, layers 2, 3, and 4 of the protocol stack are shown. One
packet is shown along the bottom as it progresses across the network packet is shown along the bottom as it progresses across the network
from source to destination, crossing two subnets connected by a from source to destination, crossing two subnets connected by a
router, and crossing two switches on the path across each subnet. router and crossing two switches on the path across each subnet.
Congestion at the output of the first switch (shown as *) leads to a Congestion at the output of the first switch (shown as *) leads to a
congestion marking in the L2 header (shown as C in the illustration of congestion marking in the L2 header (shown as C in the illustration of
the packet). The chevrons show the progress of the resulting the packet). The chevrons show the progress of the resulting
congestion indication. It is propagated from link to link across the congestion indication. It is propagated from link to link across the
subnet in the L2 header, then when the router removes the marked L2 subnet in the L2 header. Then, when the router removes the marked L2
header, it propagates the marking up into the L3 (IP) header. The header, it propagates the marking up into the L3 (IP) header. The
router forwards the marked L3 header into subnet B. The L2 protocol used router forwards the marked L3 header into subnet B. The L2 protocol used
in subnet B does not support ECN, but the signal proceeds across it in in subnet B does not support congestion notification, but the signal pro ceeds across it in
the L3 header.</t> the L3 header.</t>
<t>Note that there is no implication that each 'C' marking is encoded <t>Note that there is no implication that each 'C' marking is encoded
the same; a different encoding might be used for the 'C' marking in the same; a different encoding might be used for the 'C' marking in
each protocol.</t> each protocol.</t>
<t>Finally, for completeness, we show the L3 marking arriving at the <t>Finally, for completeness, we show the L3 marking arriving at the
destination, where the host transport protocol (e.g. TCP) feeds it destination, where the host transport protocol (e.g., TCP) feeds it
back to the source in the L4 acknowledgement (the 'C' at L4 in the back to the source in the L4 acknowledgement (the 'C' at L4 in the
packet at the top of the diagram).</t> packet at the top of the diagram).</t>
<figure anchor="ecnencap_Fig_Feed-Forward-and-Up"> <figure anchor="ecnencap_Fig_Feed-Forward-and-Up">
<name>Feed-Forward-and-Up Mode</name> <name>Feed-Forward-and-Up Mode</name>
<artwork name="" type="" align="left" alt=""><![CDATA[ <artwork name="" type="" align="left" alt=""><![CDATA[
_ _ _ _ _ _
/_______ | | |C| ACK Packet (V) /_______ | | |C| ACK Packet (V)
\ |_|_|_| \ |_|_|_|
+---+ layer: 2 3 4 header +---+ +---+ layer: 2 3 4 header +---+
| <|<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Packet V <<<<<<<<<<<<<|<< |L4 | <|<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Packet V <<<<<<<<<<<<<|<< |L4
| | +---+ | ^ | | | +---+ | ^ |
| | . . . . . . Packet U. . | >>|>>> Packet U >>>>>>>>>>>>|>^ |L3 | | . . . . . . Packet U. . | >>|>>> Packet U >>>>>>>>>>>>|>^ |L3
| | +---+ +---+ | ^ | +---+ +---+ | | | | +---+ +---+ | ^ | +---+ +---+ | |
| | | *|>>>>>|>>>|>>>>>|>^ | | | | | | |L2 | | | *|>>>>>|>>>|>>>>>|>^ | | | | | | |L2
|___|_____|___|_____|___|_____|___|_____|___|_____|___|_____|___| |___|_____|___|_____|___|_____|___|_____|___|_____|___|_____|___|
source subnet A router subnet B dest source subnet A router subnet B dest
__ _ _ _| __ _ _ _| __ _ _| __ _ _ _| __ _ _ _| __ _ _ _| __ _ _| __ _ _ _|
| | | | | | | | |C| | | |C| | | |C| | Data________\ | | | | | | | | |C| | | |C| | | |C| | Data________\
|__|_|_|_| |__|_|_|_| |__|_|_| |__|_|_|_| Packet (U) / |__|_|_|_| |__|_|_|_| |__|_|_| |__|_|_|_| Packet (U) /
layer:4 3 2A 4 3 2A 4 3 4 3 2B layer:4 3 2A 4 3 2A 4 3 4 3 2B
header]]></artwork> header
]]></artwork>
</figure> </figure>
<t>Of course, modern networks are rarely as simple as this text-book <t>Of course, modern networks are rarely as simple as this textbook
example, often involving multiple nested layers. For example, a 3GPP example, often involving multiple nested layers. For example, a Third
mobile network may have two IP-in-IP (GTP <xref target="GTPv1" format="d Generation Partnership Project (3GPP) mobile network may have two
efault"/>) IP-in-IP GTP <xref target="GTPv1" format="default"/> tunnels in
tunnels in series and an MPLS backhaul between the base station and series and an MPLS backhaul between the base station and the first
the first router. Nonetheless, the example illustrates the general router. Nonetheless, the example illustrates the general idea of
idea of feeding congestion notification forward then upward whenever a feeding congestion notification forward then upward whenever a header
header is removed at the egress of a subnet.</t> is removed at the egress of a subnet.</t>
<t>Note that the FECN (forward ECN ) bit in Frame Relay <xref target="Bu <t>Note that the Forward Explicit Congestion Notification (FECN) bit in
ck00" format="default"/> and the explicit forward congestion indication (EFCI Frame Relay <xref target="Buck00" format="default"/> and the Explicit Forward Co
<xref target="ITU-T.I.371" format="default"/>) bit in ATM user data cell ngestion Indication (EFCI)
s follow a <xref target="ITU-T.I.371" format="default"/> bit in ATM user data cells
feed-forward pattern. However, in ATM, this arrangement is only part follow a
feed-forward pattern.
However, in ATM, this arrangement is only part
of a feed-forward-and-backward pattern at the lower layer, not of a feed-forward-and-backward pattern at the lower layer, not
feed-forward-and-up out of the lower layer &mdash; the intention was feed-forward-and-up out of the lower layer -- the intention was
never to interface to IP ECN at the subnet egress. To our knowledge, never to interface with IP-ECN at the subnet egress.
Frame Relay FECN is solely used to detect where more capacity should To our knowledge,
be provisioned.</t> Frame Relay FECN is solely used by network operators to detect where the
y
should provision more capacity.</t>
</section> </section>
<section anchor="ecnencap_Up" numbered="true" toc="default"> <section anchor="ecnencap_Up" numbered="true" toc="default">
<name>Feed-Up-and-Forward Mode</name> <name>Feed-Up-and-Forward Mode</name>
<t>Ethernet is particularly difficult to extend incrementally to <t>Ethernet is particularly difficult to extend incrementally to
support explicit congestion notification. One way to support ECN in support congestion notification. One way is to use so-called
such cases has been to use so called 'layer-3 switches'. These are 'Layer 3 switches'. These are Ethernet switches that dig into the
Ethernet switches that dig into the Ethernet payload to find an IP Ethernet payload to find an IP header and manipulate or act on certain
header and manipulate or act on certain IP fields (specifically IP fields (specifically Diffserv and ECN). For instance, in Data
Diffserv &amp; ECN). For instance, in Data Center TCP <xref target="RFC8 Center TCP <xref target="RFC8257" format="default"/>, Layer 3 switches
257" format="default"/>, layer-3 switches are configured to mark the ECN are configured to mark the ECN field of the IP header within the
field of the IP header within the Ethernet payload when their output Ethernet payload when their output buffer becomes congested. With
buffer becomes congested. With respect to switching, a layer-3 switch respect to switching, a Layer 3 switch acts solely on the addresses in
acts solely on the addresses in the Ethernet header; it does not use the Ethernet header; it does not use IP addresses and it does not
IP addresses, and it does not decrement the TTL field in the IP decrement the TTL field in the IP header.</t>
header.</t>
<figure anchor="ecnencap_Fig_Feed-Up"> <figure anchor="ecnencap_Fig_Feed-Up">
<name>Feed-Up-and-Forward Mode</name> <name>Feed-Up-and-Forward Mode</name>
<artwork name="" type="" align="left" alt=""><![CDATA[ <artwork name="" type="" align="left" alt=""><![CDATA[
_ _ _ _ _ _
/_______ | | |C| ACK packet (V) /_______ | | |C| ACK packet (V)
\ |_|_|_| \ |_|_|_|
+---+ layer: 2 3 4 header +---+ +---+ layer: 2 3 4 header +---+
| <|<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Packet V <<<<<<<<<<<<<|<< |L4 | <|<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Packet V <<<<<<<<<<<<<|<< |L4
| | +---+ | ^ | | | +---+ | ^ |
| | . . . >>>> Packet U >>>|>>>|>>> Packet U >>>>>>>>>>>>|>^ |L3 | | . . . >>>> Packet U >>>|>>>|>>> Packet U >>>>>>>>>>>>|>^ |L3
| | +--^+ +---+ | v| +---+ +---+ | ^ | | | +--^+ +---+ | v| +---+ +---+ | ^ |
| | | *| | | | >|>>>>>|>>>|>>>>>|>>>|>>>>>|>^ |L2 | | | *| | | | >|>>>>>|>>>|>>>>>|>>>|>>>>>|>^ |L2
|___|_____|___|_____|___|_____|___|_____|___|_____|___|_____|___| |___|_____|___|_____|___|_____|___|_____|___|_____|___|_____|___|
source subnet E router subnet F dest source subnet E router subnet F dest
__ _ _ _| __ _ _ _| __ _ _| __ _ _ _| __ _ _ _| __ _ _ _| __ _ _| __ _ _ _|
| | | | | | | |C| | | | |C| | | |C|C| Data________\ | | | | | | | |C| | | | |C| | | |C|C| Data________\
|__|_|_|_| |__|_|_|_| |__|_|_| |__|_|_|_| Packet (U) / |__|_|_|_| |__|_|_|_| |__|_|_| |__|_|_|_| Packet (U) /
layer:4 3 2 4 3 2 4 3 4 3 2 layer:4 3 2 4 3 2 4 3 4 3 2
header]]></artwork> header
]]></artwork>
</figure> </figure>
<t>By comparing <xref target="ecnencap_Fig_Feed-Up" format="default"/> w <t>By comparing <xref target="ecnencap_Fig_Feed-Up" format="default"/>
ith <xref target="ecnencap_Fig_Feed-Forward-and-Up" format="default"/>, it can b with <xref target="ecnencap_Fig_Feed-Forward-and-Up"
e seen that format="default"/>, it can be seen that subnet E (perhaps a subnet of
subnet E (perhaps a subnet of layer-3 Ethernet switches) works in Layer 3 Ethernet switches) works in feed-up-and-forward mode by
feed-up-and-forward mode by notifying congestion directly into L3 at notifying congestion directly into L3 at the point of congestion, even
the point of congestion, even though the congested switch does not though the congested switch does not otherwise act at L3.
otherwise act at L3. In this example, the technology in subnet F (e.g. In this example, the technology in subnet F (e.g., MPLS) does support ECN.
MPLS) does support ECN natively, so when the router adds the layer-2 So, when the router adds the Layer 2 header, it copies the ECN marking
header it copies the ECN marking from L3 to L2 as well, as shown by the from L3 to L2 as well, as shown by the 'C's in both layers.</t>
'C's in both layers.</t>
</section> </section>
<section anchor="ecnencap_Backward" numbered="true" toc="default"> <section anchor="ecnencap_Backward" numbered="true" toc="default">
<name>Feed-Backward Mode</name> <name>Feed-Backward Mode</name>
<t>In some layer 2 technologies, explicit congestion notification has <t>In some Layer 2 technologies, congestion notification has
been defined for use internally within the subnet with its own been defined for use internally within the subnet with its own
feedback and load regulation, but typically the interface with IP for feedback and load regulation but the interface with IP for
ECN has not been defined.</t> ECN has not been defined.</t>
<t>For instance, for the available bit-rate (ABR) service in ATM, the <t>For instance, the relative rate mechanism was one of the more popular ways
relative rate mechanism was one of the more popular mechanisms for to manage traffic for the Available Bit Rate (ABR) service in ATM, and it
managing traffic, tending to supersede earlier designs. In this tended to supersede earlier designs. In this approach, ATM switches send
approach ATM switches send special resource management (RM) cells in special resource management (RM) cells in both the forward and backward
both the forward and backward directions to control the ingress rate directions to control the ingress rate of user data into a virtual circuit. If
of user data into a virtual circuit. If a switch buffer is approaching a switch buffer is approaching congestion or is congested, it sends an RM cell
congestion or is congested it sends an RM cell back towards the back towards the ingress with respectively the No Increase (NI) or Congestion
ingress with respectively the No Increase (NI) or Congestion Indication (CI) bit set in its message type field <xref target="ATM-TM-ABR"
Indication (CI) bit set in its message type field <xref target="ATM-TM-A format="default"/>. The ingress then holds or decreases its sending bit rate
BR" format="default"/>. The ingress then holds or decreases its sending accordingly.</t>
bit-rate accordingly.</t>
<figure anchor="ecnencap_Fig_Feed-Backward"> <figure anchor="ecnencap_Fig_Feed-Backward">
<name>Feed-Backward Mode</name> <name>Feed-Backward Mode</name>
<artwork name="" type="" align="left" alt=""><![CDATA[ <artwork name="" type="" align="left" alt=""><![CDATA[
_ _ _ _ _ _
/_______ | | |C| ACK packet (X) /_______ | | |C| ACK packet (X)
\ |_|_|_| \ |_|_|_|
+---+ layer: 2 3 4 header +---+ +---+ layer: 2 3 4 header +---+
| <|<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Packet X <<<<<<<<<<<<<|<< |L4 | <|<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Packet X <<<<<<<<<<<<<|<< |L4
| | +---+ | ^ | | | +---+ | ^ |
| | | *|>>> Packet W >>>>>>>>>>>>|>^ |L3 | | | *|>>> Packet W >>>>>>>>>>>>|>^ |L3
| | +---+ +---+ | | +---+ +---+ | | | | +---+ +---+ | | +---+ +---+ | |
| | | | | | | <|<<<<<|<<<|<(V)<|<<<| | |L2 | | | | | | | <|<<<<<|<<<|<(V)<|<<<| | |L2
| | . . | . |Packet U | . . | . | . . | . | . . | .*| . . | |L2 | | . . | . |Packet U | . . | . | . . | . | . . | .*| . . | |L2
|___|_____|___|_____|___|_____|___|_____|___|_____|___|_____|___| |___|_____|___|_____|___|_____|___|_____|___|_____|___|_____|___|
skipping to change at line 580 skipping to change at line 551
\ |_| cell/frame (V) \ |_| cell/frame (V)
2 2
__ _ _ _ __ _ _ _ __ _ _ __ _ _ _ earlier __ _ _ _ __ _ _ _ __ _ _ __ _ _ _ earlier
| | | | | | | | | | | | | | | | | | | data________\ | | | | | | | | | | | | | | | | | | | data________\
|__|_|_|_| |__|_|_|_| |__|_|_| |__|_|_|_| packet (U) / |__|_|_|_| |__|_|_|_| |__|_|_| |__|_|_|_| packet (U) /
layer: 4 3 2 4 3 2 4 3 4 3 2 layer: 4 3 2 4 3 2 4 3 4 3 2
header header
]]></artwork> ]]></artwork>
</figure> </figure>
<t>ATM's feed-backward approach does not fit well when layered beneath <t>ATM's feed-backward approach does not fit well when layered beneath
IP's feed-forward approach &mdash; unless the initial data source is IP's feed-forward approach unless the initial data source is
the same node as the ATM ingress. <!--(which would be the case if ATM ha the same node as the ATM ingress.
d achieved its aspiration of becoming the global internetwork standard,
rather than just a subnetwork technology)-->
<xref target="ecnencap_Fig_Feed-Backward" format="default"/> shows the feed-backward approach <xref target="ecnencap_Fig_Feed-Backward" format="default"/> shows the feed-backward approach
being used in subnet H. If the final switch on the path is congested being used in subnet H.
(*), it does not feed-forward any congestion indications on packet If the final switch on the path is congested
(U). Instead it sends a control cell (V) back to the router at the ATM (*), it does not feed forward any congestion indications on the packet
(U). Instead, it sends a control cell (V) back to the router at the ATM
ingress.</t> ingress.</t>
<t>However, the backward feedback does not reach the original data <t>However, the backward feedback does not reach the original data
source directly because IP does not support backward feedback (and source directly because IP does not support backward feedback (and
subnet G is independent of subnet H). Instead, the router in the subnet G is independent of subnet H). Instead, the router in the
middle throttles down its sending rate but the original data sources middle throttles down its sending rate, but the original data sources
don't reduce their rates. The resulting rate mismatch causes the don't reduce their rates.
The resulting rate mismatch causes the
middle router's buffer at layer 3 to back up until it becomes middle router's buffer at layer 3 to back up until it becomes
congested, which it signals forwards on later data packets at layer 3 congested, which it signals forwards on later data packets at layer 3
(e.g. packet W). Note that the forward signal from the middle router (e.g., packet W). Note that the forward signal from the middle router
is not triggered directly by the backward signal. Rather, it is is not triggered directly by the backward signal. Rather, it is
triggered by congestion resulting from the middle router's mismatched triggered by congestion resulting from the middle router's mismatched
rate response to the backward signal.</t> rate response to the backward signal.</t>
<t>In response to this later forward signalling, end-to-end feedback <t>In response to this later forward signalling, end-to-end feedback
at layer-4 finally completes the tortuous path of congestion at layer 4 finally completes the tortuous path of congestion
indications back to the origin data source, as before.</t> indications back to the origin data source as before.</t>
<t>Quantized congestion notification (QCN <xref target="IEEE802.1Q" form <t>Quantized Congestion Notification (QCN) <xref target="IEEE802.1Q" for
at="default"/>) mat="default"/>
would suffer from similar problems if extended to multiple subnets. would suffer from similar problems if extended to multiple subnets.
However, from the start QCN was clearly characterized as solely However, QCN was clearly characterized as solely
applicable to a single subnet (see <xref target="ecnencap_Guidelines_Bac applicable to a single subnet from the start (see <xref target="ecnencap
kward" format="default"/>).</t> _Guidelines_Backward" format="default"/>).</t>
<!--To summarise so far, feeding congestion notification backwards can r
each the source faster, but only
if the congested subnet is directly connected to the original data source. In a
more general case,
feedback takes a tortuous path part-way backwards, which can lead to queuing at
the higher layer in
the middle of the network, which can in turn trigger a much-delayed feed-forward
signal, which then
has to be fed back from destination to source.-->
</section> </section>
<section anchor="ecnencap_Null" numbered="true" toc="default"> <section anchor="ecnencap_Null" numbered="true" toc="default">
<name>Null Mode</name> <name>Null Mode</name>
<t>Often link and physical layer resources are 'non-blocking' by <t>Link- and physical-layer resources are often 'non-blocking' by
design. In these cases congestion notification may be implemented but design. Congestion notification may be implemented in these cases, but
it does not need to be deployed at the lower layer; ECN in IP would be it does not need to be deployed at the lower layer; ECN in IP would be
sufficient.</t> sufficient.</t>
<t>A degenerate example is a point-to-point Ethernet link. Excess <t>A degenerate example is a point-to-point Ethernet link. Excess
loading of the link merely causes the queue from the higher layer to loading of the link merely causes the queue from the higher layer to
back up, while the lower layer remains immune to congestion. Even a back up, while the lower layer remains immune to congestion. Even a
whole meshed subnetwork can be made immune to interior congestion by whole meshed subnetwork can be made immune to interior congestion by
limiting ingress capacity and sufficient sizing of interior links, limiting ingress capacity and sufficient sizing of interior links,
e.g. a non-blocking fat-tree network <xref target="Leiserson85" format=" default"/>. An e.g., a non-blocking fat-tree network <xref target="Leiserson85" format= "default"/>. An
alternative to fat links near the root is numerous thin links with alternative to fat links near the root is numerous thin links with
multi-path routing to ensure even worst-case patterns of load cannot multi-path routing to ensure even worst-case patterns of load cannot
congest any link, e.g. a Clos network <xref target="Clos53" format="defa ult"/>.</t> congest any link, e.g., a Clos network <xref target="Clos53" format="def ault"/>.</t>
</section> </section>
</section> </section>
<section anchor="ecnencap_Guidelines_Forward" numbered="true" toc="default"> <section anchor="ecnencap_Guidelines_Forward" numbered="true" toc="default">
<name>Feed-Forward-and-Up Mode: Guidelines for Adding Congestion Notificat ion</name> <name>Feed-Forward-and-Up Mode: Guidelines for Adding Congestion Notificat ion</name>
<t>Feed-forward-and-up is the mode already used for signalling ECN up <t>Feed-forward-and-up is the mode already used for signalling ECN up
the layers through MPLS into IP <xref target="RFC5129" format="default"/> and through the layers through MPLS into IP <xref target="RFC5129" format="default"/> and through
IP-in-IP tunnels <xref target="RFC6040" format="default"/>, whether encaps ulating with IP-in-IP tunnels <xref target="RFC6040" format="default"/>, whether encaps ulating with
IPv4 <xref target="RFC2003" format="default"/>, IPv6 <xref target="RFC2473 " format="default"/> or IPsec IPv4 <xref target="RFC2003" format="default"/>, IPv6 <xref target="RFC2473 " format="default"/>, or IPsec
<xref target="RFC4301" format="default"/>. These RFCs take a consistent ap proach and the <xref target="RFC4301" format="default"/>. These RFCs take a consistent ap proach and the
following guidelines are designed to ensure this consistency continues following guidelines are designed to ensure this consistency continues
as ECN support is added to other protocols that encapsulate IP. The as ECN support is added to other protocols that encapsulate IP. The
guidelines are also designed to ensure compliance with the more general guidelines are also designed to ensure compliance with the more general
best current practice for the design of alternate ECN schemes given in best current practice for the design of alternate ECN schemes given in
<xref target="RFC4774" format="default"/> and extended by <xref target="RF C8311" format="default"/>.</t> <xref target="RFC4774" format="default"/> and extended by <xref target="RF C8311" format="default"/>.</t>
<t>The rest of this section is structured as follows:</t> <t>The rest of this section is structured as follows:</t>
<ul spacing="normal"> <ul spacing="normal">
<li> <li>
<xref target="ecnencap_IP-IP_Coupled_Shim_Tunnels" format="default"/> addresses <xref target="ecnencap_IP-IP_Coupled_Shim_Tunnels" format="default"/> addresses
the most straightforward cases, where <xref target="RFC6040" format="d efault"/> can the most straightforward cases, where <xref target="RFC6040" format="d efault"/> can
be applied directly to add ECN to tunnels that are effectively be applied directly to add ECN to tunnels that are effectively
IP-in-IP tunnels, but with shim header(s) between the IP IP-in-IP tunnels, but with a shim header(s) between the IP
headers.</li> headers.</li>
<li> <li>
<t>The subsequent sections give guidelines for adding ECN to a <t>The subsequent sections give guidelines for adding congestion notif ication to a
subnet technology that uses feed-forward-and-up mode like IP, but it subnet technology that uses feed-forward-and-up mode like IP, but it
is not so similar to IP that <xref target="RFC6040" format="default"/> rules can be is not so similar to IP that <xref target="RFC6040" format="default"/> rules can be
applied directly. Specifically:</t> applied directly. Specifically:</t>
<ul spacing="normal"> <ul spacing="normal">
<li>Sections <xref format="counter" target="ecnencap_WireProtocolECN <li>Sections <xref format="counter"
Support"/>, <xref format="counter" target="ecnencap_EncapGuidelines"/> and <xref target="ecnencap_WireProtocolECNSupport"/>, <xref format="counter"
format="counter" target="ecnencap_DecapGuidelines"/> target="ecnencap_EncapGuidelines"/>, and <xref format="counter"
respectively address how to add ECN support to the wire protocol target="ecnencap_DecapGuidelines"/> address how to add ECN support
and to the encapsulators and decapsulators at the ingress and to the wire protocol and to the encapsulators and decapsulators at
egress of the subnet.</li> the ingress and egress of the subnet, respectively.</li>
<li> <li>
<xref target="ecnencap_Sequences" format="default"/> deals with th <xref target="ecnencap_Sequences" format="default"/> deals with th
e special, e special
but common, case of sequences of tunnels or subnets that all use but common case of sequences of tunnels or subnets that all use
the same technology</li> the same technology.</li>
<li> <li>
<xref target="ecnencap_Reframing" format="default"/> deals with th e question <xref target="ecnencap_Reframing" format="default"/> deals with th e question
of reframing when IP packets do not map 1:1 into lower layer of reframing when IP packets do not map 1:1 into lower-layer
frames.</li> frames.</li>
</ul> </ul>
</li> </li>
</ul> </ul>
<section anchor="ecnencap_IP-IP_Coupled_Shim_Tunnels" numbered="true" toc= "default"> <section anchor="ecnencap_IP-IP_Coupled_Shim_Tunnels" numbered="true" toc= "default">
<name>IP-in-IP Tunnels with Shim Headers</name> <name>IP-in-IP Tunnels with Shim Headers</name>
<t>A common pattern for many tunnelling protocols is to encapsulate an <t>A common pattern for many tunnelling protocols is to encapsulate an
inner IP header with shim header(s) then an outer IP header. A shim inner IP header with a shim header(s) then an outer IP header. A shim
header is defined as one that is not sufficient alone to forward the header is defined as one that is not sufficient alone to forward the
packet as an outer header. Another common pattern is for a shim to packet as an outer header. Another common pattern is for a shim to
encapsulate a layer 2 (L2) header, which in turn encapsulates (or encapsulate an L2 header, which in turn encapsulates (or
might encapsulate) an IP header. <xref target="I-D.ietf-tsvwg-rfc6040upd might encapsulate) an IP header. <xref target="RFC9601" format="default"
ate-shim" format="default"/> clarifies that RFC 6040 /> clarifies that <xref target="RFC6040"/>
is just as applicable when there are shim(s) and possibly a L2 header is just as applicable when there are shims and even an L2 header
between two IP headers.</t> between two IP headers.</t>
<t>However, it is not always feasible or necessary to propagate ECN <t>However, it is not always feasible or necessary to propagate ECN
between IP headers when separated by a shim. For instance, it might be between IP headers when separated by a shim. For instance, it might be
too costly to dig to arbitrary depths to find an inner IP header, too costly to dig to arbitrary depths to find an inner IP header,
there may be little or no congestion within the tunnel by design (see there may be little or no congestion within the tunnel by design (see
null mode in <xref target="ecnencap_Null" format="default"/> above), or a legacy null mode in <xref target="ecnencap_Null" format="default"/> above), or a legacy
implementation might not support ECN. In cases where a tunnel does not implementation might not support ECN. In cases where a tunnel does not
support ECN, it is important that the ingress does not copy the ECN support ECN, it is important that the ingress does not copy the ECN
field from an inner IP header to an outer. Therefore <xref section="4" t arget="I-D.ietf-tsvwg-rfc6040update-shim" format="default"/> requires network field from an inner IP header to an outer. Therefore <xref section="4" t arget="RFC9601" format="default"/> requires network
operators to configure the ingress of a tunnel that does not support operators to configure the ingress of a tunnel that does not support
ECN so that it zeros the ECN field in the outer IP header.</t> ECN so that it zeros the ECN field in the outer IP header.</t>
<t>Nonetheless, in many cases it is feasible to propagate the ECN <t>Nonetheless, in many cases it is feasible to propagate the ECN
field between IP headers separated by shim header(s) and/or a L2 field between IP headers separated by shim headers and/or an L2
header. Particularly in the typical case when the outer IP header and header. Particularly in the typical case when the outer IP header and
the shim(s) are added (or removed) as part of the same procedure. Even the shim(s) are added (or removed) as part of the same procedure. Even
if the shim(s) encapsulate a L2 header, it is often possible to find if a shim encapsulates an L2 header, it is often possible to find
an inner IP header within the L2 PDU and propagate ECN between that an inner IP header within the L2 PDU and propagate ECN between that
and the outer IP header. This can be thought of as a special case of and the outer IP header. This can be thought of as a special case of
the feed-up-and-forward mode (<xref target="ecnencap_Up" format="default "/>), so the the feed-up-and-forward mode (<xref target="ecnencap_Up" format="default "/>), so the
guidelines for this mode apply (<xref target="ecnencap_Guidelines_Up" fo rmat="default"/>).</t> guidelines for this mode apply (<xref target="ecnencap_Guidelines_Up" fo rmat="default"/>).</t>
<t>Numerous shim protocols have been defined for IP tunnelling. More <t>Numerous shim protocols have been defined for IP tunnelling. More
recent ones e.g. Geneve <xref target="RFC8926" format="default"/> and Ge neric UDP recent ones, e.g., Geneve <xref target="RFC8926" format="default"/> and Generic UDP
Encapsulation (GUE) <xref target="I-D.ietf-intarea-gue" format="default" /> cite and Encapsulation (GUE) <xref target="I-D.ietf-intarea-gue" format="default" /> cite and
follow RFC 6040. And some earlier ones, e.g. CAPWAP <xref target="RFC541 follow <xref target="RFC6040"/>. Some earlier ones, e.g., CAPWAP <xref t
5" format="default"/> and LISP <xref target="RFC9300" format="default"/>, cite R arget="RFC5415" format="default"/> and LISP <xref target="RFC9300" format="defau
FC 3168, lt"/>, cite <xref target="RFC3168"/>,
which is compatible with RFC 6040.</t> which is compatible with <xref target="RFC6040"/>.</t>
<t>However, as <xref section="9.3" target="RFC3168" format="default"/> p ointed out, ECN <t>However, as <xref section="9.3" target="RFC3168" format="default"/> p ointed out, ECN
support needs to be defined for many earlier shim-based tunnelling support needs to be defined for many earlier shim-based tunnelling
protocols, e.g. L2TPv2 <xref target="RFC2661" format="default"/>, L2TPv3 <xref target="RFC3931" format="default"/>, GRE <xref target="RFC2784" format="d efault"/>, PPTP <xref target="RFC2637" format="default"/>, GTP <xref target="GTP v1" format="default"/>, <xref target="GTPv1-U" format="default"/>, <xref target= "GTPv2-C" format="default"/> and Teredo <xref target="RFC4380" format="default"/ > as well as some recent ones, e.g. VXLAN <xref target="RFC7348" format="default "/>, NVGRE <xref target="RFC7637" format="default"/> and NSH <xref target="RFC83 00" format="default"/>.</t> protocols, e.g., L2TPv2 <xref target="RFC2661" format="default"/>, L2TPv 3 <xref target="RFC3931" format="default"/>, GRE <xref target="RFC2784" format=" default"/>, PPTP <xref target="RFC2637" format="default"/>, GTP <xref target="GT Pv1" format="default"/> <xref target="GTPv1-U" format="default"/> <xref target=" GTPv2-C" format="default"/>, and Teredo <xref target="RFC4380" format="default"/ >, as well as some recent ones, e.g., VXLAN <xref target="RFC7348" format="defau lt"/>, NVGRE <xref target="RFC7637" format="default"/>, and NSH <xref target="RF C8300" format="default"/>.</t>
<t>All these IP-based encapsulations can be updated in one shot by <t>All these IP-based encapsulations can be updated in one shot by
simple reference to RFC 6040. However, it would not be appropriate to simple reference to <xref target="RFC6040"/>. However, it would not be a ppropriate to
update all these protocols from within the present guidance document. update all these protocols from within the present guidance document.
Instead a companion specification <xref target="I-D.ietf-tsvwg-rfc6040up Instead, a companion specification <xref target="RFC9601" format="defaul
date-shim" format="default"/> has been prepared that t"/>
has the appropriate standards track status to update standards track has the appropriate Standards Track status to update Standards Track
protocols. For those that are not under IETF change control <xref target protocols. For those that are not under IETF change control <xref target
="I-D.ietf-tsvwg-rfc6040update-shim" format="default"/> can only recommend that ="RFC9601" format="default"/> can only recommend that
the relevant body updates them.</t> the relevant body updates them.</t>
</section> </section>
<section anchor="ecnencap_WireProtocolECNSupport" numbered="true" toc="def ault"> <section anchor="ecnencap_WireProtocolECNSupport" numbered="true" toc="def ault">
<name>Wire Protocol Design: Indication of ECN Support</name> <name>Wire Protocol Design: Indication of ECN Support</name>
<t>This section is intended to guide the redesign of any lower layer <t>This section is intended to guide the redesign of any lower-layer
protocol that encapsulate IP to add native ECN support at the lower protocol that encapsulates IP to add built-in congestion notification su
layer. It reflects the approaches used in <xref target="RFC6040" format= pport at the lower
"default"/> and layer using feed-forward-and-up mode. It reflects the approaches used in
in <xref target="RFC5129" format="default"/>. Therefore IP-in-IP tunnels <xref target="RFC6040" format="default"/> and
or IP-in-MPLS in <xref target="RFC5129" format="default"/>. Therefore, IP-in-IP tunnel
s or IP-in-MPLS
or MPLS-in-MPLS encapsulations that already comply with <xref target="RF C6040" format="default"/> or <xref target="RFC5129" format="default"/> will alre ady satisfy or MPLS-in-MPLS encapsulations that already comply with <xref target="RF C6040" format="default"/> or <xref target="RFC5129" format="default"/> will alre ady satisfy
this guidance.</t> this guidance.</t>
<t>A lower layer (or subnet) congestion notification system:</t> <t>A lower-layer (or subnet) congestion notification system:</t>
<ol spacing="normal" type="1"><li>SHOULD NOT apply explicit congestion n <ol spacing="normal" type="1"><li><bcp14>SHOULD NOT</bcp14> apply explic
otifications to PDUs that it congestion notifications to PDUs that
are destined for legacy layer-4 transport implementations that are destined for legacy layer-4 transport implementations that
will not understand ECN, and</li> will not understand ECN; and</li>
<li anchor="ecnencap_Egress_Check"> <li anchor="ecnencap_Egress_Check">
<t>SHOULD NOT apply explicit <t><bcp14>SHOULD NOT</bcp14> apply explicit congestion notifications
congestion notifications to PDUs if the egress of the subnet might to PDUs if the egress of the subnet might
not propagate congestion notifications onward into the higher not propagate congestion notification onward into the higher
layer.</t> layer.</t>
<t>We use the term ECN-PDUs for a PDU <t>We use the term ECN-PDU for a PDU
on a feedback loop that will propagate congestion notification on a feedback loop that will propagate congestion notification
properly because it meets both the above criteria. And a properly because it meets both the above criteria. Additionally, a
Not-ECN-PDU is a PDU on a feedback loop that does not meet at Not-ECN-PDU is a PDU on a feedback loop that does not meet at
least one of the criteria, and will therefore not propagate least one of the criteria, and therefore will not propagate
congestion notification properly. A corollary of the above is that congestion notification properly. A corollary of the above is that
a lower layer congestion notification protocol:</t> a lower-layer congestion notification protocol:</t>
</li> </li>
<li>SHOULD be able to distinguish ECN-PDUs from Not-ECN-PDUs.</li> <li><bcp14>SHOULD</bcp14> be able to distinguish ECN-PDUs from Not-ECN -PDUs.</li>
</ol> </ol>
<t>Note that there is no need for all interior nodes within a subnet <t>Note that there is no need for all interior nodes within a subnet
to be able to mark congestion explicitly. A mix of ECN and drop to be able to mark congestion explicitly. A mix of drop and explicit con gestion
signals from different nodes is fine. However, if <em>any</em> signals from different nodes is fine. However, if <em>any</em>
interior nodes might generate ECN markings, guideline <xref format="coun interior nodes might generate congestion markings, Guideline <xref forma
ter" target="ecnencap_Egress_Check"/> above says that all t="counter" target="ecnencap_Egress_Check"/> above says that all
relevant egress node(s) SHOULD be able to propagate those markings up relevant egress nodes <bcp14>SHOULD</bcp14> be able to propagate those m
arkings up
to the higher layer.</t> to the higher layer.</t>
<t>In IP, if the ECN field in each PDU is cleared to the Not-ECT (not <t>In IP, if the ECN field in each PDU is cleared to the Not ECN-Capable
ECN-capable transport) codepoint, it indicates that the L4 transport Transport (Not-ECT) codepoint, it indicates that the L4 transport
will not understand congestion markings. A congested buffer must not will not understand congestion markings. A congested buffer must not
mark these Not-ECT PDUs, and therefore has to signal congestion by mark these Not-ECT PDUs; therefore, it has to signal congestion by
increasingly applying drop instead.</t> increasingly applying drop instead.</t>
<t>The mechanism a lower layer uses to distinguish the ECN-capability <t>The mechanism a lower layer uses to distinguish the ECN capability
of PDUs need not mimic that of IP. The above guidelines merely say of PDUs need not mimic that of IP. The above guidelines merely say
that the lower layer system, as a whole, should achieve the same that the lower-layer system as a whole should achieve the same
outcome. For instance, ECN-capable feedback loops might use PDUs that outcome. For instance, ECN-capable feedback loops might use PDUs that
are identified by a particular set of labels or tags. Alternatively, are identified by a particular set of labels or tags. Alternatively,
logical link protocols that use flow state might determine whether a logical-link protocols that use flow state might determine whether a
PDU can be congestion marked by checking for ECN-support in the flow PDU can be congestion marked by checking for ECN support in the flow
state. Other protocols might depend on out-of-band control state. Other protocols might depend on out-of-band control
signals.</t> signals.</t>
<t>The per-domain checking of ECN support in MPLS <xref target="RFC5129" format="default"/> is a good example of a way to avoid sending <t>The per-domain checking of ECN support in MPLS <xref target="RFC5129" format="default"/> is a good example of a way to avoid sending
congestion markings to L4 transports that will not understand them, congestion markings to L4 transports that will not understand them
without using any header space in the subnet protocol.</t> without using any header space in the subnet protocol.</t>
<t>In MPLS, header space is extremely limited, therefore RFC5129 does <t>In MPLS, header space is extremely limited; therefore, <xref target=" RFC5129"/> does
not provide a field in the MPLS header to indicate whether the PDU is not provide a field in the MPLS header to indicate whether the PDU is
an ECN-PDU or a Not-ECN-PDU. Instead, interior nodes in a domain are an ECN-PDU or a Not-ECN-PDU. Instead, interior nodes in a domain are
allowed to set explicit congestion indications without checking allowed to set explicit congestion indications without checking
whether the PDU is destined for a L4 transport that will understand whether the PDU is destined for a L4 transport that will understand
them. Nonetheless, this is made safe by requiring that the network them. Nonetheless, this is made safe by requiring that the network
operator upgrades all decapsulating edges of a whole domain at once, operator upgrades all decapsulating edges of a whole domain at once
as soon as even one switch within the domain is configured to mark as soon as even one switch within the domain is configured to mark
rather than drop some PDUs during congestion. Therefore, any edge node t hat rather than drop some PDUs during congestion. Therefore, any edge node t hat
might decapsulate a packet will be capable of checking whether the might decapsulate a packet will be capable of checking whether the
higher layer transport is ECN-capable. When decapsulating a CE-marked higher-layer transport is ECN-capable.
<!-- May we rephrase the following sentence for a better flow of the text?
Original:
When decapsulating a CE-marked packet, if the decapsulator discovers
that the higher layer (inner header) indicates the transport is not ECN-
capable, it drops the packet — effectively on behalf of the earlier congested
node (see Decapsulation Guideline 1 in Section 4.4).
Perhaps:
If the decapsulator discovers that the higher layer (inner header)
indicates the transport is not ECN-capable when decapsulating a CE-marked
packet, it effectively drops the packet on behalf of the earlier congested
node (see Decapsulation Guideline 1 in Section 4.4).
-->
When decapsulating a CE-marked
packet, if the decapsulator discovers that the higher layer (inner packet, if the decapsulator discovers that the higher layer (inner
header) indicates the transport is not ECN-capable, it drops the header) indicates the transport is not ECN-capable, it drops the
packet &mdash; effectively on behalf of the earlier congested node packet -- effectively on behalf of the earlier congested node
(see Decapsulation Guideline <xref format="counter" target="ecnencap_dro pNot-ECTinnerCEouter"/> in <xref target="ecnencap_DecapGuidelines" format="defau lt"/>).</t> (see Decapsulation Guideline <xref format="counter" target="ecnencap_dro pNot-ECTinnerCEouter"/> in <xref target="ecnencap_DecapGuidelines" format="defau lt"/>).</t>
<t>It was only appropriate to define such an incremental deployment <t>It was only appropriate to define such an incremental deployment
strategy because MPLS is targeted solely at professional operators, strategy because MPLS is targeted solely at professional operators
who can be expected to ensure that a whole subnetwork is consistently who can be expected to ensure that a whole subnetwork is consistently
configured. This strategy might not be appropriate for other link configured. This strategy might not be appropriate for other link
technologies targeted at zero-configuration deployment or deployment technologies targeted at zero-configuration deployment or deployment
by the general public (e.g. Ethernet). For such 'plug-and-play' by the general public (e.g., Ethernet). For such 'plug-and-play'
environments it will be necessary to invent a failsafe approach that environments, it will be necessary to invent a fail-safe approach that
ensures congestion markings will never fall into black holes, no ensures congestion markings will never fall into black holes, no
matter how inconsistently a system is put together. Alternatively, matter how inconsistently a system is put together.
Alternatively,
congestion notification relying on correct system configuration could congestion notification relying on correct system configuration could
be confined to flavours of Ethernet intended only for professional be confined to flavours of Ethernet intended only for professional
network operators, such as Provider Backbone Bridges (PBB <xref target=" network operators, such as Provider Backbone Bridges (PBB) (<xref target
IEEE802.1Q" format="default"/>; previously 802.1ah).</t> ="IEEE802.1Q" format="default"/>; previously 802.1ah).</t>
<t>ECN support in TRILL <xref target="I-D.ietf-trill-ecn-support" format <t>ECN support in TRansparent Interconnection of Lots of Links (TRILL) <
="default"/> xref target="RFC9600" format="default"/>
provides a good example of how to add ECN to a lower layer protocol provides a good example of how to add congestion notification to a lower
-layer protocol
without relying on careful and consistent operator configuration. without relying on careful and consistent operator configuration.
TRILL provides an extension header word with space for flags of TRILL provides an extension header word with space for flags of
different categories depending on whether logic to understand the different categories depending on whether logic to understand the
extension is critical. The congestion experienced marking has been extension is critical. The congestion-experienced marking has been
defined as a 'critical ingress-to-egress' flag. So if a transit defined as a 'critical ingress-to-egress' flag. So, if a transit
RBridge sets this flag on a frame and an egress RBridge does not have an y logic RBridge sets this flag on a frame and an egress RBridge does not have an y logic
to process it, it will drop it; which is the desired default action to process it, the egress RBridge will drop the frame, which is the desi
anyway. Therefore TRILL RBridges can be updated with support for ECN red default action
anyway. Therefore, TRILL RBridges can be updated with support for conges
tion notification
in no particular order and, at the egress of the TRILL campus, in no particular order and, at the egress of the TRILL campus,
congestion notification will be propagated to IP as ECN whenever ECN congestion notification will be propagated to IP as ECN whenever ECN
logic has been implemented at the egress, or as drop otherwise.</t> logic has been implemented at the egress, or as drop otherwise.</t>
<t>QCN <xref target="IEEE802.1Q" format="default"/> is not intended to e <t>QCN <xref target="IEEE802.1Q" format="default"/> is not intended to
xtend beyond a extend beyond a single subnet or interoperate with
single subnet, or to interoperate with ECN. Nonetheless, the way QCN IP-ECN. Nonetheless, the way QCN indicates to lower-layer devices that
indicates to lower layer devices that the end-points will not the endpoints will not understand QCN provides another example that a
understand QCN provides another example that a lower layer protocol lower-layer protocol designer might be able to mimic for their
designer might be able to mimic for their scenario. An operator can scenario. An operator can define certain Priority Code Points (PCPs
define certain Priority Code Points (PCPs <xref target="IEEE802.1Q" form <xref target="IEEE802.1Q" format="default"/>; previously 802.1p) to
at="default"/>; indicate non-QCN frames. Then an ingress bridge has to map each
previously 802.1p) to indicate non-QCN frames and an ingress bridge is arriving not-QCN-capable IP packet to one of these non-QCN PCPs.</t>
required to map arriving not-QCN-capable IP packets to one of these
non-QCN PCPs.</t>
<t>When drop for non-ECN traffic is deferred to the egress of a subnet, <t>When drop for non-ECN traffic is deferred to the egress of a subnet,
it cannot necessarily be assumed that one ECN mark is equivalent to one it cannot necessarily be assumed that one congestion mark is equivalent to one
drop, as was originally required by <xref target="RFC3168" format="defau lt"/>. drop, as was originally required by <xref target="RFC3168" format="defau lt"/>.
<xref target="RFC8311" format="default"/> updated RFC&nbsp;3168, to allo w <xref target="RFC8311" format="default"/> updated <xref target="RFC3168" /> to allow
experimentation with congestion markings that are not equivalent to drop , experimentation with congestion markings that are not equivalent to drop ,
in particular for L4S <xref target="RFC9331" format="default"/>. ECN particularly for L4S <xref target="RFC9331" format="default"/>. ECN
support in TRILL <xref target="I-D.ietf-trill-ecn-support" format="defau support in TRILL <xref target="RFC9600" format="default"/>
lt"/>
is a good example of a way to defer drop to the egress of a subnet both is a good example of a way to defer drop to the egress of a subnet both
when marks are equivalent to drops (as in RFC&nbsp;3168) and when they when marks are equivalent to drops (as in <xref target="RFC3168"/>) and when they
are not (as in L4S). The ECN scheme for MPLS <xref target="RFC5129" form at="default"/> are not (as in L4S). The ECN scheme for MPLS <xref target="RFC5129" form at="default"/>
was defined before L4S, so it only currently supports deferred drop that was defined before L4S, so it only currently supports deferred drop that
is equivalent to ECN-marking. Nonetheless, in principle, MPLS is equivalent to ECN marking. Nonetheless, in principle, MPLS
(and potentially future L2 protocols) could support L4S marking and copy (and potentially future L2 protocols) could support L4S marking by copyi
TRILL's approach for determining the ng TRILL's approach for determining the
drop level of any non-ECN traffic at the subnet egress.</t> drop level of any non-ECN traffic at the subnet egress.</t>
</section> </section>
<section anchor="ecnencap_EncapGuidelines" numbered="true" toc="default"> <section anchor="ecnencap_EncapGuidelines" numbered="true" toc="default">
<name>Encapsulation Guidelines</name> <name>Encapsulation Guidelines</name>
<t>This section is intended to guide the redesign of any node that <t>This section is intended to guide the redesign of any node that
encapsulates IP with a lower layer header when adding native ECN encapsulates IP with a lower-layer header when adding built-in congestio
support to the lower layer protocol. It reflects the approaches used n notification
in <xref target="RFC6040" format="default"/> and in <xref target="RFC512 support to the lower-layer protocol using feed-forward-and-up mode. It r
9" format="default"/>. Therefore eflects the approaches used
in <xref target="RFC6040" format="default"/> and <xref target="RFC5129"
format="default"/>. Therefore,
IP-in-IP tunnels or IP-in-MPLS or MPLS-in-MPLS encapsulations that IP-in-IP tunnels or IP-in-MPLS or MPLS-in-MPLS encapsulations that
already comply with <xref target="RFC6040" format="default"/> or <xref t arget="RFC5129" format="default"/> will already satisfy this guidance.</t> already comply with <xref target="RFC6040" format="default"/> or <xref t arget="RFC5129" format="default"/> will already satisfy this guidance.</t>
<ol spacing="normal" type="1"><li> <ol spacing="normal" type="1"><li>
<t>Egress Capability Check: A subnet ingress needs to be sure that <t>Egress Capability Check: A subnet ingress needs to be sure that
the corresponding egress of a subnet will propagate any congestion the corresponding egress of a subnet will propagate any congestion
notification added to the outer header across the subnet. This is notification added to the outer header across the subnet. This is
necessary in addition to checking that an incoming PDU indicates necessary in addition to checking that an incoming PDU indicates
an ECN-capable (L4) transport. Examples of how this guarantee an ECN-capable (L4) transport. Examples of how this guarantee
might be provided include:</t> might be provided include:</t>
<ul spacing="normal"> <ul spacing="normal">
<li>by configuration (e.g. if any label switches in a domain <li>by configuration (e.g., if any label switch in a domain
support ECN marking, <xref target="RFC5129" format="default"/> r supports congestion marking, <xref target="RFC5129" format="defa
equires all ult"/> requires all
egress nodes to have been configured to propagate ECN)</li> egress nodes to have been configured to propagate ECN).</li>
<li>by the ingress explicitly checking that the egress <li>by the ingress explicitly checking that the egress
propagates ECN (e.g. an early attempt to add ECN support to propagates ECN (e.g., an early attempt to add ECN support to
TRILL used IS-IS to check path capabilities before adding ECN TRILL used IS-IS to check path capabilities before adding ECN
extension flags to each frame <xref target="RFC7780" format="def ault"/>).</li> extension flags to each frame <xref target="RFC7780" format="def ault"/>).</li>
<li>by inherent design of the protocol (e.g. by encoding ECN <li>by inherent design of the protocol (e.g., by encoding congesti on
marking on the outer header in such a way that a legacy egress marking on the outer header in such a way that a legacy egress
that does not understand ECN will consider the PDU corrupt or that does not understand ECN will consider the PDU corrupt or
invalid and discard it, thus at least propagating a form of invalid and discard it; thus, at least propagating a form of
congestion signal).</li> congestion signal).</li>
</ul> </ul>
</li> </li>
<li>Egress Fails Capability Check: If the ingress cannot guarantee <li>Egress Fails Capability Check: If the ingress cannot guarantee
that the egress will propagate congestion notification, the that the egress will propagate congestion notification, the
ingress SHOULD disable ECN at the lower layer when it forwards the ingress <bcp14>SHOULD</bcp14> disable congestion notification at the
PDU. An example of how the ingress might disable ECN at the lower lower layer when it forwards the
PDU. An example of how the ingress might disable congestion notifica
tion at the lower
layer would be by setting the outer header of the PDU to identify layer would be by setting the outer header of the PDU to identify
it as a Not-ECN-PDU, assuming the subnet technology supports such it as a Not-ECN-PDU, assuming the subnet technology supports such
a concept.</li> a concept.</li>
<li anchor="ecnencap_Encap_Copy"> <li anchor="ecnencap_Encap_Copy">
<t>Standard Congestion Monitoring <t>Standard Congestion Monitoring
Baseline: Once the ingress to a subnet has established that the Baseline: Once the ingress to a subnet has established that the
egress will correctly propagate ECN, on encapsulation it SHOULD egress will correctly propagate ECN, on encapsulation, it <bcp14>SHO ULD</bcp14>
encode the same level of congestion in outer headers as is encode the same level of congestion in outer headers as is
arriving in incoming headers. For example, it might copy any arriving in incoming headers. For example, it might copy any
incoming congestion notification into the outer header of the incoming congestion notifications into the outer header of the
lower layer protocol.</t> lower-layer protocol.</t>
<t>This ensures that <t>This ensures that
bulk congestion monitoring of outer headers (e.g. by a network bulk congestion monitoring of outer headers (e.g., by a network
management node monitoring ECN in passing frames) will measure management node monitoring congestion markings in passing frames) wi
congestion accumulated along the whole upstream path &mdash; startin ll measure
g from the congestion accumulated along the whole upstream path, starting from
Load Regulator not just starting from the ingress of the subnet. A n the
ode Load Regulator and not just starting from the ingress of the subnet.
that is not the Load Regulator SHOULD NOT re-initialize the level A node
of CE markings in the outer to zero. </t> that is not the Load Regulator <bcp14>SHOULD NOT</bcp14> re-initiali
ze the level
of CE markings in the outer header to zero. </t>
<t>It <t>It
would still also be possible to measure congestion introduced would still also be possible to measure congestion introduced
across one subnet (or tunnel) by subtracting the level of CE across one subnet (or tunnel) by subtracting the level of CE
markings on inner headers from that on outer headers (see Appendix markings on inner headers from that on outer headers (see <xref targ
C of <xref target="RFC6040" format="default"/>). For example:</t> et="RFC6040" sectionFormat="of" section="C"/>). For example:</t>
<ul spacing="normal"> <ul spacing="normal">
<li>If this guideline has been followed and if the level of CE <li>If this guideline has been followed and if the level of CE
markings is 0.4% on the outer and 0.1% on the inner, 0.4% markings is 0.4% on the outer header and 0.1% on the inner heade r, 0.4%
congestion has been introduced across all the networks since congestion has been introduced across all the networks since
the load regulator, and 0.3% (= 0.4% - 0.1%) has been the Load Regulator, and 0.3% (= 0.4% - 0.1%) has been
introduced since the ingress to the current subnet (or introduced since the ingress to the current subnet (or
tunnel);</li> tunnel).</li>
<li>Without this guideline, if the subnet ingress had <li>Without this guideline, if the subnet ingress had
re-initialized the outer congestion level to zero, the outer re-initialized the outer congestion level to zero, the outer
and inner would measure 0.1% and 0.3%. It would still be and inner headers would measure 0.1% and 0.3%. It would still be
possible to infer that the congestion introduced since the possible to infer that the congestion introduced since the
Load Regulator was 0.4% (= 0.1% + 0.3%). But only if the Load Regulator was 0.4% (= 0.1% + 0.3%), but only if the
monitoring system somehow knows whether the subnet ingress monitoring system somehow knows whether the subnet ingress
re-initialized the congestion level.</li> re-initialized the congestion level.</li>
</ul> </ul>
<t>As long as subnet and tunnel technologies use the <t>As long as subnet and tunnel technologies use the
standard congestion monitoring baseline in this guideline, standard congestion monitoring baseline in this guideline,
monitoring systems will know to use the former approach, rather monitoring systems will know to use the former approach rather
than having to "somehow know" which approach to use.<!--{If required than having to 'somehow know' which approach to use.
, an example can be given of where it would be appropriate to contradict this SH
OULD.
It may be safe to assume a subnetwork technology will not span a trust boundary.
Especially if copy on encap is not desirable, e.g. if using Floyd's 1-bit MPLS s
cheme.}
</t> </t>
</li> </li>
</ol> </ol>
</section> </section>
<section anchor="ecnencap_DecapGuidelines" numbered="true" toc="default"> <section anchor="ecnencap_DecapGuidelines" numbered="true" toc="default">
<name>Decapsulation Guidelines</name> <name>Decapsulation Guidelines</name>
<t>This section is intended to guide the redesign of any node that <t>This section is intended to guide the redesign of any node that
decapsulates IP from within a lower layer header when adding native decapsulates IP from within a lower-layer header when adding built-in
ECN support to the lower layer protocol. It reflects the approaches congestion notification support to the lower-layer protocol using feed-f
orward-and-up mode. It reflects the approaches
used in <xref target="RFC6040" format="default"/> and in <xref target="R FC5129" format="default"/>. used in <xref target="RFC6040" format="default"/> and in <xref target="R FC5129" format="default"/>.
Therefore IP-in-IP tunnels or IP-in-MPLS or MPLS-in-MPLS Therefore, IP-in-IP tunnels or IP-in-MPLS or MPLS-in-MPLS
encapsulations that already comply with <xref target="RFC6040" format="d efault"/> or encapsulations that already comply with <xref target="RFC6040" format="d efault"/> or
<xref target="RFC5129" format="default"/> will already satisfy this guid ance.</t> <xref target="RFC5129" format="default"/> will already satisfy this guid ance.</t>
<t>A subnet egress SHOULD NOT simply copy congestion notification from <t>A subnet egress <bcp14>SHOULD NOT</bcp14> simply copy congestion noti
outer headers to the forwarded header. It SHOULD calculate the fications from
outer headers to the forwarded header. It <bcp14>SHOULD</bcp14> calculat
e the
outgoing congestion notification field from the inner and outer outgoing congestion notification field from the inner and outer
headers using the following guidelines. If there is any conflict, headers using the following guidelines. If there is any conflict,
rules earlier in the list take precedence over rules later in the rules earlier in the list take precedence over rules later in the
list:</t> list.</t>
<ol spacing="normal" type="1"><li anchor="ecnencap_dropNot-ECTinnerCEout er"> <ol spacing="normal" type="1"><li anchor="ecnencap_dropNot-ECTinnerCEout er">
<t>If the arriving inner <t>If the arriving inner
header is a Not-ECN-PDU it implies the L4 transport will not header is a Not-ECN-PDU, it implies the L4 transport will not
understand explicit congestion markings. Then:</t> understand explicit congestion markings. Then:</t>
<ul spacing="normal"> <ul spacing="normal">
<li>If the outer header carries an explicit congestion marking, <li>If the outer header carries an explicit congestion marking,
it is likely that a protocol error has occurred, so drop is the only indication of congestion that the L4 it is likely that a protocol error has occurred, so drop is the only indication of congestion that the L4
transport will understand. If the congestion marking is the transport will understand.
most severe possible, the packet MUST be dropped. However, if If the outer congestion marking is the
congestion can be marked with multiple levels of severity and most severe possible, the packet <bcp14>MUST</bcp14> be dropped.
the packet's marking is not the most severe, this requirement
can be relaxed to: the packet SHOULD be dropped.</li> However, if congestion can be marked with multiple levels of severity and the
packet's outer marking is not the most severe, this requirement can be relaxed t
o:
the packet <bcp14>SHOULD</bcp14> be dropped.</li>
<li>If the outer is an ECN-PDU that carries no indication of <li>If the outer is an ECN-PDU that carries no indication of
congestion or a Not-ECN-PDU the PDU SHOULD be forwarded, but congestion or a Not-ECN-PDU the PDU <bcp14>SHOULD</bcp14> be for warded, but
still as a Not-ECN-PDU.</li> still as a Not-ECN-PDU.</li>
</ul> </ul>
</li> </li>
<li>If the outer header does not support explicit congestion <li>If the outer header does not support congestion notification (a No
notification (a Not-ECN-PDU), but the inner header does (an t-ECN-PDU), but the inner header does (an
ECN-PDU), the inner header SHOULD be forwarded unchanged.</li> ECN-PDU), the inner header <bcp14>SHOULD</bcp14> be forwarded unchan
<li>In some lower layer protocols congestion may be signalled as a ged.</li>
numerical level, such as in the control frames of quantized <li>In some lower-layer protocols, congestion may be signalled as a
congestion notification (QCN <xref target="IEEE802.1Q" format="defau numerical level, such as in the control frames of QCN <xref target="
lt"/>). If such IEEE802.1Q" format="default"/>. If such
a multi-bit encoding encapsulates an ECN-capable IP data packet, a a multi-bit encoding encapsulates an ECN-capable IP data packet, a
function will be needed to convert the quantized congestion level function will be needed to convert the quantized congestion level
into the frequency of congestion markings in outgoing IP into the frequency of congestion markings in outgoing IP
packets.</li> packets.</li>
<li> <li>
<t>Congestion indications might be encoded by a severity level. <t>Congestion indications might be encoded by a severity level.
For instance increasing levels of congestion might be encoded by For instance, increasing levels of congestion might be encoded by
numerically increasing indications, e.g. pre-congestion numerically increasing indications, e.g., PCN can be encoded in each
notification (PCN) can be encoded in each PDU at three severity PDU at three severity
levels in IP or MPLS <xref target="RFC6660" format="default"/> and t he default levels in IP or MPLS <xref target="RFC6660" format="default"/> and t he default
encapsulation and decapsulation rules <xref target="RFC6040" format= "default"/> are encapsulation and decapsulation rules <xref target="RFC6040" format= "default"/> are
compatible with this interpretation of the ECN field. </t> compatible with this interpretation of the ECN field. </t>
<t>If the arriving inner header is an ECN-PDU, where <t>If the arriving inner header is an ECN-PDU, where
the inner and outer headers carry indications of congestion of the inner and outer headers carry indications of congestion of
different severity, the more severe indication SHOULD be forwarded different severity, the more severe indication <bcp14>SHOULD</bcp14> be forwarded
in preference to the less severe.</t> in preference to the less severe.</t>
</li> </li>
<li> <li>
<t>The inner and outer headers might carry a combination of <t>The inner and outer headers might carry a combination of
congestion notification fields that should not be possible given congestion notification fields that should not be possible given
any currently used protocol transitions. For instance, if any currently used protocol transitions. For instance, if
Encapsulation Guideline <xref format="counter" target="ecnencap_Enca p_Copy"/> in <xref target="ecnencap_EncapGuidelines" format="default"/> had been followed, it should Encapsulation Guideline <xref format="counter" target="ecnencap_Enca p_Copy"/> in <xref target="ecnencap_EncapGuidelines" format="default"/> had been followed, it should
not be possible to have a less severe indication of congestion in not be possible to have a less severe indication of congestion in
the outer than in the inner. It MAY be appropriate to log the outer header than in the inner header. It <bcp14>MAY</bcp14> be appropriate to log
unexpected combinations of headers and possibly raise an alarm. unexpected combinations of headers and possibly raise an alarm.
</t> </t>
<t>If a safe outgoing codepoint can be <t>If a safe outgoing codepoint can be
defined for such a PDU, the PDU SHOULD be forwarded rather than defined for such a PDU, the PDU <bcp14>SHOULD</bcp14> be forwarded r ather than
dropped. Some implementers discard PDUs with currently unused dropped. Some implementers discard PDUs with currently unused
combinations of headers just in case they represent an attack. combinations of headers just in case they represent an attack.
However, an approach using alarms and policy-mediated drop is However, an approach using alarms and policy-mediated drop is
preferable to hard-coded drop, so that operators can keep track of preferable to hard-coded drop so that operators can keep track of
possible attacks but currently unused combinations are not possible attacks, but currently unused combinations are not
precluded from future use through new standards actions.</t> precluded from future use through new standards actions.</t>
</li> </li>
</ol> </ol>
</section> </section>
<section anchor="ecnencap_Sequences" numbered="true" toc="default"> <section anchor="ecnencap_Sequences" numbered="true" toc="default">
<name>Sequences of Similar Tunnels or Subnets</name> <name>Sequences of Similar Tunnels or Subnets</name>
<t>In some deployments, particularly in 3GPP networks, an IP packet <t>In some deployments, particularly in 3GPP networks, an IP packet
may traverse two or more IP-in-IP tunnels in sequence that all use may traverse two or more IP-in-IP tunnels in sequence that all use
identical technology (e.g. GTP).</t> identical technology (e.g., GTP).</t>
<t>In such cases, it would be sufficient for every encapsulation and <t>In such cases, it would be sufficient for every encapsulation and
decapsulation in the chain to comply with RFC 6040. Alternatively, as decapsulation in the chain to comply with <xref
an optimisation, a node that decapsulates a packet and immediately target="RFC6040"/>.
re-encapsulates it for the next tunnel MAY copy the incoming outer ECN Alternatively, as an optimization, a node that
field directly to the outgoing outer and the incoming inner ECN field decapsulates a packet and immediately re-encapsulates it for the next
directly to the outgoing inner. Then the overall behavior across the tunnel <bcp14>MAY</bcp14> copy the incoming outer ECN field directly
sequence of tunnel segments would still be consistent with RFC to the outgoing outer header and the incoming inner ECN field directly t
6040.</t> o the
<t>Appendix C of RFC6040 describes how a tunnel egress can monitor how outgoing inner header. Then, the overall behaviour across the sequence o
f
tunnel segments would still be consistent with <xref target="RFC6040"/>.
</t>
<t><xref target="RFC6040" sectionFormat="of" section="C"/> describes how
a tunnel egress can monitor how
much congestion has been introduced within a tunnel. A network much congestion has been introduced within a tunnel. A network
operator might want to monitor how much congestion had been introduced operator might want to monitor how much congestion had been introduced
within a whole sequence of tunnels. Using the technique in Appendix C within a whole sequence of tunnels. Using the technique in
of RFC6040 at the final egress, the operator could monitor the whole <xref target="RFC6040" sectionFormat="of" section="C"/> at the final egr
sequence of tunnels, but only if the above optimisation were used ess, the operator could monitor the whole
sequence of tunnels, but only if the above optimization were used
consistently along the sequence of tunnels, in order to make it appear consistently along the sequence of tunnels, in order to make it appear
as a single tunnel. Therefore, tunnel endpoint implementations SHOULD as a single tunnel. Therefore, tunnel endpoint implementations <bcp14>SH
allow the operator to configure whether this optimisation is OULD</bcp14>
allow the operator to configure whether this optimization is
enabled.</t> enabled.</t>
<t>When ECN support is added to a subnet technology, consideration <t>When congestion notification support is added to a subnet technology,
SHOULD be given to a similar optimisation between subnets in sequence consideration
<bcp14>SHOULD</bcp14> be given to a similar optimization between subnets
in sequence
if they all use the same technology.</t> if they all use the same technology.</t>
</section> </section>
<section anchor="ecnencap_Reframing" numbered="true" toc="default"> <section anchor="ecnencap_Reframing" numbered="true" toc="default">
<name>Reframing and Congestion Markings</name> <name>Reframing and Congestion Markings</name>
<t>The guidance in this section is worded in terms of framing <t>The guidance in this section is worded in terms of framing
boundaries, but it applies equally whether the protocol data units are boundaries, but it applies equally whether the PDUs are
frames, cells or packets.</t> frames, cells, or packets.</t>
<t>Where an AQM marks the ECN field of IP packets as they queue into a <t>Where an AQM marks the ECN field of IP packets as they queue into a
layer-2 link, there will be no problem with framing boundaries, Layer 2 link, there will be no problem with framing boundaries
because the ECN markings would be applied directly to IP packets. The because the ECN markings would be applied directly to IP packets. The
guidance in this section is only applicable where an ECN capability is guidance in this section is only applicable where a congestion notificat
being added to a layer-2 protocol so that layer-2 frames can be ion capability is
ECN-marked by an AQM at layer-2. This would only be necessary where being added to a Layer 2 protocol so that Layer 2 frames can be
AQM will be applied at pure layer-2 nodes (without IP-awareness).</t> marked by an AQM at layer 2. This would only be necessary where
<t>Where ECN marking has had to be applied at non-IP-aware nodes and AQM will be applied at pure Layer 2 nodes (without IP awareness).</t>
<t>Where congestion marking has had to be applied at non-IP-aware nodes
and
framing boundaries do not necessarily align with packet boundaries, framing boundaries do not necessarily align with packet boundaries,
the decapsulating IP forwarding node SHOULD propagate ECN markings the decapsulating IP forwarding node <bcp14>SHOULD</bcp14> propagate con
from layer-2 frame headers to IP packets that may have different gestion markings
from Layer 2 frame headers to IP packets that may have different
boundaries as a consequence of reframing.</t> boundaries as a consequence of reframing.</t>
<t>Two possible design goals for propagating congestion indications, <t>Two possible design goals for propagating congestion indications,
described in <xref section="5.3" target="RFC3168" format="default"/> and described in <xref section="5.3" target="RFC3168" format="default"/>
<xref section="2.4" target="RFC7141" format="default"/>, are:</t> and <xref section="2.4" target="RFC7141" format="default"/>, are:</t>
<ol spacing="normal" type="1"><li anchor="ecnencap_reframing_goal_presen <ol spacing="normal" type="1"><li
ce">approximate anchor="ecnencap_reframing_goal_presence">approximate preservation of
preservation of the presence (and therefore timing) of congestion the presence (and therefore timing) of congestion marks on the L2
marks on the L2 frames used to construct an IP packet;</li> frames used to construct an IP packet;</li>
<li anchor="ecnencap_reframing_goal_proportion"> <li anchor="ecnencap_reframing_goal_proportion">
<ol spacing="normal" type="a"><li>at high frequency of congestion ma <ol spacing="normal" type="a"><li><t>at high frequency of congestion
rking, approximate marking, approximate preservation of the proportion of congestion
preservation of the proportion of congestion marks arriving marks arriving and departing;</t></li>
and departing;</li> <li><t>at low frequency of congestion
<li>at low frequency of congestion marking, approximate marking, approximate preservation of the timing of congestion
preservation of the timing of congestion marks arriving and marks arriving and departing.</t></li>
departing.</li>
</ol> </ol>
</li> </li>
</ol> </ol>
<t>In either case, an implementation SHOULD ensure that any new <t>In either case, an implementation <bcp14>SHOULD</bcp14> ensure that
incoming congestion indication is propagated immediately, not held any new incoming congestion indication is propagated immediately; not
awaiting the possibility of further congestion indications to be held awaiting the possibility of further congestion indications to be
sufficient to indicate congestion on an outgoing PDU <xref target="RFC71 sufficient to indicate congestion on an outgoing PDU <xref
41" format="default"/>. Nonetheless, to facilitate pipelined target="RFC7141" format="default"/>. Nonetheless, to facilitate
implementation, it would be acceptable for congestion marks to pipelined implementation, it would be acceptable for congestion marks
propagate to a slightly later IP packet.</t> to propagate to a slightly later IP packet.</t>
<t>At decapsulation in either case:</t> <t>
<ul spacing="normal"> At decapsulation in either case:</t>
<li>ECN marking propagation logically occurs before application of <ul><li>ECN-marking propagation logically occurs
Decapsulation Guideline <xref format="counter" target="ecnencap_drop before application of Decapsulation Guideline <xref format="counter"
Not-ECTinnerCEouter"/> in <xref target="ecnencap_DecapGuidelines" format="defaul target="ecnencap_dropNot-ECTinnerCEouter"/> in <xref
t"/>. For instance, if ECN marking target="ecnencap_DecapGuidelines" format="default"/>.
For instance, if ECN-marking
propagation would cause an ECN congestion indication to be applied propagation would cause an ECN congestion indication to be applied
to an IP packet that is a Not-ECN-PDU, then that IP packet is to an IP packet that is a Not-ECN-PDU, then that IP packet is
dropped in accordance with Guideline <xref format="counter" target=" dropped in accordance with Guideline <xref format="counter" target="
ecnencap_dropNot-ECTinnerCEouter"/>;</li> ecnencap_dropNot-ECTinnerCEouter"/>.</li>
<li>where a mix of ECN-PDUs and non-ECN-PDUs arrives to construct the <li>Where a mix of ECN-PDUs and non-ECN-PDUs arrives to construct the
same same
IP packet, the decapsulation spec SHOULD require that packet to IP packet, the decapsulation specification <bcp14>SHOULD</bcp14> req
uire that packet to
be discarded.</li> be discarded.</li>
<li>where a mix of different types of ECN-PDUs arrives to construct th <li>Where a mix of different types of ECN-PDUs arrives to construct th
e e
same IP packet, e.g.&nbsp;a mix of frames that map to ECT(0) and ECT same IP packet, e.g., a mix of frames that map to ECT(0) and ECT(1)
(1) IP packets, IP packets,
the decapsulation spec might consider this a protocol error. But, if the decapsulation specification might consider this a protocol error
the lower layer protocol has defined such a mix of types of ECN-PDU . But, if
as valid, it SHOULD the lower-layer protocol has defined such a mix of types of ECN-PDU
as valid, it <bcp14>SHOULD</bcp14>
require the resulting IP packet to be set to either ECT(0) or ECT(1) . require the resulting IP packet to be set to either ECT(0) or ECT(1) .
In this case, it SHOULD take into account that the RFC series has so In this case, it <bcp14>SHOULD</bcp14> take into account that the RF C Series has so
far allowed ECT(0) and ECT(1) to be considered far allowed ECT(0) and ECT(1) to be considered
equivalent <xref target="RFC3168" format="default"/>, or ECT(1) can equivalent <xref target="RFC3168" format="default"/>; or ECT(1) can
provide a less severe congestion marking provide a less severe congestion marking
than CE <xref target="RFC6040" format="default"/>, or ECT(1) can than CE <xref target="RFC6040" format="default"/>; or ECT(1) can
indicate an unmarked but ECN-capable packet that is subject to a indicate an unmarked but ECN-capable packet that is subject to a
different marking algorithm to ECT(0) packets, for example L4S different marking algorithm to ECT(0) packets, e.g., L4S
<xref target="RFC8311" format="default"/> <xref target="RFC9331" for <xref target="RFC8311" format="default"/> <xref target="RFC9331" for
mat="default"/>.</li> mat="default"/>.</li></ul>
</ul>
<t>The following are two ways that goal <xref format="counter" target="e cnencap_reframing_goal_presence"/> might be achieved, but <t>The following are two ways that goal <xref format="counter" target="e cnencap_reframing_goal_presence"/> might be achieved, but
they are not intended to be the only ways:</t> they are not intended to be the only ways:</t>
<ul spacing="normal"> <ul spacing="normal">
<li>Every IP PDU that is constructed, in whole or in part, from an <li>Every IP PDU that is constructed, in whole or in part, from an
L2 frame that is marked with a congestion signal, has that signal L2 frame that is marked with a congestion signal has that signal
propagated to it;</li> propagated to it.</li>
<li>Every L2 frame that is marked with a congestion signal, <li>Every L2 frame that is marked with a congestion signal
propagates that signal to one IP PDU which is constructed, in propagates that signal to one IP PDU that is constructed from it in
whole or in part, from it. If multiple IP PDUs meet this whole or in part. If multiple IP PDUs meet this
description, the choice can be made arbitrarily but ought to be description, the choice can be made arbitrarily but ought to be
consistent.</li> consistent.</li>
</ul> </ul>
<t>The following gives one way that goal <xref format="counter" target=" ecnencap_reframing_goal_proportion"/> might be achieved, but <t>The following gives one way that goal <xref format="counter" target=" ecnencap_reframing_goal_proportion"/> might be achieved, but
it is not intended to be the only way:</t> it is not intended to be the only way:</t>
<ul spacing="normal"> <ul spacing="normal">
<li>For each of the streams of frames that encapsulate the IP packets of <li>For each of the streams of frames that encapsulate the IP packets of
each IP-ECN codepoint and follow the same path through the subnet, each IP-ECN codepoint and follow the same path through the subnet,
a counter ('in') tracks octets arriving a counter ('in') tracks octets arriving
within the payload of marked L2 frames and another ('out') tracks within the payload of marked L2 frames and another ('out') tracks
octets departing in marked IP packets. While 'in' exceeds 'out', octets departing in marked IP packets. While 'in' exceeds 'out',
forwarded IP packets are ECN-marked. If 'out' exceeds 'in' for forwarded IP packets are ECN-marked. If 'out' exceeds 'in' for
longer than a timeout, both counters are zeroed, to ensure that longer than a timeout, both counters are zeroed to ensure that
the start of the next congestion episode propagates immediately. the start of the next congestion episode propagates immediately.
The 'out' counter includes octets in reconstructed IP packets that The 'out' counter includes octets in reconstructed IP packets that
would have been marked, but had to be dropped because they were would have been marked, but had to be dropped because they were
Not-ECN-PDUs (by Decapsulation Guideline <xref format="counter" targ et="ecnencap_dropNot-ECTinnerCEouter"/> in <xref target="ecnencap_DecapGuideline s" format="default"/>).</li> Not-ECN-PDUs (by Decapsulation Guideline <xref format="counter" targ et="ecnencap_dropNot-ECTinnerCEouter"/> in <xref target="ecnencap_DecapGuideline s" format="default"/>).</li>
</ul> </ul>
<t>Generally, the number of L2 frames may be higher (e.g. ATM), <t>Generally, relative to the number of IP PDUs, the number of L2 frames
similar to, or lower (e.g. 802.11 aggregation at a L2-only station) may be higher (e.g., ATM),
than the number of IP PDUs, and this distinction may influence the roughly the same, or lower (e.g., 802.11 aggregation at an L2-only stati
choice of mechanism.</t> on).
This distinction may influence the choice of mechanism.</t>
</section> </section>
</section> </section>
<section anchor="ecnencap_Guidelines_Up" numbered="true" toc="default"> <section anchor="ecnencap_Guidelines_Up" numbered="true" toc="default">
<name>Feed-Up-and-Forward Mode: Guidelines for Adding Congestion Notificat ion</name> <name>Feed-Up-and-Forward Mode: Guidelines for Adding Congestion Notificat ion</name>
<t>The guidance in this section is applicable, for example, when IP <t>The guidance in this section is applicable, for example, when IP
packets:</t> packets:</t>
<ul spacing="normal"> <ul spacing="normal">
<li>are encapsulated in Ethernet headers, which have no support for <li>are encapsulated in Ethernet headers, which have no support for
ECN;</li> congestion notification;</li>
<li>are forwarded by the eNode-B (base station) of a 3GPP radio <li>are forwarded by the eNode-B (base station) of a 3GPP radio access
access network, which is required to apply ECN marking during network, which is required to apply ECN marking during congestion
congestion, <xref target="LTE-RA" format="default"/>, <xref target="UT <xref target="LTE-RA" format="default"/> <xref target="UTRAN"
RAN" format="default"/>, but the format="default"/>, but the Packet Data Convergence Protocol (PDCP)
Packet Data Convergence Protocol (PDCP) that encapsulates the IP that encapsulates the IP header over the radio access has no support
header over the radio access has no support for ECN.</li> for ECN.</li> </ul> <t>This guidance also generalizes to encapsulation
</ul> by other subnet technologies with no built-in support for congestion not
<t>This guidance also generalizes to encapsulation by other subnet ification at the
technologies with no native support for explicit congestion notification lower layer, but with support for finding and processing an IP
at the lower layer, but with support for finding and processing an IP header. It is unlikely to be applicable or necessary for IP-in-IP
header. It is unlikely to be applicable or necessary for IP-in-IP encapsulation, where feed-forward-and-up mode based on <xref
encapsulation, where feed-forward-and-up mode based on <xref target="RFC60 target="RFC6040" format="default"/> would be more appropriate.</t>
40" format="default"/> would be more appropriate.</t> <t>Marking the IP header while switching at layer 2 (by using a Layer 3
<t>Marking the IP header while switching at layer-2 (by using a layer-3
switch) or while forwarding in a radio access network seems to represent switch) or while forwarding in a radio access network seems to represent
a layering violation. However, it can be considered as a benign a layering violation. However, it can be considered as a benign
optimisation if the guidelines below are followed. Feed-up-and-forward optimization if the guidelines below are followed. Feed-up-and-forward
is certainly not a general alternative to implementing feed-forward is certainly not a general alternative to implementing feed-forward
congestion notification in the lower layer, because:</t> congestion notification in the lower layer, because:</t>
<ul spacing="normal"> <ul spacing="normal">
<li>IPv4 and IPv6 are not the only layer-3 protocols that might be <li>IPv4 and IPv6 are not the only Layer 3 protocols that might be
encapsulated by lower layer protocols</li> encapsulated by lower-layer protocols.</li>
<li>Link-layer encryption might be in use, making the layer-2 payload <li>Link-layer encryption might be in use, making the Layer 2 payload
inaccessible</li> inaccessible.</li>
<li>Many Ethernet switches do not have 'layer-3 switch' capabilities <li>Many Ethernet switches do not have 'Layer 3 switch' capabilities,
so they cannot read or modify an IP payload</li> so the ability to read or modify an IP payload cannot be assumed.</li>
<li>It might be costly to find an IP header (IPv4 or IPv6) when it may b e <li>It might be costly to find an IP header (IPv4 or IPv6) when it may b e
encapsulated by more than one lower layer header, e.g. Ethernet MAC encapsulated by more than one lower-layer header, e.g., Ethernet MAC
in MAC (<xref target="IEEE802.1Q" format="default"/>; previously 802.1 ah).</li> in MAC (<xref target="IEEE802.1Q" format="default"/>; previously 802.1 ah).</li>
</ul> </ul>
<t>Nonetheless, configuring lower layer equipment to look for an ECN <t>Nonetheless, configuring lower-layer equipment to look for an ECN
field in an encapsulated IP header is a useful optimisation. If the field in an encapsulated IP header is a useful optimization. If the
implementation follows the guidelines below, this optimisation does not implementation follows the guidelines below, this optimization does not
have to be confined to a controlled environment such as within a data have to be confined to a controlled environment, e.g., within a data
centre; it could usefully be applied on any network &mdash; even if the centre; it could usefully be applied in any network -- even if the
operator is not sure whether the above issues will never apply:</t> operator is not sure whether the above issues will never apply:</t>
<ol spacing="normal" type="1"><li>If a native lower-layer congestion notif ication mechanism exists <ol spacing="normal" type="1"><li>If a built-in lower-layer congestion not ification mechanism exists
for a subnet technology, it is safe to mix feed-up-and-forward with for a subnet technology, it is safe to mix feed-up-and-forward with
feed-forward-and-up on other switches in the same subnet. However, feed-forward-and-up on other switches in the same subnet. However,
it will generally be more efficient to use the native mechanism.</li> it will generally be more efficient to use the built-in mechanism.</li
<li>The depth of the search for an IP header SHOULD be limited. If an >
<li>The depth of the search for an IP header <bcp14>SHOULD</bcp14> be li
mited. If an
IP header is not found soon enough, or an unrecognized or unreadable IP header is not found soon enough, or an unrecognized or unreadable
header is encountered, the switch SHOULD resort to an alternative header is encountered, the switch <bcp14>SHOULD</bcp14> resort to an a
means of signalling congestion (e.g. drop, or the native lower layer lternative
means of signalling congestion (e.g., drop or the built-in lower-layer
mechanism if available).</li> mechanism if available).</li>
<li>It is sufficient to use the first IP header found in the stack; <li>It is sufficient to use the first IP header found in the stack;
the egress of the relevant tunnel can propagate congestion the egress of the relevant tunnel can propagate congestion
notification upwards to any more deeply encapsulated IP headers notification upwards to any more deeply encapsulated IP headers
later.</li> later.</li>
</ol> </ol>
</section> </section>
<section anchor="ecnencap_Guidelines_Backward" numbered="true" toc="default" > <section anchor="ecnencap_Guidelines_Backward" numbered="true" toc="default" >
<name>Feed-Backward Mode: Guidelines for Adding Congestion Notification</n ame> <name>Feed-Backward Mode: Guidelines for Adding Congestion Notification</n ame>
<t>It can be seen from <xref target="ecnencap_Backward" format="default"/> that <t>It can be seen from <xref target="ecnencap_Backward" format="default"/> that
congestion notification in a subnet using feed-backward mode has congestion notification in a subnet using feed-backward mode has
generally not been designed to be directly coupled with IP layer generally not been designed to be directly coupled with IP-layer
congestion notification. The subnet attempts to minimize congestion congestion notification. The subnet attempts to minimize congestion
internally, and if the incoming load at the ingress exceeds the capacity internally, and if the incoming load at the ingress exceeds the capacity
somewhere through the subnet, the layer 3 buffer into the ingress backs somewhere through the subnet, the Layer 3 buffer into the ingress backs
up. Thus, a feed-backward mode subnet is in some sense similar to a null up. Thus, a feed-backward mode subnet is in some sense similar to a null
mode subnet, in that there is no need for any direct interaction between mode subnet, in that there is no need for any direct interaction between
the subnet and higher layer congestion notification. Therefore no the subnet and higher-layer congestion notification. Therefore, no
detailed protocol design guidelines are appropriate. Nonetheless, a more detailed protocol design guidelines are appropriate. Nonetheless, a more
general guideline is appropriate: </t> general guideline is appropriate: </t>
<ul empty="true" spacing="normal"> <blockquote>A subnetwork technology intended to eventually interface
<li>A subnetwork technology intended to eventually interface to IP to IP <bcp14>SHOULD NOT</bcp14> be designed using only the
SHOULD NOT be designed using only the feed-backward mode, which is feed-backward mode, which is certainly best for a stand-alone subnet,
certainly best for a stand-alone subnet, but would need to be but would need to be modified to work efficiently as part of the wider
modified to work efficiently as part of the wider Internet, because Internet because IP uses feed-forward-and-up mode.</blockquote>
IP uses feed-forward-and-up mode.</li>
</ul>
<t>The feed-backward approach at least works beneath IP, where the term <t>The feed-backward approach at least works beneath IP, where the term
'works' is used only in a narrow functional sense because feed-backward 'works' is used only in a narrow functional sense because feed-backward
can result in very inefficient and sluggish congestion control &mdash; can result in very inefficient and sluggish congestion control --
except if it is confined to the subnet directly connected to the except if it is confined to the subnet directly connected to the
original data source, when it is faster than feed-forward. It would be original data source when it is faster than feed-forward. It would be
valid to design a protocol that could work in feed-backward mode for valid to design a protocol that could work in feed-backward mode for
paths that only cross one subnet, and in feed-forward-and-up mode for paths that only cross one subnet, and in feed-forward-and-up mode for
paths that cross subnets.</t> paths that cross subnets.</t>
<t>In the early days of TCP/IP, a similar feed-backward approach was <t>In the early days of TCP/IP, a similar feed-backward approach was
tried for explicit congestion signalling, using source-quench (SQ) ICMP tried for explicit congestion signalling using source-quench (SQ) ICMP
control packets. However, SQ fell out of favour and is now formally control packets. However, SQ fell out of favour and is now formally
deprecated <xref target="RFC6633" format="default"/>. The main problem was that it is deprecated <xref target="RFC6633" format="default"/>. The main problem was that it is
hard for a data source to tell the difference between a spoofed SQ hard for a data source to tell the difference between a spoofed SQ
message and a quench request from a genuine buffer on the path. It is message and a quench request from a genuine buffer on the path. It is
also hard for a lower layer buffer to address an SQ message to the also hard for a lower-layer buffer to address an SQ message to the
original source port number, which may be buried within many layers of original source port number, which may be buried within many layers of
headers, and possibly encrypted.</t> headers and possibly encrypted.</t>
<t>QCN (also known as backward congestion notification, BCN; see <t>QCN (also known as Backward Congestion Notification (BCN); see
Sections 30&ndash;33 of <xref target="IEEE802.1Q" format="default"/>; prev Sections 30-33 of <xref target="IEEE802.1Q" format="default"/>, previously
iously known as known as
802.1Qau) uses a feed-backward mode structurally similar to ATM's 802.1Qau) uses a feed-backward mode that is structurally similar to ATM's
relative rate mechanism. However, QCN confines its applicability to relative rate mechanism. However, QCN confines its applicability to
scenarios such as some data centres where all endpoints are directly scenarios such as some data centres where all endpoints are directly
attached by the same Ethernet technology. If a QCN subnet were later attached by the same Ethernet technology. If a QCN subnet were later
connected into a wider IP-based internetwork (e.g. when attempting to connected into a wider IP-based internetwork (e.g., when attempting to
interconnect multiple data centres) it would suffer the inefficiency interconnect multiple data centres) it would suffer the inefficiency
shown in <xref target="ecnencap_Fig_Feed-Backward" format="default"/>.</t> shown in <xref target="ecnencap_Fig_Feed-Backward" format="default"/>.</t>
<!--{ToDo - either make this a separate case, move it to modes, or delete
it}
In some circumstances (e.g. pseudowire emulations with link-local flow control),
the whole
path is divided into segments, each with its own congestion notification and fee
dback loop.
In these cases, the function that regulates load at the start of each segment wi
ll need to
reset congestion notification (i.e. clear any accumulated congestion notificatio
ns) at the
start of its segment.-->
</section> </section>
<!-- ================================================================ --> <section anchor="ecnencap_IANA_Considerations" numbered="true" toc="default"
>
<section anchor="ecnencap_IANA_Considerations" removeInRFC="true" numbered="
true" toc="default">
<name>IANA Considerations</name> <name>IANA Considerations</name>
<t>This memo includes no request to IANA.</t> <t>This document has no IANA actions.</t>
</section> </section>
<!-- ================================================================ -->
<section anchor="ecnencap_Security_Considerations" numbered="true" toc="defa ult"> <section anchor="ecnencap_Security_Considerations" numbered="true" toc="defa ult">
<name>Security Considerations</name> <name>Security Considerations</name>
<t>If a lower layer wire protocol is redesigned to include explicit <t>If a lower-layer wire protocol is redesigned to include explicit
congestion signalling in-band in the protocol header, care SHOULD be congestion signalling in-band in the protocol header, care <bcp14>SHOULD</
bcp14> be
taken to ensure that the field used is specified as mutable during taken to ensure that the field used is specified as mutable during
transit. Otherwise interior nodes signalling congestion would invalidate transit. Otherwise, interior nodes signalling congestion would invalidate
any authentication protocol applied to the lower layer header &mdash; by any authentication protocol applied to the lower-layer header -- by
altering a header field that had been assumed as immutable.</t> altering a header field that had been assumed as immutable.</t>
<t>The redesign of protocols that encapsulate IP in order to propagate <t>The redesign of protocols that encapsulate IP in order to propagate
congestion signals between layers raises potential signal integrity congestion signals between layers raises potential signal integrity
concerns. Experimental or proposed approaches exist for assuring the concerns. Experimental or proposed approaches exist for assuring the
end-to-end integrity of in-band congestion signals, e.g.:</t> end-to-end integrity of in-band congestion signals, such as:</t>
<ul spacing="normal"> <ul spacing="normal">
<li>Congestion exposure (ConEx) for networks to audit that their <li><t>Congestion Exposure (ConEx) for networks:</t>
<ul><li>to audit that their
congestion signals are not being suppressed by other networks or by congestion signals are not being suppressed by other networks or by
receivers, and for networks to police that senders are responding receivers; and</li>
<li>to police that senders are responding
sufficiently to the signals, irrespective of the L4 transport sufficiently to the signals, irrespective of the L4 transport
protocol used <xref target="RFC7713" format="default"/>.</li> protocol used <xref target="RFC7713" format="default"/>.</li>
</ul>
</li>
<li>A test for a sender to detect whether a network or the receiver <li>A test for a sender to detect whether a network or the receiver
is suppressing congestion signals (for example see 2nd para of <xref s ection="20.2" target="RFC3168" format="default"/>).</li> is suppressing congestion signals (for example, see the second paragra ph of <xref section="20.2" target="RFC3168" format="default"/>).</li>
</ul> </ul>
<t>Given these end-to-end approaches are already being specified, <t>Given these end-to-end approaches are already being specified,
it would make little sense to attempt to design hop-by-hop congestion it would make little sense to attempt to design hop-by-hop congestion
signal integrity into a new lower layer protocol, because end-to-end signal integrity into a new lower-layer protocol because end-to-end
integrity inherently achieves hop-by-hop integrity.</t> integrity inherently achieves hop-by-hop integrity.</t>
<t><xref target="ecnencap_Guidelines_Backward" format="default"/> gives vu lnerability to <t><xref target="ecnencap_Guidelines_Backward" format="default"/> gives vu lnerability to
spoofing as one of the reasons for deprecating feed-backward mode.</t> spoofing as one of the reasons for deprecating feed-backward mode.</t>
</section> </section>
<!-- ================================================================ -->
<section anchor="ecnencap_Conclusions" numbered="true" toc="default"> <section anchor="ecnencap_Conclusions" numbered="true" toc="default">
<name>Conclusions</name> <name>Conclusions</name>
<t>Following the guidance in this document enables ECN support to be <t>Following the guidance in this document enables ECN support to be
extended consistently to numerous protocols that encapsulate IP (IPv4 and extended consistently to numerous protocols that encapsulate IP (IPv4 and
IPv6), so that IP continues to fulfil its role as an end-to-end IPv6) so that IP continues to fulfil its role as an end-to-end
interoperability layer. This includes:</t> interoperability layer. This includes:</t>
<ul spacing="normal"> <ul spacing="normal">
<li>A wide range of tunnelling protocols including those with various <li>A wide range of tunnelling protocols, including those with various
forms of shim header between two IP headers, possibly also separated forms of shim header between two IP headers, possibly also separated
by a L2 header;</li> by an L2 header;</li>
<li>A wide range of subnet technologies, particularly those that work <li>A wide range of subnet technologies, particularly those that work
in the same 'feed-forward-and-up' mode that is used to support ECN in the same 'feed-forward-and-up' mode that is used to support ECN
in IP and MPLS.</li> in IP and MPLS.</li>
</ul> </ul>
<t>Guidelines have been defined for supporting propagation of ECN <t>Guidelines have been defined for supporting propagation of ECN
between Ethernet and IP on so-called Layer-3 Ethernet switches, using a between Ethernet and IP on so-called Layer 3 Ethernet switches using a
'feed-up-and-forward' mode. This approach could enable other subnet 'feed-up-and-forward' mode. This approach could enable other subnet
technologies to pass ECN signals into the IP layer, even if they do not technologies to pass ECN signals into the IP layer, even if the
support ECN natively.</t> lower-layer protocol does not support ECN.</t>
<t>Finally, attempting to add ECN to a subnet technology in <t>Finally, attempting to add congestion notification to a subnet technolo
feed-backward mode is deprecated except in special cases, due to its gy in
feed-backward mode is deprecated except in special cases due to its
likely sluggish response to congestion.</t> likely sluggish response to congestion.</t>
</section> </section>
</middle> </middle>
<back> <back>
<!-- ================================================================ -->
<displayreference target="I-D.ietf-intarea-gue" to="INTAREA-GUE"/>
<references> <references>
<name>References</name> <name>References</name>
<references> <references>
<name>Normative References</name> <name>Normative References</name>
<reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2
119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.21
<front> 19.xml"/>
<title>Key words for use in RFCs to Indicate Requirement Levels</tit <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.31
le> 68.xml"/>
<author fullname="S. Bradner" initials="S." surname="Bradner"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.38
<date month="March" year="1997"/> 19.xml"/>
<abstract> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.47
<t>In many standards track documents several words are used to sig 74.xml"/>
nify the requirements in the specification. These words are often capitalized. T <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.51
his document defines these words as they should be interpreted in IETF documents 29.xml"/>
. This document specifies an Internet Best Current Practices for the Internet Co <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.60
mmunity, and requests discussion and suggestions for improvements.</t> 40.xml"/>
</abstract> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.71
</front> 41.xml"/>
<seriesInfo name="BCP" value="14"/>
<seriesInfo name="RFC" value="2119"/> <reference anchor="RFC9600" target="https://www.rfc-editor.org/info/rfc9600">
<seriesInfo name="DOI" value="10.17487/RFC2119"/> <front>
</reference> <title>
<reference anchor="RFC3168" target="https://www.rfc-editor.org/info/rfc3 TRILL (TRansparent Interconnection of Lots of Links): ECN (Explicit Congestion N
168" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3168.xml"> otification) Support
<front> </title>
<title>The Addition of Explicit Congestion Notification (ECN) to IP< <author initials="D." surname="Eastlake 3rd" fullname="Donald E. Eastlake 3rd">
/title> <organization>Huawei</organization>
<author fullname="K. Ramakrishnan" initials="K." surname="Ramakrishn </author>
an"/> <author initials="B." surname="Briscoe" fullname="Bob Briscoe">
<author fullname="S. Floyd" initials="S." surname="Floyd"/> <organization>CableLabs</organization>
<author fullname="D. Black" initials="D." surname="Black"/> </author>
<date month="September" year="2001"/> <date month="August" year="2024"/>
<abstract> </front>
<t>This memo specifies the incorporation of ECN (Explicit Congesti <seriesInfo name="RFC" value="9600"/>
on Notification) to TCP and IP, including ECN's use of two bits in the IP header <seriesInfo name="DOI" value="10.17487/RFC9600"/>
. [STANDARDS-TRACK]</t> </reference>
</abstract>
</front>
<seriesInfo name="RFC" value="3168"/>
<seriesInfo name="DOI" value="10.17487/RFC3168"/>
</reference>
<reference anchor="RFC3819" target="https://www.rfc-editor.org/info/rfc3
819" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3819.xml">
<front>
<title>Advice for Internet Subnetwork Designers</title>
<author fullname="P. Karn" initials="P." role="editor" surname="Karn
"/>
<author fullname="C. Bormann" initials="C." surname="Bormann"/>
<author fullname="G. Fairhurst" initials="G." surname="Fairhurst"/>
<author fullname="D. Grossman" initials="D." surname="Grossman"/>
<author fullname="R. Ludwig" initials="R." surname="Ludwig"/>
<author fullname="J. Mahdavi" initials="J." surname="Mahdavi"/>
<author fullname="G. Montenegro" initials="G." surname="Montenegro"/
>
<author fullname="J. Touch" initials="J." surname="Touch"/>
<author fullname="L. Wood" initials="L." surname="Wood"/>
<date month="July" year="2004"/>
<abstract>
<t>This document provides advice to the designers of digital commu
nication equipment, link-layer protocols, and packet-switched local networks (co
llectively referred to as subnetworks), who wish to support the Internet protoco
ls but may be unfamiliar with the Internet architecture and the implications of
their design choices on the performance and efficiency of the Internet. This doc
ument specifies an Internet Best Current Practices for the Internet Community, a
nd requests discussion and suggestions for improvements.</t>
</abstract>
</front>
<seriesInfo name="BCP" value="89"/>
<seriesInfo name="RFC" value="3819"/>
<seriesInfo name="DOI" value="10.17487/RFC3819"/>
</reference>
<reference anchor="RFC4774" target="https://www.rfc-editor.org/info/rfc4
774" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4774.xml">
<front>
<title>Specifying Alternate Semantics for the Explicit Congestion No
tification (ECN) Field</title>
<author fullname="S. Floyd" initials="S." surname="Floyd"/>
<date month="November" year="2006"/>
<abstract>
<t>There have been a number of proposals for alternate semantics f
or the Explicit Congestion Notification (ECN) field in the IP header RFC 3168. T
his document discusses some of the issues in defining alternate semantics for th
e ECN field, and specifies requirements for a safe coexistence in an Internet th
at could include routers that do not understand the defined alternate semantics.
This document evolved as a result of discussions with the authors of one recent
proposal for such alternate semantics. This document specifies an Internet Best
Current Practices for the Internet Community, and requests discussion and sugge
stions for improvements.</t>
</abstract>
</front>
<seriesInfo name="BCP" value="124"/>
<seriesInfo name="RFC" value="4774"/>
<seriesInfo name="DOI" value="10.17487/RFC4774"/>
</reference>
<reference anchor="RFC5129" target="https://www.rfc-editor.org/info/rfc5
129" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5129.xml">
<front>
<title>Explicit Congestion Marking in MPLS</title>
<author fullname="B. Davie" initials="B." surname="Davie"/>
<author fullname="B. Briscoe" initials="B." surname="Briscoe"/>
<author fullname="J. Tay" initials="J." surname="Tay"/>
<date month="January" year="2008"/>
<abstract>
<t>RFC 3270 defines how to support the Diffserv architecture in MP
LS networks, including how to encode Diffserv Code Points (DSCPs) in an MPLS hea
der. DSCPs may be encoded in the EXP field, while other uses of that field are n
ot precluded. RFC 3270 makes no statement about how Explicit Congestion Notifica
tion (ECN) marking might be encoded in the MPLS header. This document defines ho
w an operator might define some of the EXP codepoints for explicit congestion no
tification, without precluding other uses. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="5129"/>
<seriesInfo name="DOI" value="10.17487/RFC5129"/>
</reference>
<reference anchor="RFC6040" target="https://www.rfc-editor.org/info/rfc6
040" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6040.xml">
<front>
<title>Tunnelling of Explicit Congestion Notification</title>
<author fullname="B. Briscoe" initials="B." surname="Briscoe"/>
<date month="November" year="2010"/>
<abstract>
<t>This document redefines how the explicit congestion notificatio
n (ECN) field of the IP header should be constructed on entry to and exit from a
ny IP-in-IP tunnel. On encapsulation, it updates RFC 3168 to bring all IP-in-IP
tunnels (v4 or v6) into line with RFC 4301 IPsec ECN processing. On decapsulatio
n, it updates both RFC 3168 and RFC 4301 to add new behaviours for previously un
used combinations of inner and outer headers. The new rules ensure the ECN field
is correctly propagated across a tunnel whether it is used to signal one or two
severity levels of congestion; whereas before, only one severity level was supp
orted. Tunnel endpoints can be updated in any order without affecting pre-existi
ng uses of the ECN field, thus ensuring backward compatibility. Nonetheless, ope
rators wanting to support two severity levels (e.g., for pre-congestion notifica
tion -- PCN) can require compliance with this new specification. A thorough anal
ysis of the reasoning for these changes and the implications is included. In the
unlikely event that the new rules do not meet a specific need, RFC 4774 gives g
uidance on designing alternate ECN semantics, and this document extends that to
include tunnelling issues. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="6040"/>
<seriesInfo name="DOI" value="10.17487/RFC6040"/>
</reference>
<reference anchor="RFC7141" target="https://www.rfc-editor.org/info/rfc7
141" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7141.xml">
<front>
<title>Byte and Packet Congestion Notification</title>
<author fullname="B. Briscoe" initials="B." surname="Briscoe"/>
<author fullname="J. Manner" initials="J." surname="Manner"/>
<date month="February" year="2014"/>
<abstract>
<t>This document provides recommendations of best current practice
for dropping or marking packets using any active queue management (AQM) algorit
hm, including Random Early Detection (RED), BLUE, Pre- Congestion Notification (
PCN), and newer schemes such as CoDel (Controlled Delay) and PIE (Proportional I
ntegral controller Enhanced). We give three strong recommendations: (1) packet s
ize should be taken into account when transports detect and respond to congestio
n indications, (2) packet size should not be taken into account when network equ
ipment creates congestion signals (marking, dropping), and therefore (3) in the
specific case of RED, the byte- mode packet drop variant that drops fewer small
packets should not be used. This memo updates RFC 2309 to deprecate deliberate p
referential treatment of small packets in AQM algorithms.</t>
</abstract>
</front>
<seriesInfo name="BCP" value="41"/>
<seriesInfo name="RFC" value="7141"/>
<seriesInfo name="DOI" value="10.17487/RFC7141"/>
</reference>
<reference anchor="I-D.ietf-trill-ecn-support" target="https://datatrack
er.ietf.org/doc/html/draft-ietf-trill-ecn-support-07" xml:base="https://bib.ietf
.org/public/rfc/bibxml-ids/reference.I-D.ietf-trill-ecn-support.xml">
<front>
<title>TRILL (TRansparent Interconnection of Lots of Links): ECN (Ex
plicit Congestion Notification) Support</title>
<author fullname="Donald E. Eastlake 3rd" initials="D. E." surname="
Eastlake">
<organization>Huawei</organization>
</author>
<author fullname="Bob Briscoe" initials="B." surname="Briscoe">
<organization>CableLabs</organization>
</author>
<date day="25" month="February" year="2018"/>
<abstract>
<t>Explicit congestion notification (ECN) allows a forwarding elem
ent to notify downstream devices, including the destination, of the onset of con
gestion without having to drop packets. This can improve network efficiency thro
ugh better congestion control without packet drops. This document extends ECN to
TRILL (TRansparent Interconnection of Lots of Links) switches, including integr
ation with IP ECN, and provides for ECN marking in the TRILL Header Extension Fl
ags Word (see RFC 7179).</t>
</abstract>
</front>
<seriesInfo name="Internet-Draft" value="draft-ietf-trill-ecn-support-
07"/>
</reference>
</references> </references>
<references> <references>
<name>Informative References</name> <name>Informative References</name>
<reference anchor="RFC2003" target="https://www.rfc-editor.org/info/rfc2 <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.20
003" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2003.xml"> 03.xml"/>
<front> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.24
<title>IP Encapsulation within IP</title> 73.xml"/>
<author fullname="C. Perkins" initials="C." surname="Perkins"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.26
<date month="October" year="1996"/> 37.xml"/>
<abstract> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.26
<t>This document specifies a method by which an IP datagram may be 61.xml"/>
encapsulated (carried as payload) within an IP datagram. [STANDARDS-TRACK]</t> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.27
</abstract> 84.xml"/>
</front> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.28
<seriesInfo name="RFC" value="2003"/> 84.xml"/>
<seriesInfo name="DOI" value="10.17487/RFC2003"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.29
</reference> 83.xml"/>
<reference anchor="RFC2473" target="https://www.rfc-editor.org/info/rfc2 <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.39
473" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2473.xml"> 31.xml"/>
<front> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.43
<title>Generic Packet Tunneling in IPv6 Specification</title> 01.xml"/>
<author fullname="A. Conta" initials="A." surname="Conta"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.43
<author fullname="S. Deering" initials="S." surname="Deering"/> 80.xml"/>
<date month="December" year="1998"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.54
<abstract> 15.xml"/>
<t>This document defines the model and generic mechanisms for IPv6 <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.66
encapsulation of Internet packets, such as IPv6 and IPv4. [STANDARDS-TRACK]</t> 33.xml"/>
</abstract> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.66
</front> 60.xml"/>
<seriesInfo name="RFC" value="2473"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.73
<seriesInfo name="DOI" value="10.17487/RFC2473"/> 23.xml"/>
</reference> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.73
<reference anchor="RFC2637" target="https://www.rfc-editor.org/info/rfc2 48.xml"/>
637" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2637.xml"> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.77
<front> 80.xml"/>
<title>Point-to-Point Tunneling Protocol (PPTP)</title> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.75
<author fullname="K. Hamzeh" initials="K." surname="Hamzeh"/> 67.xml"/>
<author fullname="G. Pall" initials="G." surname="Pall"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.76
<author fullname="W. Verthein" initials="W." surname="Verthein"/> 37.xml"/>
<author fullname="J. Taarud" initials="J." surname="Taarud"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.77
<author fullname="W. Little" initials="W." surname="Little"/> 13.xml"/>
<author fullname="G. Zorn" initials="G." surname="Zorn"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.80
<date month="July" year="1999"/> 84.xml"/>
<abstract> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.80
<t>This document specifies a protocol which allows the Point to Po 87.xml"/>
int Protocol (PPP) to be tunneled through an IP network. This memo provides info <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.81
rmation for the Internet community.</t> 74.xml"/>
</abstract> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.82
</front> 57.xml"/>
<seriesInfo name="RFC" value="2637"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.83
<seriesInfo name="DOI" value="10.17487/RFC2637"/> 00.xml"/>
</reference> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.83
<reference anchor="RFC2661" target="https://www.rfc-editor.org/info/rfc2 11.xml"/>
661" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2661.xml"> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.89
<front> 26.xml"/>
<title>Layer Two Tunneling Protocol "L2TP"</title> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.93
<author fullname="W. Townsley" initials="W." surname="Townsley"/> 00.xml"/>
<author fullname="A. Valencia" initials="A." surname="Valencia"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.93
<author fullname="A. Rubens" initials="A." surname="Rubens"/> 31.xml"/>
<author fullname="G. Pall" initials="G." surname="Pall"/>
<author fullname="G. Zorn" initials="G." surname="Zorn"/> <!-- [I-D.ietf-intarea-gue] IESG State: Expired (IESG: Dead) as of 02/12/2024-->
<author fullname="B. Palter" initials="B." surname="Palter"/> <xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-in
<date month="August" year="1999"/> tarea-gue.xml"/>
<abstract>
<t>This document describes the Layer Two Tunneling Protocol (L2TP) <reference anchor="RFC9601" target="https://www.rfc-editor.org/info/rfc9601">
. [STANDARDS-TRACK]</t> <front>
</abstract> <title>
</front> Propagating Explicit Congestion Notification Across IP Tunnel Headers Separated
<seriesInfo name="RFC" value="2661"/> by a Shim
<seriesInfo name="DOI" value="10.17487/RFC2661"/> </title>
</reference> <author initials="B." surname="Briscoe" fullname="Bob Briscoe">
<reference anchor="RFC2784" target="https://www.rfc-editor.org/info/rfc2 <organization>Independent</organization>
784" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2784.xml"> </author>
<front> <date month="August" year="2024"/>
<title>Generic Routing Encapsulation (GRE)</title> </front>
<author fullname="D. Farinacci" initials="D." surname="Farinacci"/> <seriesInfo name="RFC" value="9601"/>
<author fullname="T. Li" initials="T." surname="Li"/> <seriesInfo name="DOI" value="10.17487/RFC9601"/>
<author fullname="S. Hanks" initials="S." surname="Hanks"/> </reference>
<author fullname="D. Meyer" initials="D." surname="Meyer"/>
<author fullname="P. Traina" initials="P." surname="Traina"/> <reference anchor="IEEE802.1Q">
<date month="March" year="2000"/>
<abstract>
<t>This document specifies a protocol for encapsulation of an arbi
trary network layer protocol over another arbitrary network layer protocol. [STA
NDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="2784"/>
<seriesInfo name="DOI" value="10.17487/RFC2784"/>
</reference>
<reference anchor="RFC2884" target="https://www.rfc-editor.org/info/rfc2
884" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2884.xml">
<front>
<title>Performance Evaluation of Explicit Congestion Notification (E
CN) in IP Networks</title>
<author fullname="J. Hadi Salim" initials="J." surname="Hadi Salim"/
>
<author fullname="U. Ahmed" initials="U." surname="Ahmed"/>
<date month="July" year="2000"/>
<abstract>
<t>This memo presents a performance study of the Explicit Congesti
on Notification (ECN) mechanism in the TCP/IP protocol using our implementation
on the Linux Operating System. This memo provides information for the Internet c
ommunity.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="2884"/>
<seriesInfo name="DOI" value="10.17487/RFC2884"/>
</reference>
<reference anchor="RFC2983" target="https://www.rfc-editor.org/info/rfc2
983" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2983.xml">
<front>
<title>Differentiated Services and Tunnels</title>
<author fullname="D. Black" initials="D." surname="Black"/>
<date month="October" year="2000"/>
<abstract>
<t>This document considers the interaction of Differentiated Servi
ces (diffserv) with IP tunnels of various forms. This memo provides information
for the Internet community.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="2983"/>
<seriesInfo name="DOI" value="10.17487/RFC2983"/>
</reference>
<reference anchor="RFC3931" target="https://www.rfc-editor.org/info/rfc3
931" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3931.xml">
<front>
<title>Layer Two Tunneling Protocol - Version 3 (L2TPv3)</title>
<author fullname="J. Lau" initials="J." role="editor" surname="Lau"/
>
<author fullname="M. Townsley" initials="M." role="editor" surname="
Townsley"/>
<author fullname="I. Goyret" initials="I." role="editor" surname="Go
yret"/>
<date month="March" year="2005"/>
<abstract>
<t>This document describes "version 3" of the Layer Two Tunneling
Protocol (L2TPv3). L2TPv3 defines the base control protocol and encapsulation fo
r tunneling multiple Layer 2 connections between two IP nodes. Additional docume
nts detail the specifics for each data link type being emulated. [STANDARDS-TRAC
K]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="3931"/>
<seriesInfo name="DOI" value="10.17487/RFC3931"/>
</reference>
<reference anchor="RFC4301" target="https://www.rfc-editor.org/info/rfc4
301" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4301.xml">
<front>
<title>Security Architecture for the Internet Protocol</title>
<author fullname="S. Kent" initials="S." surname="Kent"/>
<author fullname="K. Seo" initials="K." surname="Seo"/>
<date month="December" year="2005"/>
<abstract>
<t>This document describes an updated version of the "Security Arc
hitecture for IP", which is designed to provide security services for traffic at
the IP layer. This document obsoletes RFC 2401 (November 1998). [STANDARDS-TRAC
K]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="4301"/>
<seriesInfo name="DOI" value="10.17487/RFC4301"/>
</reference>
<reference anchor="RFC4380" target="https://www.rfc-editor.org/info/rfc4
380" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4380.xml">
<front>
<title>Teredo: Tunneling IPv6 over UDP through Network Address Trans
lations (NATs)</title>
<author fullname="C. Huitema" initials="C." surname="Huitema"/>
<date month="February" year="2006"/>
<abstract>
<t>We propose here a service that enables nodes located behind one
or more IPv4 Network Address Translations (NATs) to obtain IPv6 connectivity by
tunneling packets over UDP; we call this the Teredo service. Running the servic
e requires the help of "Teredo servers" and "Teredo relays". The Teredo servers
are stateless, and only have to manage a small fraction of the traffic between T
eredo clients; the Teredo relays act as IPv6 routers between the Teredo service
and the "native" IPv6 Internet. The relays can also provide interoperability wit
h hosts using other transition mechanisms such as "6to4". [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="4380"/>
<seriesInfo name="DOI" value="10.17487/RFC4380"/>
</reference>
<reference anchor="RFC5415" target="https://www.rfc-editor.org/info/rfc5
415" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5415.xml">
<front>
<title>Control And Provisioning of Wireless Access Points (CAPWAP) P
rotocol Specification</title>
<author fullname="P. Calhoun" initials="P." role="editor" surname="C
alhoun"/>
<author fullname="M. Montemurro" initials="M." role="editor" surname
="Montemurro"/>
<author fullname="D. Stanley" initials="D." role="editor" surname="S
tanley"/>
<date month="March" year="2009"/>
<abstract>
<t>This specification defines the Control And Provisioning of Wire
less Access Points (CAPWAP) Protocol, meeting the objectives defined by the CAPW
AP Working Group in RFC 4564. The CAPWAP protocol is designed to be flexible, al
lowing it to be used for a variety of wireless technologies. This document descr
ibes the base CAPWAP protocol, while separate binding extensions will enable its
use with additional wireless technologies. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="5415"/>
<seriesInfo name="DOI" value="10.17487/RFC5415"/>
</reference>
<reference anchor="RFC6633" target="https://www.rfc-editor.org/info/rfc6
633" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6633.xml">
<front>
<title>Deprecation of ICMP Source Quench Messages</title>
<author fullname="F. Gont" initials="F." surname="Gont"/>
<date month="May" year="2012"/>
<abstract>
<t>This document formally deprecates the use of ICMP Source Quench
messages by transport protocols, formally updating RFC 792, RFC 1122, and RFC 1
812. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="6633"/>
<seriesInfo name="DOI" value="10.17487/RFC6633"/>
</reference>
<reference anchor="RFC6660" target="https://www.rfc-editor.org/info/rfc6
660" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6660.xml">
<front>
<title>Encoding Three Pre-Congestion Notification (PCN) States in th
e IP Header Using a Single Diffserv Codepoint (DSCP)</title>
<author fullname="B. Briscoe" initials="B." surname="Briscoe"/>
<author fullname="T. Moncaster" initials="T." surname="Moncaster"/>
<author fullname="M. Menth" initials="M." surname="Menth"/>
<date month="July" year="2012"/>
<abstract>
<t>The objective of Pre-Congestion Notification (PCN) is to protec
t the quality of service (QoS) of inelastic flows within a Diffserv domain. The
overall rate of PCN-traffic is metered on every link in the PCN- domain, and PCN
-packets are appropriately marked when certain configured rates are exceeded. Eg
ress nodes pass information about these PCN-marks to Decision Points that then d
ecide whether to admit or block new flow requests or to terminate some already a
dmitted flows during serious pre-congestion.</t>
<t>This document specifies how PCN-marks are to be encoded into th
e IP header by reusing the Explicit Congestion Notification (ECN) codepoints wit
hin a PCN-domain. The PCN wire protocol for non-IP protocol headers will need to
be defined elsewhere. Nonetheless, this document clarifies the PCN encoding for
MPLS in an informational appendix. The encoding for IP provides for up to three
different PCN marking states using a single Diffserv codepoint (DSCP): not-mark
ed (NM), threshold-marked (ThM), and excess-traffic-marked (ETM). Hence, it is c
alled the 3-in-1 PCN encoding. This document obsoletes RFC 5696. [STANDARDS-TRAC
K]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="6660"/>
<seriesInfo name="DOI" value="10.17487/RFC6660"/>
</reference>
<reference anchor="RFC7323" target="https://www.rfc-editor.org/info/rfc7
323" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7323.xml">
<front>
<title>TCP Extensions for High Performance</title>
<author fullname="D. Borman" initials="D." surname="Borman"/>
<author fullname="B. Braden" initials="B." surname="Braden"/>
<author fullname="V. Jacobson" initials="V." surname="Jacobson"/>
<author fullname="R. Scheffenegger" initials="R." role="editor" surn
ame="Scheffenegger"/>
<date month="September" year="2014"/>
<abstract>
<t>This document specifies a set of TCP extensions to improve perf
ormance over paths with a large bandwidth * delay product and to provide reliabl
e operation over very high-speed paths. It defines the TCP Window Scale (WS) opt
ion and the TCP Timestamps (TS) option and their semantics. The Window Scale opt
ion is used to support larger receive windows, while the Timestamps option can b
e used for at least two distinct mechanisms, Protection Against Wrapped Sequence
s (PAWS) and Round-Trip Time Measurement (RTTM), that are also described herein.
</t>
<t>This document obsoletes RFC 1323 and describes changes from it.
</t>
</abstract>
</front>
<seriesInfo name="RFC" value="7323"/>
<seriesInfo name="DOI" value="10.17487/RFC7323"/>
</reference>
<reference anchor="RFC7348" target="https://www.rfc-editor.org/info/rfc7
348" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7348.xml">
<front>
<title>Virtual eXtensible Local Area Network (VXLAN): A Framework fo
r Overlaying Virtualized Layer 2 Networks over Layer 3 Networks</title>
<author fullname="M. Mahalingam" initials="M." surname="Mahalingam"/
>
<author fullname="D. Dutt" initials="D." surname="Dutt"/>
<author fullname="K. Duda" initials="K." surname="Duda"/>
<author fullname="P. Agarwal" initials="P." surname="Agarwal"/>
<author fullname="L. Kreeger" initials="L." surname="Kreeger"/>
<author fullname="T. Sridhar" initials="T." surname="Sridhar"/>
<author fullname="M. Bursell" initials="M." surname="Bursell"/>
<author fullname="C. Wright" initials="C." surname="Wright"/>
<date month="August" year="2014"/>
<abstract>
<t>This document describes Virtual eXtensible Local Area Network (
VXLAN), which is used to address the need for overlay networks within virtualize
d data centers accommodating multiple tenants. The scheme and the related protoc
ols can be used in networks for cloud service providers and enterprise data cent
ers. This memo documents the deployed VXLAN protocol for the benefit of the Inte
rnet community.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="7348"/>
<seriesInfo name="DOI" value="10.17487/RFC7348"/>
</reference>
<reference anchor="RFC7780" target="https://www.rfc-editor.org/info/rfc7
780" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7780.xml">
<front>
<title>Transparent Interconnection of Lots of Links (TRILL): Clarifi
cations, Corrections, and Updates</title>
<author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3
rd"/>
<author fullname="M. Zhang" initials="M." surname="Zhang"/>
<author fullname="R. Perlman" initials="R." surname="Perlman"/>
<author fullname="A. Banerjee" initials="A." surname="Banerjee"/>
<author fullname="A. Ghanwani" initials="A." surname="Ghanwani"/>
<author fullname="S. Gupta" initials="S." surname="Gupta"/>
<date month="February" year="2016"/>
<abstract>
<t>Since the publication of the TRILL (Transparent Interconnection
of Lots of Links) base protocol in 2011, active development and deployment of T
RILL have revealed errata in RFC 6325 and areas that could use clarifications or
updates. RFC 7177, RFC 7357, and an intended replacement of RFC 6439 provide cl
arifications and updates with respect to adjacency, the TRILL ESADI (End Station
Address Distribution Information) protocol, and Appointed Forwarders, respectiv
ely. This document provides other known clarifications, corrections, and updates
. It obsoletes RFC 7180 (the previous "TRILL clarifications, corrections, and up
dates" RFC), and it updates RFCs 6325, 7177, and 7179.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="7780"/>
<seriesInfo name="DOI" value="10.17487/RFC7780"/>
</reference>
<reference anchor="RFC7567" target="https://www.rfc-editor.org/info/rfc7
567" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7567.xml">
<front>
<title>IETF Recommendations Regarding Active Queue Management</title
>
<author fullname="F. Baker" initials="F." role="editor" surname="Bak
er"/>
<author fullname="G. Fairhurst" initials="G." role="editor" surname=
"Fairhurst"/>
<date month="July" year="2015"/>
<abstract>
<t>This memo presents recommendations to the Internet community co
ncerning measures to improve and preserve Internet performance. It presents a st
rong recommendation for testing, standardization, and widespread deployment of a
ctive queue management (AQM) in network devices to improve the performance of to
day's Internet. It also urges a concerted effort of research, measurement, and u
ltimate deployment of AQM mechanisms to protect the Internet from flows that are
not sufficiently responsive to congestion notification.</t>
<t>Based on 15 years of experience and new research, this document
replaces the recommendations of RFC 2309.</t>
</abstract>
</front>
<seriesInfo name="BCP" value="197"/>
<seriesInfo name="RFC" value="7567"/>
<seriesInfo name="DOI" value="10.17487/RFC7567"/>
</reference>
<reference anchor="RFC7637" target="https://www.rfc-editor.org/info/rfc7
637" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7637.xml">
<front>
<title>NVGRE: Network Virtualization Using Generic Routing Encapsula
tion</title>
<author fullname="P. Garg" initials="P." role="editor" surname="Garg
"/>
<author fullname="Y. Wang" initials="Y." role="editor" surname="Wang
"/>
<date month="September" year="2015"/>
<abstract>
<t>This document describes the usage of the Generic Routing Encaps
ulation (GRE) header for Network Virtualization (NVGRE) in multi-tenant data cen
ters. Network Virtualization decouples virtual networks and addresses from physi
cal network infrastructure, providing isolation and concurrency between multiple
virtual networks on the same physical network infrastructure. This document als
o introduces a Network Virtualization framework to illustrate the use cases, but
the focus is on specifying the data-plane aspect of NVGRE.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="7637"/>
<seriesInfo name="DOI" value="10.17487/RFC7637"/>
</reference>
<reference anchor="RFC7713" target="https://www.rfc-editor.org/info/rfc7
713" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7713.xml">
<front>
<title>Congestion Exposure (ConEx) Concepts, Abstract Mechanism, and
Requirements</title>
<author fullname="M. Mathis" initials="M." surname="Mathis"/>
<author fullname="B. Briscoe" initials="B." surname="Briscoe"/>
<date month="December" year="2015"/>
<abstract>
<t>This document describes an abstract mechanism by which senders
inform the network about the congestion recently encountered by packets in the s
ame flow. Today, network elements at any layer may signal congestion to the rece
iver by dropping packets or by Explicit Congestion Notification (ECN) markings,
and the receiver passes this information back to the sender in transport-layer f
eedback. The mechanism described here enables the sender to also relay this cong
estion information back into the network in-band at the IP layer, such that the
total amount of congestion from all elements on the path is revealed to all IP e
lements along the path, where it could, for example, be used to provide input to
traffic management. This mechanism is called Congestion Exposure, or ConEx. The
companion document, "Congestion Exposure (ConEx) Concepts and Use Cases" (RFC 6
789), provides the entry point to the set of ConEx documentation.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="7713"/>
<seriesInfo name="DOI" value="10.17487/RFC7713"/>
</reference>
<reference anchor="RFC8084" target="https://www.rfc-editor.org/info/rfc8
084" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8084.xml">
<front>
<title>Network Transport Circuit Breakers</title>
<author fullname="G. Fairhurst" initials="G." surname="Fairhurst"/>
<date month="March" year="2017"/>
<abstract>
<t>This document explains what is meant by the term "network trans
port Circuit Breaker". It describes the need for Circuit Breakers (CBs) for netw
ork tunnels and applications when using non-congestion- controlled traffic and e
xplains where CBs are, and are not, needed. It also defines requirements for bui
lding a CB and the expected outcomes of using a CB within the Internet.</t>
</abstract>
</front>
<seriesInfo name="BCP" value="208"/>
<seriesInfo name="RFC" value="8084"/>
<seriesInfo name="DOI" value="10.17487/RFC8084"/>
</reference>
<reference anchor="RFC8087" target="https://www.rfc-editor.org/info/rfc8
087" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8087.xml">
<front>
<title>The Benefits of Using Explicit Congestion Notification (ECN)<
/title>
<author fullname="G. Fairhurst" initials="G." surname="Fairhurst"/>
<author fullname="M. Welzl" initials="M." surname="Welzl"/>
<date month="March" year="2017"/>
<abstract>
<t>The goal of this document is to describe the potential benefits
of applications using a transport that enables Explicit Congestion Notification
(ECN). The document outlines the principal gains in terms of increased throughp
ut, reduced delay, and other benefits when ECN is used over a network path that
includes equipment that supports Congestion Experienced (CE) marking. It also di
scusses challenges for successful deployment of ECN. It does not propose new alg
orithms to use ECN nor does it describe the details of implementation of ECN in
endpoint devices (Internet hosts), routers, or other network devices.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="8087"/>
<seriesInfo name="DOI" value="10.17487/RFC8087"/>
</reference>
<reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8
174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti
tle>
<author fullname="B. Leiba" initials="B." surname="Leiba"/>
<date month="May" year="2017"/>
<abstract>
<t>RFC 2119 specifies common key words that may be used in protoco
l specifications. This document aims to reduce the ambiguity by clarifying that
only UPPERCASE usage of the key words have the defined special meanings.</t>
</abstract>
</front>
<seriesInfo name="BCP" value="14"/>
<seriesInfo name="RFC" value="8174"/>
<seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>
<reference anchor="RFC8257" target="https://www.rfc-editor.org/info/rfc8
257" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8257.xml">
<front>
<title>Data Center TCP (DCTCP): TCP Congestion Control for Data Cent
ers</title>
<author fullname="S. Bensley" initials="S." surname="Bensley"/>
<author fullname="D. Thaler" initials="D." surname="Thaler"/>
<author fullname="P. Balasubramanian" initials="P." surname="Balasub
ramanian"/>
<author fullname="L. Eggert" initials="L." surname="Eggert"/>
<author fullname="G. Judd" initials="G." surname="Judd"/>
<date month="October" year="2017"/>
<abstract>
<t>This Informational RFC describes Data Center TCP (DCTCP): a TCP
congestion control scheme for data-center traffic. DCTCP extends the Explicit C
ongestion Notification (ECN) processing to estimate the fraction of bytes that e
ncounter congestion rather than simply detecting that some congestion has occurr
ed. DCTCP then scales the TCP congestion window based on this estimate. This met
hod achieves high-burst tolerance, low latency, and high throughput with shallow
- buffered switches. This memo also discusses deployment issues related to the c
oexistence of DCTCP and conventional TCP, discusses the lack of a negotiating me
chanism between sender and receiver, and presents some possible mitigations. Thi
s memo documents DCTCP as currently implemented by several major operating syste
ms. DCTCP, as described in this specification, is applicable to deployments in c
ontrolled environments like data centers, but it must not be deployed over the p
ublic Internet without additional measures.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="8257"/>
<seriesInfo name="DOI" value="10.17487/RFC8257"/>
</reference>
<reference anchor="RFC8300" target="https://www.rfc-editor.org/info/rfc8
300" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8300.xml">
<front>
<title>Network Service Header (NSH)</title>
<author fullname="P. Quinn" initials="P." role="editor" surname="Qui
nn"/>
<author fullname="U. Elzur" initials="U." role="editor" surname="Elz
ur"/>
<author fullname="C. Pignataro" initials="C." role="editor" surname=
"Pignataro"/>
<date month="January" year="2018"/>
<abstract>
<t>This document describes a Network Service Header (NSH) imposed
on packets or frames to realize Service Function Paths (SFPs). The NSH also prov
ides a mechanism for metadata exchange along the instantiated service paths. The
NSH is the Service Function Chaining (SFC) encapsulation required to support th
e SFC architecture (defined in RFC 7665).</t>
</abstract>
</front>
<seriesInfo name="RFC" value="8300"/>
<seriesInfo name="DOI" value="10.17487/RFC8300"/>
</reference>
<reference anchor="RFC8311" target="https://www.rfc-editor.org/info/rfc8
311" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8311.xml">
<front>
<title>Relaxing Restrictions on Explicit Congestion Notification (EC
N) Experimentation</title>
<author fullname="D. Black" initials="D." surname="Black"/>
<date month="January" year="2018"/>
<abstract>
<t>This memo updates RFC 3168, which specifies Explicit Congestion
Notification (ECN) as an alternative to packet drops for indicating network con
gestion to endpoints. It relaxes restrictions in RFC 3168 that hinder experiment
ation towards benefits beyond just removal of loss. This memo summarizes the ant
icipated areas of experimentation and updates RFC 3168 to enable experimentation
in these areas. An Experimental RFC in the IETF document stream is required to
take advantage of any of these enabling updates. In addition, this memo makes re
lated updates to the ECN specifications for RTP in RFC 6679 and for the Datagram
Congestion Control Protocol (DCCP) in RFCs 4341, 4342, and 5622. This memo also
records the conclusion of the ECN nonce experiment in RFC 3540 and provides the
rationale for reclassification of RFC 3540 from Experimental to Historic; this
reclassification enables new experimental use of the ECT(1) codepoint.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="8311"/>
<seriesInfo name="DOI" value="10.17487/RFC8311"/>
</reference>
<reference anchor="RFC8926" target="https://www.rfc-editor.org/info/rfc8
926" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8926.xml">
<front>
<title>Geneve: Generic Network Virtualization Encapsulation</title>
<author fullname="J. Gross" initials="J." role="editor" surname="Gro
ss"/>
<author fullname="I. Ganga" initials="I." role="editor" surname="Gan
ga"/>
<author fullname="T. Sridhar" initials="T." role="editor" surname="S
ridhar"/>
<date month="November" year="2020"/>
<abstract>
<t>Network virtualization involves the cooperation of devices with
a wide variety of capabilities such as software and hardware tunnel endpoints,
transit fabrics, and centralized control clusters. As a result of their role in
tying together different elements of the system, the requirements on tunnels are
influenced by all of these components. Therefore, flexibility is the most impor
tant aspect of a tunneling protocol if it is to keep pace with the evolution of
technology. This document describes Geneve, an encapsulation protocol designed t
o recognize and accommodate these changing capabilities and needs.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="8926"/>
<seriesInfo name="DOI" value="10.17487/RFC8926"/>
</reference>
<reference anchor="RFC9300" target="https://www.rfc-editor.org/info/rfc9
300" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9300.xml">
<front>
<title>The Locator/ID Separation Protocol (LISP)</title>
<author fullname="D. Farinacci" initials="D." surname="Farinacci"/>
<author fullname="V. Fuller" initials="V." surname="Fuller"/>
<author fullname="D. Meyer" initials="D." surname="Meyer"/>
<author fullname="D. Lewis" initials="D." surname="Lewis"/>
<author fullname="A. Cabellos" initials="A." role="editor" surname="
Cabellos"/>
<date month="October" year="2022"/>
<abstract>
<t>This document describes the data plane protocol for the Locator
/ID Separation Protocol (LISP). LISP defines two namespaces: Endpoint Identifier
s (EIDs), which identify end hosts; and Routing Locators (RLOCs), which identify
network attachment points. With this, LISP effectively separates control from d
ata and allows routers to create overlay networks. LISP-capable routers exchange
encapsulated packets according to EID-to-RLOC mappings stored in a local Map-Ca
che.</t>
<t>LISP requires no change to either host protocol stacks or under
lay routers and offers Traffic Engineering (TE), multihoming, and mobility, amon
g other features.</t>
<t>This document obsoletes RFC 6830.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="9300"/>
<seriesInfo name="DOI" value="10.17487/RFC9300"/>
</reference>
<reference anchor="RFC9331" target="https://www.rfc-editor.org/info/rfc9
331" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9331.xml">
<front>
<title>The Explicit Congestion Notification (ECN) Protocol for Low L
atency, Low Loss, and Scalable Throughput (L4S)</title>
<author fullname="K. De Schepper" initials="K." surname="De Schepper
"/>
<author fullname="B. Briscoe" initials="B." role="editor" surname="B
riscoe"/>
<date month="January" year="2023"/>
<abstract>
<t>This specification defines the protocol to be used for a new ne
twork service called Low Latency, Low Loss, and Scalable throughput (L4S). L4S u
ses an Explicit Congestion Notification (ECN) scheme at the IP layer that is sim
ilar to the original (or 'Classic') ECN approach, except as specified within. L4
S uses 'Scalable' congestion control, which induces much more frequent control s
ignals from the network, and it responds to them with much more fine-grained adj
ustments so that very low (typically sub-millisecond on average) and consistentl
y low queuing delay becomes possible for L4S traffic without compromising link u
tilization. Thus, even capacity-seeking (TCP-like) traffic can have high bandwid
th and very low delay at the same time, even during periods of high traffic load
.</t>
<t>The L4S identifier defined in this document distinguishes L4S f
rom 'Classic' (e.g., TCP-Reno-friendly) traffic. Then, network bottlenecks can b
e incrementally modified to distinguish and isolate existing traffic that still
follows the Classic behaviour, to prevent it from degrading the low queuing dela
y and low loss of L4S traffic. This Experimental specification defines the rules
that L4S transports and network elements need to follow, with the intention tha
t L4S flows neither harm each other's performance nor that of Classic traffic. I
t also suggests open questions to be investigated during experimentation. Exampl
es of new Active Queue Management (AQM) marking algorithms and new transports (w
hether TCP-like or real time) are specified separately.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="9331"/>
<seriesInfo name="DOI" value="10.17487/RFC9331"/>
</reference>
<reference anchor="I-D.ietf-intarea-gue" target="https://datatracker.iet
f.org/doc/html/draft-ietf-intarea-gue-09" xml:base="https://bib.ietf.org/public/
rfc/bibxml-ids/reference.I-D.ietf-intarea-gue.xml">
<front>
<title>Generic UDP Encapsulation</title>
<author fullname="Tom Herbert" initials="T." surname="Herbert">
<organization>Quantonium</organization>
</author>
<author fullname="Lucy Yong" initials="L." surname="Yong">
<organization>Independent</organization>
</author>
<author fullname="Osama Zia" initials="O." surname="Zia">
<organization>Microsoft</organization>
</author>
<date day="26" month="October" year="2019"/>
<abstract>
<t>This specification describes Generic UDP Encapsulation (GUE), w
hich is a scheme for using UDP to encapsulate packets of different IP protocols
for transport across layer 3 networks. By encapsulating packets in UDP, speciali
zed capabilities in networking hardware for efficient handling of UDP packets ca
n be leveraged. GUE specifies basic encapsulation methods upon which higher leve
l constructs, such as tunnels and overlay networks for network virtualization, c
an be constructed. GUE is extensible by allowing optional data fields as part of
the encapsulation, and is generic in that it can encapsulate packets of various
IP protocols.</t>
</abstract>
</front>
<seriesInfo name="Internet-Draft" value="draft-ietf-intarea-gue-09"/>
</reference>
<reference anchor="I-D.ietf-tsvwg-rfc6040update-shim" target="https://da
tatracker.ietf.org/doc/html/draft-ietf-tsvwg-rfc6040update-shim-22" xml:base="ht
tps://bib.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-tsvwg-rfc6040update-
shim.xml">
<front>
<title>Propagating Explicit Congestion Notification Across IP Tunnel
Headers Separated by a Shim</title>
<author fullname="Bob Briscoe" initials="B." surname="Briscoe">
<organization>Independent</organization>
</author>
<date day="29" month="October" year="2023"/>
<abstract>
<t>RFC 6040 on "Tunnelling of Explicit Congestion Notification" ma
de the rules for propagation of 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 suffi
cient on its own for wide area packet forwarding. It surveys widely deployed IP
tunnelling protocols that use such shim header(s) and updates the specifications
of those that do not mention ECN propagation (that is RFC 2661, RFC 3931, RFC 2
784, RFC 4380 and RFC 7450, which respectively specify L2TPv2, L2TPv3, GRE, Tere
do and AMT). This specification also updates RFC 6040 with configuration require
ments needed to make any legacy tunnel ingress safe.</t>
</abstract>
</front>
<seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-rfc6040updat
e-shim-22"/>
</reference>
<reference anchor="IEEE802.1Q" target="https://ieeexplore.ieee.org/docum
ent/8403927">
<front> <front>
<title>IEEE Standard for Local and Metropolitan Area <title>IEEE Standard for Local and Metropolitan Area Network--Bridge
Networks&mdash;Virtual Bridged Local Area Networks&mdash;Amendment s and Bridged Networks</title>
6: Provider Backbone Bridges</title>
<author> <author>
<organization>IEEE</organization> <organization>IEEE</organization>
</author> </author>
<date month="July" year="2018"/> <date month="December" year="2022"/>
</front> </front>
<seriesInfo name="IEEE Std" value="802.1Q-2018"/> <seriesInfo name="IEEE Std" value="802.1Q-2022"/>
<seriesInfo name="DOI" value="10.1109/IEEESTD.2022.10004498"/>
</reference> </reference>
<!-- <reference anchor="IEEE802.1ah"
target="https://www.ieee802.org/1/pages/802.1ah.html">
<front>
<title>IEEE Standard for Local and Metropolitan Area
Networks&mdash;Virtual Bridged Local Area Networks &mdash; Amendment
6: Provider Backbone Bridges</title>
<author>
<organization>IEEE</organization>
</author>
<date month="August" year="2008"/>
</front>
<seriesInfo name="IEEE Std" value="802.1ah-2008"/>
<format target="https://www.ieee802.org/1/pages/802.1ah.html"
type="HTML"/>
<annotation>(Access Controlled link within page)</annotation>
</reference>
<reference anchor="IEEE802.1Qau"
target="https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?pun
umber=5454061">
<front>
<title>IEEE Standard for Local and Metropolitan Area
Networks&mdash;Virtual Bridged Local Area Networks&mdash;Amendment 13:
Congestion Notification</title>
<author fullname="Norm Finn" initials="N" role="editor"
surname="Finn">
<organization>Cisco</organization>
</author>
<date month="March" year="2010"/>
</front>
<seriesInfo name="IEEE Std" value="802.1Qau-2010"/>
<format target="https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punu
mber=5454061"
type="PDF"/>
<annotation>(Access Controlled link within page)</annotation> <reference anchor="ITU-T.I.371" target="https://www.itu.int/rec/T-REC-I.37
</reference> --> 1-200403-I/en">
<reference anchor="ITU-T.I.371" target="https://www.itu.int/rec/T-REC-I.37
1">
<front> <front>
<title>Traffic Control and Congestion Control in B-ISDN</title> <title>Traffic control and congestion control in B-ISDN</title>
<author fullname="" initials="" surname=""> <author fullname="" initials="" surname="">
<organization>ITU-T</organization> <organization>ITU-T</organization>
</author> </author>
<date month="March" year="2004"/> <date month="March" year="2004"/>
</front> </front>
<seriesInfo name="ITU-T Rec." value="I.371 (03/04)"/> <seriesInfo name="ITU-T Recommendation" value="I.371"/>
<format target="https://www.itu.int/rec/T-REC-I.371" type="PDF"/>
</reference> </reference>
<reference anchor="Buck00"> <reference anchor="Buck00">
<front> <front>
<title>Frame Relay: Technology and Practice</title> <title>Frame Relay: Technology and Practice</title>
<author fullname="Jeff T. Buckwalter" initials="J.T." surname="Buckw alter"> <author fullname="Jeff T. Buckwalter" initials="J.T." surname="Buckw alter">
<organization/> <organization/>
</author> </author>
<date day="" month="" year="2000"/> <date year="2000"/>
</front> </front>
<seriesInfo name="Pub. Addison Wesley" value="ISBN-13: 978-0201485240" <seriesInfo name="ISBN-13" value="978-0201485240"/>
/> <refcontent>Addison-Wesley Professional</refcontent>
</reference> </reference>
<reference anchor="GTPv1"> <reference anchor="GTPv1">
<front> <front>
<title>GPRS Tunnelling Protocol (GTP) across the Gn and Gp <title>General Packet Radio Service (GPRS); GPRS Tunnelling
interface</title> Protocol (GTP) across the Gn and Gp interface</title>
<author> <author>
<organization>3GPP</organization> <organization>3GPP</organization>
</author> </author>
<date/> <date/>
</front> </front>
<seriesInfo name="Technical Specification" value="TS 29.060"/> <seriesInfo name="Technical Specification" value="29.060"/>
</reference> </reference>
<reference anchor="GTPv1-U"> <reference anchor="GTPv1-U">
<front> <front>
<title>General Packet Radio System (GPRS) Tunnelling Protocol User <title>General Packet Radio System (GPRS) Tunnelling Protocol User
Plane (GTPv1-U)</title> Plane (GTPv1-U)</title>
<author> <author>
<organization>3GPP</organization> <organization>3GPP</organization>
</author> </author>
<date/>
</front> </front>
<seriesInfo name="Technical Specification" value="TS 29.281"/> <seriesInfo name="Technical Specification" value="29.281"/>
</reference> </reference>
<reference anchor="LTE-RA"> <reference anchor="LTE-RA">
<front> <front>
<title>Evolved Universal Terrestrial Radio Access (E-UTRA) and <title>Evolved Universal Terrestrial Radio Access (E-UTRA) and
Evolved Universal Terrestrial Radio Access Network (E-UTRAN); Evolved Universal Terrestrial Radio Access Network (E-UTRAN);
Overall description; Stage 2</title> Overall description; Stage 2</title>
<author> <author>
<organization>3GPP</organization> <organization>3GPP</organization>
</author> </author>
<date/> <date/>
</front> </front>
<seriesInfo name="Technical Specification" value="TS 36.300"/> <seriesInfo name="Technical Specification" value="36.300"/>
</reference> </reference>
<reference anchor="UTRAN"> <reference anchor="UTRAN">
<front> <front>
<title>UTRAN Overall Description</title> <title>UTRAN overall description</title>
<author> <author>
<organization>3GPP</organization> <organization>3GPP</organization>
</author> </author>
<date/>
</front> </front>
<seriesInfo name="Technical Specification" value="TS 25.401"/> <seriesInfo name="Technical Specification" value="25.401"/>
</reference> </reference>
<reference anchor="GTPv2-C"> <reference anchor="GTPv2-C">
<front> <front>
<title>Evolved General Packet Radio Service (GPRS) Tunnelling <title>3GPP Evolved Packet System (EPS); Evolved General Packet
Protocol for Control plane (GTPv2-C)</title> Radio Service (GPRS) Tunnelling Protocol for Control plane
(GTPv2-C); Stage 3</title>
<author> <author>
<organization>3GPP</organization> <organization>3GPP</organization>
</author> </author>
<date year=""/>
</front> </front>
<seriesInfo name="Technical Specification" value="TS 29.274"/> <seriesInfo name="Technical Specification" value="29.274"/>
</reference> </reference>
<reference anchor="ATM-TM-ABR" target="https://www.cisco.com/c/en/us/sup port/docs/asynchronous-transfer-mode-atm/atm-traffic-management/10415-atmabr.htm l"> <reference anchor="ATM-TM-ABR" target="https://www.cisco.com/c/en/us/sup port/docs/asynchronous-transfer-mode-atm/atm-traffic-management/10415-atmabr.htm l">
<front> <front>
<title>Understanding the Available Bit Rate (ABR) Service Category <title>Understanding the Available Bit Rate (ABR) Service Category
for ATM VCs</title> for ATM VCs</title>
<author> <author>
<organization>Cisco</organization> <organization>Cisco</organization>
</author> </author>
<date day="5" month="June" year="2005"/> <date month="June" year="2005"/>
</front> </front>
<seriesInfo name="Design Technote" value="10415"/> <seriesInfo name="Design Technote" value="10415"/>
</reference> </reference>
<reference anchor="Leiserson85"> <reference anchor="Leiserson85">
<front> <front>
<title>Fat-trees: universal networks for hardware-efficient <title>Fat-trees: Universal networks for hardware-efficient
supercomputing</title> supercomputing</title>
<author fullname="Charles E. Leiserson" initials="C.E." surname="Lei serson"> <author fullname="Charles E. Leiserson" initials="C.E." surname="Lei serson">
<organization/> <organization/>
</author> </author>
<date day="" month="October" year="1985"/> <date month="October" year="1985"/>
</front> </front>
<seriesInfo name="IEEE Transactions on Computers" value="34(10):892&nd <seriesInfo name="DOI" value="10.1109/TC.1985.6312192"/>
ash;901"/> <refcontent>IEEE Transactions on Computers, Vol. C-34, Issue 10</refcon
tent>
</reference> </reference>
<reference anchor="Clos53"> <reference anchor="Clos53">
<front> <front>
<title>A Study of Non-Blocking Switching Networks</title> <title>A Study of Non-Blocking Switching Networks</title>
<author fullname="Charles Clos" initials="C." surname="Clos"> <author fullname="Charles Clos" initials="C." surname="Clos">
<organization/>
</author> </author>
<date day="" month="March" year="1953"/> <date month="March" year="1953"/>
</front> </front>
<seriesInfo name="Bell Systems Technical Journal" value="32(2):406&nda <seriesInfo name="DOI" value="10.1002/j.1538-7305.1953.tb01433.x"/>
sh;424"/> <refcontent>The Bell System Technical Journal, Vol. 32, Issue 2</refcontent>
</reference> </reference>
</references> </references>
</references> </references>
<!-- ================================================================ -->
<section anchor="ecnencap_Comments_Solicited" numbered="false" removeInRFC="
true" toc="default">
<name>Comments Solicited</name>
<t>Comments and questions are encouraged and very welcome. They can be
addressed to the IETF Transport Area working group mailing list
&lt;tsvwg@ietf.org&gt;, and/or to the authors.</t>
</section>
<section anchor="ecnencap_Acknowledgements" numbered="false" toc="default"> <section anchor="ecnencap_Acknowledgements" numbered="false" toc="default">
<name>Acknowledgements</name> <name>Acknowledgements</name>
<t>Thanks to Gorry Fairhurst and David Black for extensive reviews. <t>Thanks to <contact fullname="Gorry Fairhurst"/> and <contact
Thanks also to the following reviewers: Joe Touch, Andrew McGregor, fullname="David Black"/> for extensive reviews. Thanks also to the
Richard Scheffenegger, Ingemar Johansson, Piers O'Hanlon, Donald following reviewers: <contact fullname="Joe Touch"/>, <contact
Eastlake, Jonathan Morton, Markku Kojo, Sebastian M&ouml;ller, Martin Duke fullname="Andrew McGregor"/>, <contact fullname="Richard
and Scheffenegger"/>, <contact fullname="Ingemar Johansson"/>, <contact
Michael Welzl, who pointed out that lower layer congestion notification fullname="Piers O'Hanlon"/>, <contact fullname="Donald Eastlake 3rd"/>,
signals may have different semantics to those in IP. Thanks are also due <contact fullname="Jonathan Morton"/>, <contact fullname="Markku
to the tsvwg chairs, TSV ADs and IETF liaison people such as Eric Gray, Kojo"/>, <contact fullname="Sebastian Möller"/>, <contact
Dan Romascanu and Gonzalo Camarillo for helping with the liaisons with fullname="Martin Duke"/>, and <contact fullname="Michael Welzl"/>, who
the IEEE and 3GPP. And thanks to Georg Mayer and particularly to Erik pointed out that lower-layer congestion notification signals may have
Guttman for the extensive search and categorisation of any 3GPP different semantics to those in IP. Thanks are also due to the Transport a
specifications that cite ECN specifications. Thanks also to the Area nd Services Working Group (tsvwg)
Reviewers Dan Harkins, Paul Kyzivat, Sue Hares and Dale Worley.</t> chairs, TSV ADs and IETF liaison people such as <contact fullname="Eric
<t>Bob Briscoe was part-funded by the European Community under its Gray"/>, <contact fullname="Dan Romascanu"/> and <contact
Seventh Framework Programme through the Trilogy project (ICT-216372) for fullname="Gonzalo Camarillo"/> for helping with the liaisons with the
initial drafts then through the Reducing Internet Transport Latency IEEE and 3GPP. And thanks to <contact fullname="Georg Mayer"/> and
(RITE) project (ICT-317700), and for final drafts (from -18) he was funded particularly to <contact fullname="Erik Guttman"/> for the extensive
by Apple Inc. The views expressed here are search and categorization of any 3GPP specifications that cite ECN
solely those of the authors.</t> specifications. Thanks also to the Area Reviewers <contact fullname="Dan
Harkins"/>, <contact fullname="Paul Kyzivat"/>, <contact fullname="Sue
Hares"/>, and <contact fullname="Dale Worley"/>.</t>
<t><contact fullname="Bob Briscoe"/> was part-funded by the European
Community under its Seventh Framework Programme through the Trilogy
project (ICT-216372) for initial drafts then through the Reducing Internet
Transport Latency (RITE)
project (ICT-317700), and for final drafts (from -18) he was funded by App
le Inc. The
views expressed here are solely those of the authors.</t>
</section> </section>
<section numbered="false" toc="default"> <section numbered="false" toc="default">
<name>Contributors</name> <name>Contributors</name>
<artwork name="" type="" align="left" alt=""><![CDATA[ Pat Thaler <contact fullname="Pat Thaler">
Broadcom Corporation (retired) <organization>Broadcom Corporation (retired)</organization>
CA <address>
USA]]></artwork> <postal>
<t>Pat was a co-author of this draft, but retired before its <region>CA</region>
<country>United States of America</country></postal>
</address>
</contact>
<t>Pat was a coauthor of this document, but retired before its
publication.</t> publication.</t>
</section> </section>
</back> </back>
</rfc> </rfc>
 End of changes. 268 change blocks. 
1712 lines changed or deleted 897 lines changed or added

This html diff was produced by rfcdiff 1.48.