<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-ack-frequency-14" category="std" consensus="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title>QUIC Acknowledgment Frequency</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-ack-frequency-14"/>
    <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>
      <?line 90?>

<t>This document specifies an extension to QUIC that enables an endpoint to
request its peer change its behavior when sending or delaying acknowledgments.</t>
    </abstract>
    <note>
      <name>Note to Readers</name>
      <?line 95?>

<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>
    <?line 105?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The QUIC transport protocol recommends sending an ACK frame after receiving at
least two ack-eliciting packets; see <xref section="13.2" sectionFormat="of" target="QUIC-TRANSPORT"/>.
However, the data receiver determines how frequently to send acknowledgments
in response to ack-eliciting packets, without any ability for the data sender
to influence this behavior. This document specifies an extension to
QUIC that enables an endpoint to request its peer change its behavior when sending or
delaying acknowledgments.</t>
      <t>This document defines a new transport parameter that indicates support of this
extension and specifies two new frame types to request changes to the peer's
acknowledgement behavior.</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
acknowledgment receiver). Similarly, "receiver" refers to a QUIC data receiver
(and acknowledgment sender).</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 can delay sending these
acknowledgments. Delaying acknowledgments can impact a data sender's
throughput, loss detection and congestion controller performance, as well
as CPU utilization at both endpoints.</t>
      <t>Reducing the frequency of acknowledgments can improve connection and
endpoint performance in the following ways:</t>
      <ul spacing="normal">
        <li>
          <t>Sending UDP datagrams is very CPU intensive on some platforms. A data
receiver can decrease its CPU usage by reducing the number of
acknowledgement-only packets sent. Experience shows that this
reduction can be critical for high packet rate connections.</t>
        </li>
        <li>
          <t>Similarly, receiving UDP datagrams can also be CPU intensive. Reducing the
acknowledgement frequency also reduces the data sender's CPU usage because
it receives and processes fewer acknowledgment-only packets.</t>
        </li>
        <li>
          <t>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"/>.</t>
        </li>
        <li>
          <t>The rate of acknowledgment packets can reduce link efficiency, including
transmission opportunities or battery life, as well as transmission
opportunities available to other flows sharing the same link.</t>
        </li>
      </ul>
      <t>However, as discussed in <xref target="implementation"/>, a unilateral reduction in
acknowledgement frequency can lead to undesirable consequences for congestion
control and loss recovery. <xref target="QUIC-TRANSPORT"/> specifies a simple delayed
acknowledgment mechanism (<xref section="13.2.1" sectionFormat="of" target="QUIC-TRANSPORT"/>) without any
ability for the data sender to influence this behavior.  A data sender's constraints
on the acknowledgment frequency need to be taken into account to maximize
congestion controller and loss recovery performance. This extension provides
a mechanism for a data sender to signal its preferences and constraints.</t>
    </section>
    <section anchor="nego">
      <name>Negotiating Extension Use</name>
      <t>After a data receiver advertises support for this extension, two new frames
can be sent by the data sender to provide guidance about delaying and sending
ACK frames. These frames are the ACK_FREQUENCY frame
(see <xref target="ack-frequency-frame"/>) and the IMMEDIATE_ACK frame
(see <xref target="immediate-ack-frame"/>).</t>
      <t>Endpoints advertise their support for receiving ACK_FREQUENCY and IMMEDIATE_ACK
frames as 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 (0xff04de1b):</dt>
        <dd>
          <t>A variable-length integer representing the minimum amount of time, in
microseconds, that the endpoint sending this value is willing to
delay an acknowledgment. This limit could be based on the data receiver's
clock or timer granularity. min_ack_delay is used by the data sender to
avoid requesting too small a value in the Requested 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 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 and IMMEDIATE_ACK frames independent
of whether it also sends the min_ack_delay transport parameter or not.</t>
      <t>Until an ACK_FREQUENCY or IMMEDIATE_ACK frame is received, sending the min_ack_delay transport
