Re: [hybi] Last Call: <draft-ietf-hybi-thewebsocketprotocol-10.txt> (The WebSocket protocol) to Proposed Standard: request for max frame size

Francis Brosnan Blazquez <francis@aspl.es> Wed, 13 July 2011 14:27 UTC

Return-Path: <francis@aspl.es>
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 7991E21F8666; Wed, 13 Jul 2011 07:27:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.903
X-Spam-Level: *
X-Spam-Status: No, score=1.903 tagged_above=-999 required=5 tests=[AWL=-0.380, BAYES_00=-2.599, FH_HOST_ALMOST_IP=1.889, HOST_EQ_STATIC=1.172, HOST_EQ_STATICIP=1.511, HOST_MISMATCH_NET=0.311]
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 2bbjbUWtBIQP; Wed, 13 Jul 2011 07:27:49 -0700 (PDT)
Received: from mail.aspl.es (196.Red-212-170-101.staticIP.rima-tde.net [212.170.101.196]) by ietfa.amsl.com (Postfix) with ESMTP id DCEAA21F8745; Wed, 13 Jul 2011 07:27:39 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by mail.aspl.es (Postfix) with ESMTP id F391E1170003; Wed, 13 Jul 2011 16:27:36 +0200 (CEST)
X-Virus-Scanned: amavisd-new at aspl.es
Received: from mail.aspl.es ([127.0.0.1]) by localhost (dolphin.aspl.es [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id m+0i1W3ug7UV; Wed, 13 Jul 2011 16:27:31 +0200 (CEST)
Received: from [192.168.0.132] (barracuda [10.0.0.4]) by mail.aspl.es (Postfix) with ESMTP id 964671170001; Wed, 13 Jul 2011 16:27:31 +0200 (CEST)
From: Francis Brosnan Blazquez <francis@aspl.es>
To: Len Holgate <len.holgate@gmail.com>
In-Reply-To: <1bc701cc4135$efbf8540$0a00a8c0@Venus>
References: <20110711140229.17432.23519.idtracker@ietfa.amsl.com> <4E1BD054.7010103@gmail.com> <1310480036.26452.329.camel@vulcan.aspl.local> <1bc701cc4135$efbf8540$0a00a8c0@Venus>
Content-Type: text/plain; charset="ISO-8859-15"
Organization: ASPL
Date: Wed, 13 Jul 2011 16:27:32 +0200
Message-ID: <1310567252.26452.1396.camel@vulcan.aspl.local>
Mime-Version: 1.0
X-Mailer: Evolution 2.30.3
Content-Transfer-Encoding: 8bit
Cc: 'Hybi' <hybi@ietf.org>, ietf@ietf.org, draft-ietf-hybi-thewebsocketprotocol@tools.ietf.org
Subject: Re: [hybi] Last Call: <draft-ietf-hybi-thewebsocketprotocol-10.txt> (The WebSocket protocol) to Proposed Standard: request for max frame size
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, 13 Jul 2011 14:27:53 -0000

> Francis,

Hi Len,

> I agree with your points and would welcome a max frame size negotiation
> header.

Ok, It shouldn't be a negotiation but an indication to accommodate
communication to each party.

> However, whilst an intermediary might legitimately change the fragmentation
> of a frame it cannot merge complete messages. If, in your example, your
> client limited itself to messages of a certain size

Ok, it is important to note the peer is limiting max frame size not the
message size which may be still infinite in practical terms (63
bits)....and we have fragmentation support to deal with this.

This way intermediaries can split/coalesce fragments according to
receiving peer expectation.

>  then it doesn't matter
> what intermediaries do to the frames as the maximum frame size would be
> limited to the maximum message size that the client sends. The only time
> this wouldn't work is if you were using a 'message of infinite fragments'
> where you start with a fragmented frame and don't know when you'll send the
> final fragment.

Assuming frame size and message size aren't equal, it does matter. 

> The communication between peers about maximum message sizes supported could
> just as easily be in the application level protocol that you're running over
> the websocket connection.

Ok, I see you point and in part you are right, but there is a risk with
this argument:

1) Protocol problems should be solved on its layer, otherwise it will
   cause next layer (application level in this case) to need to solve
   them. It looks reasonable not forcing people to do so.

     Side note: our intention is to layer BEEP on top of websocket, so,
     in practical terms this is not a problem for us because it will
     provide us with all the protection and flow control required.

     However it looks to me this is not a solution for people using
     websocket in other contexts.

2) In general, it has lot of benefits to fragment bigger messages into
   smaller pieces to avoid sick interactions. 

   For example, if you send a really large frame, you won't be able to
   send a control message in the middle until you finish sending the
   frame in place. 

   Having a max frame size indication will help websocket stacks to
   fragment using the right value for each application.

3) No matter API style provided by a websocket stack (frame indication
or stream oriented), having framing running in the background where the
sending peer and intermediaries can coalesce frames without any
indication of the upper level will cause problems that can't be solved
in practical terms by a receiving side. 

In other words, I think having a framing without a max frame size
mechanism (or other mech like ack confirmation, its the same) is like
pretending having a coin with only one side.

