- From: Lucas Pardue <lucaspardue.24.7@gmail.com>
- Date: Fri, 7 Dec 2018 23:38:46 +0000
- To: Mike Bishop <mbishop@evequefou.be>
- Cc: Roberto Peon <fenix@fb.com>, Ryan Hamilton <rch=40google.com@dmarc.ietf.org>, Jana Iyengar <jri.ietf@gmail.com>, IETF QUIC WG <quic@ietf.org>, HTTP Working Group <ietf-http-wg@w3.org>
- Message-ID: <CALGR9oahgd3roD8E2J0aoeOje4+Vvf=6PnJxCGx4hK-8+PZgWg@mail.gmail.com>
Perhaps I'm overlooking a few things but the way I'd see it is that such a proxy could be conservative and chose never to use len=0 on responses that it is in control of. If it wanted to be more flexible at cost of risk, a proxy might also use the content-length header to make an informed decision. The header is not required, which sort of aligns with an origin generating a dynamic response of unknown total length. Wrt to push. A proxy could use reception of a link header, with preload, to decide to push before generating the parent request-response payload. If the upstream wants to support "pass through" of push promise properly, being conservative with length=0 would also be sensible. Trailers, well they are are hard I agree. Mike's provided some options but I'd ask exactly what trailers are applicable to H3. Is this design really a blocker to use? On Fri, 7 Dec 2018, 22:50 Mike Bishop <mbishop@evequefou.be wrote: > Trailers SHOULD be declared in the headers, but it’s true that a proxy > whose origin violates that SHOULD could find itself in a state where it has > to drop the trailers. > > > > *From:* Roberto Peon <fenix@fb.com> > *Sent:* Friday, December 7, 2018 1:27 PM > *To:* Lucas Pardue <lucaspardue.24.7@gmail.com>; Ryan Hamilton <rch= > 40google.com@dmarc.ietf.org> > *Cc:* Jana Iyengar <jri.ietf@gmail.com>; IETF QUIC WG <quic@ietf.org>; > Mike Bishop <mbishop@evequefou.be>; HTTP Working Group < > ietf-http-wg@w3.org> > *Subject:* Re: Final DATA frames > > > > It will become very easy for an implementation which otherwise seems > conforming to mess up and have no way of using push, or communicating > trailers. > This really seems like premature optimization, especially in the case > where we’re taking options off the table already (like having the payload > be separate). > > A little inefficiency seems much less scary than features no longer > interoperating (e.g. because a proxy is very unlikely to know whether the > response will have trailers, etc. without some very interesting > coordination). That would feel very HTTP/1.1 pipelining (which was a good > idea, but couldn’t effectively be implemented interoperably) to me. That > was not at all a fun situation. > > > This makes me feel very uneasy. > > -=R > > > > *From: *Lucas Pardue <lucaspardue.24.7@gmail.com> > *Date: *Friday, December 7, 2018 at 12:23 PM > *To: *Ryan Hamilton <rch=40google.com@dmarc.ietf.org> > *Cc: *Roberto Peon <fenix@fb.com>, Jana Iyengar <jri.ietf@gmail.com>, > IETF QUIC WG <quic@ietf.org>, Mike Bishop <mbishop@evequefou.be>, HTTP > Working Group <ietf-http-wg@w3.org> > *Subject: *Re: Final DATA frames > > > > I was swayed by the discussion on this topic to support the proposal we > ended up with. As Ryan puts it so well, we don't discount such other use > cases, we just need the server to have enough information to decide how to > respond on the initial DATA frame it responds with. > > > > And to that end, I think it has enough enpowerment. If risk averse, it > would not use this optimisation. If sensitive to push or trailers, it can > take the care to allow them. > > > > Lucas > > > > On Fri, 7 Dec 2018, 20:12 Ryan Hamilton <rch=40google.com@dmarc.ietf.org > wrote: > > On Fri, Dec 7, 2018 at 10:16 AM Roberto Peon <fenix@fb.com> wrote: > > AFAICT, the github conversation didn’t touch on the interrelation of > framing-on-stream and push-promise, or trailers. > > > Given the current inline (interleaved) expression of push-promise within a > stream, you don’t want to prevent yourself from being able to insert the > push-promise description into the stream when you need to do it. > It’d also make trailers “interesting”, i.e. likely prevent them from > working properly. > > If having a zero-length frame is considered a problem, then another way to > solve that would be to assert that the length of a frame is the stated size > + 1, i.e. if that field is zero, then the length of the payload is one. > > > > Well, the motivation for the change is to avoid extra overhead in the very > common case of an HTTP message with no trailers and no associated pushes > (and dynamically generated content). If a particular HTTP message does not > have those properties then it can easily use a non-zero length to terminate > the DATA frame and follow it up with pushes or trailers. > >
Received on Friday, 7 December 2018 23:39:20 UTC