- From: Greg Wilkins <gregw@intalio.com>
- Date: Thu, 3 Jul 2014 17:11:56 +1000
- To: Mark Nottingham <mnot@mnot.net>
- Cc: Amos Jeffries <squid3@treenet.co.nz>, HTTP Working Group <ietf-http-wg@w3.org>
- Message-ID: <CAH_y2NEXnheFpMj_m79Ly85kXFPCvKsPbcm-vCRyNJNRZAEMcw@mail.gmail.com>
On 3 July 2014 16:36, Mark Nottingham <mnot@mnot.net> wrote: > > On 3 Jul 2014, at 4:29 pm, Amos Jeffries <squid3@treenet.co.nz> wrote: > > > On 2014-07-03 00:29, Poul-Henning Kamp wrote: > >> PPS: > >> I'm looking for co-authors for a jumboframe extension draft. > > > > Do you really need them? if you publish a sensible draft I expect > several of us not liking CONTINUATION would implement. > > Would you (or any of the other Jumbo advocates) mind explaining why on its > own it’s better than CONTINUATION, beyond syntactic sugar? > > AIUI you have to buffer and decode the entire header set in either case; > is there some other aspect where it’s significantly better? I've been very keen to say that Continuations ARE Jumbo frames, but I do see some key differences that go beyond syntactic sugar: - The max acceptable size will be declared in a SETTING, allowing for it to be know in advance - max frame size can be adjusted down for low resource impls. - A true jumbo frame has its total size in the first frame, so an impl can immediately know if it is acceptable or not. With continuations, you might have to process 5 frames to reach a 64KB limit, only then to find out that their is a 6th frame and you have to throw away all that work done. - The code path for handling large or small frames will be pretty much the same for jumbo frames, with the exception of the code that determines the frame length. With continuations, there is a significantly different code path that will be executed only for headers that are larger than 20-something KB. This is a code base that will be rarely used and thus probably not well tested. Here be dragons! - Jumbo frames can also be applied to data frames (IF both the endpoints so desire). This can be done to either simply tune the frame size to the most efficient size for the network (eg the fast hop between a load balancer and application server maybe able to have a much larger frame size and still have good multiplexing), or it may even be used to allow a single frame to send very large content. - Closing stuff down is just really hard. No its harder than that! I mean really really difficult! SSL handshakes, half closed TCP connections, race conditions, blah blah blah - it is just really really really difficult to write robust code that always closes neatly, without double/triple work and does not leak any resources. Any simplification in this part of the code will be really really really valuable. - Jumbo frames means that the END_STREAM flag is set on the last frame of a stream. It is a real WTF moment for anybody looking at the spec when they see CONTINUATIONS can be sent after END_STREAM. The confusion this causes should not be underestimated and reading this list is a good indication of the communication problems that will result. - A finally - CONTINUATIONS are jumbo frames. If it quacks like a duck.... -- Greg Wilkins <gregw@intalio.com> http://eclipse.org/jetty HTTP, SPDY, Websocket server and client that scales http://www.webtide.com advice and support for jetty and cometd.
Received on Thursday, 3 July 2014 07:12:26 UTC