Re: [rtcweb] Forking & Early Media - Was Re: Minimal SDP negotiation mechanism

Cullen Jennings <> Tue, 20 September 2011 20:37 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 5FB0621F8C46 for <>; Tue, 20 Sep 2011 13:37:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -103.128
X-Spam-Status: No, score=-103.128 tagged_above=-999 required=5 tests=[AWL=-0.529, BAYES_00=-2.599, USER_IN_WHITELIST=-100]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id P7swfCSfiTK3 for <>; Tue, 20 Sep 2011 13:37:28 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id B522521F8C40 for <>; Tue, 20 Sep 2011 13:37:28 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;;; l=3987; q=dns/txt; s=iport; t=1316551195; x=1317760795; h=subject:mime-version:from:in-reply-to:date:cc: content-transfer-encoding:message-id:references:to; bh=QjKdRFSAQ9EA6vEZMQXvl48d7bJMcvJn86WvTZy9jZs=; b=azSYVHZTH4u5AuhLJmKXiGPOkknQwXX9c+iW9WeLn8gYwX+GjiLR5XBn MOW/sGofew98vJKfWSHGIMh64fklsM/iEJPmcRNmX2v5YHdZYF9A6EIeX uuf7jsxugi0d9zxkLZmJ+CEwK+RSOqKUSi9EKrT1XJKM3f0aYkmckjvV9 8=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: Av0EACD5eE6rRDoH/2dsb2JhbAAtFadieIFTAQEBAQIBEgEnPxALGC5XBjWHVZR/AYtrkj2GHWAEh3CLW4UejDA
X-IronPort-AV: E=Sophos;i="4.68,413,1312156800"; d="scan'208";a="3267163"
Received: from ([]) by with ESMTP; 20 Sep 2011 20:39:54 +0000
Received: from [] ( []) by (8.14.3/8.14.3) with ESMTP id p8KKdrQO025345; Tue, 20 Sep 2011 20:39:53 GMT
Mime-Version: 1.0 (Apple Message framework v1084)
Content-Type: text/plain; charset="us-ascii"
From: Cullen Jennings <>
In-Reply-To: <>
Date: Tue, 20 Sep 2011 14:39:53 -0600
Content-Transfer-Encoding: quoted-printable
Message-Id: <>
References: <> <> <> <> <> <> <> <> <>
To: "Olle E. Johansson" <>
X-Mailer: Apple Mail (2.1084)
Cc: "" <>
Subject: Re: [rtcweb] Forking & Early Media - Was Re: Minimal SDP negotiation mechanism
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 20 Sep 2011 20:37:29 -0000

On Sep 20, 2011, at 2:17 PM, Olle E. Johansson wrote:

> 20 sep 2011 kl. 22:07 skrev Cullen Jennings:
>> On Sep 20, 2011, at 7:07 AM, Olle E. Johansson wrote:
>>> 20 sep 2011 kl. 15:00 skrev Harald Alvestrand:
>>>> Once we start requiring that the PeerConnection know the difference between "early" media and "late" media, it seems to me we're slipping down a slippery slope.
>>> The difference between early and late media is purely a billing decision in PSTN. I don't think we should separate these on the rtcweb side. It's a PSTN gateway issue, not something to be bothered with in rtcweb.
>>> "The campaign to simplify call states"
>> Simplification is good - just make sure that it is possible to gateway to a SIP call to 1-800-go-fedex. A simplification that broke that would, in my personal opinion, would not be acceptable. (and I think that early media is a bit more than just a billing artifact but that's a longer story). You agree?
> Absolutely, but if the call is in UP state on the rtcweb side as soon as the PSTN/SIP gateway receives early media we will have no issue with sending DTMF in early media, which is what you are trying to trick me with :-)

really I was not going to mention DTMF :-) 

I was thinking a a call where the browser initiates the call, sends something to the web2sip signaling gateway that sends a SIP invite to the PSTN GW. Now the PSTN gateway sends a 180 and starts ICE. Then the PSTN GW starts sending RTP with the fedex prompts in them and then it eventually sends a 200.  The key thing is the browser needed to be able to receive RTP before the signaling gateway received the 200. As long as we are on the same page there, it's good with me. The PSTN GW sends the RTP directly to the the browser but sends the SIP to the signaling gateway. 

> Now, if we force early media which is supposed to be one-way, not many implementations would support fedex. I don't see this as a problem if we just forget the early-media and late-media difference and just talk about media and if it's up or not up. That would handle ringback as well. 

I could care less about if the media is 1 way or two way. I just care about hearing the prompts when I call 1-800-fedex. (I care about early media, not one way media :-) 

> In my head, rtcweb is only the handset of a phone. The phone knows about early media, but the handset just has a mike and a speaker and it's simply on or off.

sure - not problem with that

>> That said, I think that doing both forking and early media is hard. Lets assume we are using a signaling gateway that is not a media gateway to translate between a SIP call on one side and whatever is happening over on the browser side. The basic issue is the browser initiating the communications needs to be able to start receiving multiple RTP streams before it even has signaling information to tell it how many it might receive. To simplify this problem, Cary and my draft proposes not allowing forking on the SIP side of the signaling gateway but still allowing early media. If you wanted to do do forking in this case, one would need a SBC that processed media and turned the forked medial legs into one media leg. 
> SBS or b2bua - in this case rtcweb to SIP ua. Yep, that's my way of thinking. 
>> What I'm trying to say is I agree that early media + forking is hard, and the way I would like to simplify that is not allow forking. Note that none of this has much to do with if the PeerConnection object knows if media is early or late - what it needs to deal with is receiving RTP regardless os if the SIP signaling GW had sent it any signaling that indicated what had been in the SIP answer of the SIP side of a signaling GW. 
> Agree. 
> /O