<?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-03" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="SCONE Protocol">Standard Communication with Network Elements (SCONE) Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-scone-protocol-03"/>
    <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="October" day="20"/>
    <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>Throughput advice in each direction --
the client-to-server direction and the server-to-client direction --
are independent.
It is expected that these rates will differ for multiple reasons,
which include asymmetry of link capacity and path diversity.
Applications may choose to enable SCONE signals in either or both directions
as they see fit.</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 signaled advice applies to the flow of packets
on the same UDP address tuple for the duration of
the current monitoring period, unless it is updated
earlier or the flow ends; see <xref target="time"/> for details on
the monitoring period.
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>
        <t>Network conditions and rate-limit policies can change in ways that make
previously signaled advice obsolete.
There are no guarantees that updated advice will be sent at such events.</t>
      </section>
      <section anchor="following-advice">
        <name>Following Advice</name>
        <t>The SCONE throughput advice is advisory (see <xref target="advisory-signal"/>).
Applications that chose to follow it will do so in the way that best suits their needs.</t>
        <t>The most obvious way to keep within the limits set by throughput advice is to
inform the sending peer of the limit so that the peer can do whatever rate
limiting is necessary.  Alternatively, a receiver can control the release of
flow control credit (see <xref section="4" sectionFormat="of" target="QUIC"/>) to indirectly limit the sending
rate of a peer.</t>
        <t>Some applications offer options for rate control that can offer superior
outcomes.  Real-time and streaming video applications are able to adjust video
quality to fit within a target throughput.  For instance, an HTTP Live Streaming
client <xref target="HLS"/> can ask for lower bitrate, lower quality media segments.</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 High Bits (6),
  Version (32) = 0x6f7dc0fd or 0xef7dc0fd,
  Destination Connection ID Length (8),
  Destination Connection ID (0..2040),
  Source Connection ID Length (8),
  Source Connection ID (0..2040),
}
]]></sourcecode>
      </figure>
      <!--
https://martinthomson.github.io/quic-pick/#seed=draft-ietf-scone-protocol-version;field=version;codepoint=0x6f7dc0fd
Plus https://github.com/ietf-wg-scone/scone/issues/45
-->

<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 Rate Signal High Bits field consists of the low six bits (0x3f) of the
first byte. Together with the most significant bit of the Version field,
this forms the 7-bit Rate Signal. Values for the Rate Signal are described in
<xref target="rate-signal"/>.</t>
      <t>The Version field contains either 0x6f7dc0fd or 0xef7dc0fd. The only difference
between these two values is the most significant bit, which also contributes to
the Rate Signal. All other bits are identical, which facilitates detection and
modification of SCONE packets.</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>MUST</bcp14> be included as the first packet in a datagram.
This is primarily to simplify the process of updating throughput advice
in network elements.
This is also 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>A Rate Signal is a 7-bit unsigned integer (0-127). The high six bits are the
Rate Signal High Bits, and the least significant bit is the most significant
bit of the Version field.</t>
        <t>When sent by a QUIC endpoint, the Rate Signal is set to 127.  Receiving a value
of 127 indicates that throughput advice is unknown, either because network
elements on the path are not providing advice or they do not support SCONE. All
other values (0 through 126) represent the ceiling of rates advised by the
network element(s) on the path.</t>
        <t>The rate limits follow a logarithmic scale defined as:</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>where n is an integer between 0 and 126 represented by the Rate Signal.</t>
        <t><xref target="ex-rates"/> lists some of the potential values for signals
