<?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.6.25 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-ack-frequency-03" category="std" consensus="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title>QUIC Acknowledgement Frequency</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-ack-frequency-03"/>
    <author initials="J." surname="Iyengar" fullname="Jana Iyengar">
      <organization>Fastly</organization>
      <address>
        <email>jri.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="I." surname="Swett" fullname="Ian Swett">
      <organization>Google</organization>
      <address>
        <email>ianswett@google.com</email>
      </address>
    </author>
    <author initials="M." surname="Kühlewind" fullname="Mirja Kühlewind">
      <organization>Ericsson</organization>
      <address>
        <email>mirja.kuehlewind@ericsson.com</email>
      </address>
    </author>
    <date/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <abstract>
      <t>This document describes a QUIC extension for an endpoint to control its peer's
delaying of acknowledgements.</t>
    </abstract>
    <note>
      <name>Note to Readers</name>
      <t>Discussion of this draft takes place on the QUIC working group mailing list
(quic@ietf.org), which is archived at
<eref target="https://mailarchive.ietf.org/arch/search/?email_list=quic"/>. Source
code and issues list for this draft can be found at
<eref target="https://github.com/quicwg/ack-frequency"/>.</t>
      <t>Working Group information can be found at <eref target="https://github.com/quicwg"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>This document describes a QUIC extension for an endpoint to control its peer's
delaying of acknowledgements.</t>
      <section anchor="terms-and-definitions">
        <name>Terms and Definitions</name>
        <t>The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.</t>
        <t>In the rest of this document, "sender" refers to a QUIC data sender (and
acknowledgement receiver). Similarly, "receiver" refers to a QUIC data receiver
(and acknowledgement sender).</t>
        <t>An "acknowledgement packet" refers to a QUIC packet that contains only an ACK
frame.</t>
        <t>This document uses terms, definitions, and notational conventions described in
Section <xref target="QUIC-TRANSPORT" section="1.2" sectionFormat="bare"/> and Section <xref target="QUIC-TRANSPORT" section="1.3" sectionFormat="bare"/> of <xref target="QUIC-TRANSPORT"/>.</t>
      </section>
    </section>
    <section anchor="motivation">
      <name>Motivation</name>
      <t>A receiver acknowledges received packets, but it can delay sending these
acknowledgements. Delaying acknowledgements can impact connection
throughput, loss detection and congestion controller performance at a data
sender, and CPU utilization at both a data sender and a data receiver.</t>
      <t>Reducing the frequency of acknowledgements can improve connection and
endpoint performance in the following ways:</t>
      <ul spacing="normal">
        <li>Sending UDP packets can be very CPU intensive on some platforms. Reducing
the number of packets that only contain acknowledgements reduces the CPU
consumed at a data receiver. Experience shows that this reduction can be
critical for high bandwidth connections.</li>
        <li>Similarly, receiving and processing UDP packets can also be CPU intensive, and
reducing acknowledgement frequency reduces this cost at a data sender.</li>
        <li>For asymmetric link technologies, such as DOCSIS, LTE, and satellite,
connection throughput in the forward path can become constrained
when the reverse path is filled by acknowledgment packets <xref target="RFC3449"/>.
When traversing such links, reducing the number of acknowledgments can achieve
higher connection throughput, lower the impact on other flows or optimise the
overall use of transmission resources <xref target="Cus22"/>.</li>
        <li>The rate of acknowledgment packets can impact link efficiency, including
transmission opportunities or battery life, as well as transmission
opportunities available to other flows sharing the same link.</li>
      </ul>
      <t>As discussed in <xref target="implementation"/> however, there can be undesirable consequences
to congestion control and loss recovery if a receiver uniltaerally reduces the
acknowledgment frequency. A sender's constraints on the acknowledgement
frequency need to be taken into account to maximize congestion controller and
loss recovery performance.</t>
      <t><xref target="QUIC-TRANSPORT"/> specifies a simple delayed acknowledgement mechanism that a
receiver can use: send an acknowledgement for every other packet, and for every
packet that is received out of order (Section 13.2.1 of <xref target="QUIC-TRANSPORT"/>).
This does not allow a sender to signal its preferences or constraints. This
extension provides a mechanism to solve this problem.</t>
    </section>
    <section anchor="nego">
      <name>Negotiating Extension Use</name>
      <t>Endpoints advertise their support of the extension described in this document by
