Re: [rtcweb] MSID fallback for non-MSID case (Re: Plan A, respun)

Harald Alvestrand <harald@alvestrand.no> Tue, 14 May 2013 12:09 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 1D14B21F9050 for <rtcweb@ietfa.amsl.com>; Tue, 14 May 2013 05:09:06 -0700 (PDT)
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 PRNxVN80B3bV for <rtcweb@ietfa.amsl.com>; Tue, 14 May 2013 05:09:01 -0700 (PDT)
Received: from eikenes.alvestrand.no (eikenes.alvestrand.no [158.38.152.233]) by ietfa.amsl.com (Postfix) with ESMTP id 8696C21F901F for <rtcweb@ietf.org>; Tue, 14 May 2013 05:09:00 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by eikenes.alvestrand.no (Postfix) with ESMTP id 97FDF39E18D; Tue, 14 May 2013 14:08:58 +0200 (CEST)
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 9CYHFTX6DtjD; Tue, 14 May 2013 14:08:57 +0200 (CEST)
Received: from [IPv6:2001:470:de0a:27:f444:dc63:8cb:d3f4] (unknown [IPv6:2001:470:de0a:27:f444:dc63:8cb:d3f4]) by eikenes.alvestrand.no (Postfix) with ESMTPSA id 8F33339E03B; Tue, 14 May 2013 14:08:57 +0200 (CEST)
Message-ID: <51922959.3070708@alvestrand.no>
Date: Tue, 14 May 2013 14:08:57 +0200
From: Harald Alvestrand <harald@alvestrand.no>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130329 Thunderbird/17.0.5
MIME-Version: 1.0
To: Emil Ivov <emcho@jitsi.org>
References: <51894846.3090102@nostrum.com> <518A304A.1030609@alvestrand.no> <518F6338.8070903@jitsi.org> <518F83E5.4060209@alvestrand.no> <518F9280.6070803@jitsi.org> <518FAD13.9050503@alvestrand.no> <CAPvvaaK1bQ+0DwAWwjN2P1RQOAY2cGC0Hf88od2ZnFA0gu6s4g@mail.gmail.com> <518FF3AE.4050505@alvestrand.no> <5191D6C3.4090604@jitsi.org> <5191FCFB.3090704@jitsi.org>
In-Reply-To: <5191FCFB.3090704@jitsi.org>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
Cc: rtcweb@ietf.org
Subject: Re: [rtcweb] MSID fallback for non-MSID case (Re: Plan A, respun)
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: Tue, 14 May 2013 12:09:06 -0000

On 05/14/2013 10:59 AM, Emil Ivov wrote:
>
> On 14.05.13, 09:16, Emil Ivov wrote:
>> Hey Harald,
>>
>> On 12.05.13, 22:55, Harald Alvestrand wrote:
>>> On 05/12/2013 06:03 PM, Emil Ivov wrote:
>>>>> Or you could signal none of them and depend on the fallback case in
>>>>> draft-ietf-mmusic-msid to handle them in a consistent manner, and
>>>>> use other methods to figure out how to handle them...
>>>> If you are referring to section 4.1 that you also pasted earlier in
>>>> this thread, it only talks about one track, per stream, per m= line.
>>>> This doesn't cover the conferencing case I described in my previous
>>>> mail (quoted above).
>>>>
>>> Changing subject as I'm replying to a subtopic, and because I was
>>> misunderstanding what Emil was arguing in favour of.....
>>>
>>> when I wrote that text, I didn't intend it to cover only one SSRC per
>>> stream.
>>> What I intended to say was that when, in an RTP session, a browser gets
>>> several SSRCs that were not mentioned in signalling, it will send
>>> several onaddstream signals to the application, each indicating a new
>>> stream being added, which has exactly one track.
>> Aha! OK, I understand and it sounds better now that I do.
> Oh, just thought of something else while reading Stefan's mail: is it
> really necessary that this should only happen in case no SSRCs have been
> defined? Why not apply that to any unknown SSRC regardless of whether or
> not others exist in SDP?
>
> The second bullet there talks about a possible race condition but I am
> not sure I see how this could occur with valid use of O/A.

The worrying case is:

A sends offer
B sends answer (either with or without MSID)
B starts sending data on some SSRCs
A receives the data, but has not yet seen the answer

The two cases are:

- B sends with MSID. In this case, he expects those specific IDs to be 
signalled in onaddstream.
- B sends without MSID. In this case, he expects that A will announce a 
locally generated ID in onaddstream.

A can't know the difference between those two before he sees the answer 
from B.
In this spec, I've "solved" it by saying that we don't signal 
onaddstream before we see the answer.

After the first answer has been seen, either party knows that new SSRCs 
always will be signalled, so any data on an unknown SSRC can be held 
until the negotiation announcing it is complete - or discarded as "bad 
data" if signalling doesn't happen in a reasonable time.

If we were to permit unknown SSRCs when there are some MSIDs, the 
decision to announce as "Unsignalled MediaStream" or wait for the 
offer/answer announcing the MSID it should be announced with has to 
depend on some other resolution mechanism. I don't like timers, and 
haven't found a better way to do it.

Note: If we follow "plan B"'s idea of having B send an offer with its 
own streams immedately after sending the answer to A, and only announce 
its streams in the counter-offer, not in the answer, and not sending 
data until it gets the answer, this problem goes away; there cannot be a 
case where A gets an SSRC that was intended to be signalled before he 
gets the signalling message that announces it.

I'm sure there's a cost to this solution (the extra half RTT is one 
obvious cost. Are there others?)



>
> Emil
>