<?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.2 -->

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

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

<rfc ipr="trust200902" docName="draft-tiesel-quic-unreliable-streams-00" category="info">

  <front>
    <title abbrev="QUIC Unreliable Streams">Considerations for Unreliable Streams in QUIC</title>

    <author initials="P.S." surname="Tiesel" fullname="Philipp S. Tiesel">
      <organization>TU Berlin</organization>
      <address>
        <postal>
          <street>Marchstr. 23</street>
          <city>Berlin</city>
          <country>Germany</country>
        </postal>
        <email>philipp@inet.tu-berlin.de</email>
      </address>
    </author>
    <author initials="M." surname="Palmer" fullname="Mirko Palmer">
      <organization>TU Berlin</organization>
      <address>
        <postal>
          <street>Marchstr. 23</street>
          <city>Berlin</city>
          <country>Germany</country>
        </postal>
        <email>mirko@inet.tu-berlin.de</email>
      </address>
    </author>
    <author initials="B." surname="Chandrasekaran" fullname="Balakrishnan Chandrasekaran">
      <organization>TU Berlin</organization>
      <address>
        <postal>
          <street>Marchstr. 23</street>
          <city>Berlin</city>
          <country>Germany</country>
        </postal>
        <email>balac@inet.tu-berlin.de</email>
      </address>
    </author>
    <author initials="A." surname="Feldmann" fullname="Anja Feldmann">
      <organization>TU Berlin</organization>
      <address>
        <postal>
          <street>Marchstr. 23</street>
          <city>Berlin</city>
          <country>Germany</country>
        </postal>
        <email>anja@inet.tu-berlin.de</email>
      </address>
    </author>
    <author initials="J." surname="Ott" fullname="Joerg Ott">
      <organization>TU Munich</organization>
      <address>
        <postal>
          <street>Boltzmannstraße 3</street>
          <city>Garching bei München</city>
          <country>Germany</country>
        </postal>
        <email>ott@in.tum.de</email>
      </address>
    </author>

    <date year="2017" month="September" day="05"/>

    <area>Transport</area>
    <workgroup>QUIC Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This memo outlines support for unreliable streams in QUIC. This draft
contains a collection of considerations and requirements for unreliable
streams in QUIC based on [I-D.draft-ietf-quic-transport]. It provides
to alternatives demonstrating how unreliable streams can be realized.
The intention of this document is to collect considerations regarding
unreliable streams in QUIC and to frame the design space.
All content of this memo is supposed to be merged into
[I-D.draft-ietf-quic-transport], [I-D.draft-ietf-quic-recovery] and,
[I-D.draft-ietf-quic-applicability] once unreliable streams get
integrated with QUIC.</t>



    </abstract>


  </front>

  <middle>


<section anchor="conventions-and-definitions" title="Conventions and Definitions">

<t>The words “MUST”, “MUST NOT”, “SHALL”, “SHALL NOT”, “SHOULD”, and
“MAY” are used in this document. It’s not shouting; when these
words are capitalized, they have a special meaning as defined
in <xref target="RFC2119"/>.</t>

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

<t>There are many use cases for unreliable delivery of stream data, e.g., to meet deadlines for data delivery in the presence of short time congestion by avoiding head of line blocking.
Still, some control data or metadata often needs to be transmitted reliably.</t>

<t>This memo describes how QUIC can provide reliable and unreliable
transmission within the same connection. This model allows applications to request reliable or unreliable transmission in QUIC on
a per stream level. For an unreliable stream, the QUIC implementation can decide which frames to retransmit.
Thus, it is possible to implement a mix of reliable
and unreliable transmission within the same stream.</t>

</section>
<section anchor="connection-level-considerations" title="Connection Level Considerations">

<section anchor="unreliable-stream-support-negotiation" title="Unreliable Stream Support Negotiation">

<t>Support of unreliable streams is optional to reduce the complexity of minimal QUIC implementations.
If the applications protocol makes no use of partial
delivery of stream data, unreliable stream support should not be signaled on the connection.</t>

<t>An endpoint signals its willingness to receiving unreliable stream
frames during the TLS handshake using the transport parameter
accept_unreliable_stream_frames (value TBD – used as flag the same
way as omit_connection_id specified in [I-D.draft-ietf-quic-transport]).</t>

</section>
</section>
<section anchor="stream-level-considerations" title="Stream Level Considerations">

<section anchor="stream-open" title="Stream Open">

<t>In addition to the stream open specified in [I-D.draft-ietf-quic-transport], an endpoint opening a stream
MUST indicate whether the stream is reliable, and therefore the
receiver can rely on the sender retransmitting lost stream data.</t>

<t>We anticipate two options how to indicate whether a stream is reliable or not:</t>

