Re: [hybi] Fwd: New Version Notification for draft-thomson-hybi-http-timeout-00

Mark Nottingham <mnot@mnot.net> Mon, 21 March 2011 02:20 UTC

Return-Path: <mnot@mnot.net>
X-Original-To: hybi@core3.amsl.com
Delivered-To: hybi@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 20FF628C10A for <hybi@core3.amsl.com>; Sun, 20 Mar 2011 19:20:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -105.414
X-Spam-Level:
X-Spam-Status: No, score=-105.414 tagged_above=-999 required=5 tests=[AWL=-2.815, BAYES_00=-2.599, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id bQCUpnXT33wW for <hybi@core3.amsl.com>; Sun, 20 Mar 2011 19:20:01 -0700 (PDT)
Received: from mxout-08.mxes.net (mxout-08.mxes.net [216.86.168.183]) by core3.amsl.com (Postfix) with ESMTP id 3DA2C28C10B for <hybi@ietf.org>; Sun, 20 Mar 2011 19:20:00 -0700 (PDT)
Received: from chancetrain-lm.mnot.net (unknown [118.209.52.84]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp.mxes.net (Postfix) with ESMTPSA id 0599F509D9; Sun, 20 Mar 2011 22:21:25 -0400 (EDT)
Mime-Version: 1.0 (Apple Message framework v1082)
Content-Type: text/plain; charset="us-ascii"
From: Mark Nottingham <mnot@mnot.net>
In-Reply-To: <8B0A9FCBB9832F43971E38010638454F0400BEFF60@SISPE7MB1.commscope.com>
Date: Mon, 21 Mar 2011 13:21:24 +1100
Content-Transfer-Encoding: quoted-printable
Message-Id: <BAD6CE69-6B27-4C12-9214-18FD84031D0A@mnot.net>
References: <4D776669.20300@ericsson.com> <98F23E74-AF00-4F38-968A-3B4CD40B8B3B@mnot.net> <8B0A9FCBB9832F43971E38010638454F0400BEFF60@SISPE7MB1.commscope.com>
To: "Thomson, Martin" <Martin.Thomson@commscope.com>
X-Mailer: Apple Mail (2.1082)
Cc: "hybi@ietf.org HTTP" <hybi@ietf.org>
Subject: Re: [hybi] Fwd: New Version Notification for draft-thomson-hybi-http-timeout-00
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/hybi>
List-Post: <mailto:hybi@ietf.org>
List-Help: <mailto:hybi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 21 Mar 2011 02:20:07 -0000

On 18/03/2011, at 3:14 PM, Thomson, Martin wrote:
>> 
>> Do you have use cases for Request-Timeout that aren't covered by a 
>> client-side timeout?
> 
> Since you ask, yes :)
> 
> In a lot of scenarios, a simple client-side connection drop is going to be sufficient.  That's true for the case where responses arrive atomically - the classic comet use case.
> 
> It is a little inefficient to drop the connection.  After all, it's not always the case that the client really needs to drop the connection, maybe they just wanted to ask about something else instead.  

I don't see how request-timeout helps here; you seem to be saying that the client can assume that it's OK after request-timeout seconds to submit a new request on the connection, and assume that the old request has been "cancelled" server-side. That fundamentally doesn't work.

Its true that there's ambiguity between purposeful connection drop and accidental (e.g., network-related) drop. However, it seems to me that using timeouts is a very bad way to detect this. Why not send a request explicitly saying that you're dropping the connection instead? E.g.,

OPTIONS * HTTP/1.1
Expect: im-outta-here-and-i-mean-it

That's just one way, there are lots of others (e.g., a chunk-extension).


> In the business that I work in - location - knowing how long you have to answer up front is considered quite valuable.  A GPS receiver takes a certain amount of time to start producing anything at all, and it's a pretty power hungry beast.  You don't even bother trying the GPS receiver unless you have some indication from your client that they are willing to wait for the response.  If they don't have the time, you can choose a quicker method, like round-trip timing or *waves hands* myriad other options.  But each of those location determination methods have their own limitations.
> 
> Thus, it's not a case of just waiting until an atomic event occurs.  It's about setting down the request constraints up front.

Ah -- OK, that's an interesting use case. I didn't get that from the draft. 

This smells a little bit like the Prefer header:
  http://tools.ietf.org/html/draft-snell-http-prefer-02

Did you consider using something like that? E.g., 
  Prefer: response-fast

Where the parameters of 'response-fast' is specific to the resource.

As you can probably guess, I'm suggesting this because I'm concerned that 95% of people who want to use something like Request-Timeout won't have such a subtle use case in mind.


>> if you 
>> are going to go down this road, you'll need to define 'idle' more 
>> carefully.
> 
> I'll admit that the definition of 'idle' is a little casual, but is there anything fundamentally wrong with the idea that it is
> a) subjective
> b) based on either sending or receiving of data
> c) probably ignorant of buffering and any fancy TCP layer stuff (Nagle's algorithm, etc, though that's hardly measurable at a granularity of seconds)

It depends very much on how it's used by receiving software. Your points only emphasise how little real information there is in the number that's getting transmitted...



--
Mark Nottingham   http://www.mnot.net/