parameter does not cause the endpoint to change its acknowledgment 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
and IMMEDIATE_ACK 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 acknowledgments as much as possible reduces work done by the endpoints
as well as network load. A data sender's loss detection and congestion control
mechanisms however need to be tolerant of this delay at the peer. A data sender
signals the conditions under which it wants to receive ACK frames using an
ACK_FREQUENCY frame, shown below:</t>
      <artwork><![CDATA[
ACK_FREQUENCY Frame {
  Type (i) = 0xaf,
  Sequence Number (i),
  Ack-Eliciting Threshold (i),
  Requested 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 so receivers ignore obsolete
frames.  A sending endpoint MUST send monotonically increasing values in
the Sequence Number field to allow obsolete ACK_FREQUENCY frames to be
ignored when packets are processed out of order.</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 without sending an acknowledgment.
A receiving endpoint SHOULD send at least one ACK frame after receiving more
than this many ack-eliciting packets. 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>Requested Max Ack Delay:</dt>
        <dd>
          <t>A variable-length integer representing the value to which the data sender
requests the data receiver update its max_ack_delay
(<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. On receipt of a valid value, the endpoint SHOULD update
its max_ack_delay to the value provided by the peer. Note that values
of 2^14 milliseconds or greater are invalid for max_ack_delay, as specified in
<xref section="18.2" sectionFormat="of" target="QUIC-TRANSPORT"/>. A value smaller than the min_ack_delay
advertised by the peer is also invalid. Receipt of an invalid value MUST be
treated as a connection error of type PROTOCOL_VIOLATION.</t>
        </dd>
        <dt>Reordering Threshold:</dt>
        <dd>
          <t>A variable-length integer that indicates the minimum packet reordering to trigger
an immediate ACK, as specified in <xref target="out-of-order"/>.
If no ACK_FREQUENCY frames have been received, the data receiver 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 ACK.</t>
        </dd>
      </dl>
      <t>ACK_FREQUENCY frames are ack-eliciting and congestion controlled. When an
ACK_FREQUENCY frame is lost, the sender 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 <xref section="13.3" sectionFormat="of" target="QUIC-TRANSPORT"/>), because the receiver will ignore
duplicate or out-of-order ACK_FREQUENCY frames based on the Sequence Number.</t>
      <t>A receiving endpoint MUST ignore a received ACK_FREQUENCY frame unless the
Sequence Number value in the frame is greater than the largest processed
value.</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 acknowledgments
sent by a receiver, but doing so increases the likelihood that time-sensitive
feedback is delayed as well. For example, as described in <xref target="loss"/>, delaying
acknowledgments can increase the time it takes for a sender to detect packet
loss. Sending an IMMEDIATE_ACK frame can help 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 and they are also
congestion controlled. 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) = 0x1f,
}
]]></artwork>
      <t>IMMEDIATE_ACK frames do not need to be retransmitted.</t>
    </section>
    <section anchor="sending">
      <name>Sending Acknowledgments</name>
      <t>Prior to receiving an ACK_FREQUENCY frame, endpoints send acknowledgments as
specified in <xref section="13.2.1" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      <t>After receiving an ACK_FREQUENCY frame and updating its max_ack_delay and
Ack-Eliciting Threshold values (<xref target="ack-frequency-frame"/>), the data receiver
sends an acknowledgment when one of the following conditions are met since the
last acknowledgement was sent:</t>
      <ul spacing="normal">
        <li>
          <t>The number of received ack-eliciting packets is greater than the
Ack-Eliciting Threshold.</t>
        </li>
        <li>
          <t>max_ack_delay amount of time has passed and at least one ack-eliciting packet
has been received.</t>
        </li>
      </ul>
      <t>An acknowledgment can be sent earlier based on the value of the
Reordering Threshold when a gap in packet numbers is detected,
see <xref target="out-of-order"/>.</t>
      <t><xref target="congestion"/> and <xref target="batch"/> describe exceptions to this strategy.</t>
      <t>All packets still have to be acknowledged at least once with this extension,
