Re: #466 segment compression

Once again, intermediaries never _have_ to put themselves in a situation where they have to decompress t-e. If the downstream requestor didn't support t-e, the intermediary is stupid to request t-e upstream (unless it wants to decompress).

(Roberto) your main point on this thread was that the DoS potential was on the _sender_. Furthermore you said it was so bad it would require getting rid of multiplexing to reduce the DoS surface area. Johnny disagreed because you can bound the problem by setting max_concurrent_streams appropriately. Do you agree with Johnny? If so, then there's also no such DoS for per-segment t-e.

-Keith

P.S. Roberto, I'm really interested in your response to my questions regarding your proposal to keep implicit c-e gzip.


On May 2, 2014, at 21:37, "grmocg@gmail.com<mailto:grmocg@gmail.com>" <grmocg@gmail.com<mailto:grmocg@gmail.com>> wrote:


Theoretically Keith is correct about intermediaries needing to decompress with c-e gzip.

In practice, though, Johnny (and I guess) is also right- Since almost all traffic comes from clients which support c-e gzip, intermediaries will not need to decompress the vast majority of the time.

The opposite is true for a-e gzip, unfortunately.
Almost no clients support it, thus the intermediary is almost always decompressing, and it also thus has poor discrimination between malicious and innocent actors. In other words the DoS surface area is very much bigger.

The difference in real behavior is thus large, all due to the fact that c-e gzip has far better support in deployed implementations.

-=R

On May 2, 2014 11:42 AM, <K.Morgan@iaea.org<mailto:K.Morgan@iaea.org>> wrote:
You missed the first sentence of Roberto's statement:
"If compression is per-segment as opposed to per-frame..."

We're talking about per-segment t-e. He argued against per-segment t-e by claiming that it would be such a huge state/memory commitment on the sender that you would have to give up multiplexing. If that's true, then it's also true for dynamic c-e and you better rethink the whole protocol. If it's not true then there is no argument against per-segment t-e. So either it's true or it isn't.

Your argument against frame-by-frame compression is also wrong - or you're describing a dumb intermediary implementation. If the downstream hop doesn't accept t-e, then the intermediary shouldn't have negotiated for t-e with the upstream hop in the first place. It doesn't _have_ to do anything.

On the other hand, if support were to be mandated in 2.0, then an intermediary could always merrily forward compressed content; except to 1.X - same as for the current version of implicit c-e.

-Keith


On May 2, 2014, at 18:23, "jgraettinger@chromium.org<mailto:jgraettinger@chromium.org><mailto:jgraettinger@chromium.org<mailto:jgraettinger@chromium.org>>" <jgraettinger@chromium.org<mailto:jgraettinger@chromium.org><mailto:jgraettinger@chromium.org<mailto:jgraettinger@chromium.org>>> wrote:

I don't disagree with Roberto's general point, because as spec'd a big difference between the two is that *all* intermediaries need to deal with decompressing per-frame-compressed streams. Even intermediaries which are strictly HTTP/2, which mux large numbers of streams, and are otherwise happy to forward compressed content: a downstream client may not allow that compressed content to be forwarded.

On the other hand, the only implementations which must decompress implicit c-e: gzip streams are ones which intermediate with 1.1 clients or receiving applications expecting uncompressed content.

The key here, as you suggested earlier, is whether 2.0 clients are mandated to receive compression (whether frame-by-frame, or implicit c-e: gzip, or some other means). This appears to be the out.

cheers,
-johnny


On Fri, May 2, 2014 at 3:54 AM, <K.Morgan@iaea.org<mailto:K.Morgan@iaea.org><mailto:K.Morgan@iaea.org<mailto:K.Morgan@iaea.org>>> wrote:

On Friday,02 May 2014 05:13, jgraettinger@google.com<mailto:jgraettinger@google.com><mailto:jgraettinger@google.com<mailto:jgraettinger@google.com>> wrote:

> The HTTP/1.1 pipelined case is equivalent to using MAX_CONCURRENT_STREAMS of 1.

> That also guarantees a single compression context. Many HTTP/2 implementations are

> likely willing to deal with N > 1 simultaneous compression contexts in exchange for better

> compression, so long as they can dictate the upper bound (and indeed they can).



Agreed.  Just to be clear, you're saying you disagree with what Roberto said (see below) that to bound the state/memory requirements a server would have to disable multiplexing?



*You can't claim it's a problem for T-E and then out of the other side of your mouth say it's not a problem for dynamic C-E.*





On Tuesday,29 April 2014 21:58, grmocg@gmail.com<mailto:grmocg@gmail.com><mailto:grmocg@gmail.com<mailto:grmocg@gmail.com>> wrote:

> If compression is per-segment as opposed to per-frame

>    AND we wish to restrict the amount of state the server must keep around

>    AND the sender wishes to have all the data in the segment compressed

>   THEN then the segment being compressed must be sent in its entirety in a contiguous series of frames with no muxing of other streams in the middle.

>

> If one doesn't do this, then the server is forced to retain this state indefinitely, though the client is allowed to make progress on other streams.

> This likely masks the consumption of server-state from the user, and also denies the user(and client) the ability to do compression for any other stream.

>

> If one does this, then one effectively loses the multiplexing feature of the protocol.

>

> Arguably, this is worse than simply doing per-frame compression, especially when on considers that with relatively decent frame sizes, the marginal benefit

> of continuing the compression context across frames is likely small.





This email message is intended only for the use of the named recipient. Information contained in this email message and its attachments may be privileged, confidential and protected from disclosure. If you are not the intended recipient, please do not read, copy, use or disclose this communication to others. Also please notify the sender by replying to this message and then delete it from your system.


This email message is intended only for the use of the named recipient. Information contained in this email message and its attachments may be privileged, confidential and protected from disclosure. If you are not the intended recipient, please do not read, copy, use or disclose this communication to others. Also please notify the sender by replying to this message and then delete it from your system.

This email message is intended only for the use of the named recipient. Information contained in this email message and its attachments may be privileged, confidential and protected from disclosure. If you are not the intended recipient, please do not read, copy, use or disclose this communication to others. Also please notify the sender by replying to this message and then delete it from your system.

Received on Friday, 2 May 2014 20:52:31 UTC