- From: 陈智昌 <willchan@chromium.org>
- Date: Fri, 3 May 2013 15:28:48 -0300
- To: James M Snell <jasnell@gmail.com>
- Cc: Martin Thomson <martin.thomson@gmail.com>, Roberto Peon <grmocg@gmail.com>, HTTP Working Group <ietf-http-wg@w3.org>
- Message-ID: <CAA4WUYgp_b4SZ-OeXyFRiknU0OeWK5bsn-ihiFJqKk26UpHdyQ@mail.gmail.com>
I guess I kinda think that we're worrying too much about this corner of the spec. I don't view it as a big deal in practice. The problem described happens when MAX_CONCURRENT_STREAMS is too low to allow enough parallelism per roundtrip. I would advise people to simply increase their MAX_CONCURRENT_STREAMS in that case. I kinda think this is only problematic when we have very high latencies and devices that can't handle high parallelism, like an interplanetary refrigerator that speaks HTTP/2 for some reason. <shrug> I am unsure how to feel about a ENHANCE YOUR CALM code as it's not well defined. I don't mind RST_STREAMs on exceeding limits, like the initial MAX_CONCURRENT_STREAMS, since they're usually the result of a race (the possible initial SETTINGS frame race) and we won't have to keep continually sending RST_STREAMs to rate limit appropriately. On Fri, May 3, 2013 at 3:02 PM, James M Snell <jasnell@gmail.com> wrote: > The impact on client-to-server initiated streams is another reason why > I suggested the credit-based approach and why it would likely be good > to have an RST_STREAM "ENHANCE YOUR CALM" error code [1]. If the > client misbehaves and sends too much too quickly, we have flow > control, settings, rst_stream and goaway options to deal with it. > > [1] > http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Server_Error > > On Fri, May 3, 2013 at 10:34 AM, William Chan (陈智昌) > <willchan@chromium.org> wrote: > > As I understand the proposal, which I believe ties into the issue James > > raised at the beginning here, the goal is to be able to open and close a > > directional stream without an ACK, which I am nervous about as I said > above > > without much detail. Concretely speaking, a HTTP GET is a > HEADERS+PRIORITY > > frame with a FINAL flag or an extra DATA frame with FINAL flag. This > means > > that the request effectively never gets counted against the directional > > stream limit, as controlled by the receiver which sends a > > MAX_CONCURRENT_STREAMS setting, since it open and closes the direction in > > the same frame (or closes in the subsequent empty DATA frame). > > > > > > On Fri, May 3, 2013 at 1:52 PM, Martin Thomson <martin.thomson@gmail.com > > > > wrote: > >> > >> On 3 May 2013 09:44, William Chan (陈智昌) <willchan@chromium.org> wrote: > >> > I'd like server folks to chime in, but doing this makes me feel a bit > >> > nervous. I feel this effectively disables the directional concurrent > >> > streams > >> > limit. The bidirectional full-close essentially acts like an ACK, so > >> > removing it might result in an unbounded number of streams. > >> > >> I think that I know what you mean here, but can you try to expand a > >> little? Do you refer to the possible gap between close on the > >> initiating direction and the first frame on the responding direction; > >> a gap that might cause the stream to escape accounting? I think that > >> is a tractable problem - any unbounded-ness is under the control of > >> the initiating peer. > > > > >
Received on Friday, 3 May 2013 18:29:17 UTC