26
webRTC: from API to solution Dr. Alex Gouaillard, CTO Temasys

Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

Embed Size (px)

Citation preview

Page 1: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

webRTC: from API to solution

Dr. Alex Gouaillard,CTO Temasys

Page 2: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

webRTC vs RTCweb (w3c vs IETF, API vs protocols)

The missing pieces for a simple App (appRTC example)

The state of the technology

Page 3: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

webRTC vs RTCweb (w3c vs IETF, API vs protocols)

Very well addressed by peter, will do it fast

W3C Working Groups address the in-browser javascript API- Device API WG- webRTC WG- with a common task force: Media capture and stream (getUserMedia)

NOTE: Community group can be set up by anyone, and cannot define a standard: ORTC.

IETF: RTCWeb but also other groups (BUNDLE, RMCAT, ….)- define use cases- security- qos- CODECS ……

NOTE: W3C membership is required for some discussion, whereas joining the IETF mailing list makes you an IETF “member”.

Page 4: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

IETFgroup name status last versionAVT RTP/RTCP MUX RFC5761MMUSIC ICE RFC5245 2010MMUSIC ICE TCP RFC6544 2012MMUSIC SDP O/A RFC3264 2002BEHAVE STUN RFC5389 2008RTCWEB STUN-URI RFC7064 2013BEHAVE TURN RFC5766 2010BEHAVE TURN-URI RFC7065 2013RTCWEB JSEP draftHyBi WS Protocol RFC6455 2011

URI RFC3986 2005BEHAVE TURN RFC5928 2010RMCAT Congestion control 2013RMCAT REMB 2013RTCWEB 11 docs to fillBEHAVE TURN WS 2013BEHAVE TURN TCP RFC6062 2010

Page 5: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

webRTC vs RTCweb (w3c vs IETF, API vs protocols)

The missing pieces for a simple App (appRTC example)

The state of the technology

Page 6: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

Anatomy of a simple solution

Alice Bob

Web server

Signaling server

STUN TURN

1 2

1. Connect to an URL

initiator

Page 7: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

Anatomy of a simple solution

Alice Bob

Web server

Signaling server

STUN TURN

1. Connect to an URL2. Connect to the sig. server

initiator

Page 8: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

Anatomy of a simple solution

Alice Bob

Web server

Signaling server

STUN TURN

1. Connect to an URL2. Connect to the sig. server3. Alice send offer4. Server relays to bob5. Bob send answer

persistent

initiator

Page 9: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

Anatomy of a simple solution

Alice Bob

Web server

Signaling server

STUN TURN

1. Connect to an URL2. Connect to the sig. server3. Alice send offer4. Server relays to bob5. Bob send answer6. Handshake / ICE

One time

initiator

Page 10: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

Anatomy of a simple solution

Alice Bob

Web server

Signaling server

STUN TURN

1. Connect to an URL2. Connect to the sig. server3. Alice send offer4. Server relays to bob5. Bob send answer6. Handshake / ICE7. Media streams, life is good

media

Page 11: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

Anatomy of a simple solution: appRTC

Alice Bob

GAE GAE channelGoogle 1. Connect to an URL

2. Connect to the sig. server3. Alice send offer4. Server relays to bob5. Bob send answer6. Handshake / ICE7. Media streams, life is good

media

Page 12: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

Extension of a simple solution

Alice Bob

Web server

Signaling server

STUN TURN

1. Connect to an URL2. Connect to the sig. server3. Alice sends “hello”4. Server relays to bob5. Bob sends “welcome” 6. Handshake / ICE7. Only 1 PC per peer.8. Media streams, life is goodmedia

Page 13: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

Extension of a simple solution

Alice Bob

Web server

Signaling server

STUN TURN

1. Connect to an URL2. Connect to the sig. server3. Alice says “hello”4. Server relays to ALL5. ALL says “welcome”6. Handshake / ICE with all7. Only 1 PC per peer8. Media streams, life is good

Cyndi

Page 14: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

DO

NE

FR

OZE

N

IN C

ALL

CO

NN

ECTI

ON

HAN

DSH

AKE

(SD

P O

/A)

.

new

checking

connected

disconnected

failed

Completed

close

new

gathering

complete

CALLER SIG-SERVER CALLEE

stable

have-local-offer

stable

Close

CHAT

ENTER

WELCOME

OFFER

ANSWER

Create PC

Add local stream(s)Create offer<modify sdp>SetLocal(offer)Sending offer Create PC

SetRemote(offer)addRemoteStream(s)Add local stream(s)Create answer<modify sdp>SetLocal(answer)Send answer

stable

Have-remote-offer

stable

new

gathering

complete

