<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-scone-protocol-02" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="SCONE Protocol">Standard Communication with Network Elements (SCONE) Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-scone-protocol-02"/>
    <author fullname="Martin Thomson">
      <organization>Mozilla</organization>
      <address>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <author fullname="Christian Huitema">
      <organization>Private Octopus Inc.</organization>
      <address>
        <email>huitema@huitema.net</email>
      </address>
    </author>
    <author fullname="奥 一穂" asciiFullname="Kazuho Oku">
      <organization>Fastly</organization>
      <address>
        <email>kazuhooku@gmail.com</email>
      </address>
    </author>
    <author fullname="Matt Joras">
      <organization>Meta</organization>
      <address>
        <email>matt.joras@gmail.com</email>
      </address>
    </author>
    <author fullname="Marcus Ihlar">
      <organization>Ericsson</organization>
      <address>
        <email>marcus.ihlar@ericsson.com</email>
      </address>
    </author>
    <date year="2025" month="July" day="07"/>
    <area>Web and Internet Transport</area>
    <workgroup>SCONE</workgroup>
    <keyword>locomotive</keyword>
    <keyword>pastry</keyword>
    <abstract>
      <?line 57?>

<t>This document describes a protocol where on-path network elements
can give endpoints their perspective on what the maximum achievable
throughput might be for QUIC flows.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-wg-scone.github.io/scone/draft-ietf-scone-protocol.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-scone-protocol/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        SCONE Working Group mailing list (<eref target="mailto:scone@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/scone/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/scone/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-scone/scone"/>.</t>
    </note>
  </front>
  <middle>
    <?line 64?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Many access networks apply rate limits to constrain the data rate of attached
devices. This is often done without any indication to the applications
running on devices.  The result can be that application performance is degraded,
as the manner in which rate limits are enforced can be incompatible with the
rate estimation or congestion control algorithms used at endpoints.</t>
      <t>Having the network indicate what its rate limiting policy is, in a way that is
accessible to endpoints, allows applications to use this information when
adapting their send rate.</t>
      <t>Network elements are not limited to communicating information
about rate limiting policies.
Network elements in access networks could provide information
to endpoints that can help account for changes in network capacity
that are not suited to congestion control feedback. This might include
reduced capacity due to overuse, equipment faults, or other transient issues;
conversely, networks might choose to signal increased availability of capacity.</t>
      <t>The Standard Communication with Network Elements (SCONE) protocol is
negotiated by QUIC endpoints.  This protocol provides a means for network
elements to signal the maximum available sustained throughput, or rate limits,
for flows of UDP datagrams that transit that network element to a QUIC endpoint.</t>
      <t>Networks with rate limiting policies use SCONE to send throughput advice
to cooperating endpoints to limit overall network usage.
Where congestion control signals -- such as ECN, delays and loss --
operate on a time scale of a round trip time,
throughput advice operates over a much longer period.
This has benefits in some networks as endpoints can fully consume
network capacity in bursts,
rather than extending network interaction at lower rates.</t>
      <t>For endpoints, SCONE throughput advice makes network policies visible,
which can reduce wasteful probing beyond those limits.</t>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <t>QUIC endpoints can negotiate the use of SCONE by including a transport parameter
(<xref target="tp"/>) in the QUIC handshake.  Endpoints then occasionally coalesce a SCONE
packet with ordinary QUIC packets that they send.</t>
      <t>Network elements that have rate limiting policies can detect flows that include
SCONE packets.  The network element can indicate a maximum sustained throughput
by modifying the SCONE packet as it transits the network element.</t>
      <artset>
        <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="192" width="472" viewBox="0 0 472 192" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
            <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
            <path d="M 40,80 L 40,176" fill="none" stroke="black"/>
            <path d="M 80,32 L 80,80" fill="none" stroke="black"/>
            <path d="M 120,32 L 120,80" fill="none" stroke="black"/>
            <path d="M 160,80 L 160,176" fill="none" stroke="black"/>
            <path d="M 200,32 L 200,80" fill="none" stroke="black"/>
            <path d="M 248,32 L 248,80" fill="none" stroke="black"/>
            <path d="M 288,80 L 288,176" fill="none" stroke="black"/>
            <path d="M 336,32 L 336,80" fill="none" stroke="black"/>
            <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
            <path d="M 120,32 L 200,32" fill="none" stroke="black"/>
            <path d="M 248,32 L 336,32" fill="none" stroke="black"/>
            <path d="M 8,80 L 80,80" fill="none" stroke="black"/>
            <path d="M 120,80 L 200,80" fill="none" stroke="black"/>
            <path d="M 248,80 L 336,80" fill="none" stroke="black"/>
            <path d="M 40,112 L 64,112" fill="none" stroke="black"/>
            <path d="M 128,112 L 152,112" fill="none" stroke="black"/>
            <path d="M 160,128 L 192,128" fill="none" stroke="black"/>
            <path d="M 256,128 L 280,128" fill="none" stroke="black"/>
            <polygon class="arrowhead" points="288,128 276,122.4 276,133.6" fill="black" transform="rotate(0,280,128)"/>
            <polygon class="arrowhead" points="160,112 148,106.4 148,117.6" fill="black" transform="rotate(0,152,112)"/>
            <g class="text">
              <text x="44" y="52">QUIC</text>
              <text x="160" y="52">Network</text>
              <text x="292" y="52">QUIC</text>
              <text x="44" y="68">Sender</text>
              <text x="160" y="68">Element</text>
              <text x="292" y="68">Receiver</text>
              <text x="96" y="116">SCONE</text>
              <text x="228" y="116">SCONE+rate</text>
              <text x="96" y="132">+QUIC</text>
              <text x="224" y="132">+QUIC</text>
              <text x="340" y="148">Validate</text>
              <text x="396" y="148">QUIC</text>
              <text x="444" y="148">packet</text>
              <text x="320" y="164">and</text>
              <text x="364" y="164">record</text>
              <text x="412" y="164">rate</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art"><![CDATA[
+--------+    +---------+     +----------+
|  QUIC  |    | Network |     |   QUIC   |
| Sender |    | Element |     | Receiver |
+---+----+    +----+----+     +----+-----+
    |              |               |
    +--- SCONE --->|   SCONE+rate  |
    |    +QUIC     +---- +QUIC --->|
    |              |               |  Validate QUIC packet
    |              |               |  and record rate
    |              |               |
]]></artwork>
      </artset>
      <t>QUIC endpoints that receive modified SCONE packets observe the indicated
