Re: [rtcweb] RTCWeb default signaling protocol [was RE: About defining a signaling protocol for WebRTC (or not)]

Matthew Kaufman <> Sat, 17 September 2011 03:45 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 34DA121F8B44 for <>; Fri, 16 Sep 2011 20:45:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -4.76
X-Spam-Status: No, score=-4.76 tagged_above=-999 required=5 tests=[AWL=0.770, BAYES_00=-2.599, DATE_IN_PAST_06_12=1.069, RCVD_IN_DNSWL_MED=-4]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id lH4XLm0y26o8 for <>; Fri, 16 Sep 2011 20:45:55 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id EBD0121F8B3F for <>; Fri, 16 Sep 2011 20:45:54 -0700 (PDT)
Received: from (localhost []) by (Postfix) with ESMTP id CA0E77FE; Sat, 17 Sep 2011 05:48:08 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed;; h=message-id :date:from:mime-version:to:cc:subject:references:in-reply-to :content-type:content-transfer-encoding; s=mx; bh=fjzjB99rBF3sjB MSQrh0mnb61JU=; b=qUsBGTZQIRYgIeM6PmwSdriigWn9h1p3ACGdjJIVLK6YsL NIcZHuzdhrRuQDvdnLpRKH4qo0Ke6HtTVlWPubW73ry8Ic5LqksZOA4rSuaF7jB+ fq+0E9/rbZaZaY4Kz7z416NnlpwK6mUDlM6+iohUQhJTYi+6Df/Qm4d2iqvMs=
DomainKey-Signature: a=rsa-sha1; c=nofws;; h=message-id:date:from :mime-version:to:cc:subject:references:in-reply-to:content-type: content-transfer-encoding; q=dns; s=mx; b=Ga+m15JI14QzihsswbD520 zsYocZnKo5olC8fQmN2EZUZ4l5uV7LW4UOT2x5Nc81m6cr14qDW6Tk3xYik3C6++ 3qic0WmPlNLjXKQqZmJwvLBSLtl8AHMY+s0TX9Czi3s7mJXygtuYw/Gudf6T5sVC J7JJ7tdieuTcYMoWwUMBo=
Received: from ( []) by (Postfix) with ESMTP id C616A7FC; Sat, 17 Sep 2011 05:48:08 +0200 (CEST)
Received: from localhost (localhost []) by (Postfix) with ESMTP id 9EF443506F2B; Sat, 17 Sep 2011 05:48:08 +0200 (CEST)
X-Virus-Scanned: amavisd-new at
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id IerB7CgVJeqJ; Sat, 17 Sep 2011 05:48:07 +0200 (CEST)
Received: from (unknown []) by (Postfix) with ESMTPSA id B6B153506E9B; Sat, 17 Sep 2011 05:48:06 +0200 (CEST)
Message-ID: <>
Date: Fri, 16 Sep 2011 23:05:39 +0200
From: Matthew Kaufman <>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:6.0.2) Gecko/20110902 Thunderbird/6.0.2
MIME-Version: 1.0
To: Hadriel Kaplan <>
References: <> <> <> <> <>
In-Reply-To: <>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Cc: "<>" <>
Subject: Re: [rtcweb] RTCWeb default signaling protocol [was RE: About defining a signaling protocol for WebRTC (or not)]
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: Sat, 17 Sep 2011 03:45:56 -0000

On 9/16/11 4:24 AM, Hadriel Kaplan wrote:
> There is no need for a "default signaling protocol", because the "signaling" is between the browser's Javascript and its web server.  And as for the signaling protocol the web server has to support in order to speak to other servers or non-RTCweb endpoints, even if we specified to use SIP we'd just be summarily ignored by those who don't want to, because they actually don't *need* to.  It doesn't hurt interoperability of rtcweb if they don't implement SIP - it just means they can't talk to other SIP devices/servers.  But it's not like we need an RFC to say "if you don't implement X then you can't talk to people who do X".