onIceCandidate<Filter candidates>Send candidate

<Filter candidates>addIceCandidate

onIceCandidate<Filter candidates>Send candidate

<Filter candidates>addIceCandidate

new

checking

connected

disconnected

failed

Completed

close Close

© Temasys Communications, pvt, ltd, 2014 Document provided under CC BY-NC 4.0

CANDIDATES

PeerConnection

ICEConnection

ICEGathering

SetRemote(answer)addRemoteStream

BYE

Page 15: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

Limits of p2p mesh approach

Alice Bob

Alice Bob

Chris

Alice Bob

Chris David

2

6

12

Alice

Bob

Chris

EdDave

20

n(n-1) O(n^2)

Page 16: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

Business as usual MCU: multiplexing streams - wow, super bandwidth ! - Hum, what about latency? - What happen if peers are far away …. ?

Alice

Bob

Chris

EdDave

MCU

5

n O(n)

Page 17: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

Smarter topology ? - bandwidth optimization WITH layout freedom

2 7 12 17 220

100

200

300

400

500

600

typeStreams

INStreams

OUT

p2p N-1 N-1

MCU 1 1

Hybrid N-1 1

Page 18: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

webRTC vs RTCweb (w3c vs IETF, API vs protocols)

The missing pieces for a simple App (appRTC example)

The state of the technology

Page 19: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

Reference code: appRTC / appRTCDEMO

Desktopchrome firefox IE Safari Opera ref client

GUM 18+ 17+Temasys Plugin

12+Temasys

appRTCDeskPC 20+ 22+ 18+DC 26+ 22+ 18+

GAE N/A

iOSsafari firefox chrome Opera ref client

against apple policy …….. Temasys

contributionsN/A

Androidfirefox chrome Opera ref client

24+ 29+ 18+

appRTCDEMO24+ 29+ 18+24+ 29+ 18+

N/A

Page 20: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

Reference code: appRTC / appRTCDEMO

Desktopchrome firefox IE Safari Opera ref client

GUM 18+ 17+Temasys Plugin

12+Temasys

appRTCDeskPC 20+ 22+ 18+DC 26+ 22+ 18+

GAE N/A

iOSsafari firefox chrome Opera ref client

against apple policy …….. Temasys

contributions

N/A

Androidfirefox chrome Opera ref client

24+ 29+ 18+

appRTCDEMO24+ 29+ 18+24+ 29+ 18+

N/A

Page 21: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

Reference code: appRTC / appRTCDEMO

Desktopchrome firefox IE Safari Opera ref client

GUM 18+ 17+Temasys Plugin

12+Temasys

appRTCDeskPC 20+ 22+ 18+DC 26+ 22+ 18+

GAE N/A

iOSsafari firefox chrome Opera ref client

Temasys webkit upgrade crowdfundingTemasys

contributionsN/A

Androidfirefox chrome Opera ref client

24+ 29+ 18+

appRTCDEMO24+ 29+ 18+24+ 29+ 18+

N/A

Page 22: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

Firewall Traversal

current firefox stable: 26 OKupdated on 1/13/13 Done, not deployed

FAIL

chrome firefox SkypeLAN, no firewall fully open firewal (just IP/port mapping) complicated firewall (in term of IP/port mapping) firewall that blocks all UDP Bug 906968 => FF28 TCP port 80 tunneling TLS port 443 tunneling support http proxy application layer restrictions: HTTP/HTTPS TURN WS ?application layer restriction DPI no way to escape settings

Different firewall scenarii

Page 23: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

Firewall Traversal

IETF standards chrome firefox skyway

ports optimization rfc5761: RTP/RCTP MUX Bug 907353 draftxxx: BUNDLE Bug 784491

Basic connection (LAN) p2p

rfc5245: ICE draftxxx: faster "trickle" ICE Bug 842549 => FF27 rfc6544: ICE TCP Bug 891551

Normal Connection rfc5389: STUN Good Connection

Relayed

rfc5766: TURN over UDP

Great Connectionrfc5766: TURN over TCP Bug 906968 => FF28 not ONrfc5766: TURN over TLS/TCP ? not ONHTTP proxy support Bug 949703

The future draftxxx: TURN WS

connectivity feature support

Page 24: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

Other Features: screen sharing and recording

- Screen sharing => drama. In and out.- Available as a privileged API in chrome only (=> extension)- Mozilla pushing hard => will be in the specs, as a separate document

- Recording- In the specs already- Available in yesterday’s firefox 30!

Page 25: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

Warning … controversial topics

Page 26: Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC

This is the coverage you get when ignoring security

That raises concerns about open sourcing some webRTC code that touches security cases described in the IETF document, for example: plugins.