Re: [rtcweb] Media forking solution for SIP interoperability (without a media gateway)

Iñaki Baz Castillo <ibc@aliax.net> Mon, 31 October 2011 10:24 UTC

Return-Path: <ibc@aliax.net>
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 E52C121F8C1A for <rtcweb@ietfa.amsl.com>; Mon, 31 Oct 2011 03:24:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.344
X-Spam-Level:
X-Spam-Status: No, score=-2.344 tagged_above=-999 required=5 tests=[AWL=-0.267, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, J_CHICKENPOX_34=0.6, MIME_8BIT_HEADER=0.3, RCVD_IN_DNSWL_LOW=-1]
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 YdIoEIGRfIfZ for <rtcweb@ietfa.amsl.com>; Mon, 31 Oct 2011 03:24:32 -0700 (PDT)
Received: from mail-vx0-f172.google.com (mail-vx0-f172.google.com [209.85.220.172]) by ietfa.amsl.com (Postfix) with ESMTP id 84C2A21F8B87 for <rtcweb@ietf.org>; Mon, 31 Oct 2011 03:24:32 -0700 (PDT)
Received: by vcbfo1 with SMTP id fo1so5576469vcb.31 for <rtcweb@ietf.org>; Mon, 31 Oct 2011 03:24:32 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.220.147.198 with SMTP id m6mr2455571vcv.128.1320056671973; Mon, 31 Oct 2011 03:24:31 -0700 (PDT)
Received: by 10.220.184.6 with HTTP; Mon, 31 Oct 2011 03:24:31 -0700 (PDT)
In-Reply-To: <7F2072F1E0DE894DA4B517B93C6A058522356F2414@ESESSCMS0356.eemea.ericsson.se>
References: <CALiegfkikmpi55ePUo=AQCQvorv4_6v2ByTCdL=V_=umcCEpUA@mail.gmail.com> <7F2072F1E0DE894DA4B517B93C6A05852235717390@ESESSCMS0356.eemea.ericsson.se> <3BBCA56E-CA6E-4585-8EBB-ED6EDFED789F@cisco.com> <4EADF511.2040403@alvestrand.no> <CALiegfmH7PDDrK60mWhwY=DhUDwvH-pZHdTXrpndWLE1PcGOcw@mail.gmail.com> <7F2072F1E0DE894DA4B517B93C6A058522356F2414@ESESSCMS0356.eemea.ericsson.se>
Date: Mon, 31 Oct 2011 11:24:31 +0100
Message-ID: <CALiegfnuHs=xwzAE_qt37Xt1r8EKHP=O0JQw=biL0VqYY5CJ4Q@mail.gmail.com>
From: Iñaki Baz Castillo <ibc@aliax.net>
To: Christer Holmberg <christer.holmberg@ericsson.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Cc: "rtcweb@ietf.org" <rtcweb@ietf.org>
Subject: Re: [rtcweb] Media forking solution for SIP interoperability (without a media gateway)
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: Mon, 31 Oct 2011 10:24:34 -0000

2011/10/31 Christer Holmberg <christer.holmberg@ericsson.com>:
>> AFAIK there are three alternatives here:
>>
>>
>> 1) PeerConnection can just communicate with a single peer.
>>
>> 2) PeerConnection can just communicate with a single peer but
>> the per can be replaced later (so still we reuse the same
>> local candidates, but ICE+SRTP must be "restarted". This
>> solves serial forking.
>>
>> 3) PeerConnection can communicate with multiple peers at the
>> same time. This solves serial and parallel forking.
>>
>>
>> In my opinion:
>>
>> - Option 1) is very limited.
>>
>> - Option 2) is a MUST.
>>
>> - Option 3) would be great but it introduces some complexity.
>> Imagine there is parallel forking and the WebRTC client
>> recives 3 SDP's from 3 different peers, and passes all of
>> them to the same PeerConnection. At same point a remote peer
>> stops sending media so we get a callback
>> "peerStopsSendingMedia()" in out PeerConnection. Does it mean
>> that we can close the PeerConnection? not, because we must
>> check whether there are other active peers yet (and there are
>> in this case). So this introduces complexity at JavaScript
>> level. The question is: is this complexity not so hard? can
>> it be limited by some parameter when creating a
>> PeerConnection? I imagine soemthing like:
>>
>>    new PeerConnection( capabilities=[],
>> allow_multiple_peers=false/true)
>
> I am not sure whether option 3) uses a single PeerConnection, but one alternative is that we use multiple PC objects, but they all share the local parameters and candidates.

Maybe I'm wrong, but AFAIK the local candidates are generated when
creating a PeerConnection object. This is: you create a PC object and
internally it gets the candidates, so you cannot create a second PC
and use the same local candidates. Am I wrong?



> Personally I think option 2) would be ok for most cases, and enough to support in "phase 1".

I also agree. Also, many SIP phones just render a single media stream
even when media parallel forking occurs, and switch to the definitive
SDP when the 200 arrives, so IMHO this is not a great limitation for
WebRTC.



> And, IF someone really wants to support parallel forking, there is always the possibility to create new PC objects, send offers associated with them etc.

Right.



-- 
Iñaki Baz Castillo
<ibc@aliax.net>