sending the following transport parameter (<xref section="7.2" sectionFormat="of" target="QUIC-TRANSPORT"/>):</t>
      <dl>
        <dt>min_ack_delay (0xff03de1a):</dt>
        <dd>
          <t>A variable-length integer representing the minimum amount of time in
microseconds by which the endpoint that is sending this value is able to
delay an acknowledgement. This limit could be based on the receiver's clock
or timer granularity. 'min_ack_delay' is used by the peer to avoid requesting
too small a value in the Request Max Ack Delay field of the ACK_FREQUENCY
frame.</t>
        </dd>
      </dl>
      <t>An endpoint's min_ack_delay MUST NOT be greater than its max_ack_delay.
Endpoints that support this extension MUST treat receipt of a min_ack_delay that
is greater than the received max_ack_delay as a connection error of type
TRANSPORT_PARAMETER_ERROR. Note that while the endpoint's max_ack_delay
transport parameter is in milliseconds (<xref section="18.2" sectionFormat="of" target="QUIC-TRANSPORT"/>),
min_ack_delay is specified in microseconds.</t>
      <t>The min_ack_delay transport parameter is a unilateral indication of support for
receiving ACK_FREQUENCY frames.  If an endpoint sends the transport parameter,
the peer is allowed to send ACK_FREQUENCY frames independent of whether it also
sends the min_ack_delay transport parameter or not.</t>
      <t>Receiving a min_ack_delay transport parameter indicates that the peer might send
ACK_FREQUENCY frames in the future. Until an ACK_FREQUENCY frame is received,
receiving this transport parameter does not cause the endpoint to
change its acknowledgement behavior.</t>
      <t>Endpoints MUST NOT remember the value of the min_ack_delay transport parameter
they received for use in a subsequent connection. Consequently, ACK_FREQUENCY
frames cannot be sent in 0-RTT packets, as per <xref section="7.4.1" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      <t>This Transport Parameter is encoded as per <xref section="18" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
    </section>
    <section anchor="ack-frequency-frame">
      <name>ACK_FREQUENCY Frame</name>
      <t>Delaying acknowledgements as much as possible reduces both work done by the
endpoints and network load. An endpoint's loss detection and congestion control
mechanisms however need to be tolerant of this delay at the peer. An endpoint
signals the frequency it wants to receive ACK frames to its peer using an
ACK_FREQUENCY frame, shown below:</t>
      <artwork><![CDATA[
ACK_FREQUENCY Frame {
  Type (i) = 0xaf,
  Sequence Number (i),
  Ack-Eliciting Threshold (i),
  Request Max Ack Delay (i),
  Reordering Threshold (i)
}
]]></artwork>
      <t>Following the common frame format described in <xref section="12.4" sectionFormat="of" target="QUIC-TRANSPORT"/>, ACK_FREQUENCY frames have a type of 0xaf, and contain the
following fields:</t>
      <dl>
        <dt>Sequence Number:</dt>
        <dd>
          <t>A variable-length integer representing the sequence number assigned to the
ACK_FREQUENCY frame by the sender to allow receivers to ignore obsolete
frames.</t>
        </dd>
        <dt>Ack-Eliciting Threshold:</dt>
        <dd>
          <t>A variable-length integer representing the maximum number of ack-eliciting
packets the recipient of this frame receives before sending an acknowledgment.
A receiving endpoint SHOULD send at least one ACK frame when more than this
number of ack-eliciting packets have been received. A value of 0 results in
a receiver immediately acknowledging every ack-eliciting packet. By default, an
endpoint sends an ACK frame for every other ack-eliciting packet, as specified in
<xref section="13.2.2" sectionFormat="of" target="QUIC-TRANSPORT"/>, which corresponds to a value of 1.</t>
        </dd>
        <dt>Request Max Ack Delay:</dt>
        <dd>
          <t>A variable-length integer representing the value to which the endpoint
