webrtc2sip Enables Cross-browser WebRTC & SIP Interoperability

Tom Keating : VoIP & Gadgets Blog
Tom Keating
CTO
| VoIP & Gadgets blog - Latest news in VoIP & gadgets, wireless, mobile phones, reviews, & opinions

webrtc2sip Enables Cross-browser WebRTC & SIP Interoperability

webrtc2sip-click-to-call.png
webrtc2sip is an open source gateway using WebRTC and SIP to turn your browser into a phone with audio and video calling capabilities. The "WebRTC-to-SIP" gateway allows your web browser to make and receive calls from/to any SIP-legacy network or PSTN. Thus, using your preferred WebRTC-capable web browser you can make calls to a SIP IP phone, SIP softphone, and even a mobile/landline phone. webrtc2sip was created by Doubango Telecom and available for free. webrtc2sip contains four modules: SIP Proxy, RTCWeb Breaker, Media Coder, and Click-to-Call ( screenshot on top).

The WebRTC specification requires ICE and DTLS/SRTP support. However, that many SIP-legacy endpoints do not support these features. That's where the RTCWeb Breaker module to negotiate and convert the media stream to enable interoperability. For instance, FreeSWITCH does not support ICE which means it requires the RTCWeb Breaker in order to be able to connect the browser to a SIP endpoint. (Update/Correction: as of April 2013, FreeSWITCH supports ICE and WebRTC and SIP over websockets)

webrtc2sip-media-coder.png
One problem in WebRTC communications is codec support. There is the whole VP8 and H.264 codec challenge. VP8 is royalty-free while H.264 AVC is not free but much more widely deployed. Google has chosen VP8 in Chrome while Ericsson for instance, uses H.264 AVC in Bowser, a WebRTC capable browser I checked out recently. Mozilla (Firefox) and Opera Software will likely use VP8 while Microsoft has embraced H.264 AVC.

So how does a Microsoft Internet Explorer user make a WebRTC call to a Google Chrome user if they can't negotiate the codec to be used? Well, using the Media Coder module will allow you to make video calls between Chrome and Internet Explorer since it handles the transcoding. Further, using Media Coder you can now connect a high-end telepresence system (usually H.264) to a browser that is using VP8 or even your smartphone or tablet browser which may be using VP8 or H.264. Finally, browser-based communications that just works no matter what device or browser you're using! smiley-laughing

Asterisk Integration
You can get webrtc2sip to work with Asterisk and Chrome, however Asterisk doesn't support VP8, so you have two options. The first option is to patch Asterisk, though this isn't the recommended way to go unless you're a developer who likes to tinker and try out cool new things. Although audio calls work, even with the patch, it doesn't allow video calls, since as previously mentioned, Asterisk doesn’t support VP8.

The second (recommended) option is to enable RTCWeb Breaker. This will allow both audio and video to work. The beauty of this setup is that it works even if the web browser and the SIP client/server do not share the same codecs (thanks to the Media Coder transcoding module).

Another cool WebRTC product from Doubango Telecom is sipml5, what they are calling the "World's first HTML5 SIP client (WebRTC)". According to their website, "This is the world's first open source (BSD license) HTML5 SIP client entirely written in javascript for integration in social networks (FaceBook, Twitter, Google+), online games, e-commerce websites, email signatures... No extension, plugin or gateway is needed. The media stack rely on WebRTC. The client can be used to connect to any SIP or IMS network from your preferred browser to make and receive audio/video calls and instant messages."

You might be wondering how sipML5 integrates with webrtc2sip. Well, look no further, this diagram explains it perfectly:
sipml5-architecture.png

sipML5 Features:
I took sipML5 for a quick spin. Below is a screenshot of my Chrome browser with a successful "Connected" message after entering in my SIP credentials to our Asterisk-based server. Notice the drop-down option under Call, which gives the ability to initiate an audio, video, or screen share call:

sipml5-webrtc-softphone.png


I made a test call to the extension my browser was registered to and my Chrome browser successfully played a ring tone and a popup incoming call message. I wasn't able to connect however, but that's due to this codec-related error:

[Nov 25 10:47:39] WARNING[5816]: chan_sip.c:7664 process_sdp: Unsupported SDP media type in offer: audio 65015 RTP/SAVPF 103 104 111 0 8 107 106 105 13 126
[Nov 25 10:47:39] WARNING[5816]: chan_sip.c:7741 process_sdp: Insufficient information in SDP (c=)..

It's my corporate production PBX, so I can't start hacking it to get it to work, so I'll have to test again with one of my test Asterisk PBXs. Nevertheless, the browser successfully registered and successfully received the call even if it dropped it after not being able to negotiate a common codec. I really like that this solution is open source and free and when you consider one of WebRTC principal goals is to make webrtc-logo-iv.pngubiquitous anytime, anywhere, any device communications possible, webrtc2sip and sipML5 are worthy tools to have in your WebRTC arsenal. Lastly, it's never too soon to register for WebRTC World (June 17-19th 2014) where you can see the latest WebRTC demos, hear from leading WebRTC thinkers, and network with fellow WebRTC advocates.


Related Articles to 'webrtc2sip Enables Cross-browser WebRTC & SIP Interoperability'
google-webrtc-logo.jpg
chrome.png
TringMeMainscreen.png
webrtc-santa-clara-2013.png
Featured Events