and the corresponding bitrate for each.</t>
        <table anchor="ex-rates">
          <name>Examples of SCONE signals and corresponding rates</name>
          <thead>
            <tr>
              <th align="left">Bitrate</th>
              <th align="left">Rate Signal</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">100 Kbps</td>
              <td align="left">0</td>
            </tr>
            <tr>
              <td align="left">112 Kbps</td>
              <td align="left">1</td>
            </tr>
            <tr>
              <td align="left">126 Kbps</td>
              <td align="left">2</td>
            </tr>
            <tr>
              <td align="left">141 Kbps</td>
              <td align="left">3</td>
            </tr>
            <tr>
              <td align="left">1 Mbps</td>
              <td align="left">20</td>
            </tr>
            <tr>
              <td align="left">1.12 Mbps</td>
              <td align="left">21</td>
            </tr>
            <tr>
              <td align="left">10 Mbps</td>
              <td align="left">40</td>
            </tr>
            <tr>
              <td align="left">11.2 Mbps</td>
              <td align="left">41</td>
            </tr>
            <tr>
              <td align="left">100 Mbps</td>
              <td align="left">60</td>
            </tr>
            <tr>
              <td align="left">112 Mbps</td>
              <td align="left">61</td>
            </tr>
            <tr>
              <td align="left">1 Gbps</td>
              <td align="left">80</td>
            </tr>
            <tr>
              <td align="left">1.12 Gbps</td>
              <td align="left">81</td>
            </tr>
            <tr>
              <td align="left">10 Gbps</td>
              <td align="left">100</td>
            </tr>
            <tr>
              <td align="left">11.2 Gbps</td>
              <td align="left">101</td>
            </tr>
            <tr>
              <td align="left">100 Gbps</td>
              <td align="left">120</td>
            </tr>
            <tr>
              <td align="left">112 Gbps</td>
              <td align="left">121</td>
            </tr>
            <tr>
              <td align="left">199.5 Gbps</td>
              <td align="left">126</td>
            </tr>
            <tr>
              <td align="left">Unknown</td>
              <td align="left">127</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="time">
        <name>Monitoring Period</name>
        <t>The time over which throughput advice applies is defined to be
a period of 67 seconds.</t>
        <t>Protocol participants can use a different period,
depending on their role.
Senders can limit their send rate over any time period
up to 67 seconds.
Network elements can monitor and apply limits to send rates
using time period of at least 67 seconds.</t>
        <t>The choice of 67 seconds is a compromise between competing interests.
Longer periods allow applications more flexibility
in terms of how to allocate bandwidth over time.
Shorter periods allow networks to administer policies more tightly.
Also, when circumstances change,
applications are better able recover
without exceeding limits for a significant time
if they have exceeded limits.</t>
        <t>The choice of 67 seconds, as a prime number,
also helps avoid synchronization with other periodic
effects that are commonly measured in whole seconds.
This includes segment length or key frame intervals in video applications,
but also includes timers for middleboxes; see <xref section="4.3" sectionFormat="of" target="RFC4787"/>.
Any repeating phenomenon at a 67 second interval is therefore
unlikely to be due to other periodic effects.</t>
        <t>A sample algorithm for ensuring adherance to throughput advice
is included in <xref target="sliding-window"/>.</t>
      </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 long header bit (0x80 in the first
byte) and the SCONE protocol version (0x6f7dc0fd or 0xef7dc0fd in the next four
bytes). The 7-bit Rate Signal can be extracted by combining the low 6 bits
of the first byte with the most significant bit of the version field. 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 is discarded if the rate signal is unknown (127).</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>
        <t>If a connection uses multiple DSCP markings <xref target="RFC2474"/>,
the throughput advice that is received on datagrams with one marking
might not apply to datagrams that have different markings.</t>
      </section>
      <section anchor="algorithm">
        <name>Following Throughput Advice</name>
        <t>Endpoints that receive throughput advice can advise their peer of the limit
so that the peer might limit the amount of data it sends
over any monitoring period (<xref target="time"/>).
Alternatively, the endpoint might change its own behavior
to effect a similar outcome indirectly,
which might use flow control or changes to request patterns.</t>
        <t>An endpoint that receives throughput advice
might receive multiple different rate limits.
If advice is applied by applications,
applications <bcp14>MUST</bcp14> apply the lowest throughput advice
received during any monitoring period; see <xref target="time"/>.</t>
        <t>After a monitoring period (<xref target="time"/>)
without receiving throughput advice,
any previous advice expires.
Endpoints can remove any constraints
placed on throughput based on receiving throughput advice.
This does not mean that there are no limits,
either in policy or due to network conditions,
only that these limits are now unknown.
Other constraints on usage will still apply,
which necessarily includes congestion control
and might include other, application-specific constraints.</t>
        <t>Applications <bcp14>MAY</bcp14> discard throughput usage state
when they receive throughput advice that indicates a reduced rate.
Otherwise, data that was sent at a higher rate
might force the available rate to zero
for the remainder of the monitoring period; see also <xref target="monitoring"/>.</t>
        <t>The relatively long duration of the monitoring period