as stated in <xref section="13.2.1" sectionFormat="of" target="QUIC-TRANSPORT"/>. With larger values for
Ack-Eliciting Threshold or the Reordering Threshold, implementations are more
likely to accumulate multiple new ACK ranges before sending an ACK. As such,
implementations have to take more care to avoid truncating ACK ranges before
they are sent at least once. As discussed in <xref section="13.2.3" sectionFormat="of" target="QUIC-TRANSPORT"/>,
this does not guarantee that every acknowledgment is seen by the sender.
When ACK frames are sent less often, receivers can either wait until an ACK is
acknowledged <xref section="13.2.4" sectionFormat="of" target="QUIC-TRANSPORT"/> before trimming ranges or
be more conservative when trimming ACK ranges to accommodate for the possible
loss of ACK frames.</t>
      <section anchor="response-to-long-idle-periods">
        <name>Response to long idle periods</name>
        <t>It is important to receive timely feedback after long idle periods,
e.g. update stale RTT measurements. When no acknowledgment has been sent in
over one smoothed round trip time (<xref section="5.3" sectionFormat="of" target="QUIC-RECOVERY"/>),
receivers are encouraged to send an acknowledgment soon after receiving
an ack-eliciting packet. This is not an issue specific to this document,
but the mechanisms specified herein could create excessive delays.</t>
      </section>
      <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 immediate acknowledgment upon receipt of a reordered ack-eliciting
packet. After an ACK_FREQUENCY frame with a Reordering Threshold value other
than 1 has been received, this extension delays immediate acknowledgements
to reordered ack-eliciting packets and the gaps they can create.</t>
        <t>If the most recent ACK_FREQUENCY frame received from the peer has a Reordering
Threshold value of 0, the endpoint SHOULD NOT send an immediate
acknowledgment in response to packets received out of order, and instead
rely on the peer's Ack-Eliciting Threshold and Requested Max Ack Delay
for sending acknowledgments.</t>
        <t>If the most recent ACK_FREQUENCY frame received from the peer has a Reordering
Threshold value larger than 1, the endpoint tests the amount of reordering
before deciding to send an acknowledgment. The specification uses the following
definitions:</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>Largest Reported Missing:</dt>
          <dd>
            <t>The largest packet number that could be declared lost with the specified
Reordering Threshold, which is Largest Acked - Reordering Threshold.</t>
          </dd>
          <dt>Unreported Missing:</dt>
          <dd>
            <t>Packets with packet numbers between the Largest Unacked and Largest Reported
Missing 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 whenever it receives an ack-eliciting,
out-of order packet whose packet number is outside the reordering window of the peer,
when:</t>
        <ul spacing="normal">
          <li>
            <t>The difference between the smallest Unreported Missing packet and the
Largest Unacked packet is greater than or equal to the Reordering
Threshold value; or</t>
          </li>
          <li>
            <t>The received packet number is less than or equal to <tt>Largest Acked - Reordering Threshold</tt>.</t>
          </li>
        </ul>
        <t>The first condition triggers an ACK as soon as the reordering threshold is reached and
a packet can be declared lost at the sender. The second condition addresses packets
that have been received later, out of order and are already spuriously declared lost
by the sender. This enables the sender to detect spurious retransmissions and revert
the congestion control status accordingly.</t>
        <t>Sending such an additional ACK resets the max_ack_delay timer and the
Ack-Eliciting Threshold counter, as any ACK would.</t>
        <t>See <xref target="examples"/> for examples explaining this behavior. See <xref target="set-threshold"/>
for guidance on how to choose the reordering threshold value when sending
ACK_FREQUENCY frames.</t>
        <section anchor="examples">
          <name>Examples</name>
          <t>Note that the following examples assume that packets are
processed one-by-one in the received order as indicated below.</t>
          <t>When the reordering threshold is 1, any time a packet is received
