webrtc meetup barcelona 2017

44
WebRTC in Telefonica with TU and Tuenti Juan de Bravo @juandebravo http://www.juandebravo.com

Upload: juan-de-bravo

Post on 12-Apr-2017

238 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: WebRTC meetup barcelona 2017

WebRTC in Telefonicawith TU and Tuenti

Juan de Bravo@juandebravohttp://www.juandebravo.com

Page 2: WebRTC meetup barcelona 2017

TU & Tuenti Products SignallingMedia

Beyond calls

Page 3: WebRTC meetup barcelona 2017

TU and Tuenti1

Page 4: WebRTC meetup barcelona 2017
Page 5: WebRTC meetup barcelona 2017

* Telephone Extension (Wifi coverage)* Domestic cost even on roaming* Back-up (multi-device)

Page 6: WebRTC meetup barcelona 2017
Page 7: WebRTC meetup barcelona 2017

E2E signalling2

Page 8: WebRTC meetup barcelona 2017

Incoming Call in TU Go and Tuenti

Page 9: WebRTC meetup barcelona 2017

TU Go

Incoming Call

PC/Desktop Smartphone iPod touch

Tablet

CellularVoIP

Incoming call

Page 10: WebRTC meetup barcelona 2017

The signalling. TU Go

NGIN SBC OB SBC TU Go FS APP 1

IAM (CAMEL)

SIP

SIP

SIP

APP 2

SIP (TLS)Parallel Ringing

SIP(VoLTE)

SMX

SIP

SIP (TLS)

SIP

Page 11: WebRTC meetup barcelona 2017

Why not reusing our XMPP / Chat infrastructure…

…as our signalling transport?

The signalling. Tuenti

Page 12: WebRTC meetup barcelona 2017

The signalling. Tuenti

NGIN SBC OB SBC Tuenti FS CHATSERVER

IAM (CAMEL)

SIP

SIP

SIP

APP 1

XMPPParallel Ringing

SIP-XMPP GW

SIP

SIP

APP 2

XMPP

XMPP

XMPP

Page 13: WebRTC meetup barcelona 2017

Tangle!signalling protocol

over XMPP

<tangle xmlns='com:tuenti:voice:tangle' action='session-initiate' sid='cea59k47sd59n'> <sdp> <![CDATA[ SDP ]]> </sdp></tangle>

The signalling. Tuenti

Page 14: WebRTC meetup barcelona 2017

Simple, right??What if the app is

not running?

The signalling

Page 15: WebRTC meetup barcelona 2017

The signalling. Call pickup

FRS GCM

SIP

APNS

SIP (TLS)

SMX

SIP

SIP (TLS)

APP 1 APP 2

Incoming Call

Wake up!Wake up!

Wake up!

Wake up!Ready!

Ready!

Parallel Ringing

Call Pickup

Page 16: WebRTC meetup barcelona 2017

The signalling. Call pickup

FRS GCM

SIP

APNS

SIP (TLS)

SMX APP 1 APP 2

Incoming Call

Wake up!Wake up!

Wake up!

Wake up!Ready!

Not really!

Single Ringing

Page 17: WebRTC meetup barcelona 2017

Simple, right??What about the

GSM leg

The signalling

Page 18: WebRTC meetup barcelona 2017

The signalling. GSM leg

NGIN SBC OB SBC TU Go FRS APP 1

IAM (CAMEL)

SIP

SIP

SIP

SIP

APP 2

SIP (TLS)Parallel Ringing

SIP(VoLTE)

SMX

SIP

SIP (TLS)

MGW

SIP

GSM

IAM

Splash Ringing?

Page 19: WebRTC meetup barcelona 2017

The signalling. Avoid splash ringing

Artificial delay(in smartphones)

Page 20: WebRTC meetup barcelona 2017

The signalling. Avoid splash ringing

Master Device

Page 21: WebRTC meetup barcelona 2017

The signalling. Avoid splash ringing

Preferred hotspots

Page 22: WebRTC meetup barcelona 2017

IMSI detection

The signalling. Avoid splash ringing

Page 23: WebRTC meetup barcelona 2017

I heard something about CallKit…

The signalling

https://tu.com/en/weblog/2016/09/12/ios-10-and-tu-go-match-made-heaven/http://corporate.tuenti.com/es/blog/Integramos-totalmente-nuestra-VozDigital-con-iOS-10

Page 24: WebRTC meetup barcelona 2017

The signalling

Protocol: Proprietary JSONTransport: WSS

Protocol: TangleTransport: WSS

And what about Web?

Page 25: WebRTC meetup barcelona 2017

Media3

Page 26: WebRTC meetup barcelona 2017

WebRTC AECNetEqualizer

Web RTC

Media stack

Page 27: WebRTC meetup barcelona 2017

Multi Platform

Page 28: WebRTC meetup barcelona 2017

Call establishment negotiation

ICE

NAT traversal

STUN

TURNSRTP

Codecs

Page 29: WebRTC meetup barcelona 2017

• Opus • G.711• G.722 • iLBC• iSAC

Codecs

Page 30: WebRTC meetup barcelona 2017

* Avoid transcoding* Prioritise, filter, etc in the service layer only