version, process the QUIC packet, and then record the indicated rate.</t>
      <t>Indicated rate limits apply only in a single direction.  Separate indications
can be sent for the client-to-server direction and server-to-client direction.
The indicated rates do not need to be the same.</t>
      <t>Indicated rate limits only apply to the path on which they are received.  A
connection that migrates or uses multipath <xref target="QUIC-MP"/>
cannot assume that rate limit indications from one path apply to new paths.</t>
    </section>
    <section anchor="applicability">
      <name>Applicability</name>
      <t>This protocol only works for flows that use the SCONE packet (<xref target="packet"/>).</t>
      <t>The protocol requires that packets are modified as they transit a
network element, which provides endpoints strong evidence that the network
element has the power to apply rate limiting; though see <xref target="security"/> for
potential limitations on this.</t>
      <t>The throughput advice signal that this protocol carries is independent of congestion
signals, limited to a single path and UDP packet flow, unidirectional, and
strictly advisory.</t>
      <section anchor="independent-of-congestion-signals">
        <name>Independent of Congestion Signals</name>
        <t>Throughput advice signals are not a substitute for congestion feedback.  Congestion
signals, such as acknowledgments, provide information on loss, delay, or ECN
markings <xref target="ECN"/> that indicate the real-time condition of a network
path.  Congestion signals might indicate a throughput that is different from the
signaled rate limit.</t>
        <t>Endpoints cannot assume that a signaled rate limit is achievable if congestion
signals indicate otherwise.  Congestion could be experienced at a different
point on the network path than the network element that indicates a rate limit.
Therefore, endpoints need to respect the send rate constraints that are set by a
congestion controller.</t>
      </section>
      <section anchor="unspecified-scope">
        <name>Unspecified Scope</name>
        <t>Modifying a packet does not prove that the throughput that is indicated would be
achievable.  A signal that is sent for a specific flow is likely enforced at a
different scope.  The extent of that scope is not carried in the signal.</t>
        <t>For instance, limits might apply at a network subscription level, such
that multiple flows receive the same signal.</t>
        <t>Endpoints can therefore be more confident in the throughput signal as an
indication of the maximum achievable throughput than as any indication of
expected throughput.  That throughput will only be achievable when there is no
significant data flowing in the same scope.  In the presence of other flows,
congestion limits are likely to determine actual throughput.</t>
        <t>This makes the application of signals most usefully applied to a downlink flow
in access networks, close to an endpoint. In that case, capacity is less likely
to be split between multiple active flows.</t>
      </section>
      <section anchor="per-flow-signal">
        <name>Per-Flow Signal</name>
        <t>The same UDP address tuple might be used for multiple QUIC connections.  A
single signal might be lost or only reach a single application endpoint.
Network elements that signal about a flow might choose to send additional
signals, using connection IDs to indicate when new connections could be
involved.</t>
      </section>
      <section anchor="undirectional-signal">
        <name>Undirectional Signal</name>
        <t>The endpoint that receives a throughput advice signal is not the endpoint that might
adapt its sending behavior as a result of receiving the signal.  This ensures
that the throughput advice signal is attached to the flow that it is mostly likely to
apply to.</t>
        <t>An endpoint might need to communicate the value it receives to its peer in order
to ensure that the limit is respected.  This document does not define how that
signaling occurs as this is specific to the application in use.</t>
      </section>
      <section anchor="advisory-signal">
        <name>Advisory Signal</name>
        <t>A signal does not prove that a higher rate would not be successful.  Endpoints
that receive this signal therefore need to treat the information as advisory.</t>
        <t>The fact that an endpoint requests bitrate signals does not necessarily mean
that it will adhere to them; in some cases, the endpoint cannot. For
example, a flow may initially be used to serve video chunks, with the client
selecting appropriate chunks based on bitrate signals, but later switch to a
bulk download for which bitrate adaptation is not applicable. Composite flows
from multiple applications, such as tunneled flows, might only have a subset of
the involved applications that are capable of handling SCONE signals. Therefore,
when a network element detects a flow using more bandwidth than advertised via
SCONE, it might switch to applying its policies for non-SCONE flows, using
congestion control signals.</t>
        <t>The time and scope over which throughput advice applies is not specified.
