Re: [rtcweb] Regarding cloning of PeerConnections when multiple answers are received

Randell Jesup <randell-ietf@jesup.org> Mon, 09 April 2012 14:23 UTC

Return-Path: <randell-ietf@jesup.org>
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 BF7D521F8725 for <rtcweb@ietfa.amsl.com>; Mon, 9 Apr 2012 07:23:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.62
X-Spam-Level:
X-Spam-Status: No, score=-1.62 tagged_above=-999 required=5 tests=[AWL=0.379, BAYES_00=-2.599, J_CHICKENPOX_14=0.6]
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 kMBDZrzw1611 for <rtcweb@ietfa.amsl.com>; Mon, 9 Apr 2012 07:23:16 -0700 (PDT)
Received: from r2-chicago.webserversystems.com (r2-chicago.webserversystems.com [173.236.101.58]) by ietfa.amsl.com (Postfix) with ESMTP id 2643021F86CE for <rtcweb@ietf.org>; Mon, 9 Apr 2012 07:23:15 -0700 (PDT)
Received: from pool-108-16-41-249.phlapa.fios.verizon.net ([108.16.41.249] helo=[192.168.1.12]) by r2-chicago.webserversystems.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.69) (envelope-from <randell-ietf@jesup.org>) id 1SHFUx-0001Lh-6a for rtcweb@ietf.org; Mon, 09 Apr 2012 09:23:15 -0500
Message-ID: <4F82EFF5.5040604@jesup.org>
Date: Mon, 09 Apr 2012 10:19:33 -0400
From: Randell Jesup <randell-ietf@jesup.org>
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20120312 Thunderbird/11.0
MIME-Version: 1.0
To: rtcweb@ietf.org
References: <4F7415D5.80604@ericsson.com> <CAOJ7v-17c5esnEmiwQZ=UBxtHoGF3E0eKX3JgZyC-c+G1EtSuQ@mail.gmail.com> <4F79E03B.3090802@jesup.org> <4F82C1C0.60809@alvestrand.no>
In-Reply-To: <4F82C1C0.60809@alvestrand.no>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - r2-chicago.webserversystems.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - jesup.org
X-Source:
X-Source-Args:
X-Source-Dir:
Subject: Re: [rtcweb] Regarding cloning of PeerConnections when multiple answers are received
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, 09 Apr 2012 14:23:16 -0000

On 4/9/2012 7:02 AM, Harald Alvestrand wrote:
> On 04/02/2012 07:22 PM, Randell Jesup wrote:
>> So the question for me is "what scenarios/use-cases does this enable?"
>>
>> 1) Mesh Conferencing
>>
>> While there are many ways to handle conferencing, if you have a mesh
>> (full or partial), you need to create new PeerConnections for existing
>> members of the mesh when someone joins. There are two ways to do this:
>> a) somehow application-specific tell the new member who to send
>> invites to, and then start N PeerConnection calls with some "I'm in
>> the conference" token;
>> b)have them send N separate generic invites to the service provider
>> which either forwards it to an existing member, or returns it with
>> "it's ok, I've already forwarded invites for it);
>> c) somehow tell all the existing members to invite the new member; or
>> d) have the service provider fork the OFFER from the new member to all
>> the existing members, and have all of them reply with ANSWERs. This
>> requires PeerConnection cloning to work well.
>>
>> I strongly prefer d), and it also reduces conference join time (less
>> round-trips, at least in theory - perhaps noticeably less by sharing
>> the ICE candidate generation).
>
> Hmm.... for one new member, I don't think d) is actually different from
> the case where the client sends an "extra" OFFER when he joins, and the
> server uses the "hanging OFFER" to signal the new member.
> This is a windowing protocol, though - the client would need to send a
> new "hanging OFFER" after the current "hanging OFFER" has been "used
> up".

Right, and there would be complication when a new "hanging offer" hadn't 
yet been sent when another member joins (and it would be very easy for 
bugs to creep in there, as it's evil race-condition testing).  "hanging 
offers" is not a protocol that I would like to implement.

> Cloning allows you to connect multiple new conference mebers as
> fast as the Javascript can accept them. (Which may have issues with
> congestion, but that might be a price worth paying).

And removes a whole passel of error paths and handling.

> It's not clear to me whether hanging OFFERs work with NAT traversal;
> would the ICE machine send keepalives for an association that hasn't
> been associated yet?

This certainly needs investigation; I could see it needing some type of 
occasional "still holding it" notification from the server anyways to 
keep the state active in the client.


-- 
Randell Jesup
randell-ietf@jesup.org