[rtcweb] State of the Forking discussion
Magnus Westerlund <magnus.westerlund@ericsson.com> Thu, 03 November 2011 10:13 UTC
Return-Path: <magnus.westerlund@ericsson.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 637281F0C5F for <rtcweb@ietfa.amsl.com>; Thu, 3 Nov 2011 03:13:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -107.259
X-Spam-Level:
X-Spam-Status: No, score=-107.259 tagged_above=-999 required=5 tests=[AWL=0.740, BAYES_00=-2.599, GB_I_INVITATION=-2, J_CHICKENPOX_55=0.6, RCVD_IN_DNSWL_MED=-4, 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 qFti4-FNpmK2 for <rtcweb@ietfa.amsl.com>; Thu, 3 Nov 2011 03:13:32 -0700 (PDT)
Received: from mailgw10.se.ericsson.net (mailgw10.se.ericsson.net [193.180.251.61]) by ietfa.amsl.com (Postfix) with ESMTP id 1C4551F0C3C for <rtcweb@ietf.org>; Thu, 3 Nov 2011 03:13:31 -0700 (PDT)
X-AuditID: c1b4fb3d-b7c26ae0000035b9-9d-4eb2694a54d3
Received: from esessmw0256.eemea.ericsson.se (Unknown_Domain [153.88.253.125]) by mailgw10.se.ericsson.net (Symantec Mail Security) with SMTP id 27.6B.13753.A4962BE4; Thu, 3 Nov 2011 11:13:30 +0100 (CET)
Received: from [127.0.0.1] (153.88.115.8) by esessmw0256.eemea.ericsson.se (153.88.115.97) with Microsoft SMTP Server id 8.3.137.0; Thu, 3 Nov 2011 11:13:30 +0100
Message-ID: <4EB26945.40607@ericsson.com>
Date: Thu, 03 Nov 2011 11:13:25 +0100
From: Magnus Westerlund <magnus.westerlund@ericsson.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:7.0.1) Gecko/20110929 Thunderbird/7.0.1
MIME-Version: 1.0
To: "rtcweb@ietf.org" <rtcweb@ietf.org>
X-Enigmail-Version: 1.3.2
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
X-Brightmail-Tracker: AAAAAA==
Subject: [rtcweb] State of the Forking discussion
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: Thu, 03 Nov 2011 10:13:33 -0000
WG, I just reviewed the last weeks Forking discussion. This includes the threads "RTCWeb Forking usecase [was RE: draft-kaplan-rtcweb-sip-interworking-requirements-00]" and "Media forking solution for SIP interoperability (without a media gateway)" As far as I can tell there is not yet even a rough consensus. Therefore I will attempt to summarize what I personally believe to be the important points and alternatives in this discussion. Keep in mind that my assumptions or understanding may be unclear or have errors. So don't hesitate to challenge what I write. I think it is important that there are in fact at least two important questions here. 1. Is forking needed to be supported at all? 2. If it is supported in which form would it supported in. so lets start looking into the arguments and possibilities for these two questions. And I do hope that you will read to the end of this mail which is quite long. Lets start with the high level functionality part. Is forking needed and what usage does it have. So forking is all about sending out an invitation to a media session including an actual media configuration offer, i.e. SDP Offer, then get more than a single answer to that offer back. How you deal with these answers as they come in is the difference between serial and parallel forking. So lets define those. Parallel forking: For each answer you receive you establish a new actual media session. Thus if you receive two answers you will have to different media sessions that are potentially in use at the same time. Serial forking: The first answer is received and results the establishment of a media session. At a later point in time a second answer is received. At that point you take the decision if that second answer is going to be used to establish a new media session that replaces the first one. In other words at any given time you will only have a single media session established based on each offer. So there has been a number of different views on how one can see on forking. And I think I will have to bring in a bit reflections on how this can be done with the current PeerConnection API. A) No forking is needed: Between WebRTC end-points there is no need for forking. Instead the application can send out session invitations to the peers it wants to talk to. These are without any SDP Offer equivalent, instead end-points that want to communicate they create PeerConnections, which results in SDP Offers. Thus the communication initiating end-point becomes the ones that provides SDP answers and get one PeerConnection per remote end-point that actually want to communicate. B) We need to have some interworking with SIP: So the fundamental here is that it needs to be reasonable to interwork with SIP, independent if one uses a SIP in JS in the application running on the WebRTC enabled browser, or have signalling gateway in the webserver, or as a remote WebRTC peer. The issue is that A)'s method of initiating call doesn't work well with SIP. There is a need to send a SIP Invite with an SDP Offer and that can result in multiple answers. To resolve this one could deal with this in a couple of different ways: B1) Use Iñaki's proposal which forces the WebRTC application to create a second PeerConnection and then forces an update in the SIP domain with the second peer-connections Offer. However, it was pointed out that this doesn't work with SIP Provisional answers, as used by ICE for example, unless PRACK is supported. The level of PRACK support is reasonable but far from universal so this would limit the SIP UAs one can interwork with. However, from WebRTC perspective no forking support is needed. A single PeerConnection results in one offer and a single answer is processed. B2) Require WebRTC to handle replace Answers: So the idea here is that one changes the PeerConnection API and have underlying functionality so that at any point in time a new Answer can pushed onto a PeerConnection and that forces the media session to be reestablished if needed. So if the ICE candidate list is different an ICE restart happens. This clearly supports serial forking. It also can create some complexities in the underlying SDP handling logic if one desires to minimize the media impact. B3) Local side shared parameters in multiple PeerConnections: The idea in this proposal is that all PeerConnections generated in a browser context, like a tab will implicit share the fundamental parameters like ICE candidates etc for the number of media streams added. So if one creates a second PeerConnection with the same audio+video MediaStream object added I will get an offer that is mostly identical to the the first PeerConnection, thus I can push in the answer from the first PeerConnection Offer into the second PC object and it will still work. The downside of this is that it is implicit and it becomes difficult to determine when it works and when it will fail. It will also be highly dependent on the application performing the right process to get it to work. It also causes a sharing of the parameters when not needed or desired, which primarily is an issue from a security point of view, especially with SDES keys (see below). The positive is this likely requires no API changes. This method would also support parallel forking. B4) Cloning/Factory for PeerConnection: On the API level there will be explicit support for generating multiple PeerConnections from the same base. This could either be a factory for PeerConnections or some Object constructor that clones an existing PeerConnection but that is a W3C question. By being explicit some of the B3) issues goes away and the applications can choose when this should happen or not. This also support parallel forking as the application can deal with each media session independently. This clearly will have some impact on the API. Additional considerations: Shared SDES keys: B2 to B4 will result in that SDES keys from the Offering party to be used towards all invited parties. This is security risk as any of the invited parties can spoof the offering side towards any of the other invited parties. This threat can be resolved by having the inviter rekey immediately after having received an answer. Sharing ICE candidates: B3 and B4 and also B2 to some degree will share the ICE candidates. That has certain implications. One is the positive in that it minimizes the resource consumption as additional PeerConnections come at very little extra cost, no need for additional ICE gathering candidate phases, and also be very quick as no external communication is required. The downside of this is that the end-points candidates must always be kept alive as long as some PeerConnection instance exist. Because the browser never knows when the application may create an additional PC and expect them to have the same ICE candidates. It should also be noted that the answering WebRTC end-point will need to gather candidates for each offer. Otherwise it will become impossible to create multiple PeerConnections between the same end-points if that is desired by the application. I know the above doesn't list all of the pro and cons of the different alternatives. So please fill in additional arguments. And if I missed some proposal please add that also if relevant As you may have noted I the two questions in the above have kind of floated together. The reason for this is that I think the majority are fine with having SIP support as long as it doesn't have to high cost or complexity associated with it. Thus, the question how becomes very intertwined with forking support yes or no. So please continue the discussion Cheers Magnus Westerlund ---------------------------------------------------------------------- Multimedia Technologies, Ericsson Research EAB/TVM ---------------------------------------------------------------------- Ericsson AB | Phone +46 10 7148287 Färögatan 6 | Mobile +46 73 0949079 SE-164 80 Stockholm, Sweden| mailto: magnus.westerlund@ericsson.com ----------------------------------------------------------------------
- Re: [rtcweb] State of the Forking discussion Randell Jesup
- [rtcweb] State of the Forking discussion Magnus Westerlund
- Re: [rtcweb] State of the Forking discussion Christer Holmberg
- Re: [rtcweb] State of the Forking discussion Ravindran Parthasarathi
- Re: [rtcweb] State of the Forking discussion Iñaki Baz Castillo
- Re: [rtcweb] State of the Forking discussion Hadriel Kaplan
- Re: [rtcweb] State of the Forking discussion Christer Holmberg
- Re: [rtcweb] State of the Forking discussion Cullen Jennings
- Re: [rtcweb] SRTP mandatory to implement versus m… Bernard Aboba
- Re: [rtcweb] State of the Forking discussion Christer Holmberg
- Re: [rtcweb] SRTP mandatory to implement versus m… Bernard Aboba
- Re: [rtcweb] State of the Forking discussion Cullen Jennings
- Re: [rtcweb] State of the Forking discussion Christer Holmberg
- Re: [rtcweb] SRTP mandatory to implement versus m… Magnus Westerlund