[rtcweb] Comments on draft-jennings-rtcweb-plan-01

Stefan Håkansson LK <stefan.lk.hakansson@ericsson.com> Thu, 28 February 2013 15:15 UTC

Return-Path: <stefan.lk.hakansson@ericsson.com>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (localhost []) by ietfa.amsl.com (Postfix) with ESMTP id 97F0521F845D for <rtcweb@ietfa.amsl.com>; Thu, 28 Feb 2013 07:15:12 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.905
X-Spam-Status: No, score=-5.905 tagged_above=-999 required=5 tests=[AWL=0.044, BAYES_00=-2.599, HELO_EQ_SE=0.35, MIME_8BIT_HEADER=0.3, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([]) by localhost (ietfa.amsl.com []) (amavisd-new, port 10024) with ESMTP id 8uIsTiu1lP9A for <rtcweb@ietfa.amsl.com>; Thu, 28 Feb 2013 07:15:11 -0800 (PST)
Received: from mailgw2.ericsson.se (mailgw2.ericsson.se []) by ietfa.amsl.com (Postfix) with ESMTP id 4816E21F8457 for <rtcweb@ietf.org>; Thu, 28 Feb 2013 07:15:11 -0800 (PST)
X-AuditID: c1b4fb25-b7f366d000004d10-ef-512f747e256c
Received: from esessmw0256.eemea.ericsson.se (Unknown_Domain []) by mailgw2.ericsson.se (Symantec Mail Security) with SMTP id 44.CB.19728.E747F215; Thu, 28 Feb 2013 16:15:10 +0100 (CET)
Received: from [] ( by esessmw0256.eemea.ericsson.se ( with Microsoft SMTP Server id; Thu, 28 Feb 2013 16:15:09 +0100
Message-ID: <512F747D.4050403@ericsson.com>
Date: Thu, 28 Feb 2013 16:15:09 +0100
From: Stefan Håkansson LK <stefan.lk.hakansson@ericsson.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130215 Thunderbird/17.0.3
MIME-Version: 1.0
To: "rtcweb@ietf.org" <rtcweb@ietf.org>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrKJMWRmVeSWpSXmKPExsUyM+JvjW5diX6gQc8pSYu1/9rZHRg9liz5 yRTAGMVlk5Kak1mWWqRvl8CVsfTUZsaCU1oVqxa0sDQwTlbqYuTkkBAwkfg4dTk7hC0mceHe erYuRi4OIYGTjBIztv5hgXDWMko8mrMLrIpXQFti6q7fzF2MHBwsAqoSEy6ngYTZBIIl9i8H aebgEBWIkriyzxKiWlDi5MwnLCC2iIC6xOWHF8CmCAsYSbzbdA3MZhawkFj85iCULS/RvHU2 M4gtJKAr8e71PdYJjHyzkIyahaRlFpKWBYzMqxjZcxMzc9LLjTYxAoPm4JbfqjsY75wTOcQo zcGiJM4b7nohQEggPbEkNTs1tSC1KL6oNCe1+BAjEwenVAPjgn9qyq69G8XC1u7cPMWdL9qb vapqd9/SJxJVOeeVFrn25vx6JMywRSP1u+hq4/xbLpnFdxcnXZPojv/a77XgfT2XiYG5raf5 JMOjJ5lsW/ZFmvuWKv5+b56wQGTx5pTzN7JFmZm1YmPV506T0JBq3HXAxYVJo+iQicue+pp7 q//vfeXAMlOJpTgj0VCLuag4EQBlmJod6AEAAA==
Subject: [rtcweb] Comments on draft-jennings-rtcweb-plan-01
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: Thu, 28 Feb 2013 15:15:12 -0000

I have some questions and comments on the -01 draft [1]:

This really combines model A (initial part of the doc) and B (section 
7.2) as discussed in Boston.

Regarding the idea of changing the msid structure, and providing an RTP 
header extension, I'm not sure what the gain really is. Sure, we can 
experience SSRC collisions - but it is a well known problem and easy to 
recover from.

I also note that in your proposal the MediaStreamTrack id is carried 
("f") but not the _MediaStream_ id (as "msid" and "r" seem to identify 
the PeerConnection).

I would prefer to use SSRC to identify RTP flows, and to signal how 
SSRC's relate to PC-streams and PC-tracks (and possibly sources) in the 
SDP (similar to what is proposed in the current msid draft)

When it comes to the RTP header extension, I can see the advantage in 
some situations (i.e. when the signaling is late), but is it worth it? 
Would we not get a lot of problems with legacy implementations? And, 
what about the overhead? Adding 128 bits is quite much - used with an 
codec with 20 ms framing it would add 6.4 kbps, and many speech codecs 
work fine at similar bitrates. (OTOH, it should be easy to compress in 
some header compression if that is deployed)

Another item that probably need some thinking is how this works with 
trickle ICE. With the model of having (at least) one m-line per 
PC-track, the number of m-lines would vary a lot. For example, what 
happens if a PC is created, two PC-streams are added, followed by 
createOffer/setLocal (now the ICE machinery starts); and then, before 
things settle, the app adds two PC-tracks to one of the attached 
PC-streams and removes the other PC-stream from the PeerConnection 
followed by a new createOffer/setLocal? Is there a risk that the ICE 
-candidate's references to m-lines gets out of sync?

Needs definition
LS - I read it as Lip Sync (as specified in RFC5388); is that what is meant?
Application - is this the browser, or the web application running in the 
browser, or the combination?
System - not defined.
Device in the msid discussion - seems to mean PC, but I'm not sure

"Requirements" section
The list differs a bit from what was discussed at the Boston interim 
[2]. E.g. "Add/remove one way video flows with minimal chance of glare on 
non legacy apps" is missing. What is the reasoning behind?

"Approach" section
In bullet 7 it is said that "If a PC-Track appears in more than one 
PC-Stream, then all the PC-Streams with that PC-Track MUST have the same 
CNAME." Technically that can not happen since they will be individual 
PC-Track instances (as defined in the PC-Stream constructor). Perhaps 
reformulate to something like "If PC-Track's representing the same 
source appears in more than one PC-Stream, then all the PC-Streams with 
PC-Track's representing that source MUST have the same CNAME."

I don't understand bullet 13. What is really meant? I think that having 
a way for the browser's to establish an understanding on how many 
video/audio tracks that can be supported (coded, transmitted, decoded) 
simultaneously makes a lot of sense. But I see no need for an API where 
the web app can define its wishes - this can be handled as app signaling 
and needs no API.

I don't fully understand how you intend "label" to be used. In the W3C 
space, this is now a readonly attribute that IIUAC could give info like 
"USB cam makeX" on the local side, but would be null on the remote side. 
I sense that you intend it more to be used to identify the purpose of a 
PC-track or stream. Possibly, the SDP attribute "label" could be used to 
bind PC-tracks for the same purpose to the same m-line, see more below, 
but that is another "label" to me.

"Open Issues" section
It is said that

"The overall solution is complicated considerably by the fact that
    WebRTC allows a PC-Track to be used in more than one PC-Stream but
    requires only one copy of the RTP data for the track to be sent."

Again, with the current PC-stream constructor, you can't have the same 
PC-track in two PC-stream - those are individual objects. And I don't 
think we've really discussed the optimization of sending only one RTP 
for two PC-tracks representing the same source.

Other comments/questions
In a rtcweb context (in a browser-to-browser) scenario, it seems most 
natural that all m-lines are unidirectional per default. The reason is 
that the API design, which deals with sending streams, fits better with 
this model. As an example, say that A starts sending two videos to B, 
and B then sends three videos to A. How should those two and three 
streams share m-lines? I think we could add a possibility for apps that 
want them to share to do this via a constraint in the API if we see need 
(and perhaps the SDP attribute "label" could be used).

One approach of handling simulcast would be to use different PC-streams 
(and possibly even different PeerConnection's) for the different 
resolutions. But then synchronization across PC-streams (or even 
PeerConnections) is needed.


[1] http://tools.ietf.org/html/draft-jennings-rtcweb-plan-01