> Len
> www.lenholgate.com
> 
> > -----Original Message-----
> > From: hybi-bounces@ietf.org [mailto:hybi-bounces@ietf.org] On 
> > Behalf Of Francis Brosnan Blazquez
> > Sent: 12 July 2011 15:14
> > To: Hybi
> > Cc: ietf@ietf.org; draft-ietf-hybi-thewebsocketprotocol@tools.ietf.org
> > Subject: Re: [hybi] Last Call: 
> > <draft-ietf-hybi-thewebsocketprotocol-10.txt> (The WebSocket 
> > protocol) to Proposed Standard: request for max frame size
> > 
> > Hi,
> > 
> > Recently, I posted [1] that websocket protocol should include an
> > indication about max frame size that is willing to accept the 
> > connecting
> > peer. 
> > 
> > Many pointed this is not an issue because you could use a stream
> > oriented API (like TCP send/recv and others), but that only 
> > bypasses the
> > problem (in some cases) not solves it.
> > 
> > Websocket protocol is frame based and every frame based protocol
> > designed until now has/need such feature or similar. Even 
> > TCP, for those
> > that proposes to use a stream oriented API as a solution, includes a
> > more complex mechanism than a simple max frame size (window 
> > based ack),
> > so each party can control/inform the sender. This is critical.
> > 
> > A good example for this would be the next. Let suppose you have a
> > constrained memory device (either because it is small or because it
> > accepts a large amount of connections). On that device you deploy a
> > websocket app that only accepts small messages (< 512 bytes, let's
> > say). 
> > 
> > In this context, you can hard code at your web app (javascript) that
> > must not send messages larger than this size (so you control websocket
> > payload size) and in the case you need to, you must split them
> > properly. 
> > 
> > However, even with this mechanism, you have no warranty that 
> > the browser
> > or an intermediary will join those messages into a single 
> > frame, causing
> > your device to receive a bigger message/frame than expected.
> > 
> > Assuming this I think we would require either to include a
> > Max-Frame-Size indication (or a really poor solution: to explicitly
> > state on the draft that frames must not be coalesced by intermediaries
> > or browsers). 
> > 
> > Regards,
> > 
> > [1] http://www.ietf.org/mail-archive/web/hybi/current/msg07641.html
> > -- 
> > Francis Brosnan Blázquez <francis.brosnan@aspl.es>
> > ASPL
> > 91 134 14 22 - 91 134 14 45 - 91 116 07 57
> > 
> > AVISO LEGAL
> > 
> > Este mensaje se dirige exclusivamente a su destinatario. Los datos
> > incluidos en el presente correo son confidenciales y 
> > sometidos a secreto
> > profesional, se prohíbe divulgarlos, en virtud de las leyes 
> > vigentes. Si
> > usted no lo es y lo ha recibido por error o tiene 
> > conocimiento del mismo
> > por cualquier motivo, le rogamos que nos lo comunique por este medio y
> > proceda a destruirlo o borrarlo.
> > 
> > En virtud de lo dispuesto en la Ley Orgánica 15/1999, de 13 de
> > diciembre, de Protección de Datos de Carácter Personal, le 
> > informamos de
> > que sus datos de carácter personal, recogidos de fuentes accesibles al
> > público o datos que usted nos ha facilitado previamente, proceden de
> > bases de datos propiedad de Advanced Software Production Line, S.L.
> > (ASPL). No obstante, usted puede ejercitar sus derechos de acceso,
> > rectificación, cancelación y oposición dispuestos en la mencionada Ley
> > Orgánica, notificándolo por escrito a:
> > ASPL - Protección Datos, C/Antonio Suárez 10 A-102, 28802, Alcalá de
> > Henares (Madrid).
> > 
> > _______________________________________________
> > hybi mailing list
> > hybi@ietf.org
> > https://www.ietf.org/mailman/listinfo/hybi
> > 
> 

-- 
Francis Brosnan Blázquez <francis.brosnan@aspl.es>
ASPL
91 134 14 22 - 91 134 14 45 - 91 116 07 57

AVISO LEGAL

Este mensaje se dirige exclusivamente a su destinatario. Los datos
incluidos en el presente correo son confidenciales y sometidos a secreto
profesional, se prohíbe divulgarlos, en virtud de las leyes vigentes. Si
usted no lo es y lo ha recibido por error o tiene conocimiento del mismo
por cualquier motivo, le rogamos que nos lo comunique por este medio y
proceda a destruirlo o borrarlo.

En virtud de lo dispuesto en la Ley Orgánica 15/1999, de 13 de
diciembre, de Protección de Datos de Carácter Personal, le informamos de
que sus datos de carácter personal, recogidos de fuentes accesibles al
público o datos que usted nos ha facilitado previamente, proceden de
bases de datos propiedad de Advanced Software Production Line, S.L.
(ASPL). No obstante, usted puede ejercitar sus derechos de acceso,
rectificación, cancelación y oposición dispuestos en la mencionada Ley
Orgánica, notificándolo por escrito a:
ASPL - Protección Datos, C/Antonio Suárez 10 A-102, 28802, Alcalá de
Henares (Madrid).