[hybi] (no subject)

Hapner mark <hapner.mark@huawei.com> Wed, 05 October 2011 21:14 UTC

Return-Path: <hapner.mark@huawei.com>
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 CB7541F0C5F for <hybi@ietfa.amsl.com>; Wed, 5 Oct 2011 14:14:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.86
X-Spam-Level:
X-Spam-Status: No, score=-5.86 tagged_above=-999 required=5 tests=[AWL=-1.024, BAYES_00=-2.599, HTML_MESSAGE=0.001, MISSING_SUBJECT=1.762, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id DeVqYxfpOZbR for <hybi@ietfa.amsl.com>; Wed, 5 Oct 2011 14:14:15 -0700 (PDT)
Received: from usaga04-in.huawei.com (usaga04-in.huawei.com [206.16.17.180]) by ietfa.amsl.com (Postfix) with ESMTP id 9F04E1F0C46 for <hybi@ietf.org>; Wed, 5 Oct 2011 14:14:15 -0700 (PDT)
Received: from huawei.com (usaga04-in [172.18.4.101]) by usaga04-in.huawei.com (iPlanet Messaging Server 5.2 HotFix 2.14 (built Aug 8 2006)) with ESMTP id <0LSM009WV34Y1D@usaga04-in.huawei.com> for hybi@ietf.org; Wed, 05 Oct 2011 16:17:23 -0500 (CDT)
Received: from dfweml202-edg.china.huawei.com ([172.18.4.104]) by usaga04-in.huawei.com (iPlanet Messaging Server 5.2 HotFix 2.14 (built Aug 8 2006)) with ESMTP id <0LSM00IGG34X6N@usaga04-in.huawei.com> for hybi@ietf.org; Wed, 05 Oct 2011 16:17:22 -0500 (CDT)
Received: from DFWEML404-HUB.china.huawei.com (10.193.5.203) by dfweml202-edg.china.huawei.com (172.18.9.108) with Microsoft SMTP Server (TLS) id 14.1.270.1; Wed, 05 Oct 2011 14:17:23 -0700
Received: from DFWEML506-MBX.china.huawei.com ([10.124.31.111]) by dfweml404-hub.china.huawei.com ([10.193.5.203]) with mapi id 14.01.0270.001; Wed, 05 Oct 2011 14:17:11 -0700
Date: Wed, 05 Oct 2011 21:17:10 +0000
From: Hapner mark <hapner.mark@huawei.com>
X-Originating-IP: [172.18.9.109]
To: Martin Sustrik <sustrik@250bpm.com>
Message-id: <92457F4F764A5C4785FCDBDDDD76477A123CA06E@dfweml506-mbx>
MIME-version: 1.0
Content-type: multipart/alternative; boundary="Boundary_(ID_IpblXUIJcEgxeTYmvFpoBw)"
Content-language: en-US
Accept-Language: en-US, zh-CN
Thread-index: AcyDl0nVbhTiuaS9SoeDkPmBh4oJQQ==
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
Cc: "hybi@ietf.org" <hybi@ietf.org>, "csuconic@redhat.com" <csuconic@redhat.com>
Subject: [hybi] (no subject)
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: Wed, 05 Oct 2011 21:14:16 -0000

Hi Martin,

Thanks for the feedback, See comments below ...

-- Mark

 >Hi Mark,
 >
 >>> 1. Given the explicit focus on reliability, it's strange that the
 >>> proposal deals with message metadata, which have to do with broker
 >>> or even application behaviour and have absolutely nothing to do
 >>> with reliability. What ensues is a spec where metadata are defined
 >>> as opaque syntactic placeholders with no associated semantics. The
 >>> semantics are meant to be defined on the broker or application
 >>> level. The question is whether it doesn't follow that the syntax
 >>> should be defined on those layers as well.
 >>>
 >>
 >> Both the reliability and message metadata are defined with the
 >> expectation that they are generic for a broad class of MessageBroker
 >> services. The majority of those I'm familiar with could easily make
 >> do with this metadata. The semantics of messages having a text
 >> address, an optional content type, and an optional property list
 >> covers a very broad set of MessageBroker scenarios. On the other
 >> hand, without this additional message metadata, the protocol would
 >> not be usable by any MessageBrokers I'm aware of.
 >
 >I think the argument goes rather like this: If the metadata is to be
 >used by the protocol, the semantics of the usage should be defined. If
 >it's not defined, there's no interoperability. If there's no
 >interoperability, there's no point in having a standard in the first place.
 >
 >>> 2. AFAICS there's nothing in the spec that presumes existence of
 >>> the broker. It can be as well used for direct communication
 >>> between applications. Thus, I would suggest replacing messaging
 >>> broker/messaging client terminology with WebSocket server and
 >>> WebSocket client wording.
 >>>
 >> Yes, while the protocol has been defined for the MessageBroker
 >> usecase, nothing prevents its use in other contexts. On the other
 >> hand, if it were called 'foobar' instead of 'MessageBroker' it would
 >> be hard to explain why it contains the specific elements it does.
 >
 >What I meant was that there are messaging solutions out there with no
 >broker (Tibco RV, LBM, 0MQ). There's nothing expect the "broker" wording
 >in the protocol to prevent these solutions to use the protocol.
 >

I was using the term 'MessageBroker' to represent the abstract messaging service the client is using for message transport/distribution. You are right that nothing prevents an endpoint taking on the roles of both client and 'broker'.

Possibly there is a better term for capturing the messaging role of the endpoint a client is connecting to. Please send suggestions ...

 >Btw, I've heard something about Kaazing providing access to Tibco
 >through the web on top of websockets...
 >
 >>> 3. As for reliability itself, it should be clear what kind of
 >>> error conditions is the protocol meant to handle. Possible
 >>> options:
 >>>
 >>> a. Network failure. If so, how does it differ from simply turning
 >>> off TCP keepalives?
 >>>
 >>> b. Client failure and restart?
 >>>
 >>> c. Server failure and restart?
 >>>
 >>
 >> The reliability elements of MBWS are just the protocol elements that
 >> client and MessageBroker use to jointly create and maintain a
 >> connection abstraction. This shared abstraction exists independent of
 >> MBWS. This allows a connection to be 'carried' over an open-ended
 >> sequence of MBWS sessions. Since connections exist independent of the
 >> network, they survive any form of network failure.
 >
 >This is interesting. Can you give an example of such network failure?

Any failure that abnormally terminates a WebSocket session will require resynchronization of the duplex messaging stream for a connection. The session failure could be due to a wide range of issues from hardware problems to TCP timeouts caused by congestion, etc.

In Enterprise messaging, reliable message transport requires what amounts to transport transactions. This adds complexity and overhead. For WebSocket, a stream oriented, message window based resynchronization technique is a better fit. Unlike Enterprise messaging, this distributes the responsibility for reliability equally between client and broker.

 >
 >> The degree to which a connection will or won't survive a
 >> client/MessageBroker failure depends entirely on the ability of the
 >> client/MessageBroker to retain the state needed for it to maintain
 >> the connection across its failure. MBWS does not define how this is
 >> to be done; however, there are many practical ways of doing it. A
 >> client or MessageBroker could fully implement MBWS and only recover
 >> from failed MBWS sessions (i.e. not support connection recovery
 >> across program failures).
 >
 >Ack. The failures of server/client are not addressed in the protocol.
 >You can handle them on top of it though.
 >
 >Martin