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

Roman Shpount <> Wed, 21 September 2011 02:18 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 841AC21F8C47 for <>; Tue, 20 Sep 2011 19:18:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.478
X-Spam-Status: No, score=-2.478 tagged_above=-999 required=5 tests=[AWL=-0.102, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_52=0.6, RCVD_IN_DNSWL_LOW=-1]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id XiBiBqouJNky for <>; Tue, 20 Sep 2011 19:18:15 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 6C62E21F8C46 for <>; Tue, 20 Sep 2011 19:18:15 -0700 (PDT)
Received: by gxk19 with SMTP id 19so1015134gxk.31 for <>; Tue, 20 Sep 2011 19:20:42 -0700 (PDT)
Received: by with SMTP id b1mr1271860yho.19.1316571642505; Tue, 20 Sep 2011 19:20:42 -0700 (PDT)
Received: from ( []) by with ESMTPS id z53sm4654104yhj.7.2011. (version=TLSv1/SSLv3 cipher=OTHER); Tue, 20 Sep 2011 19:20:41 -0700 (PDT)
Received: by gyd12 with SMTP id 12so1013303gyd.31 for <>; Tue, 20 Sep 2011 19:20:41 -0700 (PDT)
MIME-Version: 1.0
Received: by with SMTP id i2mr592956pbh.375.1316571640897; Tue, 20 Sep 2011 19:20:40 -0700 (PDT)
Received: by with HTTP; Tue, 20 Sep 2011 19:20:40 -0700 (PDT)
In-Reply-To: <>
References: <> <> <> <> <> <> <> <> <> <>
Date: Tue, 20 Sep 2011 22:20:40 -0400
Message-ID: <>
From: Roman Shpount <>
To: Ravindran Parthasarathi <>
Content-Type: multipart/alternative; boundary="bcaec520e88bfa20fc04ad6a38c9"
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: Wed, 21 Sep 2011 02:18:16 -0000

Small correction to what you are saying -- new dialogs cannot be stopped
using CANCEL (this will stop all dialogs). They can only be stopped using

I would consider it very unfortunate if we decide not to support forking in
RTC. It needs to be handled, and not in signaling, but by defining what to
do with multiple incoming media RTP streams and multiple answers. The
simplest model would be ignore everything except the RTP media defined in
the last answer and have an ability to update the answer to the last offer.
Alternative would be to create a new PeerConnection based on a new answer
(this is API change so should probably go to W3C).
Roman Shpount

On Tue, Sep 20, 2011 at 10:11 PM, Ravindran Parthasarathi <> wrote:

> Forking in SIP does not apply in the literal sense to lot of SIP
> applications (ISDN-SIP gateway, End-point which can't perform mixing).
> In case of ISDN-SIP gateway, SIP callleg has to handle all forked
> dialogs till 200 OK is received from anyone of the UAS and reject all
> other dialogs with CANCEL, the media plane update is depend upon the
> implementation whether to override the last SDP in media plane in case
> mixing is not possible. I'm saying in this mail thread to highlight
> forking handling in browser (as a SIP UA application) is not an
> exception and it is the decision which has to be taken by any SIP
> application development (and not SIP framework) for that matter.
> SIP application forking behavior depends upon RTP model (endpoint or
> mixer). In case browser acts only as endpoint, I agree with Cullen that
> forking shall be handled by browser without application aware and no
> need of API or callback.
> The counter argument may be that my innovative mixing application in
> browser is stopped by this API model.  In the generic SIP framework, the
> callbacks are provided to handle this situation, default callback
> function (browser as endpoint) are provided to reduce the application
> awareness. From the API perspective, offer & answer state machine is not
> required to be handled in application but we required to know whether
> the application prefers which media model whether as end-point or mixer
> and let end-point model be default. IMO, it is browser API design which
> belongs to W3C. Please correct me here in case this API design is
> somehow related to IETF.
> Thanks
> Partha
> >-----Original Message-----
> >From: [] On
> Behalf
> >Of Hadriel Kaplan
> >Sent: Wednesday, September 21, 2011 4:06 AM
> >To: Cullen Jennings
> >Cc:
> >Subject: Re: [rtcweb] Forking & Early Media - Was Re: Minimal SDP
> >negotiation mechanism
> >
> >
> >On Sep 20, 2011, at 4:07 PM, Cullen Jennings wrote:
> >
> >> 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.
> >
> >Not really - there will be signaling, because there has to be SDP
> >answers even just to get ICE to work before the media starts flowing in
> >many NAT cases.  And even in practice in SIP there're usually SDP
> >answers in 18x to open "gates", and to get upstream DTMF.  So if the
> >concern is just that there's no signaling to tell the browser there are
> >multiple RTP streams coming, I think that can be allayed.
> >
> >The really hard part is knowing which stream to use/render/send-to,
> >imho.  And putting that decision in the gateway isn't good - the best
> >decider of that is probably the JS in the browser.
> >
> >
> >> 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.
> >
> >Obviously you can request that a request not be forked, using caller-
> >prefs, but you can't "not allow" forking on the SIP side.  That would
> >make it not SIP.  I know forking is hard, but that's life.  It's not
> >appropriate for this WG to make fundamental changes/limitations to the
> >SIP protocol, just because some of it's "hard" for a browser.
> >
> >-hadriel
> >
> >_______________________________________________
> >rtcweb mailing list
> >
> >
> _______________________________________________
> rtcweb mailing list