<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-pardue-quic-idle-timeout-update-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title>QUIC Idle Timeout Update</title>
    <seriesInfo name="Internet-Draft" value="draft-pardue-quic-idle-timeout-update-00"/>
    <author fullname="Lucas Pardue">
      <organization>Cloudflare</organization>
      <address>
        <email>lucas@lucaspardue.com</email>
      </address>
    </author>
    <date year="2025" month="November" day="13"/>
    <area>Web and Internet Transport</area>
    <workgroup>QUIC</workgroup>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 37?>

<t>QUIC supports an idle timeout for connections, which can be negotiated once
during the connection handshake. This document defines QUIC extension frames
that permit either endpoint to initiate an update to the idle timeout value.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://LPardue.github.io/draft-pardue-quic-idle-timeout-update/draft-pardue-quic-idle-timeout-update.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-pardue-quic-idle-timeout-update/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        QUIC Working Group mailing list (<eref target="mailto:quic@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/quic/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/LPardue/draft-pardue-quic-idle-timeout-update"/>.</t>
    </note>
  </front>
  <middle>
    <?line 44?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>QUIC supports an idle timeout for connections, which can be negotiated once
during the connection handshake via the max_idle_timeout transport parameter
(<xref section="18.2" sectionFormat="of" target="RFC9000"/>). If an idle timeout value is negotiated,
connections apply the guidance in <xref section="10.1" sectionFormat="of" target="RFC9000"/>.</t>
      <t>The requirement to negotiate idle timeout during the handshake creates some
operational friction including:</t>
      <ul spacing="normal">
        <li>
          <t>Requiring all application protocols that could be negotiated in a single
flight to abide by the same value.</t>
        </li>
        <li>
          <t>Requiring all applications that use an application protocol to abide by the
same value.</t>
        </li>
        <li>
          <t>Limiting the ability for endpoints to change the idle timeout value (including
disabling) during the lifetime of a connection. For example, adjusting idle
timeouts to meet application behavior, or after initiating a graceful shutdown.</t>
        </li>
      </ul>
      <t>This document defines QUIC extension frames that can be used by either
endpoint to update the value of the idle timeout: IDLE_TIMEOUT_UPDATE_REQUEST
and IDLE_TIMEOUT_UPDATE_RESPONSE.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document uses terms, definitions, and notational conventions described in
Section <xref target="RFC9000" section="1.2" sectionFormat="bare"/> and Section <xref target="RFC9000" section="1.3" sectionFormat="bare"/> of <xref target="RFC9000"/>.</t>
    </section>
    <section anchor="negotiating-extension-use">
      <name>Negotiating Extension Use</name>
      <t>The idle_timeout_update transport parameter (value TBD-01) is defined for QUIC version
1 <xref target="RFC9000"/>. This transport parameter can be sent by both client and server.
The transport parameter is sent with an empty value; an endpoint that
understands this transport parameter <bcp14>MUST</bcp14> treat receipt of a non-empty value of
the transport parameter as a connection error of type TRANSPORT_PARAMETER_ERROR.</t>
      <t>The extension frames defined in this document, <bcp14>MUST</bcp14> be sent only when both
endpoints advertise the idle_timeout_update transport parameter. If only one
endpoint advertises idle_timeout_update, the receipt of a either an
IDLE_TIMEOUT_UPDATE_REQUEST or IDLE_TIMEOUT_UPDATE_RESPONSE frame is a
connection error of type FRAME_ENCODING_ERROR.</t>
    </section>
    <section anchor="idletimeoutupdaterequest-frame">
      <name>IDLE_TIMEOUT_UPDATE_REQUEST Frame</name>
      <t>The IDLE_TIMEOUT_UPDATE_REQUEST frame (value TBD-02) is used to request an
update to the value of the idle timeout on the connection over which it is sent.
It can be sent by both client and server. It is structured as follows:</t>
      <artwork><![CDATA[
IDLE_TIMEOUT_UPDATE_REQUEST Frame {
  Type (i) = TBD-02,
  Sequence Number (i),
  Idle Timeout (i),
}
]]></artwork>
      <t>IDLE_TIMEOUT_UPDATE_REQUEST frames contain the following fields:</t>
      <dl>
        <dt>Sequence Number:</dt>
        <dd>
          <t>The sequence number assigned to the update request, encoded as a
variable-length integer; see <xref target="behavior"/>.</t>
        </dd>
        <dt>Idle Timeout:</dt>
        <dd>
          <t>The requested idle timeout value in milliseconds, encoded as a variable-length
