Re: [hybi] Ping/Pong body (was Re: TSV-Directorate review of draft-ietf-hybi-thewebsocketprotocol-07)

Jamie Lokier <jamie@shareable.org> Fri, 20 May 2011 22:17 UTC

Return-Path: <jamie@shareable.org>
X-Original-To: hybi@ietfa.amsl.com
Delivered-To: hybi@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E4426E0797 for <hybi@ietfa.amsl.com>; Fri, 20 May 2011 15:17:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.932
X-Spam-Level:
X-Spam-Status: No, score=-3.932 tagged_above=-999 required=5 tests=[AWL=-1.333, BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id VuSSxt7YyC6d for <hybi@ietfa.amsl.com>; Fri, 20 May 2011 15:17:52 -0700 (PDT)
Received: from mail2.shareable.org (mail2.shareable.org [80.68.89.115]) by ietfa.amsl.com (Postfix) with ESMTP id B318FE06BE for <hybi@ietf.org>; Fri, 20 May 2011 15:17:49 -0700 (PDT)
Received: from jamie by mail2.shareable.org with local (Exim 4.63) (envelope-from <jamie@shareable.org>) id 1QNY0v-00083t-Oj; Fri, 20 May 2011 23:17:45 +0100
Date: Fri, 20 May 2011 23:17:45 +0100
From: Jamie Lokier <jamie@shareable.org>
To: Gabriel Montenegro <Gabriel.Montenegro@microsoft.com>
Message-ID: <20110520221745.GC969@shareable.org>
References: <ED13A76FCE9E96498B049688227AEA292C6A81E4@TK5EX14MBXC206.redmond.corp.microsoft.com> <F390D8D1-335B-4595-93A2-0741DD693559@gmail.com> <ED13A76FCE9E96498B049688227AEA292C6A85DE@TK5EX14MBXC206.redmond.corp.microsoft.com> <BANLkTimg6Z8rs+SDp-HX+FzJQukKndWqkg@mail.gmail.com> <20110519232827.GA969@shareable.org> <CA566BAEAD6B3F4E8B5C5C4F61710C11402DAF7B@TK5EX14MBXW603.wingroup.windeploy.ntdev.microsoft.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <CA566BAEAD6B3F4E8B5C5C4F61710C11402DAF7B@TK5EX14MBXW603.wingroup.windeploy.ntdev.microsoft.com>
User-Agent: Mutt/1.5.13 (2006-08-11)
Cc: "hybi@ietf.org" <hybi@ietf.org>, Greg Wilkins <gregw@intalio.com>
Subject: Re: [hybi] Ping/Pong body (was Re: TSV-Directorate review of draft-ietf-hybi-thewebsocketprotocol-07)
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/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: Fri, 20 May 2011 22:17:54 -0000

Gabriel Montenegro wrote:
> This usage is supported in revision 07, which only has text on the
> responder (the "Pingee"?) allowing it to respond only to the latest
> Ping, but it has no constrain on the initiator (the "Pinger"), which
> is currently free to send more than one (which you indicate might
> actually make sense in your case).

That's a good reason for a ping/pong body.

If the responder only has to respond to the last ping, the sender may
need to know which ping is being responded to make assertions about
when the responder was alive and estimate or bound the RTT.

> I'm curious, if a Pong has not been received in such long time, why
> is the course of action to Ping again versus declaring that node gone
> or down and unavailable? I thought your goal was to detect dead
> nodes. Wouldn't this constitute a dead node?

See Pieter Hintjens reply, and my reply to that.  If there is bulky
data being transmitted, it can delay a pong, potentially for a long
time (depending on how your queues work), but it doesn't mean the
connection is dead.  Quite the contrary.

I don't mean to advocate that ping/pong is always appropriate anyway.

(As Pieter points out, watching the data is better.  Another reason:
Asymmetric timeouts.  If you need keepalive just to stay "subscribed"
to a message source, then the keepalive bandwidth can greatly exceed
actual data!!  Dropping pongs, and using _different_ timings for
server and client can reduce keepalive bandwidth while maintaining a
required level of "subscriber up-to-dateness".)

But if you feel the need to use ping/pong (perhaps to feel like you're
making more use of the WS spec, and less wheel invention), when you
have short keepalive timing constraints, that would push towards
overlap sometimes.

-- Jamie