requests the peer update its <tt>max_ack_delay</tt>
(<xref section="18.2" sectionFormat="of" target="QUIC-TRANSPORT"/>). The value of this field is in
microseconds, unlike the 'max_ack_delay' transport parameter, which is in
milliseconds. Sending a value smaller than the <tt>min_ack_delay</tt> advertised
by the peer is invalid. Receipt of an invalid value MUST be treated as a
connection error of type PROTOCOL_VIOLATION. On receiving a valid value in
this field, the endpoint MUST update its <tt>max_ack_delay</tt> to the value provided
by the peer.</t>
        </dd>
        <dt>Reordering Threshold:</dt>
        <dd>
          <t>A variable-length integer that indicates the maximum packet
reordering before eliciting an immediate ACK. If no
ACK_FREQUENCY frames have been received, the endpoint immediately acknowledges
any subsequent packets that are received out of order, as specified in
<xref section="13.2" sectionFormat="of" target="QUIC-TRANSPORT"/>, corresponding to a default value of 1.
A value of 0 indicates out-of-order packets do not elicit an immediate ACKs.</t>
        </dd>
      </dl>
      <t>ACK_FREQUENCY frames are ack-eliciting. When an ACK_FREQUENCY frame is lost,
it is encouraged to send another ACK_FREQUENCY frame, unless an ACK_FREQUENCY
frame with a larger Sequence Number value has already been sent. However, it is
not forbidden to retransmit the lost frame (see Section 13.3 of <xref target="QUIC-TRANSPORT"/>),
as the receiver will ignore duplicate or out-of-order ACK_FREQUENCY frames
based on the Sequence Number.</t>
      <t>An endpoint can send multiple ACK_FREQUENCY frames with different values within a
connection. A sending endpoint MUST send monotonically increasing values in the
Sequence Number field, since this field allows ACK_FREQUENCY frames to be processed
out of order. A receiving endpoint MUST ignore a received ACK_FREQUENCY frame if the
Sequence Number value in the frame is smaller than the largest processed thus far.</t>
    </section>
    <section anchor="immediate-ack-frame">
      <name>IMMEDIATE_ACK Frame</name>
      <t>A sender can use an ACK_FREQUENCY frame to reduce the number of acknowledgements
sent by a receiver, but doing so increases the chances that time-sensitive
feedback is delayed as well. For example, as described in <xref target="loss"/>, delaying
acknowledgements can increase the time it takes for a sender to detect packet
loss. The IMMEDIATE_ACK frame helps mitigate this problem.</t>
      <t>An IMMEDIATE_ACK frame can be useful in other situations as well. For example,
if a sender wants an immediate RTT measurement or if a sender wants to establish
receiver liveness as quickly as possible. PING frames
(<xref section="19.2" sectionFormat="of" target="QUIC-TRANSPORT"/>) are ack-eliciting but if a PING frame is
sent without an IMMEDIATE_ACK frame, the receiver might not immediately send
an ACK based on its local ACK strategy.</t>
      <t>By definition IMMEDIATE_ACK frames are ack-eliciting.
An endpoint SHOULD send a packet containing an ACK frame immediately upon
receiving an IMMEDIATE_ACK frame. An endpoint MAY delay sending an ACK frame
despite receiving an IMMEDIATE_ACK frame. For example, an endpoint might do this
if a large number of received packets contain an IMMEDIATE_ACK or if the
endpoint is under heavy load.</t>
      <artwork><![CDATA[
IMMEDIATE_ACK Frame {
  Type (i) = 0xac,
}
]]></artwork>
    </section>
    <section anchor="sending">
      <name>Sending Acknowledgments</name>
      <t>Prior to receiving an ACK_FREQUENCY frame, endpoints send acknowledgements as
specified in <xref section="13.2.1" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      <t>On receiving an ACK_FREQUENCY frame and updating its <tt>max_ack_delay</tt>
and <tt>Ack-Eliciting Threshold</tt> values (<xref target="ack-frequency-frame"/>), the endpoint sends an
acknowledgement when one of the following conditions are met:</t>
      <ul spacing="normal">
        <li>Since the last acknowledgement was sent, the number of received ack-eliciting
packets is greater than the <tt>Ack-Eliciting Threshold</tt>.</li>
        <li>Since the last acknowledgement was sent, <tt>max_ack_delay</tt> amount of time has
