2014 pablo ruiz tuenti webrtc

Post on 03-Jul-2015

157 views 2 download

description

Tuenti + WebRTC Telco 2.0´s Challenges

Transcript of 2014 pablo ruiz tuenti webrtc

!

!

!

!

Pablo Ruiz pruiz@tuenti.com

Tuenti + WebRTC Telco 2.0 ’s Challenges

!

!

!

!

Pedro Álvarez palvarez@tuenti.com

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!