Network conditions and rate-limit policies can change in ways that make
previously signaled advice obsolete, and there are no guarantees that
updated advice will be sent at such events. The signaled
advice can be assumed to apply to the flow of packets on the same UDP address
tuple for the duration of that flow.  For rate limiting networks, rate limiting
policies often apply on the level of a device or subscription, but endpoints
cannot assume that this is the case.  A separate signal can be sent for each flow.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="BCP14"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="packet">
      <name>SCONE Packet</name>
      <t>A SCONE packet is a QUIC long header packet that follows the QUIC invariants;
see <xref section="5.1" sectionFormat="of" target="INVARIANTS"/>.</t>
      <t><xref target="fig-scone-packet"/> shows the format of the SCONE packet using the conventions
from <xref section="4" sectionFormat="of" target="INVARIANTS"/>.</t>
      <figure anchor="fig-scone-packet">
        <name>SCONE Packet Format</name>
        <sourcecode type="artwork"><![CDATA[
SCONE Packet {
  Header Form (1) = 1,
  Reserved (1),
  Rate Signal (6),
  Version (32) = 0xSCONE1 or 0xSCONE2,
  Destination Connection ID Length (8),
  Destination Connection ID (0..2040),
  Source Connection ID Length (8),
  Source Connection ID (0..2040),
}
]]></sourcecode>
      </figure>
      <t>The most significant bit (0x80) of the packet indicates that this is a QUIC long
header packet.  The next bit (0x40) is reserved and can be set according to
<xref target="QUIC-BIT"/>.</t>
      <t>The low 6 bits (0x3f) of the first byte contain the Rate Signal field. Values
for this field are described in <xref target="rate-signal"/>.</t>
      <t>This packet includes a Destination Connection ID field that is set to the same
value as other packets in the same datagram; see <xref section="12.2" sectionFormat="of" target="QUIC"/>.</t>
      <t>The Source Connection ID field is set to match the Source Connection ID field of
any packet that follows.  If the next packet in the datagram does not have a
Source Connection ID field, which is the case for packets with a short header
(<xref section="5.2" sectionFormat="of" target="INVARIANTS"/>), the Source Connection ID field is empty.</t>
      <t>SCONE packets <bcp14>SHOULD</bcp14> be included as the first packet in a datagram.  This is
necessary in many cases for QUIC versions 1 and 2 because packets with a short
header cannot precede any other packets.</t>
      <section anchor="rate-signal">
        <name>Rate Signals</name>
        <t>The Rate Signal field in SCONE uses the low 6 bits (0x3f) of the first byte.
This field is encoded as a logarithmically spaced distribution over a range
defined by the SCONE protocol version.</t>
        <t>When sent by a QUIC endpoint, the Version field of a SCONE packet is set to
0xSCONE2 and the Rate Signal field is set to 0x3F (63), indicating no rate limit
is in place or that the SCONE protocol is not supported by network elements on
the path. All other values (0x00 through 0x3F for protocol version 0xSCONE1 and
0x00 through 0x3E for protocol version 0xSCONE2) represent the ceiling of rates
being advised by the network element(s) on the path.</t>
        <t>For SCONE protocol version 0xSCONE1, the rate limits use a logarithmic scale with:</t>
        <ul spacing="normal">
          <li>
            <t>Base rate (b_min) = 100 Kbps</t>
          </li>
          <li>
            <t>Bitrate at value n = b_min * 10^(n/20)</t>
          </li>
        </ul>
        <t>For SCONE protocol version 0xSCONE2, the rate limits use a logarithmic scale with:</t>
        <ul spacing="normal">
          <li>
            <t>Bitrate at value n = b_min * 10^((n + 64)/20)</t>
          </li>
        </ul>
        <t>With two versions combined, bitrates between 100 Kbps and 199.5 Gbps can be
