Re: [rtcweb] Proposal for PeerConnection cloning

"Ejzak, Richard P (Richard)" <richard.ejzak@alcatel-lucent.com> Tue, 08 May 2012 00:59 UTC

Return-Path: <richard.ejzak@alcatel-lucent.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 B961721F847F for <rtcweb@ietfa.amsl.com>; Mon, 7 May 2012 17:59:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.311
X-Spam-Level:
X-Spam-Status: No, score=-7.311 tagged_above=-999 required=5 tests=[AWL=-0.713, BAYES_00=-2.599, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-4]
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 BvVa034iWxUM for <rtcweb@ietfa.amsl.com>; Mon, 7 May 2012 17:59:24 -0700 (PDT)
Received: from ihemail4.lucent.com (ihemail4.lucent.com [135.245.0.39]) by ietfa.amsl.com (Postfix) with ESMTP id 17EDA21F8470 for <rtcweb@ietf.org>; Mon, 7 May 2012 17:59:23 -0700 (PDT)
Received: from usnavsmail2.ndc.alcatel-lucent.com (usnavsmail2.ndc.alcatel-lucent.com [135.3.39.10]) by ihemail4.lucent.com (8.13.8/IER-o) with ESMTP id q480xLAf015024 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for <rtcweb@ietf.org>; Mon, 7 May 2012 19:59:22 -0500 (CDT)
Received: from USNAVSXCHHUB01.ndc.alcatel-lucent.com (usnavsxchhub01.ndc.alcatel-lucent.com [135.3.39.110]) by usnavsmail2.ndc.alcatel-lucent.com (8.14.3/8.14.3/GMO) with ESMTP id q480xLa2028035 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NOT) for <rtcweb@ietf.org>; Mon, 7 May 2012 19:59:21 -0500
Received: from USNAVSXCHMBSA1.ndc.alcatel-lucent.com ([135.3.39.127]) by USNAVSXCHHUB01.ndc.alcatel-lucent.com ([135.3.39.110]) with mapi; Mon, 7 May 2012 19:59:21 -0500
From: "Ejzak, Richard P (Richard)" <richard.ejzak@alcatel-lucent.com>
To: "rtcweb@ietf.org" <rtcweb@ietf.org>
Date: Mon, 07 May 2012 19:59:20 -0500
Thread-Topic: [rtcweb] Proposal for PeerConnection cloning
Thread-Index: Ac0smPDA2BOMigG/Q02npduDfRhMyQAG+mVg
Message-ID: <6F428EFD2B8C2F49A2FB1317291A76C11364EC0859@USNAVSXCHMBSA1.ndc.alcatel-lucent.com>
References: <6F428EFD2B8C2F49A2FB1317291A76C11364EC028C@USNAVSXCHMBSA1.ndc.alcatel-lucent.com> <4FA83F6D.9040308@alvestrand.no>
In-Reply-To: <4FA83F6D.9040308@alvestrand.no>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: en-US
Content-Type: multipart/alternative; boundary="_000_6F428EFD2B8C2F49A2FB1317291A76C11364EC0859USNAVSXCHMBSA_"
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 2.57 on 135.245.2.39
X-Scanned-By: MIMEDefang 2.64 on 135.3.39.10
Subject: Re: [rtcweb] Proposal for PeerConnection cloning
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, 08 May 2012 00:59:27 -0000

Thanks, Harald, Randell.

Question 1: I have no strong opinion on whether each local stream should inherit its parent's state or get reset to a default value, but inheriting the state seems cleaner (today).  It must be possible to control the state of each cloned local stream separately.

Question 2: I should have been more careful in my choice of words.  Randell interpreted my meaning correctly.  My meaning is better indicated with the word "simulcast", as Randell suggests.  I NEVER intended the use of "IP multicast addressing".

Richard


________________________________
From: rtcweb-bounces@ietf.org [mailto:rtcweb-bounces@ietf.org] On Behalf Of Harald Alvestrand
Sent: Monday, May 07, 2012 4:32 PM
To: rtcweb@ietf.org
Subject: Re: [rtcweb] Proposal for PeerConnection cloning

Richard, thank you for doing this! It's definitely the most thought-through proposal I've seen on this question!

Two questions that are different from what others have raised:

On 05/06/2012 08:54 PM, Ejzak, Richard P (Richard) wrote:
Harald asked for a proposal for PeerConnection cloning, so here it goes:

I propose to create a new constructor "ClonePeerConnection" (CPC below) with the following semantics.


 1.  CPC will create a new PeerConnection object when successful.  The resulting PC behaves just like any other PC except as described below.
 2.  CPC will take as input a reference to an existing PeerConnection (PC) object (no configuration or IceCallback parameters).
 3.  CPC can clone any other PC (including a cloned PC).  The sequence of cloning is not important and parents have no particular status different from any generation of clone.
 4.  CPC will fail if either the local description of the parent PC is not set or the parent PC ICE is in ICE_CLOSED or ICE_GATHERING state.  The parent PC can be in the OPENING or ACTIVE state.
 5.  The CPC object will inherit the local streams, local ICE candidates, and local description of the PC.
when it inherits the local streams, do you assume that unless the JS applies some setting, they will also inherit the "enabled/disabled" state, but that the "enabled/disabled" state can be changed independently for each PeerConnection's local streams after the cloning?


 1.
 2.  The remote streams and remote description for the CPC object will be set to empty.
 3.  The CPC object will be set to the OPENING state to reflect that only the local description is set.
 4.  The ICE states other than CLOSED and GATHERING will be handled independently for each PC and its clones (as is true in standard forking scenarios).
 5.  The ICE state for this clone will be set to ICE_WAITING to reflect that all candidates are available but the remote configuration is not yet set.
 6.  The PC and its clone(s) use a common pool of media resources.
 7.  If the parent PC object has already released unused resources (final ANSWER), resources are reallocated as available to reflect the capabilities for each stream (as they would be reflected in a createOffer).
 8.  The local streams might multicast toward the remote targets depending on the directionality attributes independently set for each PC and clone.
So far, we've stayed away from anything that involves IP multicast. Are you sure it's worth the potential complexity to try to use this here?
Remember that using multicast changes a *lot* of things on both ends of the connections - the sender has to have IP multicast address allocations, he has to decide between SSM and ASM, the recipients have to use a multicast joining protocol, the infrastructure has to be present to carry the multicast groups, we have to have a fallback in case it isn't, the appropriate congestion control protocols are probably different ..... I would prefer to not bring this in scope for this round of WebRTC.
Is there a compelling reason you see for embarking on this particular adventure?


 1.
 2.  The application should manage the directionality attributes for remote streams from different targets to avoid resource conflicts.

CPC will be used primarily if forking is anticipated or actually occurs.  It can also be used to clone a stable PC if desired for other reasons.  When used for SIP forking, creation of the clone can be delayed until an ANSWER actually arrives from a 2nd target as long as final ANSWER hasn't been applied to the parent (PRANSWER is OK).  The parent always handles the first target; the first clone handles the 2nd target; etc.  The application can even try to clone for forking after the first ANSWER is applied to the parent and resources are released, as long as the local description has not changed, at the risk that some resources needed for the 2nd target are no longer available and must be renegotiated.

Comments on this proposal are welcome.

Richard






_______________________________________________

rtcweb mailing list

rtcweb@ietf.org<mailto:rtcweb@ietf.org>

https://www.ietf.org/mailman/listinfo/rtcweb