getting the best out of webrtc

33
Getting the Best out of WebRTC Tim Panton - Protocol Droid - Westhawk Ltd Dan Jenkins - Chief Ape - nimblea.pe & Respoke

Upload: digium

Post on 12-Jul-2015

119 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Getting the best out of WebRTC

Getting the Best out of WebRTC

Tim Panton - Protocol Droid - Westhawk Ltd Dan Jenkins - Chief Ape - nimblea.pe & Respoke

Page 2: Getting the best out of WebRTC

Simple 1 for 1 replacement ?

No!Bandwidth / CPU use are different

Page 3: Getting the best out of WebRTC

How to plan a deployment

A talk in two parts

Page 4: Getting the best out of WebRTC

Architecture and Choices

Page 5: Getting the best out of WebRTC

Practical numbers and graphs

Page 6: Getting the best out of WebRTC

Assumptions

If you are here you are probably

Doing this commercially - Quality matters

Using Asterisk - Hybrid model with some PSTN

Have Asymmetric calls - agents and users

Are on a tight bandwidth and CPU budget

Video not top priority (yet)

Have a clue

Page 7: Getting the best out of WebRTC

WebRTC Topologies

Page 8: Getting the best out of WebRTC

Video Peer Calls

WebserviceAsterisk

AgentUser

Internet

SIP

Video

Audio

HTML

Context

Page 9: Getting the best out of WebRTC

Internal Audio Agents

Asterisk

L A N

App Server

UserP S T N

Agent

Agent

Agent

Agent

Agent

Page 10: Getting the best out of WebRTC

External Audio Agents

I N T E R N E T

UserP S T N

Agent

Agent

Agent

Agent

Agent

WebRTC

Asterisk

App Server

Page 11: Getting the best out of WebRTC

External Audio Users

L A N

User

I N T E R N E T

Agent

Agent

Agent

Agent

Agent

DeskPhones

WebRTC Audio

HTML

Asterisk

App Server

SIP Phones

Page 12: Getting the best out of WebRTC

Hybrid

L A N

UserI N T E R N E T

Agent

Agent

Agent

Agent

Agent

DeskPhones

WebRTCAudio

HTML

Asterisk

App Server

Agent

WebRTC

SIP Phones

User

PSTN

Audio FAX SMS

Twitter

Chat

EmailFacebook

Skype

Page 13: Getting the best out of WebRTC

WebRTC issues

How webRTC differs from plain old SIP

ICE - can penetrate NAT at cost of setup time

DTLS - encrypted traffic but call setup costs CPU

Web service - may expose your Asterisk

SRTP - encrypted media costs some CPU too.

Page 14: Getting the best out of WebRTC

Codecs

Codecs implemented in browsers today:

ULAW - old favourite - high bandwidth/ low cpu2 quality modes - landline or incomprehensible

Opus - new comer - low bandwidth / high cpuflexible quality and error correction settings

VP8 - free video codec - High but variable bandwidth

H264 - licensed video codec - free if < 100k (IANAL)

Page 15: Getting the best out of WebRTC

Codecs - ideal choices(audio only)

Codec Setting Reasoning

P2P video Opus None The browser knows best

IntAgents ulaw None low loss on LAN +

will end up on PSTNExt

Agent Opus High BW / low loss Can set minimum DSL standards for staff

Ext User Opus Low BW / high loss Users share DSL with

web/games etc

Note - Digium does not support opus on Asterisk

Page 16: Getting the best out of WebRTC

DTLS - crypto selection

Page 17: Getting the best out of WebRTC

WebRTC uses DTLS to generate SRTP key

Different Cypher suites

Different key lengths

Multiple certificate sources

All impacts CPU usage at call setup.

Page 18: Getting the best out of WebRTC

ICE - Tricks

Page 19: Getting the best out of WebRTC

Assume your asterisk has a public IP

Probably don’t need a TURN server

Avoid offering candidates for internal IPs

Don’t offer VPN candidates

Can probably get away with setting ice-lite

Page 20: Getting the best out of WebRTC

Architecture - Asymmetry

Page 21: Getting the best out of WebRTC

In future we expect more asymmetric cases

Mayday - they see your screen not you

Baby monitor - 1 way video but 2 way audio ?

Security cameras

Page 22: Getting the best out of WebRTC

What does that all mean in practice

Probably:

Higher CPU use (especially with Opus)

Longer call setup times

Very high bandwidth with Video (if enabled)

Page 23: Getting the best out of WebRTC

Tools to monitor

Probably:

WebRTC stats (Respoke Stats)

www.npmjs.org/package/getstats

chrome://webrtc-internals

CollectD / Graphite

Page 24: Getting the best out of WebRTC

Some Numbers

Test scenario:

Asterisk: 11.8.1

on machine: Centos Intel(R) Core(TM) i3-4010U CPU @ 1.70GHz

Chrome 38

Ramp up 24 calls

Play back intermittent audio (IVR usage)

Graph - bandwidth / CPU / calls / time

Page 25: Getting the best out of WebRTC

24 ulaw audio calls

Graph

Page 26: Getting the best out of WebRTC

24 opus audio calls - No settings

Graph

Page 27: Getting the best out of WebRTC

24 opus audio calls Low BW high loss

Graph

Page 28: Getting the best out of WebRTC

Some MORE “Numbers”

Test scenario:

Digital Ocean

Medium Droplet

San Francisco

Page 29: Getting the best out of WebRTC

1 P2P video call - LAN/WAN

http://bit.ly/dt-demo

Page 30: Getting the best out of WebRTC

1 P2P video call - WAN

http://bit.ly/dt-demo

Page 31: Getting the best out of WebRTC

Live demo using respoke Chrome (android too) browse here!

URL:

http://bit.ly/dt-asterisk

Page 32: Getting the best out of WebRTC

Thank you!

Questions?

More info at:

github.com/danjenkins/web-examples

@dan_jenkins

@steely_glint

www.respoke.io

Page 33: Getting the best out of WebRTC

http://upload.wikimedia.org/wikipedia/commons/c/ca/Padlock_2010.JPG http://upload.wikimedia.org/wikipedia/commons/8/8e/Ice_road_in_the_Northwest_Territories_-a.jpg http://upload.wikimedia.org/wikipedia/commons/4/41/Asymmetric_%28PSF%29.png

Images Used