- From: Patrick McManus <pmcmanus@mozilla.com>
- Date: Fri, 13 Dec 2013 11:45:33 -0500
- To: Peter Lepeska <bizzbyster@gmail.com>
- Cc: HTTP Working Group <ietf-http-wg@w3.org>
- Message-ID: <CAOdDvNpt0x3e2ifLdkxo_VBNRGAv-mv-zvP8CLQhDPQXFdM=tQ@mail.gmail.com>
this is all well trodden territory. HTTP/1 has taught us the folly of optional features. (gzip requests, trailers, etc..) Figure out what is important, define it, and then use it widely. HTTP/2 has done a pretty decent job of that so far with really just one significant exception (and that has a decent reason (flow control)). On Fri, Dec 13, 2013 at 11:34 AM, Peter Lepeska <bizzbyster@gmail.com>wrote: > If it's on by default and disabled by a flag in SETTINGS, then we'd > still get the benefit you describe except when we've explicitly > decided we didn't want it. I think removing options (making more > things mandatory) is a way to manage complexity. But HPACK actually > ADDs complexity to any implementation so it makes sense to make it > optional. Lastly, your example of 30 parallel requests is only true > for rendering web pages. If I'm using HTTP 2.x to send a large file, > or any one of a large number of other use cases, header compression > gives me no benefit. > > Peter > > On Fri, Dec 13, 2013 at 11:17 AM, Patrick McManus <pmcmanus@mozilla.com> > wrote: > > This becomes exactly like sending Content-Encoded: gzip on requests in > > http/1 if compression is optional. In other words - it would be horribly > > broken. > > > > game it out.. you increase adoption of servers that don't receive > > compression and you don't negotiate that separately with alpn. Now > clients > > send a burst of 30 parallel requests in the same cwnd on the first rtt > (the > > real value of the compression) and they all get reset and have to start > > over,, that's one wasted rtt.. and now the client has to send those same > > requests again, but uncompressed and across 3 rtts because they don't > fit in > > the cwnd anymore. > > > > That's +3 rtt. blech! > > > > I don't want to increase adoption of whatever that lazy protocol is > called > > because it sucks compared to http/2. :) > > > > I want http/2 to be able to always count on what makes spdy work well: > > multiplexing, compression, prioritization, and [though some will panic at > > its mere mention] better crypto. It requires some effort, stipulated. > > > > fwiw - CRIME forced me to effectively disable gzip upstream in > firefox-spdy > > (its gzip formatted, but all literals) and its easy to see the +~2RTT > > penalty in benchmarks. Give spdy a lot of credit here - it demonstrated > the > > value of header compression and that we don't want to do it with a stream > > compressor. Running code ftw. > > > > -P > > > > > > On Fri, Dec 13, 2013 at 10:50 AM, Peter Lepeska <bizzbyster@gmail.com> > > wrote: > >> > >> +1 to what David said. I especially agree with this "Removing the > >> implementation of the header compression will simplify the > >> minimal implementation of HTTP/2", which I think is very important to > >> increase adoption. > >> > >> Peter > >> > >> On Fri, Dec 13, 2013 at 10:49 AM, Peter Lepeska <bizzbyster@gmail.com> > >> wrote: > >> > +1 > >> > > >> > On Thu, Dec 12, 2013 at 6:11 PM, David Morris <dwm@xpasc.com> wrote: > >> >> > >> >> Removing the implementation of the header compression will simplify > the > >> >> minimal implementation of HTTP/2. Requiring support of the static > table > >> >> increase complexity. Worse is the RST rain dance you describe as that > >> >> is essentially a hack adding complexity and increasing the > probablility > >> >> of failure. > >> >> > >> >> It at least partially makes any performance evaluations or other > >> >> testing > >> >> attempts burdened with the overhead of opting out and perhaps > >> >> introducing > >> >> additional failure points in the RST process. Certainly, if I as a > >> >> developer or system admin suspect an issue with header integrity, I > >> >> can't > >> >> perform true isolation by turning off compression. > >> >> > >> >> > >> >> On Thu, 12 Dec 2013, Roberto Peon wrote: > >> >> > >> >>> These things are all possible with ALPN. > >> >>> There has been a proposal w.r.t. setting the default compression > >> >>> context > >> >>> size to zero, but I don't think there was a lot of support for that. > >> >>> ... which, honestly, is reasonable if a shade disappointing: One can > >> >>> RST > >> >>> the streams one doesn't like and wait for one RT for the setting of > >> >>> the > >> >>> compression context size to occur at the remote end. > >> >>> > >> >>> Alternate compression schemes are also doable via ALPN. > >> >>> > >> >>> If you don't want to handle compression you: > >> >>> 1) Send a SETTINGS frame requesting that the receive side-context be > >> >>> sized > >> >>> to zero. > >> >>> 2) RST all streams that would store state in the compression context > >> >>> until > >> >>> you receive the acknowledgement that this has occurred from the > remote > >> >>> side. > >> >>> 3) Proceed normally to handle stuff with zero context size. > >> >>> > >> >>> While not optimal in the DoS case, it certainly would be difficult > to > >> >>> argue > >> >>> it doesn't work. > >> >>> In the non-DoS case, you end up wasting an RT and a few bytes. I'd > >> >>> imagine > >> >>> that much of the time when someone is interacting with such a > >> >>> low-footprint > >> >>> thing that either the additional RT of delay isn't a big deal. > >> >>> > >> >>> I don't think it is too much to ask people to handle the static > table > >> >>> (it > >> >>> really is just a lookup into an array at that point) or huffman > stuff. > >> >>> -=R > >> >>> > >> >>> > >> >>> On Thu, Dec 12, 2013 at 10:19 AM, David Morris <dwm@xpasc.com> > wrote: > >> >>> > >> >>> > > >> >>> > I agree ... being able to disable compression is an important > >> >>> > complexity reduction for low foot print clients and/or servers. > >> >>> > > >> >>> > I think it is also a very useful capability in support of general > >> >>> > testing and performance evaluation. > >> >>> > > >> >>> > I'd also like so see an explicit mechanism for specification of > >> >>> > an alternate compression algorithm .. I think it is way to early > >> >>> > to lock down a specific approach and it would be very powerful to > >> >>> > allow easy deployement of an alternative. > >> >>> > > >> >>> > On Thu, 12 Dec 2013, Peter Lepeska wrote: > >> >>> > > >> >>> > > Thanks for the quick replies. > >> >>> > > > >> >>> > > So just in summary, in the current spec compression is the > choice > >> >>> > > of > >> >>> > > the sender but receivers always must support decompression. > >> >>> > > > >> >>> > > It would be nice to have just a nice clean DISABLE_COMPRESSION > in > >> >>> > > the > >> >>> > > SETTINGS frame so that receivers do not need to support > >> >>> > > decompression. > >> >>> > > Has that been discussed? I know there is a concern of cluttering > >> >>> > > up > >> >>> > > SETTINGS, but this seems like an important option. > >> >>> > > > >> >>> > > Peter > >> >>> > > > >> >>> > > On Thu, Dec 12, 2013 at 12:20 PM, Michael Sweet < > msweet@apple.com> > >> >>> > wrote: > >> >>> > > > Peter, > >> >>> > > > > >> >>> > > > You can't disable it but you can always just send literal > >> >>> > > > values. The > >> >>> > > > kicker, of course, is that you will still need to support > >> >>> > decompression... > >> >>> > > > > >> >>> > > > > >> >>> > > > On Dec 12, 2013, at 11:50 AM, Peter Lepeska > >> >>> > > > <bizzbyster@gmail.com> > >> >>> > wrote: > >> >>> > > > > >> >>> > > > Is it possible for a browser, proxy, or web server to disable > >> >>> > > > header > >> >>> > > > compression in HTTP2? If not, I'm sure there was discussion > >> >>> > > > around this > >> >>> > > > decision but my search of the archives has not come up with > >> >>> > > > anything. > >> >>> > > > > >> >>> > > > Thanks, > >> >>> > > > > >> >>> > > > Peter > >> >>> > > > > >> >>> > > > > >> >>> > > > > >> >>> > > > _________________________________________________________ > >> >>> > > > Michael Sweet, Senior Printing System Engineer, PWG Chair > >> >>> > > > > >> >>> > > > >> >>> > > >> >>> > > >> >>> > >> >> > >> > > >
Received on Friday, 13 December 2013 16:46:06 UTC