means that this is preferable to disabling sending completely.
The cost is that loss of information about recent send rate
might result in temporarily exceeding the rates indicated by throughput advice.
In comparison,
applications retain throughput usage state
when throughput advice increases.</t>
        <t>This approach ensures that network elements
are able to reduce the frequency with which they send updated signals
to as low as once per monitoring period.
However, applying signals at a low frequency
risks throughput advice being reset
if no SCONE packet is available for applying signals (<xref target="apply"/>),
or the rewritten packets are lost.
Sending the signal multiple times
increases the likelihood that the signal is received.</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 (0x219e).
The scone_supported transport parameter <bcp14>MUST</bcp14> be empty.
Receiving a non-zero length scone_supported transport parameter <bcp14>MUST</bcp14> be treated
as a connection error of type TRANSPORT_PARAMETER_ERROR;
see <xref section="20.1" sectionFormat="of" target="QUIC"/>.</t>
      <!--
https://martinthomson.github.io/quic-pick/#seed=draft-ietf-scone-protocol-tp;field=tp;codepoint=0x219e;size=2
-->

<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 anchor="indication">
        <name>Indicating Support on New Flows</name>
        <t>All new flows that are initiated by a client that supports SCONE
<bcp14>MUST</bcp14> include bytes with values 0xc8 and 0x13
as the last two bytes of datagrams
that commence a new flow if the protocol permits it.
This indication <bcp14>MUST</bcp14> be sent in every datagram
until the client receives any datagram from the server,
at which point the client can be confident that the indication was received.</t>
        <!--
This indicator is derived from the first two bytes of:
https://martinthomson.github.io/quic-pick/#seed=draft-ietf-scone-protocol-indication;field=version;codepoint=0xc813e2b1
-->

<t>A client that uses a QUIC version that includes length-delimited packets,
which includes QUIC versions 1 <xref target="QUIC"/> and 2 <xref target="QUICv2"/>,
can include an indicator of SCONE support
at the end of datagrams that start a flow.
The handshakes of these protocols ensures that
the indication can be included in every datagram the client sends
until it receives a response -- of any kind -- from the server.</t>
      </section>
      <section anchor="limitations-of-indication">
        <name>Limitations of Indication</name>
        <t>This indication does not mean that SCONE signals will be respected,
only that the client is able to negotiate SCONE.
A server might not support SCONE
or might choose not to send SCONE packets.
Finally, applications might be unable to apply throughput advice
or choose to ignore it.</t>
        <t>This indication being just two bytes
means that there is a non-negligible risk of collision with other protocols
or even QUIC usage without SCONE indications.
This means that the indication alone is not sufficient to indicate
that a flow is QUIC with the potential for SCONE support.</t>
        <t>Despite these limitations,
having an indication might allow network elements to change their starting posture
with respect to their enforcement of their rate limit policies.</t>
      </section>
      <section anchor="indications-for-migrated-flows">
        <name>Indications for Migrated Flows</name>
        <t>Applications <bcp14>MAY</bcp14> decide to indicate support for SCONE on new flows,
including when migrating to a new path (see <xref section="9" sectionFormat="of" target="QUIC"/>).
In QUIC version 1 and 2,
the two byte indicator cannot be used.</t>
        <t>Sending a SCONE packet for the first few packets on a new path
gives network elements on that path the ability
to recognize the flow as being able to receive throughput advice
and also gives the network element an opportunity to provide that throughput advice.</t>
        <t>To enable this indication,
even if an endpoint would not otherwise send SCONE packets,
endpoints can send a SCONE packet
any time they send a QUIC PATH_CHALLENGE or PATH_RESPONSE frame.
This applies to both client and server endpoints,
but only if the peer has sent the transport parameter; see <xref target="tp"/>.</t>
      </section>
    </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 (0x6f7dc0fd or 0xef7dc0fd).</t>
        <t>A network element then conditionally replaces the most significant bit of the
Version field and the Rate Signal High Bits 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 the existing rate signal (<tt>packet_signal</tt>) with a new rate
signal (<tt>target_signal</tt>) that encodes the throughput advice of this network
element.</t>
        <sourcecode type="pseudocode"><![CDATA[
is_long = packet[0] & 0x80 == 0x80
packet_version = ntohl(packet[1..5])
if is_long and (packet_version & 0x7fffffff) == SCONE_VERSION_BITS:
  packet_signal = ((packet[0] & 0x3f) << 1) | (packet_version >> 31)
  if target_signal < packet_signal:
    packet[0] = (packet[0] & 0xc0) | (target_signal >> 1)
    packet[1] = (packet[1] & 0x7f) | (target_signal << 7)
]]></sourcecode>
        <t>Once the throughput advice signal is updated,
