<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.10 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-schinazi-quic-h3-datagram-01" category="exp">

  <front>
    <title abbrev="HTTP/3 Datagrams">Using QUIC Datagrams with HTTP/3</title>

    <author initials="D." surname="Schinazi" fullname="David Schinazi">
      <organization>Google LLC</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>
          <city>Mountain View, California 94043</city>
          <country>United States of America</country>
        </postal>
        <email>dschinazi.ietf@gmail.com</email>
      </address>
    </author>

    <date year="2019" month="October" day="21"/>

    
    
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>The QUIC DATAGRAM extension provides application protocols running over QUIC
with a mechanism to send unreliable data while leveraging the security and
congestion-control properties of QUIC. However, QUIC DATAGRAM frames do not
provide a means to demultiplex application contexts. This document defines how
to use QUIC DATAGRAM frames when the application protocol running over QUIC is
HTTP/3 by adding an identifier at the start of the frame payload.</t>



    </abstract>


  </front>

  <middle>


<section anchor="intro" title="Introduction">

<t>The QUIC DATAGRAM extension <xref target="I-D.pauly-quic-datagram"/> provides application
protocols running over QUIC <xref target="I-D.ietf-quic-transport"/> with a mechanism to
send unreliable data while leveraging the security and congestion-control
properties of QUIC. However, QUIC DATAGRAM frames do not provide a means to
demultiplex application contexts. This document defines how to use QUIC DATAGRAM
frames when the application protocol running over QUIC is HTTP/3
<xref target="I-D.ietf-quic-http"/> by adding an identifier at the start of the frame
payload.</t>

<t>This design mimics the use of Stream Types in HTTP/3, which provide a
demultiplexing identifier at the start of each unidirectional stream.</t>

<section anchor="defs" title="Conventions and Definitions">

<t>The key words “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>

</section>
</section>
<section anchor="format" title="HTTP/3 DATAGRAM Frame Format">

<t>When used with HTTP/3, the Datagram Data field of QUIC DATAGRAM frames uses the
following format:</t>

<figure title="HTTP/3 DATAGRAM Frame Format" anchor="h3-datagram-format"><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Flow Identifier (i)                     ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 HTTP/3 Datagram Payload (*)                 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t><list style="hanging">
  <t hangText='Flow Identifier:'>
  A variable-length integer indicating the Flow Identifier of the datagram (see
<xref target="flow-id"/>).</t>
  <t hangText='HTTP/3 Datagram Payload:'>
  The payload of the datagram, whose semantics are defined by individual
applications.</t>
</list></t>

<section anchor="flow-id" title="Flow Identifiers">

<t>Flow identifiers represent bidirectional flows of datagrams within a single QUIC
connection. These are effectively equivalent to UDP ports and allow basic
demultiplexing of application data. The primary role of flow identifiers is to
provide a standard mechanism for demultiplexing application data flows, which
may be destined for different processing threads in the application, akin to UDP
sockets.</t>

<t>Beyond this, a sender SHOULD ensure that DATAGRAM frames within a single flow
are transmitted in order relative to one another. If multiple DATAGRAM frames
can be packed into a single QUIC packet, the sender SHOULD group them by flow
identifier to promote fate-sharing within a specific flow and improve the
ability to process batches of datagram messages efficiently on the receiver.</t>

</section>
</section>
<section anchor="flow-id-alloc" title="Flow Identifier Allocation">

<t>Implementations of HTTP/3 that support the DATAGRAM extension will provide a
flow identifier allocation service. That service will allow applications
co-located with HTTP/3 to request a unique flow identifier that they can
subsequently use for their own purposes. The HTTP/3 implementation will then
parse the flow identifier of incoming DATAGRAM frames and use it to deliver the
frame to the appropriate application.</t>

</section>
<section anchor="security" title="Security Considerations">

<t>This document currently does not have additional security considerations beyond
those defined in <xref target="I-D.ietf-quic-transport"/> and <xref target="I-D.pauly-quic-datagram"/>.</t>

</section>
<section anchor="iana" title="IANA Considerations">

<t>This document has no IANA actions.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference anchor="I-D.pauly-quic-datagram">
<front>
<title>An Unreliable Datagram Extension to QUIC</title>

<author initials='T' surname='Pauly' fullname='Tommy Pauly'>
    <organization />
</author>

<author initials='E' surname='Kinnear' fullname='Eric Kinnear'>
    <organization />
</author>

<author initials='D' surname='Schinazi' fullname='David Schinazi'>
    <organization />
</author>

<date month='July' day='6' year='2019' />

<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='Internet-Draft' value='draft-pauly-quic-datagram-03' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-pauly-quic-datagram-03.txt' />
</reference>



<reference anchor="I-D.ietf-quic-transport">
<front>
<title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>

<author initials='J' surname='Iyengar' fullname='Jana Iyengar'>
    <organization />
</author>

<author initials='M' surname='Thomson' fullname='Martin Thomson'>
    <organization />
</author>

<date month='September' day='11' year='2019' />

<abstract><t>This document defines the core of the QUIC transport protocol. Accompanying documents describe QUIC's loss detection and congestion control and the use of TLS for key negotiation.  Note to Readers  Discussion of this draft takes place on the QUIC working group mailing list (quic@ietf.org), which is archived at &lt;https://mailarchive.ietf.org/arch/search/?email_list=quic>.  Working Group information can be found at &lt;https://github.com/ quicwg>; source code and issues list for this draft can be found at &lt;https://github.com/quicwg/base-drafts/labels/-transport>.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-quic-transport-23' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-quic-transport-23.txt' />
</reference>



<reference anchor="I-D.ietf-quic-http">
<front>
<title>Hypertext Transfer Protocol Version 3 (HTTP/3)</title>

<author initials='M' surname='Bishop' fullname='Mike Bishop'>
    <organization />
</author>

<date month='September' day='12' year='2019' />

<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='Internet-Draft' value='draft-ietf-quic-http-23' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-quic-http-23.txt' />
</reference>



<reference  anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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" target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<date year='2017' month='May' />
<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>



<section numbered="false" anchor="acks" title="Acknowledgments">

<t>The DATAGRAM frame identifier was previously part of the DATAGRAM frame
definition itself, the author would like to acknowledge the authors of
that document and the members of the IETF QUIC working group for their
suggestions.</t>

</section>


  </back>

<!-- ##markdown-source:
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
Ov8BAGtuInwSAAA=

-->

</rfc>