passed.</li>
      </ul>
      <t><xref target="out-of-order"/>, <xref target="congestion"/>, and <xref target="batch"/> describe exceptions to this
strategy.</t>
      <section anchor="out-of-order">
        <name>Response to Out-of-Order Packets</name>
        <t>As specified in <xref section="13.2.1" sectionFormat="of" target="QUIC-TRANSPORT"/>, endpoints are expected to
send an acknowledgement immediately on receiving a reordered ack-eliciting
packet. This extension modifies that behavior when an ACK_FREQUENCY frame with
a Reordering Threshold value other than 1 has been received.</t>
        <dl>
          <dt>Largest Unacked</dt>
          <dd>
            <t>The largest packet number among all received ack-eliciting packets.</t>
          </dd>
          <dt>Largest Acked</dt>
          <dd>
            <t>The Largest Acknowledged value sent in an ACK frame.</t>
          </dd>
          <dt>Unreported Missing</dt>
          <dd>
            <t>Packets with packet numbers between the Largest Unacked and Largest Acked that
have not yet been received.</t>
          </dd>
        </dl>
        <t>An endpoint that receives an ACK_FREQUENCY frame with a non-zero Reordering
Threshold value SHOULD send an immediate ACK when the gap
between the smallest Unreported Missing packet and the Largest Unacked is greater
than or equal to the Reordering Threshold value. Sending this additional ACK will
reset the <tt>max_ack_delay</tt> timer and <tt>Ack-Eliciting Threshold</tt> counter as any ACK
would do.</t>
        <t>In order to ensure timely loss detection, it is optimal to send a Reordering
Threshold value of 1 less than the packet threshold used by the data sender for
loss detection. If the threshold is smaller, an ACK_FRAME is sent before the
packet can be declared lost based on the packet threshold. If the value is
larger, it causes unnecessary delays. (<xref section="18.2" sectionFormat="of" target="QUIC-RECOVERY"/>)
recommends a default packet threshold for loss detection of 3, equivalent to
a Reordering Threshold of 2.</t>
        <t>If the most recent ACK_FREQUENCY frame received from the peer has a <tt>Reordering
Threshold</tt> value of 0, the endpoint SHOULD NOT send an immediate
acknowledgement in response to packets received out of order, and instead
rely on the peer's <tt>Ack-Eliciting Threshold</tt> and <tt>max_ack_delay</tt> thresholds
for sending acknowledgements.</t>
        <section anchor="examples">
          <name>Examples</name>
          <t>When the reordering threshold is 1, any time a packet is received
and there is a missing packet, an immediate ACK is sent.</t>
          <t>If the reordering theshold is 3 and ACKs are only sent due to reordering:</t>
          <t>Receive 1
  Receive 3 -&gt; 2 Missing
  Receive 4 -&gt; 2 Missing
  Receive 5 -&gt; Send ACK because of 2
  Receive 8 -&gt; 6,7 Missing
  Receive 9 -&gt; Send ACK because of 6, 7 Missing
  Receive 10 -&gt; Send ACK because of 7</t>
          <t>If the reordering threshold is 5 and ACKs are only sent due to reordering:</t>
          <t>Receive 1
  Receive 3 -&gt; 2 Missing
  Receive 5 -&gt; 2 Missing, 4 Missing
  Receive 6 -&gt; 2 Missing, 4 Missing
  Receive 7 -&gt; Send ACK because of 2, 4 Missing
  Receive 8 -&gt; 4 Missing
  Receive 9 -&gt; Send ACK because of 4</t>
        </section>
      </section>
      <section anchor="congestion">
        <name>Expediting Congestion Signals</name>
        <t>An endpoint SHOULD send an immediate acknowledgement when a packet marked
with the ECN Congestion Experienced (CE) <xref target="RFC3168"/> codepoint in the IP
header is received and the previously received packet was not marked CE.</t>
        <t>Doing this maintains the peer's response time to congestion events, while also
