RE: [Sipping] Forking, early media and ICE
"Eric Tremblay" <etremblay@m5t.com> Mon, 09 July 2007 14:56 UTC
Return-path: <sipping-bounces@ietf.org>
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1I7ufE-0001BR-2j; Mon, 09 Jul 2007 10:56:36 -0400
Received: from sipping by megatron.ietf.org with local (Exim 4.43) id 1I7uf7-0001AD-BQ for sipping-confirm+ok@megatron.ietf.org; Mon, 09 Jul 2007 10:56:30 -0400
Received: from [10.90.34.44] (helo=chiedprmail1.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1I7uf6-00019z-Sp for sipping@ietf.org; Mon, 09 Jul 2007 10:56:28 -0400
Received: from m5tmail1.m5t.com ([207.134.65.96]) by chiedprmail1.ietf.org with esmtp (Exim 4.43) id 1I7uf6-00016V-Bv for sipping@ietf.org; Mon, 09 Jul 2007 10:56:28 -0400
Content-class: urn:content-classes:message
Subject: RE: [Sipping] Forking, early media and ICE
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Date: Mon, 09 Jul 2007 10:56:17 -0400
Message-ID: <6EF4CC794ECF2B409390605FDEA9012225B4DA@m5tmail1.m5t.com>
X-MimeOLE: Produced By Microsoft Exchange V6.5
In-Reply-To: <6FC4416DDE56C44DA0AEE67BC7CA437115432378@zrc2hxm2.corp.nortel.com>
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
Thread-Topic: [Sipping] Forking, early media and ICE
Thread-Index: AceqDq2hRuXXHyW0QxOCUQHVnZRQSAQe1oAQAepZQIA=
References: <6EF4CC794ECF2B409390605FDEA9012221546B@m5tmail1.m5t.com> <6FC4416DDE56C44DA0AEE67BC7CA437115432378@zrc2hxm2.corp.nortel.com>
From: Eric Tremblay <etremblay@m5t.com>
To: Brian Stucker <bstucker@nortel.com>, sipping <sipping@ietf.org>
X-Spam-Score: 0.0 (/)
X-Scan-Signature: bc6181926481d86059e678c9f7cb8b34
Cc:
X-BeenThere: sipping@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SIPPING Working Group \(applications of SIP\)" <sipping.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/sipping>, <mailto:sipping-request@ietf.org?subject=unsubscribe>
List-Post: <mailto:sipping@ietf.org>
List-Help: <mailto:sipping-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/sipping>, <mailto:sipping-request@ietf.org?subject=subscribe>
Errors-To: sipping-bounces@ietf.org
Hi Brian, Thanks for your reply. I agree, there is confusion when it comes to early media handling. Furthermore, I think the industry is getting slower at adopting "fixes" versus new features that bring added value. I think this is part of the reason why 3960 is not yet widely adopted. As you have well documented, some vendors rely on servers to manage and somewhat fix forking and early media for the originator. Bad. For offerless INVITE, could you further explain which "many early media problems" you are refeering to? I think you have given more thought to this than me :) I was thinking that if the originator was using some mechanism to indicate what it is trying to do (I am guessing you meant which type of media it wants to use), then the terminator(s) should be able to figure out what to do about this offerless INVITE. This could offer some benefits of a two-stage negotiation while using just one offer-answer. Your thoughts? Best Regards, EricT -----Original Message----- From: Brian Stucker [mailto:bstucker@nortel.com] Sent: June 29, 2007 16:26 To: Eric Tremblay; sipping Subject: RE: [Sipping] Forking, early media and ICE Hi Eric, I don't think using an offerless INVITE is really the best way to handle early media interactions, although as you have pointed out, I once did consider this model for discussion. All that this effectively does it puts the onus on the other endpoint to initiate the SDP exchange and you still wind up with many early media problems. In fact, since you don't know where to stream media to the originator, you probably can't effectively deal with early media at all for many endpoints that aren't aware of what the originator is trying to do. That's why I put together the early-media-indirection draft to try to come up with another way of dealing with all of the SDP negotiation. There's already a BCP of sorts for early media in RFC-3960 although I've seen a number of implementations that ignore the document or, particularly with the application server model, go a completely different route of hacking up SIP dialog states and end-to-end SDP negotiation to ensure that their media is what is rendered at the originating client. Likewise, there seems to be only a loose adherence to RFC-3960 judging from the responses received in the SIPit 19 activity report: --- Media Here is a sample of how endpoint implementors replied when asked how they handled early media from more than one leg: * We allow multiple RTP streams with an affinity to the last one. * First Media received is played until 200. * The first 183 will be honored in case of the UAC. The rest will be dropped. * Allow media from only negotiated address. Ignore media until negotiated (offer-answer exchanged). * Listen to most recently started stream. * All early media will passed on to the UA. * Pick the one who most recently sent me a criticial threshold of media. * Play only one media stream and ignore others. * The last sdp received override previous one. * First 18x message goes through, rest dropped. * Open voice only with the first one, but answer all of the 18x. * We will use the first recieved. * I ignore early media. * All get relayed - (all rendered leave final choice to recipient UA). * Last early media replaces previous. * We update media as the 18x's come in. 200OK media will be the confirmed media channel. * Take the first. --- Clearly there is confusion here. For the application server model in particular, I think it really would just be the most simple and direct approach to have the client use the procedure in the early media indirection draft rather than go bonkers trying to manage different SDP and RTP sources within the same SIP dialog. Hopefully folks have had some more time to digest the material in the draft since it's last presentation to the WG to come up with comments or feedback as to why the suggested approach does or does not work for them. I would hope that the community would have an interest in closing this long-standing problem area in SIP. Early media isn't going to simply fade away as some have hoped. We're seeing other SDOs pick up this topic in fits and spurts as well with varying results at understanding and adapting SIP to their requirements. Regards, Brian ________________________________ From: Eric Tremblay [mailto:etremblay@m5t.com] Sent: Friday, June 08, 2007 3:51 PM To: sipping Subject: [Sipping] Forking, early media and ICE I have been reading a lot lately about forking and early media. I am trying to mix all of this with ICE and I now have a headache. I read through the following mailing list threads: sip-> "the problem with PRACK" (march 2006) sipping -> "Some thoughts on fixing early media" (july 2006) And the numerous RFCs and drafts: RFC 3960 draft-barnes-sip-em-ps-req-sol-00 draft-stucker-sipping-early-media-indirection-00 draft-stucker-sipping-early-media-coping-03 I don't think ICE was tackled in those discussions. I see important complexity with ICE and forking when the initial offer is included in the INVITE. It is maybe not protocol complexity but probably more implementation complexity. Here is what we should find in ICE-16 (from http://www1.ietf.org/mail-archive/web/mmusic/current/msg05669.html <http://www1.ietf.org/mail-archive/web/mmusic/current/msg05669.html> ) <t> When ICE is used with SIP, forking may result in a single offer generating a multiplicity of answers. In that each, ICE proceeds completely in parallel and independently for each answer, treating the combination of its offer and each answer as an independent offer/answer exchange, with its own set of pairs, check lists, states, and so on. The only case in which processing of one pair impacts another is freeing of candidates, discussed below in <xref target="sec-XXX"/>. </t> I see implementing this as quite complex, and being lazy, I would like to simplify this. Seriously, we see many problems with more trivial things (prack comes to mind). Brian Stucker has proposed an interesting mechanism in the mailing list (see http://www1.ietf.org/mail-archive/web/sipping/current/msg11631.html <http://www1.ietf.org/mail-archive/web/sipping/current/msg11631.html> ) that would simplify ICE & forking negotiation along with early media. However, somehow it failed to get into his draft-stucker-sipping-early-media-coping draft. I like this mechanism. Maybe it was beaten to death for some reason on the mailing list and I failed to see it, but the initial comments to it were positive. Apologies if I am reviving something that should stay buried. Here is a quick recap of the proposed mechanism: 1) UAC: Send offerless INVITE 2) UAS: Seeing the peer supports rel1xx, send a 183 with an offer. 3) UAC: Send a PRACK with the answer 4) UAS: Received the PRACK with the answer, offer/answer exchange completed, can notify user of incoming call (if there are no preconditions). 5) UAC: If it receives a 18x from different endpoint due to forking, then the client can now sanely handle the new leg and its early media. So yes, it is somewhat a lightweight precondition mechanism, where the destination notifies the user only when a full offer/answer exchange has been done. CONS: - Depends on reliable 1xx - Media clipping for devices that do not support prack and send their offer in a reliable 1xx response. - Potential clipping for devices that do support prack but send the offer in a 180. - Requires three additional messages (183, PRACK, 200 OK to PRACK) PROS: - 100% backward interoperable, nothing new is really added. - Clients can now associate the early media with a specific endpoint (different answer & rtp port for each) - Clients can mute some early media in the answer if they can listen to just one (a=inactive in the answer). - Devices that MUST play an announcement know when the user is able to receive the stream ("by pursuing the call, you agree to pay these extra fees", the device would know to play the stream when the client sends an updated offer and forward the call only after the stream was fully played) - Simplifies A LOT ICE when forking is done. I don't think this will solve everything (HERFP, world hunger, etc) but it could be a step forward if the majority of devices implemented this. I am willing to spend some time working on this (BCP or something else) if people are interested. Comments? EricT _______________________________________________ Sipping mailing list https://www1.ietf.org/mailman/listinfo/sipping This list is for NEW development of the application of SIP Use sip-implementors@cs.columbia.edu for questions on current sip Use sip@ietf.org for new developments of core SIP
- [Sipping] Forking, early media and ICE Eric Tremblay
- RE: [Sipping] Forking, early media and ICE Brian Stucker
- RE: [Sipping] Forking, early media and ICE Eric Tremblay