the network element updates the UDP checksum for the datagram.</t>
        <t>A network element needs to ensure that it sends updated rate signals
with no more than a monitoring period (<xref target="time"/>) between each update.
Because this depends on the availability of SCONE packets
and packet loss can cause signals to be missed,
network elements might need to update more often.</t>
        <t>At the start of a flow, network elements are encouraged to update the rate
signal of the first few SCONE packets it observes so that endpoints can obtain
throughput advice early.</t>
        <t>Senders that send a SCONE packet
or network elements that update SCONE packets
every 20–30 seconds is likely sufficient to ensure that throughput advice is not lost.
To reduce the risk of synchronization across multiple senders,
which may cause network elements to miss updates,
senders can include a small random delay.</t>
      </section>
      <section anchor="monitoring">
        <name>Monitoring Flows</name>
        <t>Network elements can monitor flows
to determine which flows are from applications
that respect throughput advice.
This section outlines an exemplary algorithm
for network elements.</t>
        <t>This monitoring algorithm is guidance only.
Network elements are advised that monitoring
any more strictly than the following likely invalidates their advice.
Network elements could choose not to monitor in this way
or use a looser monitoring approach.
For instance, monitoring over a longer time window
than the monitoring period (67s)
or using a higher rate than is signaled
is possible.</t>
        <t>To operate this algorithm,
the minimal state a network element maintains is:</t>
        <ul spacing="normal">
          <li>
            <t>the current rate limit,</t>
          </li>
          <li>
            <t>any state necessary to monitor throughput
(that is, throughput usage state, such as the state in <xref target="sliding-window"/>),</t>
          </li>
          <li>
            <t>a timer used for rate increases, and</t>
          </li>
          <li>
            <t>the time at which that rate limit was last updated.</t>
          </li>
        </ul>
        <t>When advice is set or updated,
the network element waits until
it receives the next SCONE packet on affected flows.
It then updates the throughput advice in that packet (<xref target="apply"/>)
and updates its monitoring state as follows:</t>
        <ul spacing="normal">
          <li>
            <t>If the signaled rate limit is the same as the current rate limit,
set the last update time to the current time.</t>
          </li>
          <li>
            <t>If the signaled rate is higher than the current value,
then:  </t>
            <ul spacing="normal">
              <li>
                <t>If the time since the last SCONE packet was updated
is greater than the monitoring period,
the current rate limit is increased to the received value
and the last update time is set to the current time.</t>
              </li>
              <li>
                <t>Otherwise, the throughput advice is deferred.
The implementation sets the rate increase timer
to one monitoring period
relative to the time that the last SCONE packet was updated.
When the timer lapses,
change the rate monitoring to the higher rate.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>If the signaled rate is lower than the current value,
set the current rate limit to match the advice,
cancel any rate increase timer,
discard all rate monitoring state,
and set the last update time to the current time.</t>
          </li>
        </ul>
        <t>A network element that reduces the throughput advice it provides
<bcp14>MUST</bcp14> also discard any state it maintains
about the use of the network under previous, higher rates.
This is necessary to allow senders to discard state
when advice is reduced (see <xref target="algorithm"/>).
This avoids cases where an application that has planned usage
might otherwise be completely unable to send due to a lower limits.</t>
        <t>A network element that reduces its throughput advice
might also need delay monitoring or enforcement
to allow applications time
to receive and act on the updated advice.</t>
        <t>A network element <bcp14>MUST NOT</bcp14> alter datagrams to add SCONE packets
or synthesize datagrams that contain SCONE packets.
The latter will not be accepted and the former,
even if they do not exceed the path MTU as a result,
can be detected by applications and could be ignored.
This document does not define a mechanism to support detection,
but one might be added in future.</t>
      </section>
      <section anchor="policing">
        <name>Flows That Exceed Throughput Advice</name>
        <t>Network elements that provide throughput advice
can monitor flows --
or sets of flows that are subject to the same throughput limit --
for adherance to that advice.</t>
        <t>In the event that a flow exceeds these limits,