<t><list style="symbols">
  <t>Leave it completely to the application layer.</t>
  <t>Indicate it in the stream frame header. This can be realized by repurposing the
‘F’ (FIN) bit as ‘R’ (RELIABLE) bit and signal the stream close
using CLOSE_STREAM / RST_STREAM frames.</t>
</list></t>

<t>See <xref target="app_ind"/> for a proposal specifying the former and
<xref target="str_ind"/> for a proposal specifying the latter.</t>

<t>The authors advocate for explicitly signaling unreliable streams in
the stream frame header, as it does not introduce additional
interwinding between QUIC and the application.
This reduces the complexity of applications where only some streams should be transmitted unreliably.</t>

</section>
<section anchor="stream-close" title="Stream Close">

<t>As frames of unreliable streams may not be retransmitted, the loss
of a frame indicating the end of a stream may introduce zombie streams.</t>

<t>A QUIC version with unreliable stream support MUST make sure that either such a zombie state does
not occur (as the proposals in <xref target="app_ind"/> and <xref target="str_ind"/> do) or
include a mechanism to clean up zombie streams, e.g. by using a
window of active unreliable stream ids.</t>

</section>
<section anchor="stream-id-0x0" title="Stream ID 0x0">

<t>Data of stream 0x0 MUST be transmitted reliably as TLS expects
reliable transmission.</t>

</section>
<section anchor="congestion-control-on-unreliable-streams" title="Congestion Control on Unreliable Streams">

<t>Unreliable streams are subject to regular congestion control.
CLOSE_STREAM Frames are, like ACK and RST_STREAM frames not subject to congestion control.</t>

</section>
<section anchor="flow-control-on-unreliable-streams" title="Flow Control on Unreliable Streams">

<t>Unreliable streams are subject to regular flow control on connection and stream level.</t>

</section>
</section>
<section anchor="application-interface-considerations" title="Application Interface Considerations">

<section anchor="retransmissions-within-unreliable-streams" title="Retransmissions within Unreliable Streams">

<t>While unreliable streams suggest just disabling retransmissions for
these streams, applications my choose to apply arbitrary retransmission
strategies for unreliable streams, e.g., retransmit stream data
as long it will likely be delivered on-time with respect to an
application provided deadline or only retransmit certain byte ranges.</t>

<t>A QUIC implementation that implements retransmissions on a per-packet
basis, therefore, may retransmit unreliable stream data even if not
requested by the application.</t>

</section>
<section anchor="presentation-of-unreliable-streams" title="Presentation of Unreliable Streams">

<t>The presentation of unreliable streams is application specific.</t>

<t>The anticipated use cases include:</t>

<t><list style="symbols">
  <t>Data being delivered annotated with its offset as it is received.</t>
  <t>Data being delivered after a deadline, e.g., with an annotated list of holes and byte ranges of lost data filled with zeros.</t>
</list></t>

</section>
<section anchor="prioritization-of-unreliable-streams" title="Prioritization of Unreliable Streams">

<t>Unreliable streams are not prioritized in any special way.</t>

<t>Applications that need UDP like behavior must make sure that:</t>

<t><list style="symbols">
  <t>The flow control windows are large enough to send at any given point in time</t>
  <t>The data rate sent in all frames stays below the one permitted by the congestion window.</t>
  <t>The priority of unreliable streams is high enough to transmit data, even if there are retransmissions outstanding on other streams.</t>
</list></t>

<t>To enable writing portable applications, guidelines how prioritization should be
handled in a QUIC implementation and how it is exposed to the application are required.</t>

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

<t>TBD</t>

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

<t>TBD</t>

</section>


  </middle>

  <back>


    <references title='Informative References'>





<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="I-D.draft-ietf-quic-transport-04">
<front>
<title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>

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

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

<date month='June' day='13' year='2017' />

<abstract><t>This document defines the core of the QUIC transport protocol.  This document describes connection establishment, packet format, multiplexing and reliability.  Accompanying documents describe the cryptographic handshake and loss detection.</t></abstract>

</front>

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



<reference anchor="I-D.draft-ietf-quic-recovery-04">
<front>
<title>QUIC Loss Detection and Congestion Control</title>

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

<author initials='I' surname='Swett' fullname='Ian Swett'>
    <organization />
</author>

<date month='June' day='13' year='2017' />

<abstract><t>This document describes loss detection and congestion control mechanisms for QUIC.  Note to Readers  Discussion of this draft takes place on the QUIC working group mailing list (quic@ietf.org), which is archived at https://mailarchive.ietf.org/arch/search/?email_list=quic.  Working Group information can be found at https://github.com/quicwg; source code and issues list for this draft can be found at https://github.com/quicwg/base-drafts/labels/recovery.</t></abstract>

</front>

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



