Slide 1

Slide 1 text

Statistics in WebRTC Varun Singh CEO 04. 11. 2015

Slide 2

Slide 2 text

Announcement ¥ 0 plan for developers 2

Slide 3

Slide 3 text

http://geek-and-poke.com/

Slide 4

Slide 4 text

Why measure? 4 audio only call

Slide 5

Slide 5 text

Performance Monitoring Endpoint Endpoint Middlebox MCU, SFU, TURN, … Monitor Monitor Monitor Third party Monitor Operations & Management System Implement RTCP Extension Reports http://tools.ietf.org/html/rfc6792 https://tools.ietf.org/html/draft-ietf-xrblock-rtcweb-rtcp-xr-metrics

Slide 6

Slide 6 text

HTML APIs • HTMLVideoElement Extensions • http://www.w3.org/TR/2014/CR-media-source-20140717/#htmlvideoelement-extensions • droppedVideoFrames, corruptedVideoFrames, totalFrameDelay • WebRTC Statistics API • (work in progress) http://www.w3.org/TR/2015/WD-webrtc-stats-20150206/ • PeerConnection Metrics: RTP, datachannel • Transport Metrics: active and passive candidates • Security cipher suite

Slide 7

Slide 7 text

Edge Stats (ORTC) Lots of data still set to zero. but encouraging to see the data

Slide 8

Slide 8 text

cross browser • adapter.js is your friend

Slide 9

Slide 9 text

Monitoring What? • Per-stream media quality • Transport quality • Annoyances

Slide 10

Slide 10 text

What to measure? • Network metrics • bits per second, RTT, jitter, packet losses, … • Multimedia pipeline metrics • playout delay, frames metrics, … • Quality Models from metrics • Annoyances • resolution/frame rate changes, interface changes, … • failures (NATs, insufficient capacity for carrying media, …) • user feedback 10 CAVEAT: not all WebRTC applications care about the same metrics

Slide 11

Slide 11 text

Low hanging fruit • Endpoint monitoring (Traffic lights) • colors to show connection is active/inactive • off/online • good/bad/ugly

Slide 12

Slide 12 text

Transport Metrics

Slide 13

Slide 13 text

Diagnostics • characterise an impairment? • we start with an hypothesis… • implemented as decision trees • observe how often it occurs • within a call, across calls, geographies, … • How to characterise quality of the calls? 13

Slide 14

Slide 14 text

Disruptions Disruption: loss of connectivity when network interfaces change, low available capacity,or high delay The light grey vertical lines show disruption, highlighted by the red bounding boxes.

Slide 15

Slide 15 text

Intermittent Disruptions

Slide 16

Slide 16 text

Disruptions and user behaviour User Behaviour: The user tries to correct for the disruption by turning on and off video Zoom in to the events to view disruptions

Slide 17

Slide 17 text

Endpoint Churn 25% of the conferences has some users leave and rejoin.

Slide 18

Slide 18 text

Session Failure

Slide 19

Slide 19 text

Annoyances Setup times: waiting for the conference to begin: NAT traversal, negotiation, etc. Note: gathering and connectivity checks can happen concurrently

Slide 20

Slide 20 text

• Analytics for WebRTC • 3 lines of code —> 5 minutes. 1. include 2. initialize() —> needs registration keys 3. addNewFabric(pc, …) —> call started • optionally: send user events: audio muted/unmuted, video paused/resumed, call terminated, call held. • optionally: reportError() —> call failed to be setup due to SDP or Firewalls. • optionally: associateMstWithUserID() —> bridges using multiple media streams in a single peerconnection may want to correlate mediastream quality across endpoints. • optionally: collect and send user feedback http://www.callstats.io/api/