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

Iñaki Baz Castillo <ibc@aliax.net> Mon, 31 October 2011 09:21 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 2110121F8D4A for <rtcweb@ietfa.amsl.com>; Mon, 31 Oct 2011 02:21:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.346
X-Spam-Level:
X-Spam-Status: No, score=-2.346 tagged_above=-999 required=5 tests=[AWL=-0.269, 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 ggok7CPSvqDc for <rtcweb@ietfa.amsl.com>; Mon, 31 Oct 2011 02:21:31 -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 6596721F8D47 for <rtcweb@ietf.org>; Mon, 31 Oct 2011 02:21:31 -0700 (PDT)
Received: by vcbfo1 with SMTP id fo1so5542523vcb.31 for <rtcweb@ietf.org>; Mon, 31 Oct 2011 02:21:30 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.220.150.212 with SMTP id z20mr2301931vcv.58.1320052890820; Mon, 31 Oct 2011 02:21:30 -0700 (PDT)
Received: by 10.220.184.6 with HTTP; Mon, 31 Oct 2011 02:21:30 -0700 (PDT)
In-Reply-To: <4EADF511.2040403@alvestrand.no>
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>
Date: Mon, 31 Oct 2011 10:21:30 +0100
Message-ID: <CALiegfmH7PDDrK60mWhwY=DhUDwvH-pZHdTXrpndWLE1PcGOcw@mail.gmail.com>
From: Iñaki Baz Castillo <ibc@aliax.net>
To: Harald Alvestrand <harald@alvestrand.no>
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 09:21:32 -0000

2011/10/31 Harald Alvestrand <harald@alvestrand.no>:
> I think having a single PeerConnection object send media to multiple peers
> at the same time breaks the model we've been working from.
>
> It may be reasonable to give a PeerConnection the ability to switch from one
> remote peer to another remote peer (to support 180-like things), but I don't
> think it's reasonable to have it connected to multiple remote peers.
>
> So if we support real forking, we'll have to create multiple PeerConnections
> to do that.

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ñaki Baz Castillo
<ibc@aliax.net>