and there is a missing packet, an immediate acknowledgement is sent.</t>
          <t>If the reordering theshold is 3 and acknowledgements are only sent due to
reordering, the sequence in <xref target="ack-reordering-3"/> would occur:</t>
          <table anchor="ack-reordering-3">
            <name>Acknowledgement behavior with a reordering threshold of 3</name>
            <thead>
              <tr>
                <th align="left">Received Packet</th>
                <th align="left">Largest Unacked</th>
                <th align="left">Largest Acked</th>
                <th align="left">Largest Reported Missing</th>
                <th align="left">Unreported Missing</th>
                <th align="left">Send Acknowledgement</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">0</td>
                <td align="left">0</td>
                <td align="left">-</td>
                <td align="left">-</td>
                <td align="left">-</td>
                <td align="left">No</td>
              </tr>
              <tr>
                <td align="left">1</td>
                <td align="left">1</td>
                <td align="left">-</td>
                <td align="left">-</td>
                <td align="left">-</td>
                <td align="left">No</td>
              </tr>
              <tr>
                <td align="left">3</td>
                <td align="left">3</td>
                <td align="left">-</td>
                <td align="left">-</td>
                <td align="left">2</td>
                <td align="left">No</td>
              </tr>
              <tr>
                <td align="left">4</td>
                <td align="left">4</td>
                <td align="left">-</td>
                <td align="left">-</td>
                <td align="left">2</td>
                <td align="left">No</td>
              </tr>
              <tr>
                <td align="left">5</td>
                <td align="left">5</td>
                <td align="left">-</td>
                <td align="left">-</td>
                <td align="left">2</td>
                <td align="left">Yes (5 - 2 &gt;= 3)</td>
              </tr>
              <tr>
                <td align="left">8</td>
                <td align="left">8</td>
                <td align="left">5</td>
                <td align="left">2</td>
                <td align="left">6,7</td>
                <td align="left">No</td>
              </tr>
              <tr>
                <td align="left">9</td>
                <td align="left">9</td>
                <td align="left">5</td>
                <td align="left">2</td>
                <td align="left">6,7</td>
                <td align="left">Yes (9 - 6 &gt;= 3)</td>
              </tr>
              <tr>
                <td align="left">10</td>
                <td align="left">10</td>
                <td align="left">9</td>
                <td align="left">6</td>
                <td align="left">7</td>
                <td align="left">Yes (10 - 7 &gt;= 3)</td>
              </tr>
            </tbody>
          </table>
          <t>Note that in this example, the receipt of packet 9 triggers an ACK
that reports both packets 6 and 7 as missing. However,
the receipt of packet 10 needs to trigger another immediate ACK
because the sender will be unable to declare packet 7 as lost
(with a reordering threshold of 3) until it receives an ACK
reporting the reception of packet 10.</t>
          <t>If the reordering threshold is 5 and acknowledgements are only sent due to
