<?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.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-seemann-quic-ppdplpmtud-00" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Parallel Probing DPLPMTUD for QUIC">Parallel Probing DPLPMTUD for QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-seemann-quic-ppdplpmtud-00"/>
    <author initials="M." surname="Seemann" fullname="Marten Seemann">
      <organization/>
      <address>
        <email>martenseemann@gmail.com</email>
      </address>
    </author>
    <author initials="L." surname="Eggert" fullname="Lars Eggert">
      <organization>Mozilla</organization>
      <address>
        <email>lars@eggert.org</email>
        <uri>https://eggert.org/</uri>
      </address>
    </author>
    <date year="2026" month="August" day="16"/>
    <area>Web and Internet Transport</area>
    <workgroup>QUIC</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 51?>

<t>QUIC endpoints commonly use 1200-byte datagrams during the handshake and only
start Path MTU Discovery afterward. This means that just-established QUIC
connections cannot immediately use larger datagrams, which is especially limiting
for MASQUE protocols and for WebTransport.
This document defines Parallel Probing DPLPMTUD (PPDPLPMTUD), which probes
several packet sizes early during the QUIC handshake, so a larger discovered size is
usable during later handshake phases and especially after handshake completion.
The same discovery process is also used for path migration.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://marten-seemann.github.io/draft-seemann-quic-ppdplpmtud/draft-seemann-quic-ppdplpmtud.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-seemann-quic-ppdplpmtud/"/>.
      </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/marten-seemann/draft-seemann-quic-ppdplpmtud"/>.</t>
    </note>
  </front>
  <middle>
    <?line 64?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>QUIC endpoints commonly limit datagrams to 1200 bytes until Datagram
Packetization Layer Path MTU Discovery (DPLPMTUD) <xref target="RFC8899"/> confirms a larger
size. Sequential probing after the handshake <xref target="RFC9000"/> can take several round
trips.</t>
      <t>The delay is particularly undesirable for CONNECT-UDP <xref target="RFC9298"/>, CONNECT-IP
<xref target="RFC9484"/>, and CONNECT-ETHERNET <xref target="I-D.ietf-masque-connect-ethernet"/>.
Encapsulation can make 1200-byte QUIC datagrams insufficient, while discovering
an outer tunnel's MTU can delay Path MTU Discovery by an inner transport.
WebTransport over HTTP/3 <xref target="I-D.ietf-webtrans-http3"/> benefits similarly when
using QUIC DATAGRAM frames <xref target="RFC9221"/>.</t>
      <t>PPDPLPMTUD sends parallel probes for several distinct packet sizes
without waiting for individual results. It needs no new frames or transport parameters and
operates independently in each direction. The additional traffic is justified
only when the application is expected to benefit early in the connection.</t>
      <t>This document first describes the generic PPDPLPMTUD mechanism, followed by how it
applies to the 1-RTT handshake, the 0-RTT handshake, and when probing a new path.</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 the terminology of <xref target="RFC8899"/>, <xref target="RFC9000"/>, <xref target="RFC9001"/>,
and <xref target="RFC9002"/>.</t>
    </section>
    <section anchor="mechanism">
      <name>The PPDPLPMTUD Mechanism</name>
      <t>PPDPLPMTUD is a QUIC-specific mechanism. It does <strong>not</strong> probe for the MTU, i.e., it does <strong>not</strong> determine the <strong>maximum</strong> transmission unit that can be used on a path. Instead, it attempts to detect a safe larger-than-minimum packet size for a given <strong>Internet</strong> path.</t>
      <t>Restricting PPDPLPMTUD to Internet paths means that the maximum packet size probed for is the minimum of the common 1500-byte Ethernet MTU and the local interface MTU on the path towards the destination. Detection of larger packet sizes is explicitly out of scope. (Note that the configured socket send buffer size and, when available, the <tt>max_udp_payload_size</tt> transport parameter further limit this maximum packet size.)</t>
      <t>This section describes the general mechanism; <xref target="handshake-1rtt"/>,
<xref target="handshake-0rtt"/>, and <xref target="new-path"/> describe how it applies in each
situation.</t>
      <section anchor="probe-size-selection">
        <name>Probe Size Selection</name>
        <t>Probe size selection is implementation-specific. Implementations are