a network element could immediately start
enforcing adherence to the advice as though it were a hard limit.
However, this risks creating a situation where communication ceases entirely
for a significant period of time;
that is, up to the period defined in <xref target="time"/>.</t>
        <t>A better approach is to exclude any data transmitted
before sending reduced throughput advice
from any monitoring that uses the reduced rate.
This ensures that the enforcement of limits is minimally disruptive.</t>
      </section>
    </section>
    <section anchor="version-interaction">
      <name>Version Interaction</name>
      <t>The SCONE protocol defines two versions (0x6f7dc0fd and 0xef7dc0fd) 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 throughput advice
signals can send SCONE packets at any time.  This is a decision that a sender
makes when constructing datagrams.</t>
        <t>When sending SCONE packets, enpoints <bcp14>MUST</bcp14> include the SCONE packet as the first
packet in a datagram, coalesced with additional packets.</t>
        <t>Upon confirmation that the peer is willing to receive SCONE packets, an endpoint
<bcp14>SHOULD</bcp14> include SCONE packets in the first few UDP datagrams that it sends. Doing
so increases the likelihood of eliciting early throughput advice from network
elements, allowing applications to apply that advice from the early stages of the
data transfer.</t>
        <t>After that, endpoints that seek to receive throughput advice on a flow <bcp14>MUST</bcp14> send
a SCONE packet at least twice each monitoring period; see <xref target="time"/>.</t>
        <t>Sending SCONE packets more often might be necessary to:</t>
        <dl>
          <dt>Avoid missing advice:</dt>
          <dd>
            <t>If SCONE packets are not sent, updated, and received
for an entire monitoring period,
an application might incorrectly assume that no advice is being provided.</t>
          </dd>
          <dt>Reduce latency:</dt>
          <dd>
            <t>The time between SCONE packets determines the maximum delay
between changes in throughput advice
and when that advice can be received and acted upon.</t>
          </dd>
        </dl>
        <t>A sender can track the receipt of the coalesced QUIC packet
and send another SCONE packet when loss is detected.
However, it is likely simpler to send SCONE packets more often.</t>
        <t>Sending a SCONE packet every 20–30 seconds
is likely sufficient to ensure that throughput advice is not lost,
though endpoints might send a packet every few seconds
to improve responsiveness.
This period could be determined by how quickly an application
is able to respond to a change in throughput advice.</t>
        <t>For example, a streaming application
that fetches video segments that are 5 seconds in length
might send SCONE packets on a similar cadence.
A real-time conferencing application might send more often.
In either case, the length of the monitoring period (<xref target="time"/>)
limits how fast any application can react.</t>
        <t>Though sending SCONE packets more than once each round trip time
might help reduce exposure to packet loss,
it is better to spread updates over time
rather than to send multiple SCONE packets in less frequent bursts.</t>
        <t>The main cost associated with sending SCONE packets
is the reduction in available space in datagrams
for application data.</t>
        <t>A network element that wishes to signal an updated rate limit waits for the
next SCONE packet in the desired direction; see <xref target="apply"/>.</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 anchor="damage-to-other-protocols">
        <name>Damage to Other Protocols</name>
        <t>Network elements that update SCONE packet fields might do that for datagrams
exchanged in other protocols.
This could result in damage to those protocols.</t>
        <t>The most serious damage occurs when every datagram is modified,
because that could mean that the protocol is
effectively unable to operate end-to-end.</t>
        <t>To that end, network elements <bcp14>MUST</bcp14> only update the content of datagrams
on a given address tuple
a few times each monitoring period.
Network elements <bcp14>MAY</bcp14> update more often
immediately after a change in their throughput advice,
to reduce the reaction time from senders.</t>
        <t>In addition, some heuristics might be used