reordering, the sequence in <xref target="ack-reordering-5"/> would occur:</t>
          <table anchor="ack-reordering-5">
            <name>Acknowledgement behavior with a reordering threshold of 5</name>
            <thead>
              <tr>
                <th align="left">Received Packet</th>
                <th align="left">Largest Unacked</th>
                <th align="left">Largest Acked</th>
                <th align="left">Largest Reported Missing</th>
                <th align="left">Unreported Missing</th>
                <th align="left">Send Acknowledgement</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">0</td>
                <td align="left">0</td>
                <td align="left">-</td>
                <td align="left">-</td>
                <td align="left">-</td>
                <td align="left">No</td>
              </tr>
              <tr>
                <td align="left">1</td>
                <td align="left">1</td>
                <td align="left">-</td>
                <td align="left">-</td>
                <td align="left">-</td>
                <td align="left">No</td>
              </tr>
              <tr>
                <td align="left">3</td>
                <td align="left">3</td>
                <td align="left">-</td>
                <td align="left">-</td>
                <td align="left">2</td>
                <td align="left">No</td>
              </tr>
              <tr>
                <td align="left">5</td>
                <td align="left">5</td>
                <td align="left">-</td>
                <td align="left">-</td>
                <td align="left">2,4</td>
                <td align="left">No</td>
              </tr>
              <tr>
                <td align="left">6</td>
                <td align="left">6</td>
                <td align="left">-</td>
                <td align="left">-</td>
                <td align="left">2,4</td>
                <td align="left">No</td>
              </tr>
              <tr>
                <td align="left">7</td>
                <td align="left">7</td>
                <td align="left">-</td>
                <td align="left">-</td>
                <td align="left">2,4</td>
                <td align="left">Yes  (7 - 2 &gt;= 5)</td>
              </tr>
              <tr>
                <td align="left">8</td>
                <td align="left">8</td>
                <td align="left">7</td>
                <td align="left">2</td>
                <td align="left">4</td>
                <td align="left">No</td>
              </tr>
              <tr>
                <td align="left">9</td>
                <td align="left">9</td>
                <td align="left">7</td>
                <td align="left">2</td>
                <td align="left">4</td>
                <td align="left">Yes  (9 - 4 &gt;= 5)</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="congestion">
        <name>Expediting Explicit Congestion Notification (ECN) Signals</name>
        <t>If the Ack-Eliciting Threshold is larger than 1, 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. From there on, if multiple
consecutive CE-marked packets are received or only non-CE-marked packet received,
the endpoint resumes sending acknowledgements based on the Ack-Eliciting
Threshold or max_ack_delay. Therefore, CE-marking only triggers an immediate
acknowledgement when there is a transition from non-CE-marked to CE-marked.</t>
        <t>If the Ack-Eliciting Threshold is 0, every ack-eliciting packet is immediately
acknowledged, whether it is CE marked or not. If the Ack-Eliciting Threshold
is 1, the default behavior as specified in RFC9000 applies, which recommends to
immediately acknowledge all packets marked with CE (see
<xref section="13.2.1" sectionFormat="of" target="QUIC-TRANSPORT"/>).</t>
        <t>Acknowledging the first CE marked packet immediately 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>To avoid sending multiple acknowledgments 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>After requesting an update to the data receivers's max_ack_delay, a data sender
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"/>.</t>
      <t>Until the packet carrying the ACK_FREQUENCY frame is acknowledged, the endpoint
MUST use the greater of the current max_ack_delay 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 decreases the peer's max_ack_delay.</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 max_ack_delay 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 max_ack_delay period before sending an acknowledgment. In such
cases, the endpoint MAY exclude the peer's max_ack_delay from its PTO
calculation.  When Reordering Threshold is set to 0 and loss prevents the peer
from receiving enough packets to trigger an immediate acknowledgment, the receiver
will wait max_ack_delay, increasing the chances of a premature PTO.
Therefore, if Reordering Threshold is set to 0, the PTO MUST be larger than the
peer's max_ack_delay.</t>
      <t>When sending PTO packets, one can include an IMMEDIATE_ACK frame to elicit an
immediate acknowledgment. This avoids delaying acknowledgements of PTO packets
by the acknowledgment delay, reducing tail latency and allowing the sender
to exclude the peer's max_ack_delay from subsequent PTO calculations.</t>
    </section>
    <section anchor="implementation">
      <name>Determining Acknowledgment 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. Decreasing the acknowledgment frequency
can delay a sender's response to network congestion or cause it to underutilize
the available bandwidth.</t>
        <t>To limit the consequences of reduced acknowledgment frequency, a sender
can use the extension in this draft to request a receiver
to send an acknowledgment at least once per round trip,
when there are ack-eliciting packets in flight, in the following ways:</t>
        <t>A data sender can set the Requested Max Ack Delay value
