- From: Benjamin Kaduk <bkaduk@akamai.com>
- Date: Tue, 25 Jul 2017 07:27:02 -0500
- To: Kazuho Oku <kazuhooku@gmail.com>, Martin Thomson <martin.thomson@gmail.com>
- Cc: Subodh Iyengar <subodh@fb.com>, Ilari Liusvaara <ilariliusvaara@welho.com>, Mike Bishop <Michael.Bishop@microsoft.com>, HTTP Working Group <ietf-http-wg@w3.org>
- Message-ID: <b3c87af0-2ec6-eedf-864a-30f04dd21d14@akamai.com>
On 07/25/2017 02:29 AM, Kazuho Oku wrote: > 2017-07-25 15:54 GMT+09:00 Kazuho Oku <kazuhooku@gmail.com>: >> >> I think that the following model would be safe: >> >> * consider 4NN as a signal that indicates the intermediary to wait for >> 1-RTT confirmation and retry >> * 1-RTT confirmation can be observed as a logical and of >> ClientFinished and non-existence of the early-data header >> >> I do not see any reason to send 4NN to the initiator of the request >> (i.e. browser), since the peer that the initiator talks to can always >> use the ClientFinished as a confirmation. As I said, transmitting 4NN >> to the initiator can impose additional latency, since contrary to >> ClientFinished a client cannot (re)send a request until it sees the >> response. That seems like it would violate the principle that the actual client generating the request should have control over whether it is retried. > To be precise, what I am suggesting here is that the server's action > for processing a request without replay-torelance can be defined as > follows: I assume that by "without replay-torelance [sic]" you mean a request that has potentially replay-unsafe consequences/side effects, so the request must only be acted on over non-replayable transport. > * 0-RTT request with early-data header: send 4NN Yes. > * 0-RTT request with no early-data header: postpone request processing > until ClientFinished That seems permissible, but sending 4NN is also fine and requires less state on the server. > * 1-RTT request with early-data header: send 4NN Yes. > * 1-RTT request with no early-data header: process the request Yes. > and that it can be deducted from the rule that when receiving a 0-RTT > request without an early-data header, an intermediary should: forward > the request to the origin by adding an early-data header, and if the > origin refuses to process the request by responding with 4NN, it > should wait (i.e. postpone the processing of the request) for > ClientFinished and resend the request to the origin server (this time > without the early-data header). > This part I do not agree with, in particular the intermediary making the decision to re-send the request without the early-data header. I believe that this decision must be left in the hands of the original client, and do not think the latency concern justifies deviating from that. -Ben
Received on Tuesday, 25 July 2017 12:27:30 UTC