to detect SCONE-compatible QUIC flows.
This includes identification of a QUIC handshake on the flow,
the presence of indications (<xref target="indication"/>),
or other heuristics.
If these heuristics indicate a non-QUIC flow,
the safest option is
for network elements to disable updating of datagrams.</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>0x6f7dc0fd</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>0xef7dc0fd</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>0x219e</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="RFC2474">
          <front>
            <title>Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers</title>
            <author fullname="K. Nichols" initials="K." surname="Nichols"/>
            <author fullname="S. Blake" initials="S." surname="Blake"/>
            <author fullname="F. Baker" initials="F." surname="Baker"/>
            <author fullname="D. Black" initials="D." surname="Black"/>
            <date month="December" year="1998"/>
            <abstract>
              <t>This document defines the IP header field, called the DS (for differentiated services) field. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2474"/>
          <seriesInfo name="DOI" value="10.17487/RFC2474"/>
        </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>Managing multiple paths for a QUIC connection</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="20" month="October" 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.  It proposes a standard way to create, delete, and manage
   paths using identifiers.  It does not specify address discovery or
   management, nor how applications using QUIC schedule traffic over
   multiple paths.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-17"/>
        </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="HLS">
          <front>
            <title>HTTP Live Streaming</title>
            <author fullname="R. Pantos" initials="R." role="editor" surname="Pantos"/>
            <author fullname="W. May" initials="W." surname="May"/>
            <date month="August" year="2017"/>
            <abstract>
              <t>This document describes a protocol for transferring unbounded streams of multimedia data. It specifies the data format of the files and the actions to be taken by the server (sender) and the clients (receivers) of the streams. It describes version 7 of this protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8216"/>
          <seriesInfo name="DOI" value="10.17487/RFC8216"/>
        </reference>
        <reference anchor="RFC4787">
          <front>
            <title>Network Address Translation (NAT) Behavioral Requirements for Unicast UDP</title>
            <author fullname="F. Audet" initials="F." role="editor" surname="Audet"/>
            <author fullname="C. Jennings" initials="C." surname="Jennings"/>
            <date month="January" year="2007"/>
            <abstract>
              <t>This document defines basic terminology for describing different types of Network Address Translation (NAT) behavior when handling Unicast UDP and also defines a set of requirements that would allow many applications, such as multimedia communications or online gaming, to work consistently. Developing NATs that meet this set of requirements will greatly increase the likelihood that these applications will function properly. 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="127"/>
          <seriesInfo name="RFC" value="4787"/>
          <seriesInfo name="DOI" value="10.17487/RFC4787"/>
        </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 1117?>

<section anchor="sliding-window">
      <name>Sliding Window for Rate Limit Monitoring</name>
      <t>One way to account for usage
is to divide time into multiple smaller spans.
For instance, 67 consecutive one second intervals
or 134 half second intervals.</t>
      <t>The amount of data transmitted in each interval is recorded
in a circular buffer,
as well as the total amount over 67 seconds.
As time passes and new intervals are added,
the overall total is reduced by the amount attributed to the oldest interval.
The oldest interval is reset to zero and becomes the newest interval.</t>
      <t>Sample code for this algorithm is included in <xref target="x-ta"/>.</t>
      <figure anchor="x-ta">
        <name>Sample code for managing rate limit</name>
        <sourcecode type="pseudocode"><![CDATA[
]]></sourcecode>
      </figure>
    </section>
    <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:
