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

Christer Holmberg <christer.holmberg@ericsson.com> Fri, 01 March 2013 13:33 UTC

Return-Path: <christer.holmberg@ericsson.com>
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 BAB5D21F905F for <rtcweb@ietfa.amsl.com>; Fri, 1 Mar 2013 05:33:28 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.247
X-Spam-Level:
X-Spam-Status: No, score=-6.247 tagged_above=-999 required=5 tests=[AWL=0.002, BAYES_00=-2.599, HELO_EQ_SE=0.35, RCVD_IN_DNSWL_MED=-4]
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 o6TLfo+pVzoz for <rtcweb@ietfa.amsl.com>; Fri, 1 Mar 2013 05:33:28 -0800 (PST)
Received: from mailgw2.ericsson.se (mailgw2.ericsson.se [193.180.251.37]) by ietfa.amsl.com (Postfix) with ESMTP id 406E721F902E for <rtcweb@ietf.org>; Fri, 1 Mar 2013 05:33:27 -0800 (PST)
X-AuditID: c1b4fb25-b7f366d000004d10-ad-5130ae262419
Received: from ESESSHC013.ericsson.se (Unknown_Domain [153.88.253.124]) by mailgw2.ericsson.se (Symantec Mail Security) with SMTP id AC.17.19728.62EA0315; Fri, 1 Mar 2013 14:33:26 +0100 (CET)
Received: from ESESSMB209.ericsson.se ([169.254.9.82]) by ESESSHC013.ericsson.se ([153.88.183.57]) with mapi id 14.02.0318.004; Fri, 1 Mar 2013 14:33:26 +0100
From: Christer Holmberg <christer.holmberg@ericsson.com>
To: Harald Alvestrand <harald@alvestrand.no>
Thread-Topic: [rtcweb] JSEP-03: O/A state machine and trickle ICE with forking
Thread-Index: Ac4VKEWZ4cYZzPT+TXSns1oyaegaDgAGp8mAAA6+H/AAH3olAAAZtDSAAALeZcAAAQ0NgAACMl1A
Date: Fri, 01 Mar 2013 13:33:24 +0000
Message-ID: <7594FB04B1934943A5C02806D1A2204B10E16F@ESESSMB209.ericsson.se>
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> <5130A2E7.8060900@alvestrand.no>
In-Reply-To: <5130A2E7.8060900@alvestrand.no>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [153.88.183.20]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrDLMWRmVeSWpSXmKPExsUyM+Jvja7aOoNAg/l7rC2O9XWxWaz9187u wORxZcIVVo8lS34yBTBFcdmkpOZklqUW6dslcGUs7L7KVjBDumLl7j2sDYxbhboYOTkkBEwk nq88zwxhi0lcuLeerYuRi0NI4BCjxJdf19hAEkICixglGrrCuxg5ONgELCS6/2mDhEUEdCQe 7m9gArGZBdQl7iw+xw5iCwv4Stw8vJYJoiZA4kTLf1YIO0qibdEvMJtFQEXi39mrYDavgLdE 05aFTBB7FzNL9B2+CHYQp4CuxI/rV1hAbEag476fWgO1TFzi1pP5TBBHC0gs2QPzgKjEy8f/ WCFsRYmr05dD1etILNj9iQ3C1pZYtvA1M8RiQYmTM5+wTGAUm4Vk7CwkLbOQtMxC0rKAkWUV I3tuYmZOernRJkZgjBzc8lt1B+OdcyKHGKU5WJTEecNdLwQICaQnlqRmp6YWpBbFF5XmpBYf YmTi4JRqYLQUvfStSZO/0jvMNk2cQdgke/+rmyfkdEMzOxbcObZTJSnsJZvjTZnVrmGpfUb7 Lh5jzutc82LfvfdLsr5b+jcsWKYcLCbn56X37qPJ/6ulWeJeAX0zRY7zuNkWOFh89RBXXPjd TG/2O7+sp00/ElMKu5jY05J4Tlx8ZWhV3lHdrvvacj6vEktxRqKhFnNRcSIAiCgWgF8CAAA=
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 13:33:28 -0000

Hi,

>>> 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?

It's not that common for the offerer (the BROWSER in this case) to RECEIVE an offer in the backward direction before the call has been established, but I HAVE seen such flow(s) somewhere.

However, it is more common for the offerer to SEND a new offer (as I showed in Q_OA_3) before the call has been established. It's used e.g. for negotiation down codecs, changing the media direction attribute, changing pre-conditions status - and, for BUNDLE.

>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?)

Please keep in mind that, in SIP terms, we are talking about two separate early SIP dialogs, and the SDP offer/answer state machines are independent from each other. So, it would be allowed.

PeerConnection cloning would introduce the same concept in browsers, as each clone could represent a separate SIP early dialog. 

Regards,

Christer