callstats.io monitors and manages the media sessions in a WebRTC application. The slideshow highlights why monitoring the quality of the session is important, what is visualised to help with diagnostics. For more information about the management and notification features, contact varun -at- callstats.io
2. RTP/RTCP, Extension Reports, Multipath, FEC
Congestion Control, Statistics API
Ph.D. Thesis: Protocols and Algorithms for adaptive multimedia systems
http://urn.fi/URN:ISBN:978-952-60-6221-1
7. Gameplan
• Do nothing
—> It is someone else’s problem
• use the following reasons in support:
1.Insufficient,Capacity,,(upgrade,plan),
2.Misbehaving,Browser/Device,(update,or,change),
3.Or…,NATs/Firewall,,,,,,,(change?),
• Bonus tip: you can use the same reasons for the
other customer’s ISP (Internet Service Provider).
9. Gameplan
• Do Nothing
• Wait for feedback
• Active Monitoring
• endpoint monitoring
• network monitoring
10. 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
14. Failed conferences
ICE connection failure
the endpoints encounter
a NAT/Firewall.
What was the
main cause of
failure?
Totally failed: Sessions
failed for all participants.
Partially failed: some
participants were not
able to join the
conference.
15. Search
• for a particular conferenceID
• by criteria: failed calls, TCP calls,
relayed calls
• monitor ongoing calls in real-time
17. Annoyances
Setup times: waiting for the conference to
begin: NAT traversal, negotiation, etc.
Note: gathering and connectivity
checks can happen concurrently
18. Connectivity Failure
reportError()New API:
catches other types of errors, for example
when negotiation fails due to SDP errors
callstats.js automatically detects when connectivity checks fail and reports it
21. 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.
22. Disruptions and user behaviour
User Behaviour: The user tries to correct for the
disruption by turning on and off videoZoom in to the events
to view disruptions
24. Quality Metrics
In this case, it shows two
users have comparable
quality of experience,
meanwhile the third user
has one order lesser
q u a l i t y a n d a l s o
indicative that the user
drops and rejoins.
Also shows that the
congestion control has a
late joiner problem. As
the quality improves as
when one user drops off
at the end of the call.
higher value indicates better user experience.
25. Notifications
• WebRTC Clients Notifications
• (e.g., modify settings to deliver optimum quality)
• Dashboard/Operation Notifications
• (e.g., aggregate quality or number of completed
session dropped below a threshold, etc)
27. • Analytics for WebRTC
• 3 lines of code —> 5 minutes.
1. include <script>
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/