reducing the ACK rate compared to <xref section="13.2.1" sectionFormat="of" target="QUIC-TRANSPORT"/> during
extreme congestion or when peers are using DCTCP <xref target="RFC8257"/> or other
congestion controllers (e.g. <xref target="I-D.ietf-tsvwg-aqm-dualq-coupled"/>) that mark
more frequently than classic ECN <xref target="RFC3168"/>.</t>
      </section>
      <section anchor="batch">
        <name>Batch Processing of Packets</name>
        <t>For performance reasons, an endpoint can receive incoming packets from the
underlying platform in a batch of multiple packets. This batch can contain
enough packets to cause multiple acknowledgements to be sent.</t>
        <t>To avoid sending multiple acknowledgements in rapid succession, an endpoint can
process all packets in a batch before determining whether to send an ACK frame
in response, as stated in <xref section="13.2.2" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      </section>
    </section>
    <section anchor="computation-of-probe-timeout-period">
      <name>Computation of Probe Timeout Period</name>
      <t>On sending an update to the peer's <tt>max_ack_delay</tt>, an endpoint can use this new
value in later computations of its Probe Timeout (PTO) period; see <xref section="5.2.1" sectionFormat="of" target="QUIC-RECOVERY"/>. The endpoint MUST however wait until the ACK_FREQUENCY
frame that carries this new value is acknowledged by the peer.</t>
      <t>Until the frame is acknowledged, the endpoint MUST use the greater of the
current <tt>max_ack_delay</tt> and the value that is in flight when computing the PTO
period. Doing so avoids spurious PTOs that can be caused by an update that
increases the peer's <tt>max_ack_delay</tt>.</t>
      <t>While it is expected that endpoints will have only one ACK_FREQUENCY frame in
flight at any given time, this extension does not prohibit having more than one
in flight. When using <tt>max_ack_delay</tt> for PTO computations, endpoints MUST use
the maximum of the current value and all those in flight.</t>
      <t>When the number of in-flight ack-eliciting packets is larger than the
ACK-Eliciting Threshold, an endpoint can expect that the peer will not need to
wait for its <tt>max_ack_delay</tt> period before sending an acknowledgement. In such
cases, the endpoint MAY therefore exclude the peer's 'max_ack_delay' from its PTO
calculation.  When Ignore Order is enabled and loss causes the peer to not
receive enough packets to trigger an immediate acknowledgement, the receiver
will wait 'max_ack_delay', increasing the chances of a premature PTO.
Therefore, if Ignore Order is enabled, the PTO MUST be larger than the peer's
'max_ack_delay'.</t>
    </section>
    <section anchor="implementation">
      <name>Determining Acknowledgement Frequency</name>
      <t>This section provides some guidance on a sender's choice of acknowledgment
frequency and discusses some additional considerations. Implementers can select
an appropriate strategy to meet the needs of their applications and congestion
controllers.</t>
      <section anchor="congestion-control">
        <name>Congestion Control</name>
        <t>A sender needs to be responsive to notifications of congestion, such as
a packet loss or an ECN CE marking. To enable a sender to respond to potential
network congestion in a timely fashion, usually at least one acknowledgement
per round trip is needed if there are unacknowledged ack-eliciting packets
in flight. A sender can accomplish this by setting the Ack-Eliciting Threshold
to a value no larger than the current congestion window or the Request Max Ack
Delay value to no more than the estimated round trip. Note that the congestion
window particularly but also the RTT are dynamic and therefore might require
frequent updates if the selected value are close to these limits. Alternatively,
a sender can accomplish this by sending an IMMEDIATE_ACK frame once per
round trip, though if the packet containing an IMMEDIATE_ACK is lost,
detection of that loss will be delayed by the reordering threshold or requested
max ack delay.</t>
        <t>Note that it is possible that the RTT is smaller than the receiver's timer granularity,
as communicated via the 'min_ack_delay' transport parameter, preventing the
receiver from sending an acknowledgment every RTT in time.  In these cases,
Reordering Threshold values other than 1 can be harmful, because it delays fast
loss detection.</t>
        <t>A congestion controller that is congestion window limited relies upon receiving
