[hybi] BWTP Proposal - Bidirection Web Transfer Protocol

Greg Wilkins <gregw@webtide.com> Wed, 10 June 2009 09:24 UTC

Return-Path: <gregw@webtide.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 6165B3A67DB for <hybi@core3.amsl.com>; Wed, 10 Jun 2009 02:24:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[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 A91TevfsOnFJ for <hybi@core3.amsl.com>; Wed, 10 Jun 2009 02:24:03 -0700 (PDT)
Received: from wa-out-1112.google.com (wa-out-1112.google.com [209.85.146.182]) by core3.amsl.com (Postfix) with ESMTP id F38773A67A4 for <hybi@ietf.org>; Wed, 10 Jun 2009 02:24:02 -0700 (PDT)
Received: by wa-out-1112.google.com with SMTP id l35so199106waf.5 for <hybi@ietf.org>; Wed, 10 Jun 2009 02:24:07 -0700 (PDT)
Received: by 10.114.159.5 with SMTP id h5mr1786375wae.201.1244625847785; Wed, 10 Jun 2009 02:24:07 -0700 (PDT)
Received: from ?10.10.1.16? (60-242-119-126.tpgi.com.au [60.242.119.126]) by mx.google.com with ESMTPS id 17sm7068973pxi.162.2009.06.10.02.24.05 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 10 Jun 2009 02:24:06 -0700 (PDT)
Message-ID: <4A2F7BB2.5000105@webtide.com>
Date: Wed, 10 Jun 2009 19:24:02 +1000
From: Greg Wilkins <gregw@webtide.com>
User-Agent: Thunderbird 2.0.0.21 (X11/20090409)
MIME-Version: 1.0
To: hybi@ietf.org
Content-Type: multipart/mixed; boundary="------------000809000107080105040200"
Subject: [hybi] BWTP Proposal - Bidirection Web Transfer Protocol
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: Wed, 10 Jun 2009 09:24:06 -0000

All,

Attached in a very very early draft of an alternative proposal for a
transfer protocol for HTML5 WebSockets.  For lack of a better
name (and not wanting to coopt the hybi name), I've called it

  BWTP - Bidirection Web Transfer Protocol

I wont explain the protocol here, as hopefully the proposal
document does that sufficiently well.

But I will explain why I think this proposal (or something
approximately similar) is superior to the current Websocket
protocol proposal:

 + The protocol is very much an IETF style application
   protocol.  In fact it is just RFC2616 with anything
   non bidirectional ripped out.
   It is not trying to be a revolution in web protocols,
   but simply to solve the problems at hand.

 + The protocol document is written very much in IETF style.
   In fact it is just RFC2616 with anything non bidirectional
   ripped out.   BNF is used to specify the protocol and the
   principal of "be strict in what you generate and forgiving
   in what your parse" is adhered to.

 + Because of it's similarity to HTTP, it is intended that
   existing HTTP clients, servers and intermediaries will be able
   to be minimally updated to support this protocol.
   This will not require entirely new protocol libraries
   to be developed.   Existing development and analysis
   tools will also be able to be easily updated, plus
   the protocol is mostly human readable.

 + It supports full mime encapsulated payloads, but has
   a default mechanism so that most values only need to
   be specified once per connection if they do not change.

   The minimal overhead per message is 11 bytes, which is
   a little more than the websocket proposal, but is hardly
   significant.

 + There is no formal channel mechanism like BEEP has,
   but each message may be to/from a different URI if
   need be.  This makes multiplexing easy to support.

 + There is no formal segmentation mechanism, but
   Content-Ranges are supported so that large content
   cna be sent in smaller bits if desired.

 + The protocol recognizes that intermediaries (proxies) may
   wish to be an active party on a bi direction connection.
   For example, this proposal allows an intermediary to
   initiate and orderly lossless close of the connection.
   I'm sure innovative proxy applications will be
   developed over time, just as they have been for HTTP.

 + it well supports the current HTML WebSocket API
   but is also flexible and extensible so that non
   browser clients may use it and future APIs will
   not need protocol changes.

I'd really appreciate any feedback, co-authors, review,
editing etc.   I don't consider anything in this proposal
to be fixed and all is open to change.

I have the draft in Google Docs and am happy to add
collaborators (there are a few already (who should add
themselves to the authors/acknowlegements)).


cheers