encouraged to use information about common PMTUs and application requirements.</t>
        <t>Equally-spaced probe sizes are a simple choice. <xref target="handshake-1rtt"/>
gives a worked example of budgeting probes within an initial congestion
window.</t>
      </section>
      <section anchor="probe-construction">
        <name>Probe Construction</name>
        <t>An endpoint selects several packet sizes above its current maximum and sends
an ACK-eliciting probe with a new packet number for each. Frame types and
packet number space depend on the situation; see <xref target="handshake-1rtt"/>,
<xref target="handshake-0rtt"/>, and <xref target="new-path"/>.</t>
      </section>
      <section anchor="cwnd-utilization">
        <name>Maximizing Congestion Window Utilization</name>
        <t>The key idea of PPDPLPMTUD is to maximize use of the available congestion
window (cwnd) for sending parallel probes: whenever cwnd headroom remains
beyond what an endpoint needs for the data it is already sending, PPDPLPMTUD
uses that headroom to send a number of packet size probes.</t>
        <t>When an endpoint receives an acknowledgment (ACK) for a flight containing probes, it
determines the largest packet size successfully received by the peer, which
becomes the maximum datagram size for the endpoint, per <xref section="14" sectionFormat="of" target="RFC9000"/>.</t>
      </section>
      <section anchor="order-and-timing">
        <name>Order and Timing</name>
        <t>Within a single packet number space, an endpoint <bcp14>SHOULD</bcp14> send probes from
largest to smallest. Smaller probes then have larger packet numbers, allowing
their ACKs to expose missing larger probes. Whether other, non-probe traffic
at the current maximum packet size is sent before or after the probes
depends on the situation; see <xref target="handshake-1rtt"/> and <xref target="handshake-0rtt"/>.</t>
        <t>All packets, including probes, consume congestion window and <bcp14>MUST</bcp14> fit within
the available congestion window. PPDPLPMTUD <bcp14>MAY</bcp14> send a set of probes as a
burst subject to <xref section="7.7" sectionFormat="of" target="RFC9002"/>.</t>
      </section>
      <section anchor="cc-interaction">
        <name>Congestion Control Interaction</name>
        <t>PPDPLPMTUD does not change congestion control. Increasing the maximum datagram
size <bcp14>MUST NOT</bcp14> increase the congestion window measured in bytes. As specified by
<xref target="RFC8899"/>, isolated loss of a packet size probe <bcp14>SHOULD NOT</bcp14> cause a
congestion control reaction.</t>
      </section>
      <section anchor="confirmation">
        <name>Confirmation</name>
        <t>The sender records the packet size for every probe packet number. An
ACK confirms that size and all smaller sizes. A missing
ACK does not prove that a size is unsupported: PPDPLPMTUD finds a
confirmed lower bound, not the exact path MTU. If no probe is acknowledged, the
endpoint retains its previous maximum. Regular DPLPMTUD <xref target="RFC8899"/> can
continue afterward.</t>
        <t>Confirmation also depends on the sender still being able to process an ACK
when it arrives. Only packets coalesced into the same UDP datagram are
guaranteed to be received and processed together, since a datagram is
delivered whole or not at all -- relevant once an endpoint stops processing
a packet number space it no longer needs.</t>
      </section>
      <section anchor="directionality">
        <name>Directionality</name>
        <t>Results are directional and path-specific. Migration, NAT rebinding, or routing
changes can invalidate them. Cached results can guide probe sizes but <bcp14>MUST NOT</bcp14>
replace confirmation on the current path; see <xref target="new-path"/>.</t>
      </section>
    </section>
    <section anchor="handshake-1rtt">
      <name>PPDPLPMTUD During the 1-RTT Handshake</name>
      <t>During the 1-RTT handshake, each side abandons a packet number space --
discarding its keys and stopping both sending and processing there -- based
on its own progress, not on having received everything the peer sent, per
<xref section="4.9" sectionFormat="of" target="RFC9001"/>. The handshake <bcp14>MUST</bcp14> be able to complete even if no
probe above the current maximum is ever ACKed, and an endpoint <bcp14>SHOULD</bcp14>
send probes promptly, or send fewer of them, to avoid leaving any unsent when
keys are discarded.</t>
      <t>An endpoint therefore sends its probes before its essential handshake data --
