Re: [rtcweb] JSEP-03: O/A state machine and trickle ICE with forking

Harald Alvestrand <harald@alvestrand.no> Fri, 01 March 2013 12:45 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 A1EF621F8899 for <rtcweb@ietfa.amsl.com>; Fri, 1 Mar 2013 04:45:35 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -110.224
X-Spam-Level:
X-Spam-Status: No, score=-110.224 tagged_above=-999 required=5 tests=[AWL=-0.225, BAYES_00=-2.599, J_CHICKENPOX_15=0.6, RCVD_IN_DNSWL_HI=-8, USER_IN_WHITELIST=-100]
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 r3KW35cBEwWd for <rtcweb@ietfa.amsl.com>; Fri, 1 Mar 2013 04:45:35 -0800 (PST)
Received: from eikenes.alvestrand.no (eikenes.alvestrand.no [158.38.152.233]) by ietfa.amsl.com (Postfix) with ESMTP id 9F3EE21F87C5 for <rtcweb@ietf.org>; Fri, 1 Mar 2013 04:45:34 -0800 (PST)
Received: from localhost (localhost [127.0.0.1]) by eikenes.alvestrand.no (Postfix) with ESMTP id 496F839E0FD; Fri, 1 Mar 2013 13:45:28 +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 GRF97OZ7iDUQ; Fri, 1 Mar 2013 13:45:27 +0100 (CET)
Received: from [193.157.215.103] (unknown [193.157.215.103]) by eikenes.alvestrand.no (Postfix) with ESMTPSA id 98E4039E09F; Fri, 1 Mar 2013 13:45:27 +0100 (CET)
Message-ID: <5130A2E7.8060900@alvestrand.no>
Date: Fri, 01 Mar 2013 13:45:27 +0100
From: Harald Alvestrand <harald@alvestrand.no>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130106 Thunderbird/17.0.2
MIME-Version: 1.0
To: Christer Holmberg <christer.holmberg@ericsson.com>
References: <7594FB04B1934943A5C02806D1A2204B10B6DE@ESESSMB209.ericsson.se> <CAOJ7v-0UTceYRjiTL2tPWhnJ914dsk54MYd1vvXAGLmp8ByztQ@mail.gmail.com> <7594FB04B1934943A5C02806D1A2204B10B98F@ESESSMB209.ericsson.se> <CAOJ7v-1VMjQ01J2vxJdwt0M7O7LiBeLLxDeUxCiKp4JRDH+ofA@mail.gmail.com> <51308899.9050802@alvestrand.no> <7594FB04B1934943A5C02806D1A2204B10DF97@ESESSMB209.ericsson.se>
In-Reply-To: <7594FB04B1934943A5C02806D1A2204B10DF97@ESESSMB209.ericsson.se>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
Cc: "rtcweb@ietf.org" <rtcweb@ietf.org>
Subject: Re: [rtcweb] JSEP-03: O/A state machine and trickle ICE with forking
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: Fri, 01 Mar 2013 12:45:35 -0000

On 03/01/2013 12:24 PM, Christer Holmberg wrote:
> Hi Harald,
>
>> My understanding is that the mismatch is that the JS APP isn't giving a consistent story to the browser on whether the answer was final or not.
>> This sequence would work:
>>
>> BROWSER                         JS APP                                    REMOTE ENITTY
>>
>>      ------ create offer ----------
>>                                               -------- SDP Offer 1----------------->
>>                                              <------- SDP Answer 1 ----------------
>>      ------ set remote pranswer(1) ---------
>>                                              <------- SDP Offer 2 -------------------
>>      ------ set remote answer(1) -----
>>      ------ set remote offer(2) -----
>>
>> that is, when the JS app gets the information that there's a new offer incoming, it realizes that Answer 1 needs to be treated as a final answer, and finalizes it before passing in the new offer.
> The problem with such approach is that it will terminate forking, i.e. it will not be possible to pass an SDP Answer from ANOTHER remote entity to the browser.


>
> BROWSER                         JS APP                                    REMOTE ENTITY A         REMOTE ENTITY B
>
>      ------ create offer ----------
>                                               -------- SDP Offer 1----------------->
>                                              ------- SDP Offer 1 ---------------------------------------------------->
>                                              <------- SDP Answer 1 (A) -----------
>      ------ set remote pranswer(1) ---------
>                                              <------- SDP Offer 2 (A) --------------
>      ------ set remote answer(1) -----
>      ------ set remote offer(2) --------
>                                              <------ SDP Answer 1 (B) ---------------------------------------------
>      ------ ???? ----------------------------

Right. I don't think that's avoidable; after a second offer/answer 
exchange, you can't go back and act as if you were still in the first 
offer/answer exchange.

Is there a sequence of SIP operations described in a spec that would 
allow this to happen?

I don't even think it's logically possible in all cases.

For example, if Offer 1 (and answer 1a and 1b) have the form

m=audio

and offer 2 is

m=audio
m=video

then it's not possible to handle Answer 1(b) without dropping the video 
m-line - and in SDP offer/answer, you aren't allowed to drop m-lines, 
ever. (Right?)