expressed.</t>
        <t>Some notable values in these ranges include:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Version</th>
              <th align="left">Rate Signal</th>
              <th align="left">Bitrate</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0xSCONE1</td>
              <td align="left">0</td>
              <td align="left">100 Kbps</td>
            </tr>
            <tr>
              <td align="left">0xSCONE1</td>
              <td align="left">10</td>
              <td align="left">316 Kbps</td>
            </tr>
            <tr>
              <td align="left">0xSCONE1</td>
              <td align="left">20</td>
              <td align="left">1 Mbps</td>
            </tr>
            <tr>
              <td align="left">0xSCONE1</td>
              <td align="left">30</td>
              <td align="left">3.16 Mbps</td>
            </tr>
            <tr>
              <td align="left">0xSCONE1</td>
              <td align="left">40</td>
              <td align="left">10 Mbps</td>
            </tr>
            <tr>
              <td align="left">0xSCONE1</td>
              <td align="left">50</td>
              <td align="left">31.6 Mbps</td>
            </tr>
            <tr>
              <td align="left">0xSCONE1</td>
              <td align="left">60</td>
              <td align="left">100 Mbps</td>
            </tr>
            <tr>
              <td align="left">0xSCONE2</td>
              <td align="left">6</td>
              <td align="left">316 Mbps</td>
            </tr>
            <tr>
              <td align="left">0xSCONE2</td>
              <td align="left">16</td>
              <td align="left">1 Gbps</td>
            </tr>
            <tr>
              <td align="left">0xSCONE2</td>
              <td align="left">26</td>
              <td align="left">3.16 Gbps</td>
            </tr>
            <tr>
              <td align="left">0xSCONE2</td>
              <td align="left">36</td>
              <td align="left">10 Gbps</td>
            </tr>
            <tr>
              <td align="left">0xSCONE2</td>
              <td align="left">46</td>
              <td align="left">31.6 Gbps</td>
            </tr>
            <tr>
              <td align="left">0xSCONE2</td>
              <td align="left">56</td>
              <td align="left">100 Gbps</td>
            </tr>
            <tr>
              <td align="left">0xSCONE2</td>
              <td align="left">62</td>
              <td align="left">199.5 Gbps</td>
            </tr>
            <tr>
              <td align="left">0xSCONE2</td>
              <td align="left">63</td>
              <td align="left">No limit</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="endpoint-processing-of-scone-packets">
        <name>Endpoint Processing of SCONE Packets</name>
        <t>Processing a SCONE packet involves reading the value from the Rate Signal field.
However, this value <bcp14>MUST NOT</bcp14> be used unless another packet from the same
datagram is successfully processed.  Therefore, a SCONE packet always needs to
be coalesced with other QUIC packets.</t>
        <t>A SCONE packet is defined by the use of the longer header bit (0x80 in the first
byte) and the SCONE protocol version (0xTBD in the next four bytes).  A SCONE
packet <bcp14>MAY</bcp14> be discarded, along with any packets that come after it in the same
datagram, if the Source Connection ID is not consistent with those coalesced
packets, as specified in <xref target="packet"/>.</t>
        <t>A SCONE packet <bcp14>MUST</bcp14> be discarded if the Destination Connection ID does not match
one recognized by the receiving endpoint.</t>
      </section>
    </section>
    <section anchor="tp">
      <name>Negotiating SCONE</name>
      <t>A QUIC endpoint indicates that it is willing to receive SCONE packets by
including the scone_supported transport parameter (0xTBD).</t>
      <t>This transport parameter is valid for QUIC versions 1 <xref target="QUIC"/> and 2
<xref target="QUICv2"/> and any other version that recognizes the versions,
transport parameters, and frame types registries established in Sections <xref target="QUIC" section="22.2" sectionFormat="bare"/>, <xref target="QUIC" section="22.3" sectionFormat="bare"/>, and <xref target="QUIC" section="22.4" sectionFormat="bare"/> of <xref target="QUIC"/>.</t>
    </section>
    <section anchor="deployment">
      <name>Deployment</name>
      <t>QUIC endpoints can enable the use of the SCONE protocol by sending SCONE packets
<xref target="packet"/>.  Network elements then apply or replace the Rate Signal field
(<xref target="apply"/>) according to their policies.</t>
      <section anchor="apply">
        <name>Applying Throughput Advice Signals</name>
        <t>A network element detects a SCONE packet by observing that a packet has a QUIC
long header and one of the SCONE protocol versions (0xSCONE1 or 0xSCONE2).</t>
        <t>A network element then conditionally replaces the Version field and the Rate
Signal field with values of its choosing.</t>
        <t>A network element might receive a packet that already includes a rate signal.
The network element replaces the rate signal if it wishes to signal a lower
rate limit; otherwise, the original values are retained, preserving the signal
from the network element with the lower policy.</t>
        <t>The following pseudocode indicates how a network element might detect a SCONE
packet and replace an existing rate signal,
given throughput advice (<tt>target_throughput</tt>).</t>
        <sourcecode type="pseudocode"><![CDATA[
is_long = packet[0] & 0x80 == 0x80
packet_version = ntohl(packet[1..5])
if is_long and (packet_version == SCONE1_VERSION or
                packet_version == SCONE2_VERSION):
  packet_throughput = \
    signal_to_throughput(packet_version, packet[0] & 0x3f)

  if target_throughput < packet_throughput:
    target_version, target_signal = \
      throughput_to_signal(target_throughput)
    packet[0] = packet[0] & 0xc0 | target_signal
    if target_version != packet_version:
      packet[1..5] = htonl(target_version)
]]></sourcecode>
      </section>
    </section>
    <section anchor="version-interaction">
      <name>Version Interaction</name>
      <t>The SCONE protocol defines two versions (0xSCONE1 and 0xSCONE2) that cover
different ranges of bitrates. This design allows for:</t>
      <ul spacing="normal">
        <li>
          <t>Support for both very low bitrates (down to 100 Kbps) and very high bitrates
(up to 199.5 Gbps)</t>
        </li>
        <li>
          <t>Graceful handling of network elements that might only recognize one version.</t>
        </li>
      </ul>
      <section anchor="extra-packets">
        <name>Providing Opportunities to Apply Throughput Advice Signals</name>
        <t>Endpoints that wish to offer network elements the option to add throughout advice
signals can send SCONE packets at any time.  This is a decision that a sender
makes when constructing datagrams. It is recommended that endpoints promptly
send an initial SCONE packet once the peer confirms its willingness to receive
them.</t>
        <t>Endpoints <bcp14>MUST</bcp14> send any SCONE packet they send as the first packet in a
