Subject: Splitting WINDOW_UPDATE

From: Martin Thomson <[email-masked]>
Date: Thu, 20 Apr 2017 14:33:47 +1000

In practice WINDOW_UPDATE is two different messages.  This makes the
split clearer.

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

Splitting has several advantages, the most obvious being that it
shaves 4 bytes of a very common frame (the connection-level update).
The less obvious one is that stream 0 no longer needs to be considered
as special (yeah BLOCKED would need fixing), which opens up the
possibility of removing some long-standing annoyances.

As part of this, I've made the description and handling of our three
limits a little better aligned by renaming the frames: connection
data, stream data, and stream IDs.

---

From: Jana Iyengar <[email-masked]>
Date: Wed, 19 Apr 2017 22:38:47 -0700

I like this set of changes -- it cleans up things. I've left some comments
on the PR. Thanks for writing this up.

---

From: Martin Thomson <[email-masked]>
Date: Thu, 20 Apr 2017 16:08:19 +1000

Given favourable feedback thus far, I have a few follow-on changes:

This splits BLOCKED in the same way:
https://github.com/quicwg/base-drafts/pull/454

Splitting these frames allows us to move crypto to stream 0 and the
HTTP control stream to stream 1.  That doesn't sound like much, but it
removes a few surprising and unnecessary corner cases:
https://github.com/quicwg/base-drafts/pull/456

I'm much less certain about adding more BLOCKED-like functionality for
the new MAX_STREAM_ID frame type (aka LIMIT_UPDATE), but it was easy.
So I have a PR for that too:
https://github.com/quicwg/base-drafts/pull/455

---

From: Martin Thomson <[email-masked]>
Date: Fri, 21 Apr 2017 09:59:33 +1000

Mike suggested a hack that seems quite elegant.  Rather than defining
a new frame for expressing frustration over being unable to open a new
stream, just use STREAM_BLOCKED:
https://github.com/quicwg/base-drafts/pull/457

---

From: Mike Bishop <[email-masked]>
Date: Fri, 21 Apr 2017 16:34:50 +0000

That also means you can simplify away the max stream ID even further -- IDs up to the stated max have a maximum offset as negotiated, and IDs beyond that value have a maximum offset of zero.  Then there is no "max concurrent streams," only streams that are blocked by flow control.

-----Original Message-----
From: QUIC [mailto:[email-masked]] On Behalf Of Martin Thomson
Sent: Thursday, April 20, 2017 5:00 PM
To: Jana Iyengar <[email-masked]>
Cc: QUIC WG <[email-masked]>
Subject: Re: Splitting WINDOW_UPDATE

Mike suggested a hack that seems quite elegant.  Rather than defining a new frame for expressing frustration over being unable to open a new stream, just use STREAM_BLOCKED:
https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fquicwg%2Fbase-drafts%2Fpull%2F457&data=02%7C01%7Cmichael.bishop%40microsoft.com%7Cfec5670ad3c946498b2408d4884950e1%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636283295853237806&sdata=luVQExRPKrFmfmT8mzQ%2FRn5%2BJnGSKC64yh9xBMs60Hc%3D&reserved=0

On 20 April 2017 at 16:08, Martin Thomson <[email-masked]> wrote:
> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithu
> b.com%2Fquicwg%2Fbase-drafts%2Fpull%2F454&data=02%7C01%7Cmichael.bisho
> p%40microsoft.com%7Cfec5670ad3c946498b2408d4884950e1%7C72f988bf86f141a
> f91ab2d7cd011db47%7C1%7C0%7C636283295853237806&sdata=csXXLNaafNQ%2BnWX
> p6qPtbQ9pSQWK%2Beq6lOpJsXCtRJs%3D&reserved=0
>
> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithu
> b.com%2Fquicwg%2Fbase-drafts%2Fpull%2F456&data=02%7C01%7Cmichael.bisho
> p%40microsoft.com%7Cfec5670ad3c946498b2408d4884950e1%7C72f988bf86f141a
> f91ab2d7cd011db47%7C1%7C0%7C636283295853237806&sdata=GeW7tI95Yhq0V83TF
> HH7hFUek0CmwrBlaTTMXIkYJA4%3D&reserved=0
>
> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithu
> b.com%2Fquicwg%2Fbase-drafts%2Fpull%2F455&data=02%7C01%7Cmichael.bisho
> p%40microsoft.com%7Cfec5670ad3c946498b2408d4884950e1%7C72f988bf86f141a
> f91ab2d7cd011db47%7C1%7C0%7C636283295853237806&sdata=X9PGodykgYMt%2FrN
> Q426PZawlWKJupsuLuiNzC8FQXuI%3D&reserved=0
>
>
>> I like this set of changes -- it cleans up things. I've left some 
>> comments on the PR. Thanks for writing this up.
>>
>>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit
>>> hub.com%2Fquicwg%2Fbase-drafts%2Fpull%2F450&data=02%7C01%7Cmichael.b
>>> ishop%40microsoft.com%7Cfec5670ad3c946498b2408d4884950e1%7C72f988bf8
>>> 6f141af91ab2d7cd011db47%7C1%7C0%7C636283295853237806&sdata=g09Vudhkz
>>> 5LXWuMTdKM0atvdLpBkmkvHGkjKvWKl9BM%3D&reserved=0
>>>
>>> The less obvious one is that stream 0 no longer needs to be 
>>> considered as special (yeah BLOCKED would need fixing), which opens 
>>> up the possibility of removing some long-standing annoyances.
>>>

---

From: Martin Thomson <[email-masked]>
Date: Sat, 22 Apr 2017 14:19:13 +1000

> Mike suggested a hack that seems quite elegant.  Rather than defining a new frame for expressing frustration over being unable to open a new stream, just use STREAM_BLOCKED:

Nice thought, but it doesn't help because you could still send an
empty STREAM with a FIN flag on those streams without violating the
limit.