integer. A value of 0 is a request to disable the idle timeout.</t>
        </dd>
      </dl>
    </section>
    <section anchor="idletimeoutupdateaccept-frame">
      <name>IDLE_TIMEOUT_UPDATE_ACCEPT Frame</name>
      <t>The IDLE_TIMEOUT_UPDATE_ACCEPT frame (value TBD-03) is used to accept an idle
timeout update request. It can be sent by clients or servers.</t>
      <t>It is structured as follows:</t>
      <artwork><![CDATA[
IDLE_TIMEOUT_UPDATE_ACCEPT Frame {
  Type (i) = TBD-03,
  Sequence Number (i),
}
]]></artwork>
      <t>IDLE_TIMEOUT_UPDATE_ACCEPT frames contain the following fields:</t>
      <dl>
        <dt>Sequence Number:</dt>
        <dd>
          <t>The sequence number that the request being responded to, encoded as a
variable-length integer; see <xref target="behavior"/>.</t>
        </dd>
      </dl>
    </section>
    <section anchor="idletimeoutupdatereject-frame">
      <name>IDLE_TIMEOUT_UPDATE_REJECT Frame</name>
      <t>The IDLE_TIMEOUT_UPDATE_REJECT frame (value TBD-04) is used to reject an idle
timeout update request. It can be sent by clients or servers.</t>
      <t>It is structured as follows:</t>
      <artwork><![CDATA[
IDLE_TIMEOUT_UPDATE_REJECT Frame {
  Type (i) = TBD-04,
  Sequence Number (i),
}
]]></artwork>
      <t>IDLE_TIMEOUT_UPDATE_REJECT frames contain the following fields:</t>
      <dl>
        <dt>Sequence Number:</dt>
        <dd>
          <t>The sequence number that the request being responded to, encoded as a
variable-length integer; see <xref target="behavior"/>.</t>
        </dd>
      </dl>
    </section>
    <section anchor="behavior">
      <name>Behavior and Usage</name>
      <t>At any point after the handshake, either client or server may request an update
to the connection idle timeout by sending an IDLE_TIMEOUT_UPDATE_REQUEST frame
containing a sequence number and a requested value. Clients <bcp14>MUST</bcp14> use
even-numbered sequence numbers, starting at 0. Servers <bcp14>MUST</bcp14> use odd-numbered
sequence numbers, starting at 1. This avoids race conditions with sequence
number allocation and prevents an endpoint accepting its own request. When
receiving an IDLE_TIMEOUT_UPDATE_REQUEST frame, clients <bcp14>MUST</bcp14> treat an
even-numbered sequence number, and servers <bcp14>MUST</bcp14> tread an odd-numbered sequence
number, as a connection error of type FRAME_ENCODING_ERROR.</t>
      <t>Each update request <bcp14>MUST</bcp14> increase the sequence number by 1.</t>
      <t>Recipients of an IDLE_TIMEOUT_UPDATE_REQUEST frame <bcp14>SHOULD</bcp14> respond with either an
IDLE_TIMEOUT_UPDATE_ACCEPT or IDLE_TIMEOUT_UPDATE_REJECT frame containing the
sequence number of the request that is being responded to. When receiving an
IDLE_TIMEOUT_UPDATE_ACCEPT or IDLE_TIMEOUT_UPDATE_REJECT frame, clients <bcp14>MUST</bcp14>
treat an odd-numbered sequence number, and servers <bcp14>MUST</bcp14> tread an even-numbered
sequence number, as a connection error of type FRAME_ENCODING_ERROR.</t>
      <t>Endpoints are not required to respond to every IDLE_TIMEOUT_UPDATE_REQUEST.
Responding only to the request with the largest received sequence number can
ensure the peer's most-recent request is accepted, and avoid needing to send
explicit rejections for stale values.</t>
      <t>Each update request <bcp14>SHOULD</bcp14> contain an idle timeout value different from the
immediately previous request. Recipients of IDLE_TIMEOUT_UPDATE_REQUEST frames
where the value does not change <bcp14>MAY</bcp14> treat this as a connection error of type
FRAME_ENCODING_ERROR.</t>
      <t>Accepting an idle timeout update request changes the connection idle timeout
value. The update requestor applies the new timeout value on receipt of the
IDLE_TIMEOUT_UPDATE_ACCEPT frame, the update responder applies the new timeout
value on receipt of acknowledgement of the IDLE_TIMEOUT_UPDATE_ACCEPT frame.</t>
      <t>Requesting a timeout value of 0 is valid. If it is accepted, then the idle
timeout is disabled.</t>
      <t>Rejecting an idle timeout update request leaves the current connection idle
timeout value unchanged.</t>
      <t>All behavior related to idle connections as described in <xref section="10.1" sectionFormat="of" target="RFC9000"/> applies.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The considerations in <xref target="RFC9000"/> apply. Notably, the frame processing
