Re: Last Call: <draft-ietf-httpbis-early-hints-03.txt> (An HTTP Status Code for Indicating Hints) to Experimental RFC

Kazuho Oku <kazuhooku@gmail.com> Tue, 27 June 2017 03:52 UTC

Return-Path: <kazuhooku@gmail.com>
X-Original-To: ietf@ietfa.amsl.com
Delivered-To: ietf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C7637127136 for <ietf@ietfa.amsl.com>; Mon, 26 Jun 2017 20:52:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level:
X-Spam-Status: No, score=-1.999 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8keTyUKZMsO4 for <ietf@ietfa.amsl.com>; Mon, 26 Jun 2017 20:52:15 -0700 (PDT)
Received: from mail-pf0-x231.google.com (mail-pf0-x231.google.com [IPv6:2607:f8b0:400e:c00::231]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C76E51243F3 for <ietf@ietf.org>; Mon, 26 Jun 2017 20:52:15 -0700 (PDT)
Received: by mail-pf0-x231.google.com with SMTP id q86so9789911pfl.3 for <ietf@ietf.org>; Mon, 26 Jun 2017 20:52:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=oh1AtaitlhmXGfyNL/5cvOJimO5IhUJIcOEn8vTK3iM=; b=PLk36J8WgITrzArVaiqU6fSyEkqwPe4BPPXTfkm+ZCp83MYIDqPKubsAdmcuKvVTwY 1Dz3TkLdAYlrzCXMf3bwOxiWlE6KqDFDOUXcp7eX29rAqmHHTPZ8vcL+ygMT1FqaGQ56 H0nbGfiTM9HpFFk7uH9gJGzDexkystxRWUvqcipN5Mfjv/J3gPNEePniNWCF0QYzeT1S YMm16AHmvFpTgM1sexKJQWRNoagsJjsC6/rDLXe7odY1L/MESZYzVS7R1Ci0OigVjHol tylW5NLRK2YR2lWKtvZ3SMsAVmx5qaNjtJmaIcnrRs50jZ0HyqgSxu+6CTDcC1h7EN0j uzHA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=oh1AtaitlhmXGfyNL/5cvOJimO5IhUJIcOEn8vTK3iM=; b=CFtXsz0Yns7L3ANGKQNXcyQMQZ/ecusOmqQxYo74mvruqbO/0KIXuvt0OEc3001AkG +qa7PAFxhXQM06p8Bp4TScddjmzug+dx6xB3F3qOMbOX1VBaTFfKS6WtokX2QR0/d8ZQ S5ybGWkUgDbn/39Ce0nhrzmwC/fr7tXKITugyz2m12p3uQkMUzCiXh/1a7cbFhgzXpib 2Eqp58x323UQGJcx9iJTX1K9/56c0Ep4QTcPicwYOVwU7HcOv3DxiHUDIFxf+EeJbyHq 4p2NTgJP9sYptFnSuqNr61Wf/rmaOCYxNc3WnUMlYfgoAHm81m/Js67QgYxpI27Nw2W4 bP/g==
X-Gm-Message-State: AKS2vOw5x5MegjOGVrLluMsy4OuBFWUlQCnd4vbYAa6ahnTXMntap8+i 2FBEOJkrBV8NPogIFoVqC88vT+6GWvzFIxE=
X-Received: by 10.99.152.18 with SMTP id q18mr3237005pgd.91.1498535535220; Mon, 26 Jun 2017 20:52:15 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.100.130.3 with HTTP; Mon, 26 Jun 2017 20:52:14 -0700 (PDT)
In-Reply-To: <4042E64B-95FB-4866-BD0E-739DF21282CD@mnot.net>
References: <149806437201.15854.12299810594896460001.idtracker@ietfa.amsl.com> <dcdff226-e12d-bb83-982f-8253f46ae935@gmx.de> <CANatvzygaU9oiof3-5TqnWdxqXOGNyGqPvNhTnpPzYy391CzNw@mail.gmail.com> <4042E64B-95FB-4866-BD0E-739DF21282CD@mnot.net>
From: Kazuho Oku <kazuhooku@gmail.com>
Date: Tue, 27 Jun 2017 12:52:14 +0900
Message-ID: <CANatvzyKP89vQyfJR8gm7Ubgu88fi1nwEY3PULNCB+5ViHjZmg@mail.gmail.com>
Subject: Re: Last Call: <draft-ietf-httpbis-early-hints-03.txt> (An HTTP Status Code for Indicating Hints) to Experimental RFC
To: Mark Nottingham <mnot@mnot.net>
Cc: "Julian F. Reschke" <julian.reschke@gmx.de>, IETF Discussion Mailing List <ietf@ietf.org>, HTTP Working Group <ietf-http-wg@w3.org>, Alexey Melnikov <alexey.melnikov@isode.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/ietf/pnn1Jncwddhfia6umB_pwtCMB5w>
X-BeenThere: ietf@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: IETF-Discussion <ietf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ietf>, <mailto:ietf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ietf/>
List-Post: <mailto:ietf@ietf.org>
List-Help: <mailto:ietf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ietf>, <mailto:ietf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 27 Jun 2017 03:52:18 -0000

Hi Mark, Julian,

Thank you for your comments / suggestions.

I have created a pull request that hopefully would address the issues
being raised: https://github.com/httpwg/http-extensions/pull/363;
please let me know what you think.

The PR removes the statements that have been pointed out either as
redundant or in contradiction with RFC 723x. It also gives guidance to
servers how they should generate the 103 headers.

Regarding the action of an intermediary, I like the Mark's view
(stated in the new GitHub issue) that caches are expected to store
only final responses and that it should be clarified in the next
revision of HTTP. Considering that way, I think we do not need to
specify how a intermediary needs to deal with a 103 response (except
for the fact that a HTTP/2 gateway might create a HTTP/2 push based on
the information found in the informational response).

2017-06-27 10:05 GMT+09:00 Mark Nottingham <mnot@mnot.net>:
>
>> On 26 Jun 2017, at 12:39 pm, Kazuho Oku <kazuhooku@gmail.com> wrote:
>
>> The reasons I added a clause prohibiting the use of hop-by-hop headers
>> in an 103 response are as follows:
>> * does not make sense for a response that attempts to send the
>> metadata of a final response early
>> * to avoid confusion caused by sending a hop-by-hop header in the 103 response
>>
>> Without the restriction, a response like below would be valid, which
>> IMO is confusing at least.
>>
>> ```
>> HTTP/1.1 103 Early Hints
>> Connection: close
>> Link: </style.css>; rel=preload
>>
>> HTTP/1.1 200 OK
>> Connection: close
>> Link: </style.css>; rel=preload
>> ...
>> ```
>
> Perhaps you could just give guidance that only the headers intended as early hints should be sent?
>
>
>> The statement exists since sending 103 only makes sense when it is
>> impossible to immediately send a final response.
>>
>> For example, there is no need for a cache that is in possession of a
>> freshly-cached final response to send a 103 that was sent from the
>> origin before sending the final response. I also believe that most
>> caching proxies that exist today do not cache informational responses,
>> and that there is no need for us to require them to do so.
>>
>> Considering the facts, one way to resolve the issue would be to adjust
>> the statement to something like "An intermediary MAY omit the 103
>> response when resending a cached response", and argue that re-sending
>> a cached response is not an action of "forwarding," which is defined
>> as a MUST in RFC 7231.
>>
>> But wouldn't it be simpler to just have the "MAY drop" clause for any
>> intermediary?
>
> Re-specifying HTTP for a special case isn't a good idea. I think you could mention that gateways can decide not to forward a 103 response at their discretion / depending on their configuration, but I don't know if I'd put a requirement around it. Also, see below.
>
> As an aside -- HTTP only specifies very general requirements for gateways; by their nature, they're black boxes (the back-end protocol *can* be HTTP, but it doesn't have to be, and how they connect the two sides in that case is also unspecified). So I wouldn't go into too much detail about their operation.
>
>
>> Yes. They need to, especially if caching is involved. 103 is an
>> intermediary response and there is no guarantee (or a requirement) for
>> a cache to retain the headers included only in the informational
>> response.
>>
>> In case of link rel=preload headers, a client can speculatively load
>> the resources included in the headers while revalidating a
>> stale-cached response, or a caching proxy can generate a 103 response
>> from a stale-cached 200 response, while waiting for the origin to
>> perform revalidation.
>
> The underlying problem here is that the caching model doesn't talk about final and non-final responses.
>
> I've raised <https://github.com/httpwg/http11bis/issues/29>. I don't think that you need to specify anything about this.
>
>
> --
> Mark Nottingham   https://www.mnot.net/
>



-- 
Kazuho Oku