VozDigital DevFest 31/10/14

59
VozDigital bridging calls between WebRTC and SIP Javier Fernández Seco

description

Presentation for DevFest Madrid 2014

Transcript of VozDigital DevFest 31/10/14

Page 1: VozDigital DevFest 31/10/14

VozDigitalbridging calls

between WebRTC and SIP

Javier Fernández Seco

Page 2: VozDigital DevFest 31/10/14

● VozDigital

● What is WebRTC?

● Jingle signaling

● Tangle!!!!!

● VoIP in tuenti

● SIP signaling

● Signaling gateway

● High availability

Page 3: VozDigital DevFest 31/10/14

An inbound & outbound VoIP

service…using the customer’s GSM number!

…with no additional data charges!

…integrated with existing Tuenti chat infrastructure

Page 4: VozDigital DevFest 31/10/14

Why not using a SIP SoftPhone?

Page 5: VozDigital DevFest 31/10/14

Let’s recap what we already have...

Page 6: VozDigital DevFest 31/10/14

WebRTC for App2App calls

Page 7: VozDigital DevFest 31/10/14

Multiple resources

Will he be

available??

Page 8: VozDigital DevFest 31/10/14

Always Connected Application

Page 9: VozDigital DevFest 31/10/14
Page 10: VozDigital DevFest 31/10/14
Page 11: VozDigital DevFest 31/10/14
Page 12: VozDigital DevFest 31/10/14

Let’s dig into W3C’s WebRTC“The mission of the Web Real-Time Communications

Working Group, part of the Ubiquitous Web Applications

Activity, is to define client-side APIs to enable Real-Time

Communications in Web browsers. These APIs should

enable building applications that can be run inside a

browser, requiring no extra downloads or plugins, that

allow communication between parties using audio, video

and supplementary real-time communication, without

having to use intervening servers (unless needed for

firewall traversal, or for providing intermediary services)”

Page 13: VozDigital DevFest 31/10/14

What is WebRTC

Page 14: VozDigital DevFest 31/10/14

Transports for signaling

o TCP

o UDP

o SCTP

Page 15: VozDigital DevFest 31/10/14

Transports for streaming

o SDES

o DTLS-SRTP

Page 16: VozDigital DevFest 31/10/14

SDP v=0

o=jinglephone 372345681 372345681 IN IP4 192.168.1.2

s=Jingle Softphone

c=IN IP4 192.168.1.2

t=0 0

m=audio 1940 RTP/AVP 0 99 18 101

a=rtpmap:0 PCMU/8000

a=rtpmap:99 ILBC/8000

a=rtpmap:18 G729/8000

a=rtpmap:101 telephone-event/8000

a=rtcp:1942

a=ptime:20

m=video 1944 RTP/AVP 96 34

a=rtpmap:96 H264/90000

a=rtpmap:34 H263/90000

a=rtcp:1946

Page 17: VozDigital DevFest 31/10/14

● local

● STUN - reflexive

● TURN - relay

ICE

Page 18: VozDigital DevFest 31/10/14

Connectivity scenarios

Page 19: VozDigital DevFest 31/10/14

ICE protocol phases

Page 20: VozDigital DevFest 31/10/14

WebRTC compatibility

Page 21: VozDigital DevFest 31/10/14

ORTC (Object Real-Time Communications)

“Our mission: To enable rich, high quality, RTC

applications to be developed in mobile endpoints and

servers via native toolkits, simple Javascript APIs and

HTML5. It is also a mandate that Object RTC be

compatible with WebRTC.”

Microsoft’s response to WebRTC

Page 22: VozDigital DevFest 31/10/14

Y dónde se posiciona Apple?

Page 23: VozDigital DevFest 31/10/14
Page 24: VozDigital DevFest 31/10/14

Solution Overview

Page 25: VozDigital DevFest 31/10/14

Signaling over XMPP● Jingle protocol

<jingle xmlns='urn:xmpp:jingle:1'

action='session-initiate'

initiator='[email protected]/orchard'

sid='a73sjjvkla37jfea'>

<content creator='initiator' name='voice'>

<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'>

<payload-type id='96' name='speex' clockrate='16000'/>

<payload-type id='97' name='speex' clockrate='8000'/>