requirements in this draft should be aware for the potential for abuse described
in <xref section="21.9" sectionFormat="of" target="RFC9000"/>.</t>
      <t>A malicious peer could manipulate congestion control to prevent the sending of
update responses and issue a large number of update requests. Endpoints are
advised to avoid excessive queuing of pending update responses. Responding only
to the largest received sequence number is one strategy to avoid queuing.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document provisionally registers a new value in the "QUIC Transport
Parameters" registry maintained at <eref target="https://www.iana.org/assignments/quic">https://www.iana.org/assignments/quic</eref>.</t>
      <dl>
        <dt>Value:</dt>
        <dd>
          <t>TBD-01 (0x0c02ce490eceab89)</t>
        </dd>
        <dt>Parameter Name:</dt>
        <dd>
          <t>idle_timeout_update</t>
        </dd>
        <dt>Status:</dt>
        <dd>
          <t>provisional</t>
        </dd>
        <dt>Specification:</dt>
        <dd>
          <t>This document</t>
        </dd>
        <dt>Note:</dt>
        <dd>
          <t>Deterministically generated via <eref target="https://martinthomson.github.io/quic-pick/#seed=draft-pardue-quic-idle-timeout-00-tp;field=frame;codepoint=0x0c02ce490eceab89;size=8">https://martinthomson.github.io/quic-pick/#seed=draft-pardue-quic-idle-timeout-00-tp;field=frame;codepoint=0x0c02ce490eceab89;size=8</eref></t>
        </dd>
      </dl>
      <t>This document provisionally registers new values QUIC Frame Types" registry
maintained at <eref target="https://www.iana.org/assignments/quic">https://www.iana.org/assignments/quic</eref>.</t>
      <dl>
        <dt>Value:</dt>
        <dd>
          <t>TBD-02 (0x00935f270e717f68)</t>
        </dd>
        <dt>Frame Name:</dt>
        <dd>
          <t>IDLE_TIMEOUT_UPDATE_REQUEST</t>
        </dd>
        <dt>Status:</dt>
        <dd>
          <t>provisional</t>
        </dd>
        <dt>Specification:</dt>
        <dd>
          <t>This document</t>
        </dd>
        <dt>Note:</dt>
        <dd>
          <t>Deterministically generated via <eref target="https://martinthomson.github.io/quic-pick/#seed=draft-pardue-quic-idle-timeout-00-req;field=frame;codepoint=0x00935f270e717f68;size=8">https://martinthomson.github.io/quic-pick/#seed=draft-pardue-quic-idle-timeout-00-req;field=frame;codepoint=0x00935f270e717f68;size=8</eref></t>
        </dd>
        <dt>Value:</dt>
        <dd>
          <t>TBD-03 (0x07f531ea3d7b9654)</t>
        </dd>
        <dt>Frame Name:</dt>
        <dd>
          <t>IDLE_TIMEOUT_UPDATE_ACCEPT</t>
        </dd>
        <dt>Status:</dt>
        <dd>
          <t>provisional</t>
        </dd>
        <dt>Specification:</dt>
        <dd>
          <t>This document</t>
        </dd>
        <dt>Note:</dt>
        <dd>
          <t>Deterministically generated via <eref target="https://martinthomson.github.io/quic-pick/#seed=draft-pardue-quic-idle-timeout-00-resp;field=frame;codepoint=0x07f531ea3d7b9654;size=8">https://martinthomson.github.io/quic-pick/#seed=draft-pardue-quic-idle-timeout-00-resp;field=frame;codepoint=0x07f531ea3d7b9654;size=8</eref></t>
        </dd>
        <dt>Value:</dt>
        <dd>
          <t>TBD-04 (0x07f531ea3d7b9655)</t>
        </dd>
        <dt>Frame Name:</dt>
        <dd>
          <t>IDLE_TIMEOUT_UPDATE_REJECT</t>
        </dd>
        <dt>Status:</dt>
        <dd>
          <t>provisional</t>
        </dd>
        <dt>Specification:</dt>
        <dd>
          <t>This document</t>
        </dd>
        <dt>Note:</dt>
        <dd>
          <t>Deterministically generated via TBD-03 value +1</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC9000">
        <front>
          <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
          <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
          <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
          <date month="May" year="2021"/>
          <abstract>
            <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9000"/>
        <seriesInfo name="DOI" value="10.17487/RFC9000"/>
      </reference>
      <reference anchor="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>
    <?line 303?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
O940JiIysvEZ3Pzm4qZcOLXYfwAJC7VxqSUAAA==

-->

</rfc>