to no more than the estimated round trip time.
The sender can also improve feedback and robustness to
variation in the path RTT by setting the Ack-Eliciting Threshold
to a value no larger than number of maximum-sized packets that fit
into the current congestion window.
Alternatively, a sender can send an IMMEDIATE_ACK frame if no acknowledgement
has been received for more than one round trip time.  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>When setting the Requested Max Ack Delay as a function of the RTT, it is usually
better to use the Smoothed RTT (smoothed_rtt) (<xref section="5.3" sectionFormat="of" target="QUIC-RECOVERY"/>) or another
estimate of the typical RTT, but not the minimum RTT (min_rtt)
(<xref section="5.2" sectionFormat="of" target="QUIC-RECOVERY"/>). This avoids eliciting an
unnecessarily high number of acknowledgments when min_rtt is much smaller than
smoothed_rtt.</t>
        <t>Note that the congestion window and the RTT estimate change over the lifetime of a
connection and therefore might require sending updates in an ACK_FREQUENCY frames to
ensure optimal performance, though not every change should trigger an update.
Usually, it is not necessary to send an ACK_FREQUENCY frame more than once per
RTT and likely even less frequently. Ideally, an ACK_FREQUENCY frame is sent only
when a relevant change in the congestion window or smoothed RTT is detected that
impacts the local setting of the reordering threshold or locally-selected calculation
of the either Ack-Eliciting Threshold or the Requested Max Ack Delay.</t>
        <t>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 unless packets are
acknowledged immediately.  In these cases, Reordering Threshold values other than 1
can delay loss detection more than an RTT.</t>
        <section anchor="application-limited-connections">
          <name>Application-Limited Connections</name>
          <t>A congestion controller that is limited by the congestion window relies upon receiving
acknowledgments to send additional data into the network.  An increase in
acknowledgment delay increases the delay in sending data, which can reduce the
achieved throughput.  Congestion window growth can also depend upon receiving
acknowledgments. This can be particularly significant in slow start
(<xref section="7.3.1" sectionFormat="of" target="QUIC-RECOVERY"/>), when delaying acknowledgments can delay
the increase in congestion window and can create larger packet bursts.</t>
          <t>If the sender is application-limited, acknowledgments 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 acknowledgment delay.</t>
          <t>If there are no inflight packets, no acknowledgments will be received for at least
a round trip when sending resumes. The max_ack_delay and Ack-Eliciting Threshold
values used by the receiver can further delay acknowledgments.  In this case, the
sender can include an IMMEDIATE_ACK or ACK_FREQUENCY frame in the first
Ack-Eliciting packet to avoid waiting for substantially more than a round trip
for an acknowledgment.</t>
        </section>
      </section>
      <section anchor="burst-mitigation">
        <name>Burst Mitigation</name>
        <t>Receiving an acknowledgment 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 <xref section="7.7" sectionFormat="of" 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>Acknowledgments 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
acknowledgment (<xref section="6.1.1" sectionFormat="of" target="QUIC-RECOVERY"/>); delaying the
acknowledgment therefore delays this method of detecting losses.</t>
        <t>Reducing acknowledgment frequency reduces the number of RTT samples that a