<payload-type id='18' name='G729'/>

<payload-type id='0' name='PCMU' />

<payload-type id='103' name='L16' clockrate='16000' channels='2'/>

<payload-type id='98' name='x-ISAC' clockrate='8000'/>

</description>

</content>

</jingle>

Page 26: VozDigital DevFest 31/10/14

SDP over XMPP in tuenti● Tangle protocol

<tangle xmlns='urn:tuenti:tangle:1'

action='session-initiate'

initiator='[email protected]'

sid='a73sjjvkla37jfea'>

<sdp><![CDATA[SDP]]></sdp>

</tangle>

Page 27: VozDigital DevFest 31/10/14

VoIP message sequence chart

Page 28: VozDigital DevFest 31/10/14

Tangle multiple resources

Page 29: VozDigital DevFest 31/10/14
Page 30: VozDigital DevFest 31/10/14

SIP 2.0 - RFC 3261

● Controls multimedia comms over IP.

● Can rely on SDP

● Use of different transports for signaling

● Signaling may be encrypted with TLS

● Use of different transports for streaming

Page 31: VozDigital DevFest 31/10/14

SIP scenario

Page 32: VozDigital DevFest 31/10/14

We need a SIP stack!

Page 33: VozDigital DevFest 31/10/14

Carlos Gonzalez Florido

[email protected]

https://github.com/kalta/nksip

@carlosjgf

NkSIP

Page 34: VozDigital DevFest 31/10/14

SIP Servlets API

SIP Protocol support with a full stack

Page 35: VozDigital DevFest 31/10/14

SIP Servlets Implementation

Page 36: VozDigital DevFest 31/10/14

Let’s see how everything

fits together

Page 37: VozDigital DevFest 31/10/14

VoIP message sequence chart

Page 38: VozDigital DevFest 31/10/14

SIP message sequence chart

Page 39: VozDigital DevFest 31/10/14

Merging the message sequence charts

Page 40: VozDigital DevFest 31/10/14

Signaling gateway

Page 41: VozDigital DevFest 31/10/14

Voice Gateway● Handles signaling between protocols

● Is a Servlet

● Uses a SipServlets framework

● Uses Squirrel State Machine

● Uses Guice Servlet Injection FW

Page 42: VozDigital DevFest 31/10/14

Mobicents SipServlets 3.0

Page 43: VozDigital DevFest 31/10/14

HTTP servlets V.S. SIP servlets

● return HTML pages

● client-server

● does not originate

requests

● request/response

● a request is handled

by one servlet

● connect SIP clients

● peer to peer

● creates requests

● request/multiple

responses

● a request can be

handled by multiple

Page 44: VozDigital DevFest 31/10/14

Converged Applications

HTTP Client HTTP Servlet SIP agent SIP Servlet SIP agent

HTTP servlet SIP servlet

Page 45: VozDigital DevFest 31/10/14

Voice Gateway Overview

Messenger

AppChat Server

Http

Server

SIP Servlets Application SIP provider

xmpp http SIP

Page 46: VozDigital DevFest 31/10/14

Servlet architecture

SIP Servlets (Mobicents)

Call Bridge SpecTangle

Spec

Call Bridge Impl

Tangle

Servlet

Spec

SIP

Servlet

Spec (Oracle)Voice Call Bridge Servlet

Page 47: VozDigital DevFest 31/10/14

Development approach

● SIP gateway scenarios/use cases

● MSC charts

● Integration Tests

● Development

Page 48: VozDigital DevFest 31/10/14

Outbound Call State Machine

Page 49: VozDigital DevFest 31/10/14

But, what about the media?

Page 50: VozDigital DevFest 31/10/14

Media connection

Page 51: VozDigital DevFest 31/10/14

High availability

SIP

HTTP

Tangl

e

Page 52: VozDigital DevFest 31/10/14
Page 53: VozDigital DevFest 31/10/14

Tools

Page 54: VozDigital DevFest 31/10/14
Page 55: VozDigital DevFest 31/10/14
Page 56: VozDigital DevFest 31/10/14
Page 57: VozDigital DevFest 31/10/14
Page 58: VozDigital DevFest 31/10/14

EndQuestions?

Page 59: VozDigital DevFest 31/10/14

Thank you!