Re: [rtcweb] Proposal for PeerConnection cloning

Harald Alvestrand <harald@alvestrand.no> Mon, 07 May 2012 21:32 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 4325611E8074 for <rtcweb@ietfa.amsl.com>; Mon, 7 May 2012 14:32:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -110.299
X-Spam-Level:
X-Spam-Status: No, score=-110.299 tagged_above=-999 required=5 tests=[AWL=-0.301, BAYES_00=-2.599, HTML_MESSAGE=0.001, J_CHICKENPOX_41=0.6, RCVD_IN_DNSWL_HI=-8, USER_IN_WHITELIST=-100]
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 Tgbj5YHB7GrL for <rtcweb@ietfa.amsl.com>; Mon, 7 May 2012 14:32:36 -0700 (PDT)
Received: from eikenes.alvestrand.no (eikenes.alvestrand.no [158.38.152.233]) by ietfa.amsl.com (Postfix) with ESMTP id 4019711E8073 for <rtcweb@ietf.org>; Mon, 7 May 2012 14:32:36 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by eikenes.alvestrand.no (Postfix) with ESMTP id 32D9339E1E2 for <rtcweb@ietf.org>; Mon, 7 May 2012 23:32:35 +0200 (CEST)
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 pZKSjZt+86H8 for <rtcweb@ietf.org>; Mon, 7 May 2012 23:32:30 +0200 (CEST)
Received: from [172.28.93.74] (unknown [74.125.122.49]) by eikenes.alvestrand.no (Postfix) with ESMTPSA id 92F0839E107 for <rtcweb@ietf.org>; Mon, 7 May 2012 23:32:30 +0200 (CEST)
Message-ID: <4FA83F6D.9040308@alvestrand.no>
Date: Mon, 07 May 2012 23:32:29 +0200
From: Harald Alvestrand <harald@alvestrand.no>
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.28) Gecko/20120313 Thunderbird/3.1.20
MIME-Version: 1.0
To: rtcweb@ietf.org
References: <6F428EFD2B8C2F49A2FB1317291A76C11364EC028C@USNAVSXCHMBSA1.ndc.alcatel-lucent.com>
In-Reply-To: <6F428EFD2B8C2F49A2FB1317291A76C11364EC028C@USNAVSXCHMBSA1.ndc.alcatel-lucent.com>
Content-Type: multipart/alternative; boundary="------------030403050202050101030304"
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: Mon, 07 May 2012 21:32:39 -0000

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 2^nd 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 
> 2^nd 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 2^nd target are no longer 
> available and must be renegotiated.
>
> Comments on this proposal are welcome.
>
> Richard
>
>
> _______________________________________________
> rtcweb mailing list
> rtcweb@ietf.org
> https://www.ietf.org/mailman/listinfo/rtcweb