datagram, coalesced with additional packets. An endpoint that receives and
discards a SCONE packet without also successfully processing another packet
from the same datagram <bcp14>SHOULD</bcp14> ignore any throughput advice signal. Such a datagram
might be entirely spoofed.</t>
        <t>A network element that wishes to signal an updated rate limit waits for the
next SCONE packet in the desired direction.</t>
      </section>
      <section anchor="feedback">
        <name>Feedback To Sender About Signals</name>
        <t>Information about throughout advice is intended for the sending application.  Any
signal from network elements can be propagated to the receiving application
using an implementation-defined mechanism.</t>
        <t>This document does not define a means for indicating what was received.
That is, the expectation is that any signal is propagated to the application
for handling, not handled automatically by the transport layer.
How a receiving application communicates the throughput advice signal to a
sending application will depend on the application in use.</t>
        <t>Different applications can choose different approaches. For example,
in an application where a receiver drives rate adaptation, it might
not be necessary to define additional signaling.</t>
        <t>A sender can use any acknowledgment mechanism provided by the QUIC version in
use to learn whether datagrams containing SCONE packets were likely received.
This might help inform whether to send additional SCONE packets in the event
that a datagram is lost. However, rather than relying on transport signals, an
application might be better able to indicate what has been received and
processed.</t>
        <t>SCONE packets could be stripped from datagrams in the network, which cannot be
reliably detected.  This could result in a sender falsely believing that no
network element applied a throughput advice signal.</t>
      </section>
      <section anchor="interactions-with-congestion-control">
        <name>Interactions with congestion control</name>
        <t>SCONE and congestion control both provide the application with estimates
of a path capacity. They are complementary. Congestion control algorithms
are typically designed to quickly detect and react to congestion, i.e., to
the "minimum" capacity of a path. SCONE informs the endpoint
of the maximum capacity of a path based on network rate limit policy,
network conditions, or a combination of the two.</t>
        <t>Consider for example a path in which the bottleneck router implements Early
Congestion Notification as specified in the L4S architecture <xref target="RFC9330"/>.
If the path capacity diminishes, queues will build up and the router
will immediately start increasing the rate at which packets are marked
as "Congestion Experienced". The receiving endpoint will notice these marks,
and inform its peer. The incoming congestion will be detected within
1 round trip time (RTT). This scenario will play out whatever the reason
for the change in capacity, whether due to increased competition between
multiple applications or, for example, to a change in capacity of a wireless
channel.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>The modification of packets provides endpoints proof that a network element is
in a position to drop datagrams and could apply a rate limit policy.
<xref target="extra-packets"/> states that endpoints only accept signals if the datagram
contains a packet that it accepts to prevent an off-path attacker from inserting
spurious throughput advice signals.</t>
      <t>Some off-path attackers may be able to both
observe traffic and inject packets. Attackers with such capabilities could
observe packets sent by an endpoint, create datagrams coalescing an
arbitrary SCONE packet and the observed packet, and send these datagrams
such that they arrive at the peer endpoint before the original
packet. Spoofed packets that seek to advertise a higher limit
than might otherwise be permitted also need to bypass any
rate limiters. The attacker will thus get arbitrary SCONE packets accepted by
the peer, with the result being that the endpoint receives a false
or misleading rate limit.</t>
      <t>The recipient of a throughput advice signal therefore cannot guarantee that
the signal was generated by an on-path network element. However,
the capabilities required of an off-path attacker are substantially
similar to those of on path elements.</t>
      <t>The actual value of the throughput advice signal is not authenticated.  Any signal
might be incorrectly set in order to encourage endpoints to behave in ways that
are not in their interests.  Endpoints are free to ignore limits that they think
are incorrect.  The congestion controller employed by a sender provides
real-time information about the rate at which the network path is delivering
data.</t>
      <t>Similarly, if there is a strong need to ensure that a rate limit is respected,
network elements cannot assume that the signaled limit will be respected by
endpoints.</t>
      <section anchor="flooding-intermediaries-with-fake-packets">
        <name>Flooding intermediaries with fake packets</name>
        <t>Attackers that can inject packets may compose arbitrary "SCONE-like" packets
by selecting a pair of IP addresses and ports, an arbitrary rate signal, a
valid SCONE version number, an arbitrary "destination
connection ID", and an arbitrary "source connection ID". The SCONE packet
will carry these information. A coalesced "1RTT" packet will start with
a plausible first octet, and continue with the selected destination connection
ID followed by a sufficiently long series of random bytes, mimicking the
content of an encrypted packets.</t>
        <t>The injected packets will travel towards the destination.
The final destination will reject such packets because the destination ID
is invalid or because decryption fail, but network elements cannot do these checks,
and will have to process the packets. All the network elements between the injection
point and the destination will have to process these packets.</t>
        <t>Attackers could send a high volume of these "fake" SCONE packets in
