Re: [hybi] Requirements.

SM <sm@resistor.net> Mon, 01 February 2010 10:05 UTC

Return-Path: <sm@resistor.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 05AC828C168 for <hybi@core3.amsl.com>; Mon, 1 Feb 2010 02:05:10 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.377
X-Spam-Level:
X-Spam-Status: No, score=-2.377 tagged_above=-999 required=5 tests=[AWL=0.223, 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 t5JcJrZKC92I for <hybi@core3.amsl.com>; Mon, 1 Feb 2010 02:05:08 -0800 (PST)
Received: from ns1.qubic.net (ns1.qubic.net [208.69.177.116]) by core3.amsl.com (Postfix) with ESMTP id B9E6F28C129 for <hybi@ietf.org>; Mon, 1 Feb 2010 02:05:08 -0800 (PST)
Received: from SUBMAN.resistor.net ([10.0.0.1]) (authenticated bits=0) by ns1.qubic.net (8.14.4/8.14.4) with ESMTP id o11A5TGs027432 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 1 Feb 2010 02:05:36 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=resistor.net; s=mail; t=1265018739; x=1265105139; bh=XY2T77t8kfHOLYPSaTJK+nAv4le8pN5gsPwn4jmEycU=; h=Message-Id:Date:To:From:Subject:Cc:In-Reply-To:References: Mime-Version:Content-Type; b=iunB0K703vQBV5391HLSsY3B/SC6pH7rfDLdYu/V5znsmXUn841vsMTrTivhfIML9 D04iLOWAbKJWCIfNk9hGmxkik6GLTpG9W1e/taRiVfjhrt4WcM1E+Sp5LqCLdsUEW7 jAxJAurpsNo7t1LszDF+M5q7PRQeRsvcQ3vUu568=
DomainKey-Signature: a=rsa-sha1; s=mail; d=resistor.net; c=simple; q=dns; b=Snc2MZY45/5ZMSnRmuyWcafOFBodT1MXqa71zwWKyMVSTZjqPjJitLG53eENbHDBO mU3TYovslabjvYbppRSCoweaYZdKbx0HPutJl6G001adL1QaerNBauTzWKgNIiLJOrk J2bfgRIvLg/DLReuPG4142k0Au6bt5c2glvEE2A=
Message-Id: <6.2.5.6.2.20100201000831.059ec9b0@resistor.net>
X-Mailer: QUALCOMM Windows Eudora Version 6.2.5.6
Date: Mon, 01 Feb 2010 01:40:09 -0800
To: Greg Wilkins <gregw@webtide.com>
From: SM <sm@resistor.net>
In-Reply-To: <4B661B0D.20606@webtide.com>
References: <4B661B0D.20606@webtide.com>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"; format="flowed"
Cc: hybi@ietf.org
Subject: Re: [hybi] Requirements.
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, 01 Feb 2010 10:05:10 -0000

Hi Greg,
At 16:06 31-01-10, Greg Wilkins wrote:
>All, in line with the charter milestones,  I'd like to start a discussion
>in preparation to preparing a requirements document for April.

[snip]

>Connection limits
>=================
>Connections can consume significant resources on a network and/or
>server.  If a application has an unconstrained ability to open new
>connections than an client may attempt to open more connections
>as a way to reserve more of a servers resources for their application.
>Unconstrained connection creation may also be used as a DOS attack
>(although this is somewhat limited by the current requirement that only
>a single handshake can be outstanding at once).
>
>Endpoints (not applications) should enforce reasonable connection limits.
>Endpoint implementations should be able to negotiate and/or declare
>the maximal connection limits that they will enforce.

The protocol document would then have to define the reasonable 
connection limit.  That serves as guidance to implementors.

>Orderly Close.
>==============
>That either endpoint or any intermediary may initiate an orderly close of
>a websocket connection, such that any message sent before the close would
>be guaranteed of delivery if there are no other failures of the connection.
>
>Websocket endpoints and intermediaries would be able to distinguish between
>an orderly close and a failure of a websocket and thus take different
>application actions with regards to any non-idempotent messages recently
>sent.

That's better than saying that it is always safe to disconnect.

>A websocket endpoint that frequently detects non orderly closes on a
>particular path may make statistical/heuristic inferences about the
>ws support of intermediaries.  It may then take action by reducing idle
>times and/or sending keep-alives.

If it is not normative, you can get away with that.

>Acknowledged Flush
>==================
>Either endpoint may initiate an acknowledged flush of a websocket connection.
>This would be similar to an orderly close in that endpoints and intermediaries
>would be able to know that all messages sent prior to the flush had been
>delivered to the opposite endpoint, except that the connection would be
>left open.

Are you asking for acknowledgement of delivery as part of the protocol?

>Content Type & encodings
>========================
>
>Websocket endpoints may wish to send data in alternative encodings
>and with indications of content type.  Examples include compressing,
>signing or encrypting messages, using utf-16 instead of utf-8 for
>some language groups, sending images or other media.   Content type
>and encoding is needed to make usage of the binary framing transport.
>
>It's unclear if content type should be negotiated or simply declared.
>The under utilization of accept- headers in HTTP would suggest negotiation
>is perhaps not required.

You will have to support content negotiation if you want to support 
different content types.

>Standardized Extensions
>=======================
>
>Features/requirements that deemed to not be base requirements
>(eg possibly message fragmentation and connection sharing), may
>be desirable to support in the form of standardized extensions
>to the protocol.

That's a good idea of else you will end up with a lot of stuff in the 
"base" specifications.

There is also the question of whether the protocol should be run on 
the same port as HTTP (re: discussion about HTTP Upgrade) or whether 
it should be assigned a different TCP port.

Regards,
-sm