<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-yang-masque-dgram-retrans-00" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.3 -->
  <front>
    <title abbrev="dgram-retrans">A Configurable Retransmission Extension for HTTP/3 Datagrams</title>
    <seriesInfo name="Internet-Draft" value="draft-yang-masque-dgram-retrans-00"/>
    <author fullname="Furong Yang">
      <organization>Alibaba Inc.</organization>
      <address>
        <email>yfr256538@alibaba-inc.com</email>
      </address>
    </author>
    <author fullname="Yanmei Liu">
      <organization>Alibaba Inc.</organization>
      <address>
        <email>miaoji.lym@alibaba-inc.com</email>
      </address>
    </author>
    <author fullname="Yunfei Ma">
      <organization>Alibaba Inc.</organization>
      <address>
        <email>yunfei.ma@alibaba-inc.com</email>
      </address>
    </author>
    <author fullname="Qinghua Wu">
      <organization>ICT CAS</organization>
      <address>
        <email>wuqinghua@ict.ac.cn</email>
      </address>
    </author>
    <date year="2022" month="December" day="13"/>
    <area>Transport</area>
    <workgroup>MASQUE</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>When using HTTP/3 Datagrams for traffic tunneling, it is desirable to retransmit HTTP/3 Datagrams in some scenarios where the retransmission is beneficial for the tunneled end-to-end connection. This document defines an extension to the HTTP Datagrams and the Capsule Protocol, which allows HTTP/3 Datagrams to be retransmitted according to the configuration of the HTTP/3 Datagram flow.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Multiplexed Application Substrate over QUIC Encryption Working Group mailing list (masque@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/masque/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/yangfurong/draft-yang-masque-retx-dgrams"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>HTTP Datagrams and the Capsule Protocol <xref target="HTTP-DATAGRAM"/> defines how HTTP Datagrams can be sent either unreliably using the QUIC DATAGRAM extension <xref target="QUIC-DATAGRAM"/> or reliably using the Capsule Protocol that encapsulates HTTP Datagrams into HTTP/2 <xref target="RFC7540"/> streams, HTTP/3 <xref target="RFC9114"/> streams or HTTP/1.x connections. The two modes, "reliable mode" and "unreliable mode", all have their pros and cons.</t>
      <t>This document takes the scenario where HTTP Datagrams are leveraged to tunnel QUIC <xref target="QUIC"/> connections from a QUIC client and a target QUIC server via an HTTP UDP proxy <xref target="CONNECT-UDP"/> as a reference. However, the problems discussed below are not restricted to the reference scenario. Instead, the problems are general in other scenarios using HTTP Datagrams for traffic tunneling, e.g. <xref target="CONNECT-IP"/>.</t>
      <t>In the reference scenario, the reliable mode is usually worse than the unreliable mode in terms of the transport performance of the end-to-end QUIC connection (i.e. the connection tunneled by the proxy). The culprit is that the stream-based Capsule Protocol can stall the end-to-end QUIC connection due to head-of-line blocking, which can inflate the RTT estimation of the end-to-end connection, make the connection perceive bursty losses, and hinder different streams of the connection from independent delivery. However, the reliable mode also has advantages sometimes. If the network path between the client and the UDP proxy is lossy and the end-to-end delay is a few times higher than the delay of the tunnel, the reliable mode can quickly recover the lost packets in the tunnel, hide the losses from the end-to-end connection, and avoid the reduction of the connection's congestion window. Some of the above behaviors were observed by a study <xref target="MASQUE-EVALUATION"/>.</t>
      <t>This document defines an extension to the Capsule Protocol <xref target="HTTP-DATAGRAM"/>, which allows HTTP/3 Datagrams to be retransmitted according to the configuration of the HTTP/3 Datagram flow. In <xref target="retx_signaling"/>, a new Capsule Type is added to configure peers' retransmission limit of HTTP/3 Datagrams. Having such a signaling mechanism instead of just locally configuring the retransmission capability at endpoints (i.e. the client and the proxy) is necessary for enforcing retransmission policies in both upstream and downstream directions. As the proxy does not know the end-to-end connection's preference for retransmission, the client needs to inform the proxy what is the retransmission preference. Depending on the retransmission limit of HTTP/3 Datagrams, the handling of lost HTTP/3 Datagrams is discussed in <xref target="retx_handling"/>.</t>
      <t>This extension brings the benefits of the reliable mode to the unreliable mode. It is beneficial for traffic tunneling scenarios where the last-mile link could be very lossy (e.g. Apple's iCloud Private Relay scenario <xref target="PR"/> where the last-mile link is usually wireless).</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>
      <t>This document uses the notation from <xref target="QUIC"/> for the format of the new capsule definition. Where fields are encoded using the variable-length integer, they need not be encoded on the minimum number of bytes.</t>
      <t>In this document, the term "UDP proxy" aligns with the definition in <xref target="CONNECT-UDP"/>, and the term "intermediary" refers to an HTTP intermediary as defined in <xref section="3.7" sectionFormat="of" target="RFC9110"/>.</t>
      <t>The term "HTTP/3 Datagram flow" describes the HTTP/3 Datagrams associated with the same HTTP request, .e.g a Connect-UDP request <xref target="CONNECT-UDP"/> or a Connect-IP request <xref target="CONNECT-IP"/>.</t>
    </section>
    <section anchor="negotiating-the-extension-between-peers">
      <name>Negotiating The Extension Between Peers</name>
      <t>Peers indicate support for this extension by including the boolean-valued Item Structured Field "DG-Retrans: ?1" in the HTTP Request and Response headers (See <xref section="3.3.6" sectionFormat="of" target="RFC8941"/> for information about the boolean format.). Peers <bcp14>MUST NOT</bcp14> use any following mechanisms described by this extension unless the support is explicitly expressed.</t>
    </section>
    <section anchor="retx_signaling">
      <name>Signaling HTTP/3 Datagram Retransmission Limit</name>
      <t>This document defines a new Capsule Type SET_H3_DGRAM_RETX_LIMIT to communicate how many times an HTTP/3 Datagram can be retransmitted at most between peers. Note, the retransmission limit takes effect within the scope of an HTTP/3 Datagram flow.</t>
      <t>The format of the SET_H3_DGRAM_RETX_LIMIT capsule is shown in <xref target="capsule-format"/>. It has the following fields:</t>
      <t>Context ID: It is the Context ID defined in <xref target="CONNECT-UDP"/> or <xref target="CONNECT-IP"/>. It describes the effect scope of the capsule. It is optional. If the Capsule Type is 0xbb (tentative), the capsule has no Context ID field, and the retransmission limit applies to all contexts.</t>
      <t>Retransmission Limit: It is the maximum retransmission number of an HTTP/3 Datagram.</t>
      <figure anchor="capsule-format">
        <name>SET_H3_DGRAM_RETX_LIMIT Format</name>
        <artwork><![CDATA[
SET_H3_DGRAM_RETX_LIMIT {
    Capsule Type (i) = 0xba..0xbb,
    Capsule Length (i),
    [Context ID (i)],
    Retransmission Limit (i),
}
]]></artwork>
      </figure>
      <t>When a peer that recognizes SET_H3_DGRAM_RETX_LIMIT capsules receives a SET_H3_DGRAM_RETX_LIMIT capsule, if it is using HTTP/3 Datagrams, it <bcp14>MUST</bcp14> start to retransmit lost HTTP/3 Datagrams until they are acknowledged or their retransmission limit specified in the capsule is reached. If the peer is an intermediary, it <bcp14>SHOULD NOT</bcp14> forward the capsule to the next hop, as the aim of retransmissions is to recover the lost packets at the probably lossy last-mile link between the client and the first hop proxy. If an intermediary does not recognize SET_H3_DGRAM_RETX_LIMIT capsules, it <bcp14>SHOULD</bcp14> forward the capsules without any modification for the future extensibility as suggested by <xref target="HTTP-DATAGRAM"/>.</t>
      <t>Finding the best way to set the limit of retransmission is out of this document's scope. Nonetheless, a possible way to calculate the retransmission limit is as follows. Considering the reference scenario of this document (shown in <xref target="fig-scenario"/>), the client can set its local retransmission limit to floor(RTT2 / RTT1) and use the SET_H3_DGRAM_RETX_LIMIT capsule to set the proxy's retransmission limit to floor(RTT2 / RTT1). As the loss detection algorithm takes at least one RTT to detect a packet loss, this setting intends to only allow a lost packet to be retransmitted by the tunnel before it is retransmitted by the end-to-end QUIC connection. Note, the client can subtract RTT1 from the RTT of the end-to-end QUIC connection to get RTT2.</t>
      <figure anchor="fig-scenario">
        <name>The reference scenario</name>
        <artwork><![CDATA[
┌───────────────┐              ┌─────────┐            ┌───────────┐
│  QUIC Client  │    RTT1      │UDP Proxy│    RTT2    │QUIC Server│
├───────────────┼──────────────┤         ├────────────┤           │
│ MASQUE Client │              │         │            │           │
└───────────────┘              └─────────┘            └───────────┘
]]></artwork>
      </figure>
    </section>
    <section anchor="updating-http3-datagram-retransmission-limit">
      <name>Updating HTTP/3 Datagram Retransmission Limit</name>
      <t>A peer can just send a new SET_H3_DGRAM_RETX_LIMIT capsule to update the retransmission limit of its peer if necessary. Note, the new limit will overwrite the old limit specified by a previous SET_H3_DGRAM_RETX_LIMIT capsule.</t>
    </section>
    <section anchor="retx_handling">
      <name>Handling Lost HTTP/3 Datagrams</name>
      <t>HTTP/3 Datagrams are encoded in QUIC DATAGRAM frames. As described in <xref target="QUIC-DATAGRAM"/>, QUIC <bcp14>MAY</bcp14> notify the sender upon a QUIC DATAGRAM frame is acknowledged or declared lost by the loss detection algorithm. This extension relies on the notifications of the acknowledgement and loss of QUIC DATAGRAM frames to handle the retransmission of lost HTTP/3 Datagrams.</t>
      <t>A reference way of implementation is as follows. First, when the HTTP/3 Datagram layer calls the unreliable sending API of QUIC to send an HTTP/3 Datagram, it gets a connection-level unique ID (DATAGRAM_ID) from QUIC that corresponds to the underlying QUIC DATAGRAM frame. Then, if the retransmission limit is larger than zero, the HTTP/3 Datagram layer generates a record {id = DATAGRAM_ID, retx_times = 0} for the HTTP/3 Datagram. Afterwards, whether the HTTP/3 Datagram is acknowledged or declared lost, the HTTP/3 Datagram layer will get a corresponding notification. For the acknowledgement notification, the HTTP/3 Datagram layer just deletes the record. For the loss notification, the HTTP/3 Datagram layer retransmits the HTTP/3 Datagram and updates the id and retx_times of the record if the retransmission limit permits, otherwise, the record is deleted. Note, as QUIC holds the HTTP/3 Datagram as the payload of the QUIC DATAGRAM frame, the payload can be returned to the HTTP/3 Datagram layer for retransmission, which saves the HTTP/3 Datagram layer from buffering HTTP/3 Datagrams for retransmission.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This extension adds no additional considerations to those presented in <xref target="HTTP-DATAGRAM"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document adds following entry to the "Hypertext Transfer Protocol (HTTP) Field Name Registry":</t>
      <table anchor="tab-http-registry">
        <name>New HTTP Header Field</name>
        <thead>
          <tr>
            <th align="left">Header Field</th>
            <th align="left">Status</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">DG-Retrans</td>
            <td align="left">Exp</td>
            <td align="left">This document</td>
          </tr>
        </tbody>
      </table>
      <t>This document adds following entries to the "HTTP Capsule Types" registry:</t>
      <table anchor="tab-capsule-registry">
        <name>New Capsule Type</name>
        <thead>
          <tr>
            <th align="left">Capsule Type</th>
            <th align="left">Value</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">SET_H3_DGRAM_RETX_LIMIT</td>
            <td align="left">0xba, 0xbb</td>
            <td align="left">This document</td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="HTTP-DATAGRAM">
          <front>
            <title>HTTP Datagrams and the Capsule Protocol</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi">
              <organization/>
            </author>
            <author fullname="L. Pardue" initials="L." surname="Pardue">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes HTTP Datagrams, a convention for conveying multiplexed, potentially unreliable datagrams inside an HTTP connection.</t>
              <t>In HTTP/3, HTTP Datagrams can be sent unreliably using the QUIC DATAGRAM extension. When the QUIC DATAGRAM frame is unavailable or undesirable, HTTP Datagrams can be sent using the Capsule Protocol, which is a more general convention for conveying data in HTTP connections.</t>
              <t>HTTP Datagrams and the Capsule Protocol are intended for use by HTTP extensions, not applications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9297"/>
          <seriesInfo name="DOI" value="10.17487/RFC9297"/>
        </reference>
        <reference anchor="QUIC-DATAGRAM">
          <front>
            <title>An Unreliable Datagram Extension to QUIC</title>
            <author fullname="T. Pauly" initials="T." surname="Pauly">
              <organization/>
            </author>
            <author fullname="E. Kinnear" initials="E." surname="Kinnear">
              <organization/>
            </author>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi">
              <organization/>
            </author>
            <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="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <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="CONNECT-UDP">
          <front>
            <title>Proxying UDP in HTTP</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi">
              <organization/>
            </author>
            <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="CONNECT-IP">
          <front>
            <title>IP Proxying Support for HTTP</title>
            <author fullname="Tommy Pauly" initials="T." surname="Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="David Schinazi" initials="D." surname="Schinazi">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Alex Chernyakhovsky" initials="A." surname="Chernyakhovsky">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Magnus Westerlund" initials="M." surname="Westerlund">
              <organization>Ericsson</organization>
            </author>
            <date day="27" month="September" year="2022"/>
            <abstract>
              <t>   This document describes a method of proxying IP packets over HTTP.
   This protocol is similar to CONNECT-UDP, but allows transmitting
   arbitrary IP packets, without being limited to just TCP like CONNECT
   or UDP like CONNECT-UDP.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-masque-connect-ip-03"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
              <organization/>
            </author>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes. </t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="MASQUE-EVALUATION">
          <front>
            <title>Evaluation of QUIC-based MASQUE proxying</title>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>Ericsson, Herzogenrath, Germany</organization>
            </author>
            <author fullname="Matias Carlander-Reuterfelt" initials="M." surname="Carlander-Reuterfelt">
              <organization>Ericsson, Madrid, Spain</organization>
            </author>
            <author fullname="Marcus Ihlar" initials="M." surname="Ihlar">
              <organization>Ericsson, Stockholm, Sweden</organization>
            </author>
            <author fullname="Magnus Westerlund" initials="M." surname="Westerlund">
              <organization>Ericsson, Stockholm, Sweden</organization>
            </author>
            <date month="December" year="2021"/>
          </front>
          <seriesInfo name="Proceedings of the 2021 Workshop on Evolution, Performance and Interoperability of" value="QUIC"/>
          <seriesInfo name="DOI" value="10.1145/3488660.3493806"/>
        </reference>
        <reference anchor="PR">
          <front>
            <title>iCloud Private Relay Overview</title>
            <author>
              <organization>Apple Inc.</organization>
            </author>
            <date year="2021"/>
          </front>
        </reference>
        <reference anchor="RFC7540">
          <front>
            <title>Hypertext Transfer Protocol Version 2 (HTTP/2)</title>
            <author fullname="M. Belshe" initials="M." surname="Belshe">
              <organization/>
            </author>
            <author fullname="R. Peon" initials="R." surname="Peon">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2).  HTTP/2 enables a more efficient use of network resources and a reduced perception of latency by introducing header field compression and allowing multiple concurrent exchanges on the same connection.  It also introduces unsolicited push of representations from servers to clients.</t>
              <t>This specification is an alternative to, but does not obsolete, the HTTP/1.1 message syntax.  HTTP's existing semantics remain unchanged.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7540"/>
          <seriesInfo name="DOI" value="10.17487/RFC7540"/>
        </reference>
        <reference anchor="RFC9114">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop">
              <organization/>
            </author>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment.  This document describes a mapping of HTTP semantics over QUIC.  This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
        <reference anchor="RFC8941">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="P-H. Kamp" initials="P-H." surname="Kamp">
              <organization/>
            </author>
            <date month="February" year="2021"/>
            <abstract>
              <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields that wish to use a common syntax that is more restrictive than traditional HTTP field values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8941"/>
          <seriesInfo name="DOI" value="10.17487/RFC8941"/>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="contributors">
      <name>Contributors</name>
      <t>TBD.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
uDvw/hfAVO9z9jAAAA==

-->

</rfc>