a denial of service (DOS) attempt against network elements. The attack will
force the intermediaries to process the fake packets. If network elements
are keeping state for ongoing SCONE flows, the attack can cause the
excessive allocation of memory resource. The mitigation there
will be the same as mitigation of other distributed DOS attacks: limit
the rate of SCONE packets that a network element is willing to process;
possibly, implement logic to distinguish valid SCONE packets from
fake packets; or, use generic protection against Distributed DOS attacks.</t>
        <t>Attackers could also try to craft the fake SCONE packets in ways that trigger
a processing error at network elements. For example, they might pick connection
identifiers of arbitrary length. Network elements can mitigate these attacks
with implementations that fully conform to the specification of <xref target="packet"/>.</t>
      </section>
    </section>
    <section anchor="privacy">
      <name>Privacy Considerations</name>
      <t>The focus of this analysis is the extent to which observing SCONE
packets could be used to gain information about endpoints.
This might be leaking details of how applications using QUIC
operate or leaks of endpoint identity when using additional
privacy protection, such as a VPN.</t>
      <t>Any network element that can observe the content of that packet can read the
rate limit that was applied.  Any signal is visible on the path, from the point
at which it is applied to the point at which it is consumed at an endpoint.
On path elements can also alter the SCONE signal to try trigger specific
reactions and gain further knowledge.</t>
      <t>In the general case of a client connected to a server through the
Internet, we believe that SCONE does not provide much advantage to attackers.
The identities of the clients and servers are already visible through their
IP addresses. Traffic analysis tools already provide more information than
the data rate limits set by SCONE.</t>
      <t>There are two avenues of attack that require more analysis:</t>
      <ul spacing="normal">
        <li>
          <t>that the passive observation of SCONE packets might help identify or
distinguish endpoints; and</t>
        </li>
        <li>
          <t>that active manipulation of SCONE signals might help reveal the
identity of endpoints that are otherwise hidden behind VPNs or proxies.</t>
        </li>
      </ul>
      <section anchor="passive-attacks">
        <name>Passive Attacks</name>
        <t>If only few clients and server pairs negotiate the usage of SCONE, the
occasional observation of SCONE packets will "stick out". That observation,
could be combined with observation of timing and volume of traffic to
help identify the endpoint or categorize the application that they
are using.</t>
        <t>A variation of this issue occurs if SCONE is widely implemented, but
only used in some specific circumstances. In that case, observation of
SCONE packets reveals information about the state of the endpoint.</t>
        <t>If multiple servers are accessed through the same front facing server,
Encrypted Client Hello (ECH) may be used to prevent outside parties to
identify which specific server a client is using. However, if only
a few of these servers use SCONE, any SCONE packets
will help identify which specific server a client is using.</t>
        <t>This issue will be mitigated if SCONE becomes widely implemented, and
if the usage of SCONE is not limited to the type of applications
that make active use of the signal.</t>
        <t>QUIC implementations are therefore encouraged to make the feature available
unconditionally.  Endpoints might send SCONE packets whenever a peer can accept
them.</t>
      </section>
      <section anchor="active-attacks">
        <name>Active Attacks</name>
        <t>Suppose a configuration in which multiple clients use a VPN or proxy
service to access the same server. The attacker sees the IP addresses
in the packets behind VPN and proxy and also between the users and the VPN,
but it does not know which VPN address corresponds to what user address.</t>
        <t>Suppose now that the attacker selects a flow on the link between the
