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

"Thomson, Martin" <Martin.Thomson@commscope.com> Mon, 21 March 2011 04:19 UTC

Return-Path: <Martin.Thomson@commscope.com>
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 CA4C33A65A5 for <hybi@core3.amsl.com>; Sun, 20 Mar 2011 21:19:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.935
X-Spam-Level:
X-Spam-Status: No, score=-2.935 tagged_above=-999 required=5 tests=[AWL=-0.336, BAYES_00=-2.599]
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 dhYcO7e3Wl7G for <hybi@core3.amsl.com>; Sun, 20 Mar 2011 21:19:47 -0700 (PDT)
Received: from cdcsmgw01.commscope.com (fw.commscope.com [198.135.207.129]) by core3.amsl.com (Postfix) with ESMTP id 9A4803A6405 for <hybi@ietf.org>; Sun, 20 Mar 2011 21:19:47 -0700 (PDT)
X-AuditID: 0a0404e8-b7b25ae000007eb9-97-4d86d23e23e1
Received: from ACDCE7HC2.commscope.com ( [10.86.20.103]) by cdcsmgw01.commscope.com (Symantec Brightmail Gateway) with SMTP id DE.95.32441.E32D68D4; Sun, 20 Mar 2011 23:21:19 -0500 (CDT)
Received: from SISPE7HC1.commscope.com (10.97.4.12) by ACDCE7HC2.commscope.com (10.86.20.103) with Microsoft SMTP Server (TLS) id 8.3.137.0; Sun, 20 Mar 2011 23:21:18 -0500
Received: from SISPE7MB1.commscope.com ([fe80::9d82:a492:85e3:a293]) by SISPE7HC1.commscope.com ([fe80::8a9:4724:f6bb:3cdf%10]) with mapi; Mon, 21 Mar 2011 12:21:13 +0800
From: "Thomson, Martin" <Martin.Thomson@commscope.com>
To: Mark Nottingham <mnot@mnot.net>
Date: Mon, 21 Mar 2011 12:21:11 +0800
Thread-Topic: [hybi] Fwd: New Version Notification for draft-thomson-hybi-http-timeout-00
Thread-Index: AcvnbsnDbbfXNduMSQ6rxritc6NFPgAByD0w
Message-ID: <8B0A9FCBB9832F43971E38010638454F0400BF01A2@SISPE7MB1.commscope.com>
References: <4D776669.20300@ericsson.com> <98F23E74-AF00-4F38-968A-3B4CD40B8B3B@mnot.net> <8B0A9FCBB9832F43971E38010638454F0400BEFF60@SISPE7MB1.commscope.com> <BAD6CE69-6B27-4C12-9214-18FD84031D0A@mnot.net>
In-Reply-To: <BAD6CE69-6B27-4C12-9214-18FD84031D0A@mnot.net>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: en-US
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Brightmail-Tracker: AAAAAA==
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 04:19:48 -0000

On 2011-03-21 at 13:21:24, Mark Nottingham wrote:
> On 18/03/2011, at 3:14 PM, Thomson, Martin wrote:
> > 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.

That's not the intent.  I assume that if the server knows request-timeout, then they are able to send an error response at that time, making the connection available.  Obviously, if the client sends another request after that time, they are effectively pipelining...with all that entails.
 
> 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. 

The draft talks about that.  There will always be a need to handle lost connections.  Timeouts can't help, and we wouldn't pretend that they would.

> 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).

I don't see how that would help at all.

> > 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.

Interesting thought, but ultimately it ends up with the same semantics of request-timeout:
   Prefer: response-within=10

A single bit doesn't quite suffice for this use case.  While there is some value in being able to choose between the slowest and the fastest response, that precludes a range of in-between options.

> 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.

And if that's the case, that's a good reason not to define a new header and look for other options (like Prefer).

> >> 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...

It is a promise to a peer that they wont close the connection until they think the connection is idle (as above) for the specified time, exceptional circumstances excepted.

For instance, a client that sees a value of 120 might choose to reuse a connection that is (subjectively) idle for 90s.  Whether they also reuse the connection at 100, 110 and 119 is up to implementation/local configuration/other unspecified heuristics.

--Martin