getting the best out of webrtc - astricon 2014
DESCRIPTION
Presentation at Astricon 2014 with Tim Panton about how to get the most of of WebRTC - making sure to deal with video bandwidth, asymetric calls and remembering that things are different to typical VoIP (SIP)TRANSCRIPT
Getting the Best out of WebRTC
Tim Panton - Protocol Droid - Westhawk Ltd Dan Jenkins - Chief Ape - nimblea.pe & Respoke
Simple 1 for 1 replacement ?
No!Bandwidth / CPU use are different
How to plan a deployment
A talk in two parts
Architecture and Choices
Practical numbers and graphs
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
WebRTC Topologies
Video Peer Calls
WebserviceAsterisk
AgentUser
Internet
SIP
Video
Audio
HTML
Context
Internal Audio Agents
Asterisk
L A N
App Server
UserP S T N
Agent
Agent
Agent
Agent
Agent
External Audio Agents
I N T E R N E T
UserP S T N
Agent
Agent
Agent
Agent
Agent
WebRTC
Asterisk
App Server
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
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
Chat
EmailFacebook
Skype
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.
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)
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
DTLS - crypto selection
WebRTC uses DTLS to generate SRTP key
Different Cypher suites
Different key lengths
Multiple certificate sources
All impacts CPU usage at call setup.
ICE - Tricks
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
Architecture - Asymmetry
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
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)
Tools to monitor
Probably:
WebRTC stats (Respoke Stats)
www.npmjs.org/package/getstats
chrome://webrtc-internals
CollectD / Graphite
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
24 ulaw audio calls
Graph
24 opus audio calls - No settings
Graph
24 opus audio calls Low BW high loss
Graph
Some MORE “Numbers”
Test scenario:
Digital Ocean
Medium Droplet
San Francisco
Live demo using respoke Chrome (android too) browse here!
URL:
http://bit.ly/dt-asterisk
Thank you!
Questions?
More info at:
github.com/danjenkins/web-examples
@dan_jenkins
@steely_glint
www.respoke.io
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