2014 pablo ruiz tuenti webrtc
DESCRIPTION
Tuenti + WebRTC Telco 2.0´s ChallengesTRANSCRIPT
!
!
!
!
Pablo Ruiz [email protected]
Tuenti + WebRTC Telco 2.0 ’s Challenges
!
!
!
!
Pedro Álvarez [email protected]
Why we are here? Recount our journey, from the very beginning to our success.. :P
Our Mission! Provide the best over-the-top experience to Tuenti’s customers.
… Using the customer’s already existing GSM number!
… With no additional data charges!
… Working on any environment condition!
… With the best voice quality available!
… Integrated with existing Tuenti features (like chat, social app, etc.)
… Available on any platform (iOS, Android & Web)!
An inbound & outbound VoIP service
why choosing WebRTC in first place?0
…Or, what’s wrong with using a SIP SoftPhone?
already using WebRTC
for App2App calls
THE CHALLENGES
Challenge #1: Multiples platforms..
WebRTC has no ‘official’ signaling…
Challenge #2: The signaling..
Why not reusing our XMPP / Chat infrastructure…
…as our signaling transport?
Challenge #2: The signaling.. (II)
Tangle! signaling protocol
over XMPP
<tangle action='session-initiate' sid='dd'> <sdp> <![CDATA[ SDP ]]> </sdp> </tangle>
Challenge #2: The signaling.. (III)
Got it, but… What’s wrong with WebRTC + SIP?
WebRTC +
SIP
Challenge #2: The signaling.. (IV)
Challenge #3: Talking SIP..
However, we should be talking SIP to our SBCs… but, how?
And, how can we develop an ALG? Say hello to Mobicents Java Stack
Challenge #3: Talking SIP.. (II)
Challenge #4: Telco incompatibilities
WebRTC has quite funny requirements
• SRTP • TURN • STUN • ICE
But don´t worry, your vendor is there
to help you!
Challenge #5: The codec..
• G.729? • G.723? • iLBC?
iLBC, for the win?
GGSN
HLR
SMSC
BSSO
CS
AuC
SBCs
STP
Free
Swit
ch
Kam
ailio
WA
S IM / Chat
REST / WS
DataBase
. HAProxy
This was our existing environment…
…with the void we had to fill
Attempt Let’s ¿KISS?!1
GGSN
HLR
SMSC
BSSO
CS
AuC
SBCs
STP
IM / Chat
REST / WS
DataBase
. HAProxy
Our first attempt looked like:
Beautifully simple, isn’t it?
.
HA
Prox
y
.
H
APr
oxy
ALG+MLB
ALG+MLB
ALG+MLB
ALG+MLB
Session replications? Only if you use Jboss 5.1 (released on 2009)
Well, not really.. even using Jboss 5.1, session replication is not available at Mobicents’ master
Mobicents LB.. WTF? Houston, we need a (real) load balancer
ABORT!! ABORT!! MISSION!!!
Attempt This time using a real load balancer2
GGSN
HLR
SMSC
BSSO
CS
AuC
SBCs
STP
IM / Chat
REST / WS
DataBase
. HAProxy
Our second attempt looked like:
Ok, still a somewhat ‘simple’ setup…
ALG#1
ALG#2
ALG#4
ALG#3
Kam
ailio
Kam
ailio
.
HA
Prox
y
.
H
APr
oxy
ALG+MLB
ALG+MLB
ALG+MLB
ALG+MLB
But.. humm.. ehmm.. ehem.. our SBCs support ICE?
Ooops.. ABORT!
Attempt We need to handle media too…3
GGSN
HLR
SMSC
BSSO
CS
AuC
SBCs
STP
IM / Chat
REST / WS
DataBase
. HAProxy
Our third attempt looked like:
May be not so KISS, anymore.. :(
ALG#1
ALG#2
ALG#4
ALG#3.
H
APr
oxy
.
HA
Prox
y
RTPEngine
RTPEngine
Kam
ailio
Kam
ailio
ISSUES
ISSUES EVERYWHERE
Well in the end RTPEngine was too good to be true ™, and not
‘mature enough’..
… ABORT! …
Attempt FreeSwitch as media transcoder FTW!4
GGSN
HLR
SMSC
BSSO
CS
AuC
SBCs
STP
IM / Chat
REST / WS
DataBase
. HAProxy
Our fourth attempt looked like:
Dude this is starting to look a bit messy..
ALG#1
ALG#2
ALG#4
ALG#3.
H
APr
oxy
.
HA
Prox
y
Trans #1
Trans #2
Trans #3
Trans #4
RTPEngine
RTPEngine
Kamailio
Kamailio
SUCCESS!! \o/CHALLENGE
ACCOMPLISHED
Achieving nirvana! Yes.. success! But this is really the ‘best experience’ we were looking for?5
iLBC they said..
OPUS ISAC OPUS (NB, 8k, VBR)
Do all codecs perform the same on every platform? Not really.. :(
And even in some extreme cases, some terminals had not enough power to move WebRTC (with
any valuable codec)
(Codec) Performance testing
!
Diagnosing… what’s going on in our house?
Devastating Victory
Summarizing when using WebRTC against your favorite telco...
Do not believe it when a SBC/Switch vendor tells you it
‘supports’ WebRTC.
Avoid SIP/TLS if you can.. (or at least do not try to do SIP/TLS end2end against your telco stuff)
Try to setup something in between in charge of SRTP, ICE & Media Transcoding..
Choose carefully the codecs and their parameters..
Consider implementing a feature capabilities mechanism into your application..
Setup a smart load-balancing & failover strategy..
Thanks!