VPN/proxy and server. The attacker applies throughput advice signals to SCONE packets
in that flow. The attacker chooses a bandwidth that is
lower than the "natural" bandwidth of the connection. A reduction
in the rate of flows between client and VPN/proxy might allow
the attacker to link the altered flow to the client.</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="256" width="472" viewBox="0 0 472 256" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 8,128" fill="none" stroke="black"/>
              <path d="M 8,160 L 8,192" fill="none" stroke="black"/>
              <path d="M 80,32 L 80,64" fill="none" stroke="black"/>
              <path d="M 80,96 L 80,128" fill="none" stroke="black"/>
              <path d="M 80,160 L 80,192" fill="none" stroke="black"/>
              <path d="M 200,64 L 200,160" fill="none" stroke="black"/>
              <path d="M 264,64 L 264,160" fill="none" stroke="black"/>
              <path d="M 312,144 L 312,176" fill="none" stroke="black"/>
              <path d="M 368,80 L 368,144" fill="none" stroke="black"/>
              <path d="M 440,80 L 440,144" fill="none" stroke="black"/>
              <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
              <path d="M 88,48 L 136,48" fill="none" stroke="black"/>
              <path d="M 8,64 L 80,64" fill="none" stroke="black"/>
              <path d="M 200,64 L 264,64" fill="none" stroke="black"/>
              <path d="M 152,80 L 192,80" fill="none" stroke="black"/>
              <path d="M 368,80 L 440,80" fill="none" stroke="black"/>
              <path d="M 8,96 L 80,96" fill="none" stroke="black"/>
              <path d="M 272,94 L 360,94" fill="none" stroke="black"/>
              <path d="M 272,98 L 360,98" fill="none" stroke="black"/>
              <path d="M 88,112 L 192,112" fill="none" stroke="black"/>
              <path d="M 272,110 L 360,110" fill="none" stroke="black"/>
              <path d="M 272,114 L 360,114" fill="none" stroke="black"/>
              <path d="M 8,128 L 80,128" fill="none" stroke="black"/>
              <path d="M 272,126 L 360,126" fill="none" stroke="black"/>
              <path d="M 272,130 L 360,130" fill="none" stroke="black"/>
              <path d="M 152,144 L 192,144" fill="none" stroke="black"/>
              <path d="M 368,144 L 440,144" fill="none" stroke="black"/>
              <path d="M 8,160 L 80,160" fill="none" stroke="black"/>
              <path d="M 200,160 L 264,160" fill="none" stroke="black"/>
              <path d="M 88,174 L 136,174" fill="none" stroke="black"/>
              <path d="M 88,178 L 136,178" fill="none" stroke="black"/>
              <path d="M 8,192 L 80,192" fill="none" stroke="black"/>
              <path d="M 136,192 L 152,224" fill="none" stroke="black"/>
              <path d="M 136,48 L 152,80" fill="none" stroke="black"/>
              <path d="M 136,176 L 152,144" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="368,128 356,122.4 356,133.6" fill="black" transform="rotate(0,360,128)"/>
              <polygon class="arrowhead" points="368,112 356,106.4 356,117.6" fill="black" transform="rotate(0,360,112)"/>
              <polygon class="arrowhead" points="368,96 356,90.4 356,101.6" fill="black" transform="rotate(0,360,96)"/>
              <polygon class="arrowhead" points="320,144 308,138.4 308,149.6" fill="black" transform="rotate(270,312,144)"/>
              <polygon class="arrowhead" points="280,128 268,122.4 268,133.6" fill="black" transform="rotate(180,272,128)"/>
              <polygon class="arrowhead" points="280,112 268,106.4 268,117.6" fill="black" transform="rotate(180,272,112)"/>
              <polygon class="arrowhead" points="280,96 268,90.4 268,101.6" fill="black" transform="rotate(180,272,96)"/>
              <polygon class="arrowhead" points="200,144 188,138.4 188,149.6" fill="black" transform="rotate(0,192,144)"/>
              <polygon class="arrowhead" points="200,112 188,106.4 188,117.6" fill="black" transform="rotate(0,192,112)"/>
              <polygon class="arrowhead" points="200,80 188,74.4 188,85.6" fill="black" transform="rotate(0,192,80)"/>
              <polygon class="arrowhead" points="144,192 132,186.4 132,197.6" fill="black" transform="rotate(243.43494882292202,136,192)"/>
              <g class="text">
                <text x="44" y="52">Client</text>
                <text x="232" y="100">VPN</text>
                <text x="44" y="116">Client</text>
                <text x="232" y="116">/</text>
                <text x="404" y="116">Server</text>
                <text x="232" y="132">Proxy</text>
                <text x="44" y="180">Client</text>
                <text x="248" y="196">Apply</text>
                <text x="316" y="196">throughput</text>
                <text x="388" y="196">advice</text>
                <text x="444" y="196">signal</text>
                <text x="152" y="244">Observe</text>
                <text x="212" y="244">change</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+--------+
| Client |------.
+--------+       \      +-------+
                  '---->|       |            +--------+
+--------+              |  VPN  |<==========>|        |
| Client |------------->|   /   |<==========>| Server |
+--------+              | Proxy |<==========>|        |
                  .---->|       |     ^      +--------+
+--------+       /      +-------+     |
| Client |======'                     |
+--------+      ^           Apply throughput advice signal
                 \
                  \
               Observe change
]]></artwork>
        </artset>
        <t>An attacker that can manipulate SCONE headers can also simulate
congestion signals by dropping packets or by setting the ECN CE bit.
That will also likely result in changes in the congestion response by
the affected client.</t>
        <t>A VPN or proxy could defend against this style of attack by removing SCONE (and
ECN) signals. There are few reasons to provide per-flow throughput advice signals in
that situation.  Endpoints might also either disable this feature or ignore any
signals when they are aware of the use of a VPN or proxy.</t>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document registers a new QUIC version (<xref target="iana-version"/>) and a QUIC
transport parameter (<xref target="iana-tp"/>).</t>
      <section anchor="iana-version">
        <name>SCONE Versions</name>
        <t>This document registers the following entries to the "QUIC Versions" registry
maintained at <eref target="https://www.iana.org/assignments/quic">https://www.iana.org/assignments/quic</eref>, following the guidance
from <xref section="22.2" sectionFormat="of" target="QUIC"/>.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0xSCONE1</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF (iesg@ietf.org)</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>QUIC Working Group (quic@ietf.org)</t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>SCONE Protocol - Low Range</t>
          </dd>
        </dl>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0xSCONE2</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF (iesg@ietf.org)</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>QUIC Working Group (quic@ietf.org)</t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>SCONE Protocol - High Range</t>
          </dd>
        </dl>
      </section>
      <section anchor="iana-tp">
        <name>scone_supported Transport Parameter</name>
        <t>This document registers the scone_supported transport parameter in the "QUIC