acknowledgements to send additional data into the network.  An increase in
acknowledgement delay increases the delay in sending data, which can reduce the
achieved throughput.  Congestion window growth can also depend upon receiving
acknowledgements. This can be particularly significant in slow start
(<xref section="7.3.1" sectionFormat="of" target="QUIC-RECOVERY"/>), when delaying acknowledgements can delay
the increase in congestion window and can create larger packet bursts.</t>
        <t>If the sender is application-limited, acknowledgements can be delayed
unnecessarily when entering idle periods. Therefore, if no further data is
buffered to be sent, a sender can send an IMMEDIATE_ACK frame with the last data
packet before an idle period to avoid waiting for the ack delay.</t>
      </section>
      <section anchor="burst-mitigation">
        <name>Burst Mitigation</name>
        <t>Receiving an acknowledgement can allow a sender to release new packets into the
network. If a sender is designed to rely on the timing of peer acknowledgments
("ACK clock"), delaying acknowledgments can cause undesirable bursts of data
into the network. In keeping with Section 7.7 of <xref target="QUIC-RECOVERY"/>, a sender
can either employ pacing or limit bursts to the initial congestion window.</t>
      </section>
      <section anchor="loss">
        <name>Loss Detection and Timers</name>
        <t>Acknowledgements are fundamental to reliability in QUIC. Consequently,
delaying or reducing the frequency of acknowledgments can cause loss detection
at the sender to be delayed.</t>
        <t>A QUIC sender detects loss using packet thresholds on receiving an
acknowledgement (Section 6.1.1 of <xref target="QUIC-RECOVERY"/>); delaying the
acknowledgement therefore delays this method of detecting losses.</t>
        <t>Reducing acknowledgement frequency reduces the number of RTT samples that a
sender receives (Section 5 of <xref target="QUIC-RECOVERY"/>), making a sender's RTT estimate
less responsive to changes in the path's RTT. As a result, any mechanisms that
rely on an accurate RTT estimate, such as time-threshold loss detection (Section
6.1.2 of <xref target="QUIC-RECOVERY"/>) or Probe Timeout (Section 6.2 of <xref target="QUIC-RECOVERY"/>),
will be less responsive to changes in the path's RTT, resulting in either
delayed or unnecessary packet transmissions.</t>
        <t>To limit these consequences of reduced acknowledgement frequency, a sender
SHOULD cause a receiver to send an acknowledgement at least once per RTT if
there are unacknowledged ack-eliciting packets in flight. A sender can
accomplish this by sending an IMMEDIATE_ACK frame once per round-trip time
(RTT), or it can set the Ack-Eliciting Threshold and Request Max Ack Delay
values to be no more than a congestion window and an estimated RTT,
respectively.</t>
        <t>A sender might use timers to detect loss of PMTU probe packets
(<xref section="14" sectionFormat="of" target="QUIC-TRANSPORT"/>). A sender SHOULD
bundle an IMMEDIATE_ACK frame with any PTMU probes to avoid triggering such
timers.</t>
      </section>
      <section anchor="migration">
        <name>Connection Migration</name>
        <t>To avoid additional delays to connection migration confirmation when using this
extension, a client can bundle an IMMEDIATE_ACK frame with the first non-probing
frame (<xref section="9.2" sectionFormat="of" target="QUIC-TRANSPORT"/>) it sends or it can send only an
IMMEDIATE_ACK frame, which is a non-probing frame.</t>
        <t>An endpoint's congestion controller and RTT estimator are reset upon
confirmation of migration (<xref section="9.4" sectionFormat="of" target="QUIC-TRANSPORT"/>), which can impact
the number of acknowledgements received after migration. An endpoint that has
sent an ACK_FREQUENCY frame earlier in the connection SHOULD update and send a
new ACK_FREQUENCY frame immediately upon confirmation of connection migration.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>An improperly configured or malicious data sender could cause a
data receiver to acknowledge more frequently than its available resources
permit. However, there are two limits that make such an attack largely
inconsequential. First, the acknowledgement rate is bounded by the rate at which
data is received. Second, ACK_FREQUENCY and IMMEDIATE_ACK frames can only request
an increase in the acknowledgment rate, but cannot force it.</t>
      <t>In general, with this extension, a sender cannot force a receiver to acknowledge
