Subject: [quicwg/base-drafts] Allow arbitrary empty STREAM frames (not just Offset=0 or FIN=1) (#1350)

From: Igor Lubashev <[email-masked]>
Date: Thu, 10 May 2018 18:26:28 -0700

>From the mailing list.

From: Martin Thomson [mailto:[email-masked]] 
Sent: Thursday, May 10, 2018 8:37 PM
Subject: Re: Why allow empty STREAM frames when offset is zero?

That's possible, if someone wants to open a PR.

To be clear, I don't think that there is a valid use case for an empty STREAM frame (other than at the start or end) that isn't satisfied better by other frames.  But we're not necessarily in the business of policing these things and allowing empty STREAM frames is actually easier than creating the exclusions.

Here's a use case: steganography.  A covert channel to the peer that won't manifest as observable activity outside of the QUIC stack.  An empty STREAM frame can carry a surprising amount of entropy if you are clever.

We would then put empty STREAM frames in the same bucket as other frames that could be pointless and wasteful when used excessively.  There's already a bunch of those.

On Fri, May 11, 2018 at 10:11 AM Ian Swett <ianswett= [email-masked]> wrote:
> I would agree that the restriction here seem unnecessary and I tend to
think we'd be better off removing it.

> On Thu, May 10, 2018 at 5:58 PM Lubashev, Igor <ilubashe=
[email-masked]> wrote:
>> Actually, I’ll take an issue with:
>>
>> [draft-ietf-quic-transport-11] says the following:
>>      A stream frame's Stream Data MUST NOT be empty, unless the offset is
>>      0 or the FIN bit is set.
>>
>> Why disallow this?  This may be a signal to the receiver about where 
>> in
the stream the sender is, even if the sender does not have any new data to send.  This signal may be useful in cases of packet loss, when the sender is not ready to declare a packet with stream data lost and retransmit lots of stream data (has not been long enough), but it is very important for the application to know where the sender is in the stream.  Of course, there are workarounds – you can send a STREAM frame, retransmitting a single byte.  But it still seems like an unnecessary restriction.
You can view, comment on, or merge this pull request online at:

  https://github.com/quicwg/base-drafts/pull/1350

-- Commit Summary --

  * Allow arbitrary empty STREAM frames (not just Offset=0 or FIN=1)

-- File Changes --

    M draft-ietf-quic-transport.md (5)

-- Patch Links --

https://github.com/quicwg/base-drafts/pull/1350.patch
https://github.com/quicwg/base-drafts/pull/1350.diff

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/1350

---

From: Martin Thomson <[email-masked]>
Date: Thu, 10 May 2018 18:42:19 -0700

Merged #1350.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/1350#event-1621034231