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

<Markus.Isomaki@nokia.com> Mon, 19 April 2010 11:18 UTC

Return-Path: <Markus.Isomaki@nokia.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 77E3F3A6928 for <hybi@core3.amsl.com>; Mon, 19 Apr 2010 04:18:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.598
X-Spam-Level:
X-Spam-Status: No, score=-6.598 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-4]
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 iHk96koxvMA2 for <hybi@core3.amsl.com>; Mon, 19 Apr 2010 04:18:05 -0700 (PDT)
Received: from mgw-mx06.nokia.com (smtp.nokia.com [192.100.122.233]) by core3.amsl.com (Postfix) with ESMTP id 0CBA13A68E9 for <hybi@ietf.org>; Mon, 19 Apr 2010 04:18:04 -0700 (PDT)
Received: from vaebh106.NOE.Nokia.com (vaebh106.europe.nokia.com [10.160.244.32]) by mgw-mx06.nokia.com (Switch-3.3.3/Switch-3.3.3) with ESMTP id o3JBHgJV000763; Mon, 19 Apr 2010 14:17:50 +0300
Received: from vaebh102.NOE.Nokia.com ([10.160.244.23]) by vaebh106.NOE.Nokia.com with Microsoft SMTPSVC(6.0.3790.3959); Mon, 19 Apr 2010 14:17:40 +0300
Received: from smtp.mgd.nokia.com ([65.54.30.6]) by vaebh102.NOE.Nokia.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.3959); Mon, 19 Apr 2010 14:17:28 +0300
Received: from NOK-EUMSG-02.mgdnok.nokia.com ([65.54.30.87]) by nok-am1mhub-02.mgdnok.nokia.com ([65.54.30.6]) with mapi; Mon, 19 Apr 2010 13:17:27 +0200
From: Markus.Isomaki@nokia.com
To: mike@belshe.com, jamie@shareable.org
Date: Mon, 19 Apr 2010 13:17:25 +0200
Thread-Topic: NAT reset recovery? Was: Extensibility mechanisms?
Thread-Index: Acrfog8qIUryksKiQ7yJSVx2SQfmigACS6+w
Message-ID: <B3F72E5548B10A4A8E6F4795430F841832040920C4@NOK-EUMSG-02.mgdnok.nokia.com>
References: <Pine.LNX.4.64.1004161952530.751@ps20323.dreamhostps.com> <Pine.LNX.4.64.1004180246380.751@ps20323.dreamhostps.com> <4BCAB2C1.2000404@webtide.com> <B9DC25B0-CD21-44E7-BD9B-06D0C9440933@apple.com> <Pine.LNX.4.64.1004181812370.751@ps20323.dreamhostps.com> <4BCB6641.70408@webtide.com> <Pine.LNX.4.64.1004182010070.751@ps20323.dreamhostps.com> <4BCB6FD0.7080003@webtide.com> <j2n5c4444771004181403o81184b00r294f3c3b878f24f6@mail.gmail.com> <20100419091736.GA28758@shareable.org> <p2w2a10ed241004190222ne3a61417i47b021dbe0422f71@mail.gmail.com>
In-Reply-To: <p2w2a10ed241004190222ne3a61417i47b021dbe0422f71@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: en-US
Content-Type: multipart/alternative; boundary="_000_B3F72E5548B10A4A8E6F4795430F841832040920C4NOKEUMSG02mgd_"
MIME-Version: 1.0
X-OriginalArrivalTime: 19 Apr 2010 11:17:28.0006 (UTC) FILETIME=[E5247E60:01CADFB1]
X-Nokia-AV: Clean
Cc: hybi@ietf.org
Subject: [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: Mon, 19 Apr 2010 11:18:07 -0000

Hi,

Mike Belshe wrote:
On Mon, Apr 19, 2010 at 2:17 AM, Jamie Lokier <jamie@shareable.org<mailto:jamie@shareable.org>> wrote:


Less robust - I put together an alternative to Ian's "tic tac toe"
using long-GET HTTP.  It's a similar amount of code with a similar
structure, and as far as I can tell fails in all the exact same
scenarios, except for one: The HTTP version keeps working after a NAT
or SPI router times out in the middle.  The WebSocket version breaks
at that point, because it won't detect the broken TCP connection or
create a new one.

The NAT point is a great one.  I don't have any data on how often long-lived connections are broken by NAT.  We need this.  Unfortunately, I bet may NATs just drop the connection without notifying the endpoints (e.g. never sends a RST).   This could become problematic for websockets, I'm not sure.  Keepalives may help some, but I bet NATs are smart enough to break even there too.  Data is needed....

I agree this is an important point. If I'm writing an application on top of the WebSocket API, is it my responsibility to deal with keepalives and connection failures due to NAT timer resets or reboots, or does the protocol do somethig for me in this regard? I suppose the current draft (-75) is pretty silent on this, which means it's all up to the application programmer. That sounds a bit unreasonable if we want the app development to be really simple. Probably, even if the app developers figured out how to do it, they probably would not do it in an optimal manner. So, I suppose it would be good to have either an extension (or a subprotocol) to deal with this. At least it's a piece of code that all client side apps will need anyway. I am not sure to which level it needs to be standardized, but there has to be some way to get it done.

Is this still an open issue or has it been discussed and resolved in some way already?

Markus