more frequently than the receiver considers safe based on its resource constraints.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document defines a new transport parameter to advertise support of the
extension described in this document and two new frame types to registered
by IANQ in the respective "QUIC Protocol" registries under
<eref target="https://www.iana.org/assignments/quic/quic.xhtml">https://www.iana.org/assignments/quic/quic.xhtml</eref>.</t>
      <t>The following entry in <xref target="transport-parameters"/> should be added to
the "QUIC Transport Parameters" registry under the "QUIC Protocol" heading.</t>
      <table anchor="transport-parameters">
        <name>Addition to QUIC Transport Parameters Entries</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Parameter Name.</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">0xff03de1a</td>
            <td align="left">min_ack_delay.</td>
            <td align="left">
              <xref target="nego"/></td>
          </tr>
        </tbody>
      </table>
      <t>The following frame types should be added to the "QUIC Frame Types"
registry under the "QUIC Protocol" heading.</t>
      <table anchor="frame-types">
        <name>Addition to QUIC Frame Types Entries</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Frame Name</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">0xaf</td>
            <td align="left">ACK_FREQUENCY</td>
            <td align="left">
              <xref target="ack-frequency-frame"/></td>
          </tr>
          <tr>
            <td align="left">0xac</td>
            <td align="left">IMMEDIATE_ACK</td>
            <td align="left">
              <xref target="immediate-ack-frame"/></td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="QUIC-TRANSPORT">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author initials="J." surname="Iyengar" fullname="Jana Iyengar" role="editor">
              <organization>Fastly</organization>
            </author>
            <author initials="M." surname="Thomson" fullname="Martin Thomson" role="editor">
              <organization>Mozilla</organization>
            </author>
            <date year="2021" month="May"/>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="QUIC-RECOVERY">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author initials="J." surname="Iyengar" fullname="Jana Iyengar" role="editor">
              <organization>Fastly</organization>
            </author>
            <author initials="I." surname="Swett" fullname="Ian Swett" role="editor">
              <organization>Google</organization>
            </author>
            <date year="2021" month="May"/>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <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">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="Cus22">
          <front>
            <title>Reducing the acknowledgement frequency in IETF QUIC</title>
            <author initials="A." surname="Custura" fullname="A. Custura">
              <organization>University of Aberdeen</organization>
            </author>
            <author initials="R." surname="Secchi" fullname="R. Secchi">
              <organization>University of Aberdeen</organization>
            </author>
            <author initials="G." surname="Fairhurst" fullname="G. Fairhurst">
              <organization>University of Aberdeen</organization>
            </author>
            <date year="2022" month="October"/>
          </front>
          <seriesInfo name="DOI" value="10.1002/sat.1466"/>
          <seriesInfo name="name" value="IJSCN"/>
        </reference>
        <reference anchor="RFC3449">
          <front>
            <title>TCP Performance Implications of Network Path Asymmetry</title>
            <author fullname="H. Balakrishnan" initials="H." surname="Balakrishnan">
              <organization/>
            </author>
            <author fullname="V. Padmanabhan" initials="V." surname="Padmanabhan">
              <organization/>
            </author>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst">
              <organization/>
            </author>
            <author fullname="M. Sooriyabandara" initials="M." surname="Sooriyabandara">
              <organization/>
            </author>
            <date month="December" year="2002"/>
            <abstract>
              <t>This document describes TCP performance problems that arise because of asymmetric effects.  These problems arise in several access networks, including bandwidth-asymmetric networks and packet radio subnetworks, for different underlying reasons.  However, the end result on TCP performance is the same in both cases: performance often degrades significantly because of imperfection and variability in the ACK feedback from the receiver to the sender. The document details several mitigations to these effects, which have either been proposed or evaluated in the literature, or are currently deployed in networks.  These solutions use a combination of local link- layer techniques, subnetwork, and end-to-end mechanisms, consisting of: (i) techniques to manage the channel used for the upstream bottleneck link carrying the ACKs, typically using header compression or reducing the frequency of TCP ACKs, (ii) techniques to handle this reduced ACK frequency to retain the TCP sender's acknowledgment-triggered self- clocking and (iii) techniques to schedule the data and ACK packets in the reverse direction to improve performance in the presence of two-way traffic.  Each technique is described, together with known issues, and recommendations for use.  A summary of the recommendations is provided at the end of the document.  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="69"/>
          <seriesInfo name="RFC" value="3449"/>
          <seriesInfo name="DOI" value="10.17487/RFC3449"/>
        </reference>
        <reference anchor="RFC3168">
          <front>
            <title>The Addition of Explicit Congestion Notification (ECN) to IP</title>
            <author fullname="K. Ramakrishnan" initials="K." surname="Ramakrishnan">
              <organization/>
            </author>
            <author fullname="S. Floyd" initials="S." surname="Floyd">
              <organization/>
            </author>
            <author fullname="D. Black" initials="D." surname="Black">
              <organization/>
            </author>
            <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="RFC8257">
          <front>
            <title>Data Center TCP (DCTCP): TCP Congestion Control for Data Centers</title>
            <author fullname="S. Bensley" initials="S." surname="Bensley">
              <organization/>
            </author>
            <author fullname="D. Thaler" initials="D." surname="Thaler">
              <organization/>
            </author>
            <author fullname="P. Balasubramanian" initials="P." surname="Balasubramanian">
              <organization/>
            </author>
            <author fullname="L. Eggert" initials="L." surname="Eggert">
              <organization/>
            </author>
            <author fullname="G. Judd" initials="G." surname="Judd">
              <organization/>
            </author>
            <date month="October" year="2017"/>
            <abstract>
              <t>This Informational RFC describes Data Center TCP (DCTCP): a TCP congestion control scheme for data-center traffic.  DCTCP extends the Explicit Congestion Notification (ECN) processing to estimate the fraction of bytes that encounter congestion rather than simply detecting that some congestion has occurred.  DCTCP then scales the TCP congestion window based on this estimate.  This method achieves high-burst tolerance, low latency, and high throughput with shallow- buffered switches.  This memo also discusses deployment issues related to the coexistence of DCTCP and conventional TCP, discusses the lack of a negotiating mechanism between sender and receiver, and presents some possible mitigations.  This memo documents DCTCP as currently implemented by several major operating systems.  DCTCP, as described in this specification, is applicable to deployments in controlled environments like data centers, but it must not be deployed over the public Internet without additional measures.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8257"/>
          <seriesInfo name="DOI" value="10.17487/RFC8257"/>
        </reference>
        <reference anchor="I-D.ietf-tsvwg-aqm-dualq-coupled">
          <front>
            <title>Dual-Queue Coupled Active Queue Management (AQM) for Low Latency, Low Loss, and Scalable Throughput (L4S)</title>
            <author fullname="Koen De Schepper" initials="K." surname="De Schepper">
              <organization>Nokia Bell Labs</organization>
            </author>
            <author fullname="Bob Briscoe" initials="B." surname="Briscoe">
              <organization>Independent</organization>
            </author>
            <author fullname="Greg White" initials="G." surname="White">
              <organization>CableLabs</organization>
            </author>
            <date day="29" month="August" year="2022"/>
            <abstract>
              <t>This specification defines a framework for coupling the Active Queue Management (AQM) algorithms in two queues intended for flows with different responses to congestion. This provides a way for the Internet to transition from the scaling problems of standard TCP-Reno-friendly ('Classic') congestion controls to the family of 'Scalable' congestion controls. These are designed for consistently very low queuing latency, very low congestion loss, and scaling of per-flow throughput by using Explicit Congestion Notification (ECN) in a modified way. Until the Coupled Dual Queue (DualQ), these Scalable L4S congestion controls could only be deployed where a clean-slate environment could be arranged, such as in private data centres.

 This specification first explains how a Coupled DualQ works. It then gives the normative requirements that are necessary for it to work well. All this is independent of which two AQMs are used, but pseudocode examples of specific AQMs are given in appendices.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-aqm-dualq-coupled-25"/>
        </reference>
      </references>
    </references>
    <section anchor="change-log">
      <name>Change Log</name>
      <ul empty="true">
        <li>
          <t><strong>RFC Editor's Note:</strong> Please remove this section prior to publication of a
final version of this document.</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The following people directly contributed key ideas that shaped this draft:
Bob Briscoe, Kazuho Oku, Marten Seemann.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
C3t6K2EAAA==

-->

</rfc>