> Think of this RTCWEB concept as Skinny/SCCP.  The Web Server is Call Manager, and the browser is the Skinny phone, but in this case instead of needing a 7960 phone, the Skinny protocol was written in javascript and uses a browser's user interface for its GUI and the built-in RTP library for media. (in fact one could probably write a javascript to do just that, if Call Manager handled SCCP over websocket)

Actually, it is even better than this. Think of the RTCWEB Javascript 
API as "Skinny/SCCP". The web developer is then free to have "call 
manager" be up in the server and simply pass down data that is reflected 
directly into the API... or the web developer can use the fact that 
there's a complete programming environment on the browser to implement 
some or all of "call manager" *at the browser*, and that choice is 
completely in the application developer's hands.

They can write Skinny in Javascript and use the browser UI for the GUI 
and RTP library for media, and interoperate with SIP by building a 
complete SIP-to-Skinny translation at the server.

But they can also write SIP in Javascript and use the browser UI for the 
GUI and RTP library for the media, and interoperate with SIP by building 
just a Websocket-to-SIP converter up at the server.

Completely up to them... *if* we build a Javascript API that actually 
lets the programmer make this decision, just like they can make the same 
decision when they are programming to the Windows or Mac APIs.

On other other hand, if we bake too much in (a SIP implementation, all 
the semantics of SDP offer-answer, etc.) then the application developer 
either has their hands tied, or is forced to resort to silly things like 
taking an SDP offer and parsing it in Javascript to get the capabilities 
of the browser they're running in and then writing it back out as a 
different SDP offer that matches what they really want.

> Clearly the IETF does not need to define for Cisco a standardized replacement for the SCCP protocol for this to work, because one isn't needed since the client javascript and server are built by the same developers and they know how their proprietary signaling works.

Indeed. The protocol needs exactly the same level of standardization 
that Google needed to build Gmail. You need HTTP, possibly Websockets, a 
common programming language (Javascript) and a common set of interfaces 
(the Javascript API). The rest, including exactly what is transported on 
the wire, should be up to the developer. The format, how much of the 
logic lives at each end, etc.

>   So how about for the signaling Call Manager would use to other VoIP devices, like gateways or VoIP service providers?  Does the IETF need to tell Cisco what peer-to-peer protocol(s) to implement on Call Manager?  No, and we never have.  Cisco's product managers decide that.  They decide if Call Manager needs to be able to communicate a standard protocol at all, such as SIP or H.323, and which one/any of those.  They decide based on their use-cases/need.

Agree. If they want to connect to SIP providers for PSTN access, they 
can implement that. If they want to talk XMPP and Jingle because that's 
their preferred federation protocol, that's ok too.

> Some rtcweb developers may not do any standard signaling protocol, ever.  For example many Instant Messaging providers still have closed environments to this day. (e.g., AIM, YIM, MSN, etc.)

My employer is arguably one of the largest VoIP providers in the world, 
and most definitely isn't using standard signaling protocols.

>   Some may choose to only use H.323, or XMPP, or IAX, or even BICC.  Some may choose to only support SIP with 3GPP extensions.  Obviously most of us think/hope people do SIP, but really the market makes those types of decisions, not the IETF.  Just like the IETF standardized MGCP but didn't specify what the MGCP Call Agent had to support to speak to other Call Agents.  SIP was given as an example in MGCP, but not mandated.
> The only thing we need to do for rtcweb is make sure the RTP library built into the browser supports media in such a way that it can communicate with other RTP peers at a media plane, regardless of what signaling protocol those peers might be using, preferably without going through media gateways.

This, and supports enough security/safety that the library can be 
trusted to run in the browser environment. (This is where the ICE 
requirement comes from.)

>   And obviously since SIP is a very common protocol and defined by the IETF we need to make sure it's possible to use SIP on the rtcweb server, but we can't *mandate* that it be used or supported, and if we did it wouldn't change anything.

Obviously it is always possible to use SIP on the RTCWEB server. After 
all, it is fairly trivial to gateway from Flash Player and RTMP or RTMFP 
to SIP, and there's no commonality there at all. The odds are extremely 
high that we can make interoperation even easier, both by opening up the 
capability and control APIs and by using a standard media transport so 
that media gateways can be avoided in many cases.

Matthew Kaufman