whenever needed* Licenses! (OPUS is royalty-free ;))

Codec rules

Page 31: WebRTC meetup barcelona 2017

STUNTURN

WSS

NATNAT

MEDIA

SIGNALING

MEDIA

SIGNALING

TCP/TLS

Where are you?ICE

Page 32: WebRTC meetup barcelona 2017

Setting up the callICE 1. Shortcut: send SDP as soon as public IP is detected

Page 33: WebRTC meetup barcelona 2017

Setting up the callICE 2. ICE always tastes better when it trickles!

https://webrtchacks.com/trickle-ice/

<iq id=“2586b46a-9ae8-4fb6-a314-a0219ca566a9" to="[email protected]" type="set" xmlns=“jabber:client"> <tangle action="transport-info" sid=“30643dde-e346-4be3-94ae-873f12bd191f" xmlns=“urn:xmpp:tangle:1"> <sdp> a=candidate:4036649468 1 udp 1686052607 83.61.156.2 63502 typ srflx raddr 192.168.1.50 rport 63502 generation 0 ufrag H+Ma network-id 1 network-cost 10 </sdp> </tangle></iq>

Page 34: WebRTC meetup barcelona 2017

Securing your call

Page 35: WebRTC meetup barcelona 2017

Securing your call

SRTPSDES

DTLS{

Page 36: WebRTC meetup barcelona 2017

Securing your callSRTP: SDESINVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/TLS 192.168.1.81:52863;rport;branch=z9hG4bKPjiVYvvw9wG9vTUzIJ6YQh37yx0DD4AyUX;alias From: "JuanB" <sip:[email protected]>;tag=LonKEsTSSsoaKFmn1xhXTn9HMnAI9xeb To: sip:[email protected] CSeq: 1744 INVITE [...] Content-Type: application/sdp Content-Length: 688

v=0 o=- 3697196302 3697196302 IN IP4 192.168.1.81 s=pjmedia m=audio 10000 RTP/SAVP 120 104 8 [...] a=crypto:1 AES_256_CM_HMAC_SHA1_80 inline:HC8dcW1ClfJVndzSXkcb7WDea1qAU9ema20CuCpMYh6/z+Vxu4CLC/cS7xOwSA== a=crypto:2 AES_256_CM_HMAC_SHA1_32 inline:gTqaxyolB4Ugz6dBDGCochn1YxDb5NtLhPtVu0ng7RFrQS1gMzUOlHsfn5y3LQ== a=crypto:3 AES_CM_128_HMAC_SHA1_80 inline:yxLnTeZnPHZSjyiuP0AlL/cxzzRn4uOiINchJ9ts a=crypto:4 AES_CM_128_HMAC_SHA1_32 inline:IqFbpQS2VTKXV/czYya+ArB7O2h4naS1vSVqE70Y

Page 37: WebRTC meetup barcelona 2017

Securing your call

SIP/2.0 200 OK Via: SIP/2.0/TLS 192.168.1.81:52863;received=83.61.156.2;branch=z9hG4bKPjiVYvvw9wG9vTUzIJ6YQh37yx0DD4AyUX;alias;rport=52863 From: "JuanB" <sip:[email protected]>;tag=LonKEsTSSsoaKFmn1xhXTn9HMnAI9xeb To: <sip:[email protected]>;tag=eZc259D0a38rQ CSeq: 1744 INVITE Content-Type: application/sdp Content-Length: 354

v=0 o=FreeSWITCH 1488174929 1488174930 IN IP4 91.220.9.42 s=FreeSWITCH c=IN IP4 91.220.9.42 t=0 0 m=audio 22572 RTP/SAVP 104 101 a=rtpmap:104 iLBC/8000 a=fmtp:104 mode=30 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=silenceSupp:off - - - - a=ptime:30 a=crypto:3 AES_CM_128_HMAC_SHA1_80 inline:v8Swaxd7oSV4h3sF2nst/tFAcgSnIBlYGnln3m6V

SRTP: SDES

Page 38: WebRTC meetup barcelona 2017

Securing your callSRTP: DTLS[…] a=fingerprint:sha-256 FE:6E:45:10:C1:D4:0A:F4:55:E4:83:93:AD:6E:A7:BD:F9:24:CE:3A:EA:51:01:81:3F:95:1A:3E:20:C3:2E:AE a=setup:actpass a=mid:audio a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=sendrecv a=rtcp-mux […]

Page 39: WebRTC meetup barcelona 2017

Securing your callSRTP: DTLS

[…] a=fingerprint:sha-256 A5:53:D0:1F:FF:C9:56:CA:C9:7B:3B:5B:8D:2B:EE:D0:40:96:A5:BE:67:64:EE:3D:2D:04:42:B2:01:19:68:58 a=setup:active a=rtcp-mux […]

Page 40: WebRTC meetup barcelona 2017

Beyond calls4

Page 41: WebRTC meetup barcelona 2017

Filters

Page 42: WebRTC meetup barcelona 2017

Call Recording

Page 43: WebRTC meetup barcelona 2017

Video Calls

poweredby

Page 44: WebRTC meetup barcelona 2017

Thanks!

Juan de Bravo@juandebravohttp://www.juandebravo.com