Re: [rtcweb] Data channel setup: scalability, user experience, labels

Harald Alvestrand <harald@alvestrand.no> Wed, 06 March 2013 15:29 UTC

Return-Path: <harald@alvestrand.no>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 64D0621F85FC for <rtcweb@ietfa.amsl.com>; Wed, 6 Mar 2013 07:29:46 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -110.599
X-Spam-Level:
X-Spam-Status: No, score=-110.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8, USER_IN_WHITELIST=-100]
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 qOn0pYc8TyDR for <rtcweb@ietfa.amsl.com>; Wed, 6 Mar 2013 07:29:45 -0800 (PST)
Received: from eikenes.alvestrand.no (eikenes.alvestrand.no [158.38.152.233]) by ietfa.amsl.com (Postfix) with ESMTP id 6890221F846C for <rtcweb@ietf.org>; Wed, 6 Mar 2013 07:29:45 -0800 (PST)
Received: from localhost (localhost [127.0.0.1]) by eikenes.alvestrand.no (Postfix) with ESMTP id 7651539E05D for <rtcweb@ietf.org>; Wed, 6 Mar 2013 16:29:43 +0100 (CET)
X-Virus-Scanned: Debian amavisd-new at eikenes.alvestrand.no
Received: from eikenes.alvestrand.no ([127.0.0.1]) by localhost (eikenes.alvestrand.no [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id lnRgyInIIUX4 for <rtcweb@ietf.org>; Wed, 6 Mar 2013 16:29:42 +0100 (CET)
Received: from [172.16.39.12] (unknown [74.125.121.33]) by eikenes.alvestrand.no (Postfix) with ESMTPSA id F36B039E03A for <rtcweb@ietf.org>; Wed, 6 Mar 2013 16:29:41 +0100 (CET)
Message-ID: <513760E3.6070601@alvestrand.no>
Date: Wed, 06 Mar 2013 16:29:39 +0100
From: Harald Alvestrand <harald@alvestrand.no>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130221 Thunderbird/17.0.3
MIME-Version: 1.0
To: rtcweb@ietf.org
References: <39821B4C400EC14DAD4DB25330A9271A01929A@FR711WXCHMBA03.zeu.alcatel-lucent.com>
In-Reply-To: <39821B4C400EC14DAD4DB25330A9271A01929A@FR711WXCHMBA03.zeu.alcatel-lucent.com>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
Subject: Re: [rtcweb] Data channel setup: scalability, user experience, labels
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <rtcweb.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rtcweb>
List-Post: <mailto:rtcweb@ietf.org>
List-Help: <mailto:rtcweb-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 06 Mar 2013 15:29:46 -0000

On 03/04/2013 07:36 PM, MARCON, JEROME (JEROME) wrote:
> I would like to get rough opinions on three data channel related topics:
>
> Scalability-challenging scenarios
> ---------------------
> If I am not mistaken, Randell mentioned in Boston some data channel setup scenarios like: 1000 data channels opened in the same session, and possibly 100 data channels opened simultaneously (usage: file transfer). I agree it is important to keep some scalability objectives in mind when taking decisions on the data channel setup design. So what about a list of real-life scalability-challenging scenarios like:
>
> 1. No SCTP association is established, and an endpoint wishes to open 100 data channels for the same usage (e.g. file transfer)
>
> 2. An SCTP association is established, and an endpoint wishes to open 100 data channels for the same usage (e.g. file transfer)
>
> 3. An endpoint creates and closes a data channel at a high frequency, for the same usage (probably an app misbehavior here, but...)
>
> 4. ...any other?

If you want to establish minimum performance levels that a conforming 
application will have to support, we can certainly consider that.

We should start by stating the minimum number of video and audio 
channels that a conforming application will have to support, since this 
is important for a lot of the RTCWEB use cases, and may impact really 
scarce resources like hardware decoders.

Supporting an extra data channel is one more control block. Perhaps a 
few kilobytes of RAM. Buffer space (if the data channel congests) is 
likely to take far more memory than the control blocks; should we also 
create specifications on the minimum amount of memory available for buffers?

Seriously, I see all these as quality-of-implementation issues. We 
should make sure the API specification is clear about what happens when 
the browser runs out of resources, and leave it at that.
(FWIW, a rendering process in Chrome that runs out of memory, for any 
reason, will crash. Recovery is accomplished by the user pushing "reload".)

> User consent
> ---------------------
> These scalability-challenging scenarios not only raise scalability issues, but user experience issues as well. Should these be relevant in IETF (and not in W3C), which user consent is appropriate in the context of data channel setup ?
>
> A) Assuming an initial/updating SDP offer declaring one 'chat' channel and 100 'file transfer' channels, each with a distinct label. The user consent will be:
> * 1-line: "open data channels [for this time only | anytime during this session] for any usage/subprotocol"
> * 2-line: "open data channels [for this time only | anytime during this session] for usage/subprotocol: (1) chat (2) file transfer"
> * 101-line: "open data channels for this time only for usage/subprotocol.label: (1) chat.label1 (2) file transfer.label 2... (101) file transfer.label 101"
>
> B) Assuming a data channel created in-band, with a subprotocol already negotiated
> * I assume user consent is not required here ?
>
> C) Assuming a data channel created in-band, with a subprotocol 'file transfer' never negotiated before in the SDP handshake (I think only Randell's proposal allows this)
> * 1-line: "open a data channel for this time only for usage/subprotocol.label = chat.label1"
> * 1-line: "open a data channel [for this time only | anytime during this session] for usage/subprotocol = chat"
>
>  From these (too much detailed) cases, we can identify 3 main types of user consent for data channel setup:
> U1. open any number of data channels of any type: prompted at the time of SCTP association setup
> U2. open any number of data channels of a given usage/subprotocol: prompted the first time this subprotocol is signaled to the peer (in SDP or in-band)
> U3. open one data channel of a given usage/subprotocol of a given label

We already have consensus that data channels don't require user consent; 
they expose no significant new security issues compared to data transfer 
via a Web server, which is already possible without user consent.

Please stop; the horse is dead.

> Label usefulness
> ---------------------
> I would like to understand the usefulness of data channel labels. Considering that:
> - (if user consent is of type U1 or U2 described above) labels do not take part of user consent
> - labels are no longer used as data channel identifiers (SCTP stream numbers are better for this, according to the 3 data channel setup proposals on the table: Randell's, Martin's and mine).
> - W3C says nothing about the use of data channel labels

Randell's proposal means that the channel number is not known before the 
channel is created for the normal case. (He suggests an "advanced" 
mechanism for forcing the channel number.)

Labels are useful for creating channels where the receiving application 
knows what channels to expect, but doesn't know the channel number in 
advance.

Exercise for the reader: Write an application that uses multiple data 
channels, and does not force channel numbers. Try

> Jerome
> _______________________________________________
> rtcweb mailing list
> rtcweb@ietf.org
> https://www.ietf.org/mailman/listinfo/rtcweb