What is WebRTC?

WebRTC is an open source project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose

  • Web Real-time Communication
  • Interoperation across vendors
  • Standards managed by W3C and IETF
  • Open-Source Mobile
  • Why use WebRTC
    • Gets audio/video to/from a and b fast
      Critical mass across browsers and devices
      – no need to reinvent the wheel
      – lower friction due to “no plugin” installation
      – User control over permissions
      Easy to work with
      – Leverage HTML5/Javascript
      – Lots of APIs (getUserMedia,RTCPeerConnection, RTCDataChannel, getStats)
      Click a link: connected!
      A lot of hype but perhaps not overhyped

    Collaboration WebRTC Adoption

    • Collab’s choice of WebRTC was not so straightforward
    • in 2014
      – Poor browser support (chrome early Firefox)
      – Codec wars in effect
    • Collaborate’s choice: Use WebRTC to deliver browser-based conferencing
      – What about Collaboration original
      – Only Chrome was mature enough at the time to meet market expectations
      – Multiple HQ videos with good sync
      – Desktop Sharing
      – Other browsers use flash required (one video no desktop sharing)
      – We’ve been adding additional browsers as they mature Firefox in 2016, Safari 11 and Edge are on the way)
      – Flash end of life: 2020
  • Browser Implementations
    • Codec Wars
      SDP vs ORTC
      Browser Compliance
      Browser Permissions

    Codec Wars:

    • Audio agreed to: OPUS
      – High speed collision between technologies
      – Low bit rates for speech
      – High bit rates for music
      – Forward Error Correction
    • Video- not so much
      – VP8 from the Google Camp
      – H.264 from the Cisco/Apple/Microsoft
      – No significant performance difference, we don’t care!
      – Patents main blocker for H.264
      – Finally Solved by MPEG LA (via Cisco) giving it away.
  • SDP vs ORTC
    • How to describe the details for the media session?
      – Capabilities and connectivity between peers
      Session Description Protocol
      – Text-based and very complex for multi-channel
      – Existing browsers use SDP
      – Even here, two different versions: Unified Plan vs Plan B
      Object Real-Time Communications
      – Simpler and less proscriptive
      – Microsoft used ORTC and not SDP for Edge

    Browser Compliance

    • After years of in-fighting we have a standard: WebRTC 1.0
      – Working Group first created in May 2011
      – Originally expected to finish end of Feb 2013
      – Last call Started October 2016
      – First candidate Recommendation: November 2017
    • Browsers have different degrees of adherence to standards
    • Adapter.js Serves to normalize subtle browser differences
  • Browser Permissions
    • Microphone/camera access
      The camera light
      User fingerprinting
      Local IP address enumeration

    WebRTC Connections

    • We’ve exchanged SDP; now how do we connect to send/receive audio and video?
    • Simplest case almost never works – users are very rarely connected to directly to the internet
    • Need to handle a wide range of possible network configurations
    • Network Address Translations
    • IPv4 address limitations: running out of IP Addresses
    • Works fantastically well for normal web requests
    • Terrible for real-time media
    • User Datagram Protocal
      – fast, buy lossy “best effort”
    • Transmission Control Protocol
      – reliable, but slow “guaranteed”
    • For real-time media, time is king: prefer loss over delay
    • Transport Layer Security
      – Encrypted, secure, private
      – For UDP or TCP
  • Collaborate’s MCU – Core Technology
  • Peer to Peer – WebRTC is about connecting two endpoints with media. How do you create a conference?
  • Multipoint Conferencing Unit
  • Selective Forwarding Unit
    • Hybrid

    Bandwidth adaptation

    • Packet Loss: sequence Numbers
    • Latency: time stamp
    • How our MCU technology improves the experience
      – Differing bandwidth
      – Quantizing Modes
      – Three Bands
      – High bit rate (pass through)
      – Low bit rate
      – Ultra low bit rate

    Key Differentiators

    • prioritization
      – audio: by adapting quickly, we can ensure that video bandwidth does not interrupt audio traffic
      – video: high quality video for primary speaker and/or desktop sharing
    • Customization
      – Each viewer gets the best quality available to them,based on their bandwidth
    • Scale
      – Collaborate supports 500 users in a single session.
  • Future of WebRTC
    • Scalable Video Coding: VP9 vs H.265 -> VC1
      Data Channels
      – Chat/Subtitles
      – File transfers
      – Synchronization/Gaming
      An enabling technology: endless applications
      – AI agents: bots!
      – Internet of Things

    Future Adaptations for Collaborate and WebRTC

    • Prepare for Flash EOL (2020)
      – Safari 11 and Edge native support (on the roadmap)
      – Plugin for Safari 10 and IE11, and/or end support
    • Example feature Requests
      – Dedicated video channels (sign language, labs, presentations)
      – More Videos
      – Primary limitation is available bandwidth
      – Desktop Cursor Control
      – WebRTC desktop sharing is not VNC