the ClientHello for a client, or the Certificate, CertificateVerify, and
Finished for a server -- which it sends in packets no larger than its
current maximum. New, non-retransmitted data <bcp14>MUST</bcp14> use the sender's highest
currently-available encryption level; probes <bcp14>SHOULD</bcp14> instead carry copies of
that essential CRYPTO data, which, being a retransmission, remains permitted
at a previous level, per <xref section="4.9" sectionFormat="of" target="RFC9001"/>. Where the data does not
fit into a single probe, copies of each range <bcp14>SHOULD</bcp14> span different probe
sizes, so the peer can assemble everything it needs from whichever probes,
or trailing packets, survive.</t>
      <t><xref section="13.2.1" sectionFormat="of" target="RFC9000"/> already requires an endpoint to ACK
ACK-eliciting Initial and Handshake packets immediately. Since generating
that ACK is unavoidable once an endpoint has everything it needs to build
its own next handshake message, it <bcp14>SHOULD</bcp14> coalesce that ACK into the same
datagram as that message (see <xref target="confirmation"/>), so it covers the peer's
probes too without waiting for the rest of the flight.</t>
      <t>The Client and Server sections below cover what differs between the two
first flights.</t>
      <section anchor="client">
        <name>Client</name>
        <t>For example, within the 12000-byte initial congestion window defined by
<xref section="7.2" sectionFormat="of" target="RFC9002"/>, a client can reserve 2400 bytes at the end for
its ClientHello, sent as two 1200-byte datagrams, leaving 9600 bytes for
probes sent first. With an upper probe size of 1472 bytes, it can send seven
probes of 1472, 1433, 1394, 1355, 1317, 1278, and 1239 bytes, followed by the
ClientHello. The probes consume 9488 bytes and the complete flight consumes
11888 bytes. Together with the current maximum of 1200 bytes, these sizes
provide confirmation points approximately 39 bytes apart.</t>
        <t>The client does not yet know the server's <tt>max_udp_payload_size</tt>, so probes
might exceed that value. Upon receiving the transport parameter, the client
<bcp14>MUST</bcp14> cap its maximum datagram size at the smaller of that value and the
largest acknowledged probe. An ACK does not override the transport
parameter. After Retry, the client <bcp14>MAY</bcp14> repeat or omit probing.</t>
      </section>
      <section anchor="server">
        <name>Server</name>
        <t>After processing the ClientHello, the server knows the client's
<tt>max_udp_payload_size</tt> and <bcp14>MUST NOT</bcp14> exceed it.</t>
        <t>By the time it builds this flight, the server already has both Handshake and
1-RTT keys, unlike the client's first flight, where Initial is the only
level available. A probe <bcp14>MAY</bcp14> instead just contain a PING frame and enough
PADDING frames to reach the selected size; since that is new data rather
than a CRYPTO retransmission, it <bcp14>MUST</bcp14> then use 1-RTT rather than Handshake.</t>
      </section>
      <section anchor="address-validation">
        <name>Address Validation</name>
        <t>Before address validation, every probe byte counts against the server's
anti-amplification limit defined in <xref section="8.1" sectionFormat="of" target="RFC9000"/>. The server <bcp14>MUST</bcp14>
prioritize handshake data and send fewer probes or none when its budget is
insufficient. Client probes increase that budget.</t>
      </section>
    </section>
    <section anchor="handshake-0rtt">
      <name>PPDPLPMTUD During a 0-RTT Handshake</name>
      <t>0-RTT and 1-RTT packets share the same packet number space, and a client
never sends a 0-RTT packet after it has sent a 1-RTT packet, per
<xref section="4.9.3" sectionFormat="of" target="RFC9001"/>. A size confirmed by an ACK of a 0-RTT probe
therefore applies directly to subsequent 1-RTT packets.</t>
      <t>A client <bcp14>SHOULD</bcp14> send its 0-RTT
application data in packets at the current maximum packet size to avoid size-based loss.</t>
      <t>Any remaining cwnd can then be used to send packet-size probes.