H4sIAAAAAAAAA9V96XLcVpbm//sUKDqim2wnUySl8iJZrmJJtK1uaxmRLkdF
d5UbmYkkUcwEsgEkqSxKFRPzJPOnf8wbzO95lpmY15jzneUuACi7pzsmYhwd
XWICuOu5Z/nOcg8PD11XdqvicbZ33uXVIm8W2bN6vd5W5TzvyrrKbsvuKntV
dLd1c52drYp1UXVttn/+7PWrs4PsTVN39bxe7bl8NmuKG7SDJ9EDaqe4rJvd
46yslrVzi3pe5WvqcdHky+6wLLrlYTuvq+Jwo98cHj107Xa2LtuWRtDtNvTy
i7OLb1y1Xc+K5rFbUJOPHX3TFlW7bR9nXbMtHHX+0OVNkdMgfixmGU0ne1F1
RVMVXXbR5FW7qZtuz2Eml0293TzOeKzuutjRb4vHLjvMVjSAdd2VNwX+2uRt
1+zcTVFtqcMs089kjnv0gwxu70dqsqwus2/xHL+v83JFv/O8fospTuvmEg/y
Zn5FD666btM+fvAA7+En6m9qrz3ADw9mTX3bFg+4hQf48pI2Yjujb3nFbi9l
0eQFPF/RorRd1Hby3lQ+n5a1Nnnv6k+vujVtm8u33VXdYFGo8Sxbblcr2beX
edOVVXZxVa/buuKHNOq8Kv/CFEMv1H8pV6ucnxSyEuvut6v6lkinqTe7KW3I
sNlnV03ZdmVeZd9ty46+s5YfEzGVNzS77PW8qzfblnZ1Po1bv5IPfqv/O9o+
/5Vljx9n/+tf/zX7n//9P//v//Zf9Le8nZfl4+wf8r9sr+rs9fU29PwNEcBq
F/d1zW/V19vfXuKHKZHL2BJ1Xfb3dZO3oamXRZcuCb0z/TPe+XhLzRwzviIy
CW2dNeW8tcX37eHNaYk3f1voC9yoc1XdUHdEZFiG//TDi2ePs7ffPPvy6OiI
/n7x6venb1+cvro451+/+PLLL53DWfXfOHd4eJjlMzoM+bxz7uKqbDM6x1sw
g2xRtPOmnBVtlmdGRNntVdEUWV0dbnLiH5Xyj0L5BzGFigj6psiKarGpS7CU
7qoom2xTNO2mmKPfDNznKu/whGb3rlxv11lOZ6W4yWerwnVXdNourzbbLluX
l1ddNisyGjTPL1sSubVTHfm6XCzoA/cJ+EFTL7ZzEKpzL/NqRy3Oi7a1IdIk
NpvVLmtAb6tyXWJkdQZeQ5MnssdgiP/k8ka9zGgbaVDFwi2Km5Kamma8PPR/
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
zDnAvJxrOKeA0zhlj8koyH6Xa1BPtj/7iUw3VgOPjrJ/mG1aPDYMslPsvKLn
/GL2d/Ten/arBydHB85JGgMDlBx3J4RnkueICYkmHubtJ5eIEijJxbtDXgRS
jlcs2hneNe3EB2fcBBmrIJ0zaiW9Aih9ra4LnYJhR9TJez8vDZ6LaO69e//4
MPqv9xd9a8sj3x4lsWT09Pgkenrcf0prEJ6e9J8+Oo6ePuw/zV7qM/72qPd0
Sh3rC/T0uPf0KHz8PnvU//Z4Gn37aPBt+Ph99tng25P4af/b7NtozF+Mjflb
6/eL4Zi/DWPGKAZj9t8eHx33vg0fY9X7354kT3vffvnl9Nf6XHYsfvqDsBEb
FTGf8BSmhJGvmRBn4ndog2rjg2qgDyekyh/CwGDu/zLAs28YniURwGCuxiAB
8uFYa4tP6zM9g6c5y0VOPYMPLle8F2P67HPiscBPIXTe+IB8GDXzcpObvx+c
MoodMUjaSVCR5uEIZtjUq2LqJFxVPvbIWJwronHiJPp4JtKg224wxnhQA78s
WlTomtdQYOmQg+R7aJ0azqF9SURSeZZMHUs6v6pLceWHRyJZkeJD5jYxZc/U
8FOhCSwdLUoLsf19HO/eSmJNisGxS2O5Kt6VGpMHNa6AMQH3CVyGNX/GPsvg
+uDFwkRoZaFJDDrxAfSM7RGDJt6Jlwz/5n47uEhWiLAk3WYi7ud52cy3a8Hz
WoXIJ26AG9K00R7DhwhcpfE4y9Yq3s3JwsVSePnTaGyT6QsYuiuXIjRZQZWP
iCZ9FPx9WzARrzOUPZIxnNtKA4R2huQdenRTl4us3VVzOgKWXqkB6qJV8UqV
c1cQ+c7jUCM4iNleWhNFbBvB326vakQUGGmIPmiWh0KSREIMNdBEgTouEWsv
hHCjEalD/HXi4BHhgfvmsC6NLJhk383qd0XbtzweTR9iSX5DpvGjz8U0Pq0Q
17ApRLXd0E6SmKwktyEPi+fHpNqaeOHctgqRKLPC5x8lq5Xpak3Z2cxcLCSs
iTiFk1yUIvqQM+rY1Bqo2W3Q7mll7u7aFStTh7ekuNW3bEuB45k7GlnRnKom
OlGMwrTMpOxh3gPxxE8JzCFfGGQmeotF6SWyXrXS7+pbOBQmgnLI+4aNes+w
+t7yKlbUQ7NsW3pTDIqr97PTKqs1okEDPkquN/x8xW4p9rnA0J4VPvtiEZNz
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

-->

</rfc>