Transport Parameters" registry maintained at
<eref target="https://www.iana.org/assignments/quic">https://www.iana.org/assignments/quic</eref>, following the guidance from <xref section="22.3" sectionFormat="of" target="QUIC"/>.</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0xTBD</t>
          </dd>
          <dt>Parameter Name:</dt>
          <dd>
            <t>scone_supported</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>Permanent</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Date:</dt>
          <dd>
            <t>This date</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF (iesg@ietf.org)</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>QUIC Working Group (quic@ietf.org)</t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>(none)</t>
          </dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="INVARIANTS">
          <front>
            <title>Version-Independent Properties of QUIC</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the properties of the QUIC transport protocol that are common to all versions of the protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8999"/>
          <seriesInfo name="DOI" value="10.17487/RFC8999"/>
        </reference>
        <referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/bcp14">
          <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
            <front>
              <title>Key words for use in RFCs to Indicate Requirement Levels</title>
              <author fullname="S. Bradner" initials="S." surname="Bradner"/>
              <date month="March" year="1997"/>
              <abstract>
                <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="14"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
          </reference>
          <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
            <front>
              <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
              <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 protocol 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>
        </referencegroup>
        <reference anchor="QUIC-BIT">
          <front>
            <title>Greasing the QUIC Bit</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes a method for negotiating the ability to send an arbitrary value for the second-most significant bit in QUIC packets.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9287"/>
          <seriesInfo name="DOI" value="10.17487/RFC9287"/>
        </reference>
        <reference anchor="QUICv2">
          <front>
            <title>QUIC Version 2</title>
            <author fullname="M. Duke" initials="M." surname="Duke"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>This document specifies QUIC version 2, which is identical to QUIC version 1 except for some trivial details. Its purpose is to combat various ossification vectors and exercise the version negotiation framework. It also serves as a template for the minimum changes in any future version of QUIC.</t>
              <t>Note that "version 2" is an informal name for this proposal that indicates it is the second version of QUIC to be published as a Standards Track document. The protocol specified here uses a version number other than 2 in the wire image, in order to minimize ossification risks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9369"/>
          <seriesInfo name="DOI" value="10.17487/RFC9369"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="QUIC-MP">
          <front>
            <title>Multipath Extension for QUIC</title>
            <author fullname="Yanmei Liu" initials="Y." surname="Liu">
              <organization>Alibaba Inc.</organization>
            </author>
            <author fullname="Yunfei Ma" initials="Y." surname="Ma">
              <organization>Uber Technologies Inc.</organization>
            </author>
            <author fullname="Quentin De Coninck" initials="Q." surname="De Coninck">
              <organization>University of Mons (UMONS)</organization>
            </author>
            <author fullname="Olivier Bonaventure" initials="O." surname="Bonaventure">
              <organization>UCLouvain and Tessares</organization>
            </author>
            <author fullname="Christian Huitema" initials="C." surname="Huitema">
              <organization>Private Octopus Inc.</organization>
            </author>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>Ericsson</organization>
            </author>
            <date day="7" month="July" year="2025"/>
            <abstract>
              <t>   This document specifies a multipath extension for the QUIC protocol
   to enable the simultaneous usage of multiple paths for a single
   connection.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the QUIC Working Group
   mailing list (quic@ietf.org), which is archived at
   https://mailarchive.ietf.org/arch/browse/quic/.

   Source for this draft and an issue tracker can be found at
   https://github.com/quicwg/multipath.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-15"/>
        </reference>
        <reference anchor="ECN">
          <front>
            <title>The Addition of Explicit Congestion Notification (ECN) to IP</title>
            <author fullname="K. Ramakrishnan" initials="K." surname="Ramakrishnan"/>
            <author fullname="S. Floyd" initials="S." surname="Floyd"/>
            <author fullname="D. Black" initials="D." surname="Black"/>
            <date month="September" year="2001"/>
            <abstract>
              <t>This memo specifies the incorporation of ECN (Explicit Congestion Notification) to TCP and IP, including ECN's use of two bits in the IP header. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3168"/>
          <seriesInfo name="DOI" value="10.17487/RFC3168"/>
        </reference>
        <reference anchor="RFC9330">
          <front>
            <title>Low Latency, Low Loss, and Scalable Throughput (L4S) Internet Service: Architecture</title>
            <author fullname="B. Briscoe" initials="B." role="editor" surname="Briscoe"/>
            <author fullname="K. De Schepper" initials="K." surname="De Schepper"/>
            <author fullname="M. Bagnulo" initials="M." surname="Bagnulo"/>
            <author fullname="G. White" initials="G." surname="White"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>This document describes the L4S architecture, which enables Internet applications to achieve low queuing latency, low congestion loss, and scalable throughput control. L4S is based on the insight that the root cause of queuing delay is in the capacity-seeking congestion controllers of senders, not in the queue itself. With the L4S architecture, all Internet applications could (but do not have to) transition away from congestion control algorithms that cause substantial queuing delay and instead adopt a new class of congestion controls that can seek capacity with very little queuing. These are aided by a modified form of Explicit Congestion Notification (ECN) from the network. With this new architecture, applications can have both low latency and high throughput.</t>
              <t>The architecture primarily concerns incremental deployment. It defines mechanisms that allow the new class of L4S congestion controls to coexist with 'Classic' congestion controls in a shared network. The aim is for L4S latency and throughput to be usually much better (and rarely worse) while typically not impacting Classic performance.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9330"/>
          <seriesInfo name="DOI" value="10.17487/RFC9330"/>
        </reference>
      </references>
    </references>
    <?line 727?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Jana Iyengar has made significant contributions to the original TRAIN
specification that forms the basis for a large part of this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
