VozDigital DevFest 31/10/14
-
Upload
javierfernandezseco -
Category
Mobile
-
view
122 -
download
0
description
Transcript of VozDigital DevFest 31/10/14
![Page 1: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/1.jpg)
VozDigitalbridging calls
between WebRTC and SIP
Javier Fernández Seco
![Page 2: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/2.jpg)
● VozDigital
● What is WebRTC?
● Jingle signaling
● Tangle!!!!!
● VoIP in tuenti
● SIP signaling
● Signaling gateway
● High availability
![Page 3: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/3.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/4.jpg)
Why not using a SIP SoftPhone?
![Page 5: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/5.jpg)
Let’s recap what we already have...
![Page 6: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/6.jpg)
WebRTC for App2App calls
![Page 7: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/7.jpg)
Multiple resources
Will he be
available??
![Page 8: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/8.jpg)
Always Connected Application
![Page 9: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/9.jpg)
![Page 10: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/10.jpg)
![Page 11: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/11.jpg)
![Page 12: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/12.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/13.jpg)
What is WebRTC
![Page 14: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/14.jpg)
Transports for signaling
o TCP
o UDP
o SCTP
![Page 15: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/15.jpg)
Transports for streaming
o SDES
o DTLS-SRTP
![Page 16: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/16.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/17.jpg)
● local
● STUN - reflexive
● TURN - relay
ICE
![Page 18: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/18.jpg)
Connectivity scenarios
![Page 19: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/19.jpg)
ICE protocol phases
![Page 20: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/20.jpg)
WebRTC compatibility
![Page 21: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/21.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/22.jpg)
Y dónde se posiciona Apple?
![Page 23: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/23.jpg)
![Page 24: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/24.jpg)
Solution Overview
![Page 25: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/25.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/26.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/27.jpg)
VoIP message sequence chart
![Page 28: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/28.jpg)
Tangle multiple resources
![Page 29: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/29.jpg)
![Page 30: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/30.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/31.jpg)
SIP scenario
![Page 32: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/32.jpg)
We need a SIP stack!
![Page 33: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/33.jpg)
Carlos Gonzalez Florido
https://github.com/kalta/nksip
@carlosjgf
NkSIP
![Page 34: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/34.jpg)
SIP Servlets API
SIP Protocol support with a full stack
![Page 35: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/35.jpg)
SIP Servlets Implementation
![Page 36: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/36.jpg)
Let’s see how everything
fits together
![Page 37: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/37.jpg)
VoIP message sequence chart
![Page 38: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/38.jpg)
SIP message sequence chart
![Page 39: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/39.jpg)
Merging the message sequence charts
![Page 40: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/40.jpg)
Signaling gateway
![Page 41: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/41.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/42.jpg)
Mobicents SipServlets 3.0
![Page 43: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/43.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/44.jpg)
Converged Applications
HTTP Client HTTP Servlet SIP agent SIP Servlet SIP agent
HTTP servlet SIP servlet
![Page 45: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/45.jpg)
Voice Gateway Overview
Messenger
AppChat Server
Http
Server
SIP Servlets Application SIP provider
xmpp http SIP
![Page 46: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/46.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/47.jpg)
Development approach
● SIP gateway scenarios/use cases
● MSC charts
● Integration Tests
● Development
![Page 48: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/48.jpg)
Outbound Call State Machine
![Page 49: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/49.jpg)
But, what about the media?
![Page 50: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/50.jpg)
Media connection
![Page 51: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/51.jpg)
High availability
SIP
HTTP
Tangl
e
![Page 52: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/52.jpg)
![Page 53: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/53.jpg)
Tools
![Page 54: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/54.jpg)
![Page 55: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/55.jpg)
![Page 56: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/56.jpg)
![Page 57: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/57.jpg)
![Page 58: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/58.jpg)
EndQuestions?
![Page 59: VozDigital DevFest 31/10/14](https://reader034.fdocuments.net/reader034/viewer/2022052508/559c559e1a28ab9e1c8b4710/html5/thumbnails/59.jpg)
Thank you!