CRYPTO frames cannot be sent in 0-RTT packets, per <xref section="12.5" sectionFormat="of" target="RFC9000"/>,
so a 0-RTT probe cannot use the redundant-CRYPTO-copy construction described for
the handshake. A probe can still contain a PING frame and enough PADDING
frames to reach the selected size. Similarly to the redundant CRYPTO copies,
the client <bcp14>MAY</bcp14> also opportunistically retransmit STREAM data in probe
packets.</t>
      <section anchor="coalesced-probes">
        <name>Coalesced Probes</name>
        <t>A probe <bcp14>MAY</bcp14> be a coalesced datagram containing packets from multiple
encryption levels, as described in <xref section="12.2" sectionFormat="of" target="RFC9000"/>. A client can
coalesce its Initial and 0-RTT packets this way. Because both are part of the
client's first flight,
they are always processed together and neither risks the key-discard hazard
described in <xref target="handshake-1rtt"/>. Coalescing an Initial or 0-RTT packet with a
1-RTT packet in the same probe datagram, once 1-RTT keys are available,
additionally hedges against loss or discard of the earlier-space packet: if
the peer ACKs any one of the coalesced packets, the size of the whole
datagram is confirmed.</t>
      </section>
      <section anchor="client-1">
        <name>Client</name>
        <t>0-RTT data and probes share the initial congestion window. A few small
requests can leave room for probing, but more 0-RTT data makes probing less
useful; the client <bcp14>MAY</bcp14> then send fewer probes, omit PPDPLPMTUD, or
retransmit STREAM data as described above to avoid the tradeoff.</t>
        <t>A client that attempts 0-RTT <bcp14>MUST</bcp14> remember the server's previously provided
<tt>max_udp_payload_size</tt>, per <xref section="7.4.1" sectionFormat="of" target="RFC9000"/>.</t>
        <t>A server <bcp14>MAY</bcp14> reject 0-RTT instead of selecting a smaller value than it
previously provided, but this check is optional, so an accepted handshake
does not guarantee the remembered value still holds; the client <bcp14>MUST</bcp14> still
cap on the actual transport parameter once received, as in the 1-RTT case.
Unlike in a 1-RTT handshake, where the client has no prior information, a
0-RTT client has an upper bound to size its probes against. If
the server rejects 0-RTT, the client falls back to the 1-RTT handshake
behavior.</t>
      </section>
      <section anchor="server-1">
        <name>Server</name>
        <t>Anti-amplification limits apply before address validation just as during a
1-RTT handshake (see <xref target="address-validation"/>). The server <bcp14>MUST</bcp14> prioritize
processing the ClientHello and any 0-RTT data it accepts, sending probes only
within the remaining congestion window; since the server has 1-RTT keys
available essentially as soon as it starts building its response, these
probes use 1-RTT PING and PADDING frames, for the same reason given for the
1-RTT handshake.</t>
      </section>
    </section>
    <section anchor="new-path">
      <name>PPDPLPMTUD When Probing a New Path</name>
      <t>QUIC endpoints validate a new path, as
described in <xref section="8.2" sectionFormat="of" target="RFC9000"/>. Before committing to migrate there,
an endpoint can test a new path's viability, including the packet sizes it
supports, using only "probing frames" (<xref section="9.1" sectionFormat="of" target="RFC9000"/>): a
PPDPLPMTUD probe on a not-yet-validated path is a packet built from PADDING
together with a
PATH_CHALLENGE, PATH_RESPONSE, or NEW_CONNECTION_ID frame, padded to the
selected probe size.</t>
      <t>Before the new address is validated, an endpoint sending to it <bcp14>MUST NOT</bcp14> send
more than three times the bytes it has received from that address, per
<xref section="21.1.1.1" sectionFormat="of" target="RFC9000"/>. Any datagram containing a
PATH_CHALLENGE frame <bcp14>MUST</bcp14> already be expanded to at least the minimum QUIC
datagram size of 1200 bytes unless the anti-amplification limit does not
permit it, per <xref section="8.2.1" sectionFormat="of" target="RFC9000"/>; PPDPLPMTUD probes extend above
that floor.</t>
      <t>Once path validation succeeds, an endpoint <bcp14>MUST</bcp14> reset its congestion
