[hybi] permessage-bzip2, -lz4 and -snappy

Tobias Oberstein <tobias.oberstein@tavendo.de> Sat, 08 June 2013 12:50 UTC

Return-Path: <tobias.oberstein@tavendo.de>
X-Original-To: hybi@ietfa.amsl.com
Delivered-To: hybi@ietfa.amsl.com
Received: from localhost (localhost []) by ietfa.amsl.com (Postfix) with ESMTP id 1496221F9A33 for <hybi@ietfa.amsl.com>; Sat, 8 Jun 2013 05:50:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599]
Received: from mail.ietf.org ([]) by localhost (ietfa.amsl.com []) (amavisd-new, port 10024) with ESMTP id YYSpXWafTT5u for <hybi@ietfa.amsl.com>; Sat, 8 Jun 2013 05:50:26 -0700 (PDT)
Received: from EXHUB020-4.exch020.serverdata.net (exhub020-4.exch020.serverdata.net []) by ietfa.amsl.com (Postfix) with ESMTP id C9F9D21F9A1F for <hybi@ietf.org>; Sat, 8 Jun 2013 05:50:26 -0700 (PDT)
Received: from EXVMBX020-12.exch020.serverdata.net ([]) by EXHUB020-4.exch020.serverdata.net ([]) with mapi; Sat, 8 Jun 2013 05:50:25 -0700
From: Tobias Oberstein <tobias.oberstein@tavendo.de>
To: "hybi@ietf.org" <hybi@ietf.org>
Date: Sat, 08 Jun 2013 05:50:25 -0700
Thread-Topic: permessage-bzip2, -lz4 and -snappy
Thread-Index: Ac5kRibdx1skfPOtS8S2+IGDmAvUPg==
Message-ID: <634914A010D0B943A035D226786325D4422DD31B98@EXVMBX020-12.exch020.serverdata.net>
Accept-Language: de-DE, en-US
Content-Language: de-DE
acceptlanguage: de-DE, en-US
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Subject: [hybi] permessage-bzip2, -lz4 and -snappy
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: Sat, 08 Jun 2013 12:50:31 -0000


we are experimenting with adding new compression methods to the PMCE framework provided by Takeshi's "permessage-compression" draft http://tools.ietf.org/html/draft-ietf-hybi-permessage-compression-09


While "permessage-deflate" balances CPU, memory and compression ratio and "zlib" is widely available, other compression methods either provide higher compression ratios (consuming more CPU and/or memory) or lower CPU and/or memory load.

We are thinking of

 - permessage-bzip2
 - permessage-lz4
 - permessage-snappy

We have already implemented "permessage-bzip2" in AutobahnPython (both client and server). The others will follow.

Here is an example opening handshake:

GET /runCase?case=6&agent=AutobahnPython/0.6.0 HTTP/1.1
User-Agent: AutobahnPython/0.6.0
Upgrade: WebSocket
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
Sec-WebSocket-Key: 900jKLXzMJ6OrZ3v9HgyOA==
Sec-WebSocket-Extensions: permessage-bzip2; c2s_compress_level, permessage-deflate; c2s_no_context_takeover; c2s_max_window_bits
Sec-WebSocket-Version: 13

HTTP/1.1 101 Switching Protocols
Server: AutobahnTestSuite/0.5.4-0.6.0
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Accept: 0sry1e2yduhqN51p9afaWmkcFnU=
Sec-WebSocket-Extensions: permessage-bzip2

When connecting from a client only supporting "permessage-deflate" (e.g. current Chrome Canary), server will fallback to that of course.


I'd like to ask on the list:

a) any interest by other implementors?

- how should the new PMCEs be specified? within Takeshi's current draft or outside?
- how to register the extension names and parameters?
- does above even make sense, given that (as far as I know), none of bzip2, lz4 or snappy has an RFC?