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

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

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

<rfc ipr="trust200902" docName="draft-tiesel-quic-unreliable-streams-01" 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="October" day="30"/>

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

    <abstract>


<t>This memo outlines how to support unreliable streams as well as partially-reliable streams within QUIC.
The intention of this document is to collect requirements and considerations, to frame the design space, and to give an example how unreliable stream support could be realized.</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>This memo describes how QUIC can provide reliable, partially-reliable, and unreliable transmissions within the same connection.
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.
For partial reliable streams, the sender can decide which frames to retransmit.
This model allows applications to request the required kind of reliability on a per-stream level and to mix of reliable and unreliable transmissions within the same stream.
Still, some control data or metadata often needs to be transmitted reliably.</t>

<t>This draft is based on <xref target="I-D.draft-ietf-quic-transport-07"></xref> with the addition of uni-directional streams (https://github.com/quicwg/base-drafts/pull/885) and variable-length integer encoding (https://github.com/quicwg/base-drafts/pull/877).
It gives a comprehensive overview about considerations for adding support for unreliable streams to QUIC in a way that each stream is either fully reliable or unreliable (including partially-reliable).
Our implementation proposal in <xref target="str_ind"/> needs minimal changes to the wire format – the third least significant bit of the Stream ID is repurposed to signal whether a stream is reliable or partial reliable / unreliable.</t>

</section>
<section anchor="modes-of-unreliable-transmission" title="Modes of Unreliable Transmission">

<t><list style="symbols">
  <t>Reliable transmission suggests that all application data is re-transmitted if lost.</t>
  <t>Unreliable transmission suggests that no application data is re-transmitted if lost.</t>
  <t>Partial reliable transmission suggests that some application data is re-transmitted if lost.</t>
</list></t>

<t>In principle, the way <xref target="I-D.draft-ietf-quic-recovery-06"></xref> realizes reliable transmission allows to realize all three levels of reliability mentioned above without changing the wire format.
The combination of packet-based acknowledgments with stream-based retransmits allows deciding on a per stream-frame or byte range base whether or how a lost stream frame is retransmitted.
For this memo, we define unreliable streams as streams, for which some or all lost stream frames are not re-transmitted.
Thus, our definition covers fully unreliable as well as partially-reliable transmission.</t>

</section>
<section anchor="protocol-considerations" title="Protocol Considerations">

<t>For clear application semantic, the receiver must be able to know whether to rely on the sender to retransmit lost stream data.
Therefore, an endpoint opening an unreliable stream MUST indicate that lost stream data might not be retransmitted.
The indication must either be carried on each frame, that could be received first by an endpoint, or the indication must be transmitted reliably and acknowledged before the first frame of an unreliable stream is sent.</t>

<t>We anticipate two options to indicate whether a stream is unreliable:</t>

<t><list style="symbols">
  <t>Indicate unreliable streams within the Stream ID.</t>
  <t>Leave the signaling of unreliable streams completely to the application layer.</t>
</list></t>

<t>The authors advocate for the former option.
This approach does not introduce complex interwinding between QUIC and the application.</t>

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

<t>Support of unreliable streams should be optional to reduce the complexity of a minimal QUIC implementation.
An endpoint signals its willingness to receiving unreliable stream
frames during the TLS handshake using the transport parameter
allow_unreliable_streams in analogy to the omit_connection_id flag specified in <xref target="I-D.draft-ietf-quic-transport-07"></xref>.
An application that makes no use of partial delivery of stream data, should not signal willingness to allow unreliable streams.</t>

</section>
<section anchor="stream_msg" title="Stream as a Message">

<t>Unreliable streams are particularly useful if QUIC streams are used as a message abstraction.
If the messages can be sent using a single stream frame on a unidirectional stream, the state committed at the sender-side and receiver-side can be minimized, and signaling of stream close can be omitted.
The loss of such a frame does not introduce state at the perceived receiver, nor does it require the sender to keep state for retransmission.</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.</t>

<t>It should be clarified that ACK and RST_STREAM Frames are 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>

<t><list style="hanging">
  <t hangText='Note:'>
  It is up to further discussion under which assumptions this can be relaxed.</t>
</list></t>

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

<t>A receiver may want to treat reliable and unreliable streams differently, e.g., in the way state is represented or how the stream data is presented to the application.
Therefore, the receiver needs to know upon the reception of the first stream frame whether the respective stream is reliable or unreliable.</t>

<t>As the first frame sent may be lost or re-ordered, it is not sufficient to mark the first stream frame.
Instead, it is necessary to either reliably transmit the fact whether a stream is reliable or unreliable or to have all frames of the stream annotated.</t>

</section>
<section anchor="retransmission-of-partially-reliable-stream-data" title="Retransmission of Partially-Reliable Stream Data">

<t>Retransmissions of partially-reliable stream data SHOULD always contain the same data, as was sent in the original transmission.</t>

<t><list style="hanging">
  <t hangText='Note:'>
  It is up to further discussion under which assumptions this can be relaxed.</t>
</list></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 result in a “zombie” stream state.
A QUIC version with unreliable stream support MUST ensure that either such a zombie state does not occur or include a mechanism to clean up streams in such a zombie state, e.g., by using a window of active unreliable stream ids.</t>

<t>The authors advocate for solving this issue by reliably transmitting the final offset of all streams, that consist of more than a single stream frame.
The retransmit of the stream end can be achieved by sending an empty stream frame with the final offset and the FIN bit set or by using an RST_STREAM frame.
For unidirectional streams that only consist of a single stream frame, retransmission of the final offset is not necessary – See <xref target="stream_msg"/> for details.</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 may 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.
The anticipated use cases include the following.</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 with an annotated list of holes.</t>
  <t>Data being delivered as concatenation of the stream fragments received.
This can be useful if the application’s framing is aligned with the QUIC stream frames.</t>
</list></t>

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

<t>Prioritization of unreliable streams uses the same priority mechanism as reliable streams.</t>

<t>Applications that want UDP-like behavior, and thus want to avoid data sent over unreliable streams queued in send buffers, must ensure 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>Unreliable Streams open a few additional risks of information disclosure.</t>

<t><list style="symbols">
  <t>An active, on path attacker can drop selected frames and see whether the transmission timings change to see whether unreliable streams are used.</t>
  <t>Using streams as a message as described in <xref target="stream_msg"/> will most likely result in packets which sizes resemble the size of the individual message contained.
If not mitigated, this can disclose the individual message length.</t>
</list></t>

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

<t>TBD</t>

</section>
<section anchor="acknowledgements" title="Acknowledgements">

<t>This work has been supported in part by Leibniz Prize project funds of DFG - German Research Foundation: Gottfried Wilhelm Leibniz-Preis 2011 (FKZ FE 570/4-1) and received funding from the European Union’s Horizon 2020 research and innovation programme 2014-2018 under grant agreement No. 644866, Scalable and Secure Infrastructures for Cloud Operations (SSICLOPS).</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-07">
<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='October' day='14' 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-07' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-quic-transport-07.txt' />
</reference>



<reference anchor="I-D.draft-ietf-quic-recovery-06">
<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='September' day='22' 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-06' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-quic-recovery-06.txt' />
</reference>



<reference anchor="I-D.draft-ietf-quic-applicability-01">
<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='October' day='25' 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-01' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-quic-applicability-01.txt' />
</reference>




    </references>


<section anchor="str_ind" title="Implemenation Proposal">

<t>This proposal realizes unreliable streams by modifying
<xref target="I-D.draft-ietf-quic-transport-07"></xref> with the addition of uni-directional streams (https://github.com/quicwg/base-drafts/pull/872) and variable-length integer encoding (https://github.com/quicwg/base-drafts/pull/877) to support unreliable streams.
It modifies the Stream ID to signal whether a stream is reliable in analogy to the way unidirectional streams are signaled.
In addition, it addresses the Stream Close concerns raised in <xref target="stream_close"/>.</t>

<section anchor="stream-id" title="Stream Identifiers">

<t>Streams are identified by a variable-length integer, referred to as the Stream ID.
The least significant three bits of the Stream ID are used to identify the type of stream (unidirectional or bidirectional),  (unreliable or reliable) and the initiator of the stream.</t>

<t>The second least significant bit (0x2) of the Stream ID differentiates between unidirectional streams and bidirectional streams.
Unidirectional streams always have this bit set to 1 and bidirectional streams have this bit set to 0.</t>

<t>The third least significant bit (0x4) of the Stream ID differentiates between unreliable and reliable streams.
Unreliable streams always have this bit set to 1 and reliable streams have this bit set to 0.</t>

<t>The three type bits from a Stream ID, therefore, identify streams as summarized in <xref target="stream-id-types"/>.</t>

<texttable>
      <ttcol align='left'>Low Bits</ttcol>
      <ttcol align='left'>Stream Type</ttcol>
      <c>0x0</c>
      <c>Client-Initiated, Bidirectional , Reliable</c>
      <c>0x1</c>
      <c>Server-Initiated, Bidirectional , Reliable</c>
      <c>0x2</c>
      <c>Client-Initiated, Unidirectional, Reliable</c>
      <c>0x3</c>
      <c>Server-Initiated, Unidirectional, Reliable</c>
      <c>0x4</c>
      <c>Client-Initiated, Bidirectional , Unreliable</c>
      <c>0x5</c>
      <c>Server-Initiated, Bidirectional , Unreliable</c>
      <c>0x6</c>
      <c>Client-Initiated, Unidirectional, Unreliable</c>
      <c>0x7</c>
      <c>Server-Initiated, Unidirectional, Unreliable</c>
</texttable>

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

<t>Streams MUST be explicitly closed. This can either be done by setting the FIN bit on the frame carrying the final offset of the stream or by using an RST_STREAM frame indicating the final offset.</t>

<t>For unreliable streams transmitted using more than one stream frame,  the stream close has to be transmitted reliably to prevent zombie stream state.
If the packet containing the FIN flagged stream frame is lost, and the data in this stream is not to be retransmitted, the sender can (re-)transmit the stream close by sending an empty FIN flagged stream frame carrying the final offset.</t>

</section>
</section>


  </back>

<!-- ##markdown-source:
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
RtAzqeki407UorEULu0VmPXQq/p6nHp2hRhMj8IreQLNIEFu3ncHh9vNWdmN
HLZzlr40oH+krK2rjuDKJvu0/+xh5Bok9f2J/9KJbzi/pnM3666ZGXf3kehc
DYQejBl+JnBGjT/miBPSJ3AQiOM9pYJw4aCuQEANXdWhvn1oPlAdb4Yl5SCj
wuGgfBeOZ8U7++FjR0WhF8eu9JbJV3SKFHXnXHe5JO9OhnsmxOl3RfVoyME9
05f05tpDqHAE6MyKu0Tce/9gWqCkGgJ5uOFrMrJyqLMCVp5xolNwXbvQoRQJ
6Bk0bPZNJOf/5AJnJ69Odq1vdalHzQ/3fvqcyV1/6MEwvjM43ISgK6jwYApo
U7a1iuiNSkyK55fGzkr7QQFWP1D8VtzNmaPWY895fvoC9pDrb+oNtEV35dRp
hd/DhbsXlfdzPvn50RZLU6zaKVMkechwdHB4qO6f/vHP6vQH9d2Tg4eP0sMH
cXMz59XI4PO6WrHSfmjgdFT7vC2xxj//9t9O/R7h+QGOdXRwdMBmY0FoGovk
eNORpwUcFJCPVR+l+M/3oWrFY2CdXtSGNaZeVVP1+NGj7x8/nqjLTBdd14eD
0oAyw9PhWU3m8VVoISrZJqeWUmuq+5eXZ89evr64fDBt79rN4GR8ayqAhMh1
0V5l4DKY7zHsCe9guO7uQ3dYPRIysN6qyu18A90l/69XXJ4c/UpXXD5/NZEv
wLAKbEj3fUf5C29u7J6oUCdvT3XH/U6elEDgrOwUyQ0rfIGnuKEk0v0gLmZq
eEytrdvCLWmI0F27Vvic7hNgS7Xr2iapzceOP9p3RDTbvsiJWu+zBlUx4By1
ZCm9pbhwSrBzWUYuQMyE2G7pujtHocNSEUKIgt+sTdTDv7+lV6q04wcPJorG
xF267opQV6rzyb/2VBTFnDb0MpA5q3LfZZ/7B+/hqDvid11dTGtcd7S5zwmI
tY39MkViHn9D+nRLOeOle2mh0wB1He6fb/yFg7DRz11qwj4ffc0+B23v3SAb
6/zfuaWdV+7YDXkXuwu7GGcC3cs+KEc7F4uvmTSrlaYUNgguhE1KkzqOr1/U
S/C0pzT/L+3UV7TknX+/JL8cd0EXffySP7zLh1cyEQCBOuHpmXgx8YanA+NP
+itevC7ePWzfvTQ1nQV+zbtH+9cdeuvIu9/uX/fOdx99+X4j95J3v/vy/e68
+/jL97vz7pMv3+/g3eTjsfpmy+EU/19Mv7vXRx95mrv3aasxvtUIb+G8PelE
OYH6AVNt5Eg3n/ZFen/1JqcqjTugfT+27WiG8yFpgtIdnc2+jm3UH7ijBbrd
YY9nmiahP7p7lzQ6tZWp+zYwbWDYHY3FETZNPHb/5V/6aV1T/ej75njczw8n
+VIFtGQ+1hbdm6BLRNv33+h0a9KlHzm9C5fye0JBtYAIN3JAEV3fvl+b9MHg
6Gqwx7E29l7Z9loTNvg/2KQvCUk3AAA=

-->

</rfc>