controller and RTT estimator for that path to their initial values, per
<xref section="9.4" sectionFormat="of" target="RFC9000"/>. PPDPLPMTUD can now run an additional probing
round the same way as during the handshake (see <xref target="mechanism"/>), no longer
confined to probing frames.</t>
      <t>A confirmed size becomes usable once the endpoint takes the new path into
use for transmission; results from the path being replaced do not carry
over.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="RFC8899"/>, <xref target="RFC9000"/>, <xref target="RFC9001"/>, and
<xref target="RFC9002"/> apply.</t>
      <t>PPDPLPMTUD adds traffic and processing during connection establishment and can
cause a short burst of queueing or loss. Implementations <bcp14>SHOULD</bcp14> use only as many
sizes as provide useful resolution and <bcp14>SHOULD</bcp14> disable probing on metered networks.
Probe sizes can also fingerprint an implementation.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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>
        <reference anchor="RFC8899">
          <front>
            <title>Packetization Layer Path MTU Discovery for Datagram Transports</title>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"/>
            <author fullname="T. Jones" initials="T." surname="Jones"/>
            <author fullname="M. Tüxen" initials="M." surname="Tüxen"/>
            <author fullname="I. Rüngeler" initials="I." surname="Rüngeler"/>
            <author fullname="T. Völker" initials="T." surname="Völker"/>
            <date month="September" year="2020"/>
            <abstract>
              <t>This document specifies Datagram Packetization Layer Path MTU Discovery (DPLPMTUD). This is a robust method for Path MTU Discovery (PMTUD) for datagram Packetization Layers (PLs). It allows a PL, or a datagram application that uses a PL, to discover whether a network path can support the current size of datagram. This can be used to detect and reduce the message size when a sender encounters a packet black hole. It can also probe a network path to discover whether the maximum packet size can be increased. This provides functionality for datagram transports that is equivalent to the PLPMTUD specification for TCP, specified in RFC 4821, which it updates. It also updates the UDP Usage Guidelines to refer to this method for use with UDP datagrams and updates SCTP.</t>
              <t>The document provides implementation notes for incorporating Datagram PMTUD into IETF datagram transports or applications that use datagram transports.</t>
              <t>This specification updates RFC 4960, RFC 4821, RFC 6951, RFC 8085, and RFC 8261.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8899"/>
          <seriesInfo name="DOI" value="10.17487/RFC8899"/>
        </reference>
        <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="RFC9001">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="RFC9002">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9221">
          <front>
            <title>An Unreliable Datagram Extension to QUIC</title>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <author fullname="E. Kinnear" initials="E." surname="Kinnear"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <date month="March" year="2022"/>
            <abstract>
              <t>This document defines an extension to the QUIC transport protocol to add support for sending and receiving unreliable datagrams over a QUIC connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9221"/>
          <seriesInfo name="DOI" value="10.17487/RFC9221"/>
        </reference>
        <reference anchor="RFC9298">
          <front>
            <title>Proxying UDP in HTTP</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes how to proxy UDP in HTTP, similar to how the HTTP CONNECT method allows proxying TCP in HTTP. More specifically, this document defines a protocol that allows an HTTP client to create a tunnel for UDP communications through an HTTP server that acts as a proxy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9298"/>
          <seriesInfo name="DOI" value="10.17487/RFC9298"/>
        </reference>
        <reference anchor="RFC9484">
          <front>
            <title>Proxying IP in HTTP</title>
            <author fullname="T. Pauly" initials="T." role="editor" surname="Pauly"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="A. Chernyakhovsky" initials="A." surname="Chernyakhovsky"/>
            <author fullname="M. Kühlewind" initials="M." surname="Kühlewind"/>
            <author fullname="M. Westerlund" initials="M." surname="Westerlund"/>
            <date month="October" year="2023"/>
            <abstract>
              <t>This document describes how to proxy IP packets in HTTP. This protocol is similar to UDP proxying in HTTP but allows transmitting arbitrary IP packets. More specifically, this document defines a protocol that allows an HTTP client to create an IP tunnel through an HTTP server that acts as an IP proxy. This document updates RFC 9298.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9484"/>
          <seriesInfo name="DOI" value="10.17487/RFC9484"/>
        </reference>
        <reference anchor="I-D.ietf-masque-connect-ethernet">
          <front>
            <title>Proxying Ethernet Frames in HTTP</title>
            <author fullname="Alejandro Sedeño" initials="A." surname="Sedeño">
              <organization>Google LLC</organization>
            </author>
            <date day="12" month="August" year="2026"/>
            <abstract>
              <t>   This document describes how to proxy Ethernet frames in HTTP.  This
   protocol is similar to IP proxying in HTTP, but for Layer 2 instead
   of Layer 3.  More specifically, this document defines a protocol that
   allows an HTTP client to create a tunnel to exchange Layer 2 Ethernet
   frames through an HTTP server with an attached physical or virtual
   Ethernet segment.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-masque-connect-ethernet-12"/>
        </reference>
        <reference anchor="I-D.ietf-webtrans-http3">
          <front>
            <title>WebTransport over HTTP/3</title>
            <author fullname="Alan Frindell" initials="A." surname="Frindell">
              <organization>Meta</organization>
            </author>
            <author fullname="Eric Kinnear" initials="E." surname="Kinnear">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   WebTransport over HTTP/3 is a binding of the WebTransport protocol
   framework [OVERVIEW] to HTTP/3 [HTTP3].  It provides support for
   unidirectional streams, bidirectional streams, and datagrams, all
   multiplexed within the same HTTP/3 connection.  WebTransport enables
   application clients constrained by the Web security model to
   communicate with a remote application server using a secure
   multiplexed transport.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-http3-16"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA51b7XLbyJX930/R6/kxtoukLdmztuRUEo2kGbsykhVbjmsq