sender receives (<xref section="5" sectionFormat="of" 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-based loss detection (<xref section="6.1.2" sectionFormat="of" target="QUIC-RECOVERY"/>) or the Probe Timeout (PTO) (<xref section="6.2" sectionFormat="of" target="QUIC-RECOVERY"/>),
will be less responsive to changes in the path's RTT, resulting in either
delayed or unnecessary packet transmissions.</t>
        <t>A sender might use timers to detect loss of PMTU probe packets
(<xref section="14" sectionFormat="of" target="QUIC-TRANSPORT"/>). A sender MAY
bundle an IMMEDIATE_ACK frame with any PMTU 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"/>);
this changes the pattern of acknowledgments received after migration.</t>
        <t>Therefore, an endpoint that has sent an ACK_FREQUENCY frame earlier in the
connection ought to send a new ACK_FREQUENCY frame upon confirmation of
connection migration with updated information, e.g. to consider the new RTT estimate.</t>
      </section>
    </section>
    <section anchor="set-threshold">
      <name>Setting the Reordering Threshold Value</name>
      <t>To ensure timely loss detection, a data sender can send a Reordering Threshold
value that is the same as the loss detection packet threshold. If the
reordering threshold is smaller than the packet threshold, an acknowledgement is
unnecessarily sent before the packet can be declared lost. If the value is
larger, it can cause unnecessary delays in loss detection
(<xref section="6.1.1" sectionFormat="of" target="QUIC-RECOVERY"/>).</t>
      <t>In order to avoid unnecessary immediate acknowledgements, senders SHOULD
implement adaptive packet threshold loss detection and communicate the
increased Reordering Threshold value to the receiver.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>An improperly configured or malicious data sender could request 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 acknowledgment 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 enforce it.</t>
      <t><xref section="21.9" sectionFormat="of" target="QUIC-TRANSPORT"/> provides further guidance on peer denial of service
attacks that could abuse control frames, including ACK frames as well as the newly herein specified
ACK_FREQUENCY and IMMEDIATE_ACK frames, to cause disproportional
processing costs without observable impact on the state of the connection.
Especially, the IMMEDIATE_ACK frame does not only imply processing cost for receiving
and processing the control frame itself but can also cause additional sending of
packets. However, 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>
      <section anchor="quic-transport-parameter">
        <name>QUIC Transport Parameter</name>
        <t>The following entry in <xref target="transport-parameters"/> has been requested to be provisionally 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">0xff04de1b</td>
              <td align="left">min_ack_delay</td>
              <td align="left">
                <xref target="nego"/></td>
            </tr>
          </tbody>
        </table>
        <t>When this document is approved, IANA is requested to assign a permanent allocation
of a codepoint in the 0-63 range to replace the provisional codepoint described above.</t>
      </section>
      <section anchor="quic-frame-types">
        <name>QUIC Frame Types</name>
        <t>The following frame types have requested to be provisionally 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">0x1f</td>
              <td align="left">IMMEDIATE_ACK</td>
              <td align="left">
                <xref target="immediate-ack-frame"/></td>
            </tr>
          </tbody>
        </table>
        <t>When this document is approved, IANA is requested to change the registration to
a permanent allocation of these frame types with the values described above.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-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"/>
            <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"/>
            <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 anchor="sec-informative-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="T." surname="Jones" fullname="T. Jones">
              <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"/>
            <author fullname="V. Padmanabhan" initials="V." surname="Padmanabhan"/>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"/>
            <author fullname="M. Sooriyabandara" initials="M." surname="Sooriyabandara"/>
            <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"/>
            <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="RFC8257">
          <front>
            <title>Data Center TCP (DCTCP): TCP Congestion Control for Data Centers</title>
            <author fullname="S. Bensley" initials="S." surname="Bensley"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="P. Balasubramanian" initials="P." surname="Balasubramanian"/>
            <author fullname="L. Eggert" initials="L." surname="Eggert"/>
            <author fullname="G. Judd" initials="G." surname="Judd"/>
            <date month="October" year="2017"/>
            <abstract>
              <t>This Informational RFC describes Data Center TCP (DCTCP): a TCP congestion control scheme for data-center traffic. DCTCP extends the Explicit 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>
    <?line 712?>

<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>
      <t>Thanks for the reviews by Lucas Pardue, Martin Thomson,
Magnus Westerlund, Kazuho Oku, Marten Seemann, Gorry Fairhurst,
Ingemar Johansson, Christian Huitema, Michael Eriksson, Martin Duke,
Nick Banks, Gaurav Singh, Mike Bishop, Neal Cardwell, Rui Paulo,
Joseph Beshay, Alexis La Goutte, Vidhi Goel, Dmitri Tikhonov,
Marco Munizaga and Matt Joras.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
J6ypVggc/i9kLLSZHIIAAA==

-->

</rfc>
