- From: Ryan Hamilton <rch@google.com>
- Date: Tue, 11 Dec 2018 08:03:56 -0800
- To: Roberto Peon <fenix@fb.com>, Martin Thomson <martin.thomson@gmail.com>, Mike Bishop <mbishop@evequefou.be>, Kazuho Oku <kazuhooku@gmail.com>, Jana Iyengar <jri.ietf@gmail.com>, HTTP Working Group <ietf-http-wg@w3.org>, Lucas Pardue <lucaspardue.24.7@gmail.com>, IETF QUIC WG <quic@ietf.org>
- Message-ID: <CAJ_4DfRXMkuXgCQuNqQ3W61dvdasummOAZOphj1OES-G0HcKzQ@mail.gmail.com>
That's a fair question. One of the features of QUIC which is so exciting is the performance improvements it offers. This comes from things like 0-RTT, no HoL blocking, better loss recovery, etc. The former affects initial latency, and the others come into play in the face of packet loss. But on low loss links with long lived flows, different dynamics come into play. Comparing TCP + TLS to QUIC, for example, we see that QUIC's per-packet encryption overhead compares unfavorably to TLS's per-record encryption overhead (assuming the senders is using large records). This is true with Google QUIC's 12 byte AEAD hashes, and is even worse with IETF QUIC's 16 byte overhead (but of course, the 16 byte overhead provides desirable security properties). All of this is to say, that for applications with low loss links and long lived flow, increasing QUIC overhead eats into the performance and threatens to tip the balance in favor of TCP. In my experience with 12 byte auth hashes and no DATA frame overhead, QUIC performance is not 10x better than TCP or 2x better than TCP. It's small percentages better than TCP. So a .2% increase in overhead because of DATA frame headers is like 10% of the gap between QUIC and TCP. This is significant. And when there is an extremely simple feature to avoid this overhead, I have a hard time thinking that overhead is justified. On Mon, Dec 10, 2018 at 6:41 PM Dmitri Tikhonov <dtikhonov@litespeedtech.com> wrote: > This change is intended to fix a purported shortcoming in the > HTTP/3 framing mechanism. The claim is that > > " DATA frame encoding is inefficient for long dynamically > " generated bodies. [1] > > As shown in this thread and elsewhere, the framing overhead is > small. What is the definition of "inefficient" that is used to > make this claim? > > - Dmitri. > > 1. https://github.com/quicwg/base-drafts/issues/1885 > > On Mon, Dec 10, 2018 at 05:55:58PM -0800, Ryan Hamilton wrote: > > Not all endpoints are proxies :) And some of those endpoint which are > > proxies are able to communicate with their backends in order to establish > > such knowledge. The endpoints I work with are both able to establish such > > knowledge, fwiw. > > > > On Mon, Dec 10, 2018 at 5:47 PM Roberto Peon <fenix@fb.com> wrote: > > > > > This simplicity of the design here is also a trap. Sure, the extension > is > > > simple, but it also makes it simple to fail to interoperate! > > > To be clear, only those proxies which have established some prior > > > knowledge that there will be no PUSH_PROMISE can safely use this > > > optimization with the protocol as designed today. > > > -=R > > > > > > > > > > > > *From: *Ryan Hamilton <rch@google.com> > > > *Date: *Monday, December 10, 2018 at 5:35 PM > > > *To: *Martin Thomson <martin.thomson@gmail.com> > > > *Cc: *Mike Bishop <mbishop@evequefou.be>, Dmitri Tikhonov < > > > dtikhonov@litespeedtech.com>, Kazuho Oku <kazuhooku@gmail.com>, Jana > > > Iyengar <jri.ietf@gmail.com>, Roberto Peon <fenix@fb.com>, HTTP > Working > > > Group <ietf-http-wg@w3.org>, Lucas Pardue <lucaspardue.24.7@gmail.com > >, > > > IETF QUIC WG <quic@ietf.org> > > > *Subject: *Re: Final DATA frames > > > > > > > > > > > > As you say, there's a valid use case here. There's nothing about this > > > particular design which would prevent any sort of "send the body on a > > > unidirectional stream" extension from being worked on or implemented. > That > > > some future extension might (or might not) be a better solution to > this use > > > case does not seem to me to be a terribly compelling argument for > reverting > > > this, particularly given the simplicity of this design. > > > > > > > > > > > > (I'll also point out that delivering the body on a unidirectional > stream > > > doesn't necessarily work will with server push, as the PUSH_PROMISE is > > > required to arrive before the reference to the promised resource. So > if the > > > PUSH_PROMISE happens on the main stream and the body goes on a > different > > > stream, that ordering is not guaranteed without some addition > properties.) > > > > > > > > > > > > On Mon, Dec 10, 2018 at 4:19 PM Martin Thomson < > martin.thomson@gmail.com> > > > wrote: > > > > > > FWIW, there is a valid use case here, but I'm not happy with the > > > specific design. > > > > > > For instance, an extension that used a unidirectional stream for the > > > body of a request might be a better option. > > > > > > On that basis, I would revert the change. > > > > > > >
Received on Tuesday, 11 December 2018 16:04:33 UTC