lXJAoEkiBgEOPqShU36XfZZ9sj3n3u4GQFGZqS1XyWSj0R/349xzbzen06lp
87Zwx/bBVVInReEKe1VX87xc2rOrn64urj+c2UVV279+eHP6wCTzee1ufmfn
NGndsqq3xzYvF5UxWZWWyRpTZXWyaKeNc+ukLKe/dHk63WyyTbFZt102ffrU
mHxTH9u27pr28OnTo6eHJqldgmk/urlNysy+KVtXl66113VSNpuqbh+Y26r+
vKyrboN+uoDPbovG7Dh2n55xZnPjys4dG2vH3a1ttxtK4iNG4p5+5GO2r5O8
QDtX+ufctYtZVS/ZntTpCu2rtt00x0+esBub8hs3C92esOHJvK5uG/eEAzzh
i8u8XXVzvLpO6taVQRZP/qNk+GIBmTbtaM7hADMdeJZX/3mo//x0tmrXxQNj
mhay/pQUVQmpbF1jGs726ZeuwiKObVmZTX5s/95W6cQ20EHtFg0+bdf88A9j
kq5dVTUEPcXKLawAL13M7HudVdrUIC5kE6MHTmWu2/Pr/POSjbO0Woch9fWf
krqx58ulq1tphdgxZvUlL4pkOBiU0/zZST+qRh51NbYQhNk/e2JMWdXrpIUu
aSnvfjh9efDiefj48ujIfzx6+vRp//Gg/3h4DDOG3Y8HOTo8jH0Oj16Gj89f
ytBvpmdiONN10vzSuWlalaVL26lrV2K/oz63bt7S+qdc/TPMNpvNjJlOpzaZ
N3iStsbQsK0rs02Vl21jIbl1VRZb2zXOHsC1pvNt62yWtMmyTtaNzSAOGD6m
syvovlkln504HN+iPdStvUralYWr27O8SasbV28tbMnVt0mdzez1Km/s2mFd
GCVp7b/gw1OYbDIv8mblMsEG4zeWV+iWQrNVa/P12mU5zNsvD8qCMvq1Tezt
Kk9XFsO7ZuPSHPiztUW+zlss2RB2Lk7e//XDud3UFUyyKhpZOR8ANiJQzIws
EWDUrV3Z2swt8tI19n5Ee3h1FT4/CqvAHHM6hMP+k8JukvQz0KjJv2Akl9RY
2UCUooUoT/qKTeL+vBAhGb6N7ZmugbBcGIAeXw+0sVkljdOtDeQgGhj0gqY3
haOAuV9nGzhKnGvL5aeuaSjMpMByIHCV1IbKXeeQuL5r1KLWeZYVzphvCKV1
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

-->

</rfc>