<reference anchor="I-D.draft-ietf-quic-applicability-00">
<front>
<title>Applicability of the QUIC Transport Protocol</title>

<author initials='M' surname='Kuehlewind' fullname='Mirja Kuehlewind'>
    <organization />
</author>

<author initials='B' surname='Trammell' fullname='Brian Trammell'>
    <organization />
</author>

<date month='July' day='3' year='2017' />

<abstract><t>This document discusses the applicability of the QUIC transport protocol, focusing on caveats impacting application protocol development and deployment over QUIC.  Its intended audience is designers of application protocol mappings to QUIC, and implementors of these application protocols.</t></abstract>

</front>

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




    </references>


<section anchor="app_ind" title="Proposal with Application Layer Indicated Reliability">

<t>This implementation proposal lets the decision and indication of
unreliable transmission completely to the application.
In this proposal, the state space and error handling for applications
can become quite complex when control messages at the start of a stream
are transmitted unreliably.
The advantage of this implementation proposal requiring only minimal
changes to [I-D.draft-ietf-quic-transport] and [I-D.draft-ietf-quic-recovery].</t>

<section anchor="stream-close-1" title="Stream Close">

<t>As frames of unreliable streams may not be retransmitted, the loss
of an unreliable stream frame carrying a FIN bit may lead to zombie
streams.
To prevent zombie streams, STREAM frames carrying the FIN bit MUST
be retransmitted if lost regardless whether a stream is reliable or not.</t>

</section>
</section>
<section anchor="str_ind" title="Proposal with Stream Frame Indicated Reliability">

<t>This implementation proposal repurposes the ‘F’ (FIN) bit of the ‘type’ field
from  [I-D.draft-ietf-quic-transport] as ‘R’(RELIABLE) bit and
indicates the stream close using CLOSE_STREAM / RST_STREAM frames.</t>

<section anchor="stream-open-1" title="Stream Open">

<t><list style="symbols">
  <t>The sender opening an reliable stream must set ‘R’ bit of the type
byte for a STREAM frame to 1.</t>
  <t>The sender opening an unreliable stream must set ‘R’ bit of the type
byte for a STREAM frame to 0.</t>
</list></t>

<t>When receiving a STREAM frame having
the ‘R’ bit not set, a client that has not advertised support for unreliable streams in the handshake MUST answer with a RST_STREAM frame
indicating a STREAM_STATE_ERROR.</t>

<t>All frames of a stream MUST have the R bit to the same value.</t>

</section>
<section anchor="stream-close-2" title="Stream Close">

<t>Streams MUST be explicitly closed with a CLOSE_STREAM frame indicating the stream ID and final offset of the stream to prevent zombie streams.
(Alternative implementation option: RST_STREAM frame with error code NO_ERROR indicating the final offset).</t>

<t><list style="symbols">
  <t>Once an endpoint has completed sending all stream data,
it sends a CLOSE_STREAM frame.
The stream state becomes “half-closed (local).</t>
  <t>A stream in state ‘open’ for which a CLOSE_STREAM frame is received,
transitions to “half-closed (remote)” state.
An endpoint could continue receiving frames for the stream if
not all data advertised in ‘Final Offset’ was received.</t>
</list></t>

<t>This reduces the code paths that cause state transitions from open
to half-closed and eases state keeping for unreliable streams by
having reliable signaling of closing unreliable stream.
It comes with the caveat of increasing the minimal on-wire data of
a stream by at least four bytes.</t>

</section>
<section anchor="closestream-frame" title="CLOSE_STREAM Frame">

<t>The CLOSE_STREAM frame indicates the final offset of a stream
and therefore replaces the F bit.</t>

<t>It uses a type value between 0x80 and 0x9f.
The type byte for a CLOSE_STREAM frame contains embedded flags,
and is formatted as “100RSSOO”.  These bits are parsed as follows:</t>

<t><list style="symbols">
  <t>The R bit is set to 1 for reliable streams and to 0 otherwise.</t>
  <t>The “SS” bits encode the length of the Stream ID header field.
The values 00, 01, 02, and 03 indicate lengths of 8, 16, 24, and
32 bits long respectively.</t>
  <t>The “OO” bits encode the length of the Offset header field.  The
values 00, 01, 02, and 03 indicate lengths of 0, 16, 32, and 64
bits long respectively.</t>
</list></t>

<t>A CLOSE_STREAM frame is shown below.</t>

<figure><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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Stream ID (8/16/24/32)                   ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 Final Offset (0/16/32/64)                   ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>CLOSE_STREAM frames must be retransmitted if lost.</t>

</section>
</section>


  </back>

<!-- ##markdown-source:
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
21hseoMLFd+2TiER/wNJKzcGniwAAA==

-->

</rfc>

