Re: [hybi] NAT reset recovery? Was: Extensibility mechanisms?

Jamie Lokier <jamie@shareable.org> Tue, 20 April 2010 19:25 UTC

Return-Path: <jamie@shareable.org>
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 150A33A6949 for <hybi@core3.amsl.com>; Tue, 20 Apr 2010 12:25:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.616
X-Spam-Level:
X-Spam-Status: No, score=-2.616 tagged_above=-999 required=5 tests=[AWL=-0.768, BAYES_00=-2.599, SARE_OBFU_ALL=0.751]
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 ET0xe1Oa7zHO for <hybi@core3.amsl.com>; Tue, 20 Apr 2010 12:25:42 -0700 (PDT)
Received: from mail2.shareable.org (mail2.shareable.org [80.68.89.115]) by core3.amsl.com (Postfix) with ESMTP id 156333A6965 for <hybi@ietf.org>; Tue, 20 Apr 2010 12:25:01 -0700 (PDT)
Received: from jamie by mail2.shareable.org with local (Exim 4.63) (envelope-from <jamie@shareable.org>) id 1O4J3x-0004Ib-4W; Tue, 20 Apr 2010 20:24:49 +0100
Date: Tue, 20 Apr 2010 20:24:49 +0100
From: Jamie Lokier <jamie@shareable.org>
To: Dave Cridland <dave@cridland.net>
Message-ID: <20100420192449.GD11723@shareable.org>
References: <B3F72E5548B10A4A8E6F4795430F841832040F78C0@NOK-EUMSG-02.mgdnok.nokia.com> <w2q5821ea241004191309t7362de42p922788d380119dc4@mail.gmail.com> <B3F72E5548B10A4A8E6F4795430F841832040F78DB@NOK-EUMSG-02.mgdnok.nokia.com> <20100420013220.GC21899@shareable.org> <l2s5821ea241004192301u692d2344y8da146470a68ab75@mail.gmail.com> <8B0A9FCBB9832F43971E38010638454F03E7D06A36@SISPE7MB1.commscope.com> <B3F72E5548B10A4A8E6F4795430F841832040F7B57@NOK-EUMSG-02.mgdnok.nokia.com> <4991.1271757865.754227@Sputnik> <B3F72E5548B10A4A8E6F4795430F841832040F80E5@NOK-EUMSG-02.mgdnok.nokia.com> <4991.1271770347.895915@Sputnik>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <4991.1271770347.895915@Sputnik>
User-Agent: Mutt/1.5.13 (2006-08-11)
Cc: Server-Initiated HTTP <hybi@ietf.org>, "Thomson, Martin" <Martin.Thomson@andrew.com>, "Markus.Isomaki@nokia.com" <Markus.Isomaki@nokia.com>
Subject: Re: [hybi] NAT reset recovery? Was: Extensibility mechanisms?
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: Tue, 20 Apr 2010 19:25:43 -0000

Dave Cridland wrote:
> On Tue Apr 20 13:42:47 2010, Markus.Isomaki@nokia.com wrote:
> >>Having the server send a SP on an idle session is
> >>useful for defeating NAT timeouts,
> >
> >Here I'd really prefer the client to do it, as it should know  
> >better. And the host can potentially optimize between different  
> >connections etc.

The client only knows about it's nearest hop, usually.  Upstream
knowledge is known to intermediaries and servers.  In a server farm,
reverse proxies usually have the best local knowledge.  With mobile
data, if a 3G router is used, the router knows better than the client
what to do - especially for optimising radio power.

What do you mean about optimizing between different connections?

> I'm open to suggestions.

I really want intermediaries to have an *optional* way to intercept
the keepalive function - so they can optimise with link/hop-level
knowledge.  For example mobile links using a different mechanism that
uses less radio power, proxies at specific locations extending the
keepalive interval for specific hops, timing synchronisation between
connections at a hop to minimise radio power, and multiplexers (not
necessarily using WebSocket, but carrying it) aggregating multiple
connection's keepalives into fewer.  Far fewer.

Aall that's needed is the keepalive message types are well known and
allowed to be adjusted by intermediaries.  And negotiation is also
well known.  Simple intermediaries will just pass them on.

> If the server sends a simple keepalive only on silent connections on
> a reasonably lengthy interval, this seems to be to cover most
> options - it in effect means that clients can do it sooner if they
> wish.

For the server to know when a connection is stale, why not tell the
client to send an SP after 29 minutes (like AMQP)?  Client
compatibility, or is there a technical reason to prefer ping if the
protocol were designed from scratch?

Isn't 30 minutes a rather long time to detect a user's presence is
lost?  I expect a lot of WebSocket applications to have a "presence"
pattern like XMPP's, but with different timing requirements.

Interactive web sites tracking online users may want an aggressive
timeout on the server side - as low as a few seconds in some cases,
more likely tens of seconds or a few minutes.

If the transport does KA at all, it's better if the application can
request specific KA timings from the transport, instead of sending a
second layer of "application KAs", which wouldn't be able to
participate in timing/power optimisations and hop/link-level substition.

-- Jamie