Webrtc: the Journey from Browser Plugins to Thin Client Communications
Total Page:16
File Type:pdf, Size:1020Kb
WebRTC: The Journey From Browser Plugins to Thin Client Communications Keith Griffin Ph.D Principal Engineer Office of CTO – Collaboration Technology Group BRKCOL-2556 Agenda • Introduction • Our Journey to WebRTC • Browser Plugins • The End of The Beginning • WebRTC as an Enterprise Media Termination Solution • WebRTC in Cisco Collaboration Products • Demo’s • State of the art and timing • Summary 3 Introduction 4 About WebRTC • What is WebRTC: • WebRTC is an API definition being drafted by the World Wide Web Consortium (W3C) • It is a free, open project that enables web browsers with Real-Time Communications (RTC) capabilities via simple JavaScript APIs • What is the merit of WebRTC: • WebRTC enables applications such as voice calling, video chat and P2P file sharing inside the browsers without plugins (or separate clients) BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 5 Interactive Voice and Video in the Browser... BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 6 But... • Proprietary – no interoperability • Requires 3rd party plugins • Difficult to deploy (permissions, etc...) • Not available on all platforms • Needs to updated BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 7 Browser Plugins for Media Termination 8 UC/Video has traditionally not been directly deployable in Browsers. Plugins and native apps fill these gaps BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 9 And Mobile Browsers Are Not Extensible Native mobile apps are required BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 10 The end of the beginning Timelines to deprecate plugins: 2014-2016 11 Different Browsers, Different Plugins • NPAPI – Netscape Plugin API • A cross platform browser plugin architecture in: • Chrome “Today’s browsers are speedier, safer, and more capable than their ancestors. • Firefox Meanwhile, NPAPI’s 90s-era architecture has become a leading cause of hangs, crashes, security incidents, and code complexity. Because of this, Chrome will be • Safari phasing out NPAPI support over the coming year.” http://blog.chromium.org/2013/09/saying-goodbye-to-our-old-friend-npapi.html • ActiveX • A browser plugin architecture created by Microsoft based on its COM (Common Object Model) and OLE (Object Linking and Embedding) technologies • Internet Explorer Browser Plugin Technologies stem from developments in the mid-nineties BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 12 Browser Market Share Usage share of PC browsers for December 2016 Source Chrome IE Firefox Safari Edge Others NetMarketShare 56.43% 20.84% 12.22% 3.47% 5.33% 1.70% StatCounter 62.66% 9.86% 14.95% 5.1% 3.37% 4.06% W3Counter 56.6% 7.7% 11.1% 14.5% 2% 8.1% http://en.wikipedia.org/wiki/Usage_share_of_web_browsers BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 13 WebRTC as a Media Termination Solution for Enterprise Collaboration 14 WebRTC: Web Real Time Communications Browser + Voice + Video + Data in Real Time What WebRTC enables: • Browsers with interactive voice and video communications • Real time media and data directly between browsers • Interoperability with existing voice and video systems BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 15 WebRTC in a HTML5 Context SEMANTICS MEDIA & GRAPHICS <!DOCTYPE html> <footer> WebRTC RTCWeb <header> <audio> MathML <audio> <video> <canvas> <section> <video> <time> WebGL SVG <output> INTEGRATION OFFLINE / STORAGE Drag & Drop Application Cache Touch Events Geolocation Full Screen IndexedDB localStorage STYLING border-radius columns PERFORMANCE XMLHttpRequest border-image shadows CSS3 Web Workers Web Sockets backgrounds transitions window.history animations BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 16 WebRTC Native Browser Architecture Collaboration Apps WebRTC Javascript API WebRTC WebRTC Native API (C++) Session Management (SDP) Voice Engine Video Engine Transport Voice Codecs Video Codec Encryption / Security Noise Packetisation Reduction Jitter Buffer Multiplexing Echo Image Cancellation Connectivity Enhancements ICE, STUN, TURN Adapted from WebRTC architecture diagram BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 17 Browser to Non-Browser Endpoint High-level Real-time Communications Architecture Voice, Video via SRTP Web App via HTTP/HTTPS (e.g. HTML, CSS, JavaScript) Web Server SIP SIP Proxy GW to SIP BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 18 Example: Consumer to Expert with Video (Browser to End Point) High Level Architecture Firewall Public Internet Traversal Voice/Video Call Control Video Chat Contact Centre Consumer Softclient BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 19 What can we really do with this technology? BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 20 WebRTC in Cisco Collaboration Products 21 WebRTC in the Collaboration Portfolio Product Coverage • Cisco Spark Web Client • Cisco Spark SDK • Webex Web App via WebRTC VoIP/Opus • Attendee Mode • Webex on Chromebook • Variation of Webex Web App • WebRTC attendee video support via hardware enabled H.264 • Remote Expert Mobile / Jabber Guest • Enablers: Industry components such as browsers directly impact • H264 based WebRTC support in browsers product direction – enablers must be fully capable • Firefox currently supports H.264 before product can adopt • Chrome currently adding H.264 • Microsoft Edge adding support WebRTC/ORTC/H.264 »Currently in Edge Preview Build »https://developer.microsoft.com/en-us/microsoft-edge/platform/status/h264avcforrtc/?q=h264 BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 22 Cisco Spark Web Client and SDK Olivier Proffit – Cisco Spark SDK Team 23 Cisco Spark SDK for JavaScript Resources Quick Start Guide https://ciscospark.github.io/spark-js- sdk/example/getting-started/ Sample App https://ciscospark.github.io/spark-js-sdk/app/ Open source code https://github.com/ciscospark/spark-js-sdk API reference https://ciscospark.github.io/spark-js-sdk/api/ And more to come … BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 24 Update, if portal Embed the Cisco Spark SDK is in place How to start 1. Register you app on 2. Get your Oauth query parameters developer.ciscospark.com/apps.html BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 25 Spark SDK - Features Call & Other Calling Media Controls Functions Specs • Calling • Call Control • Persistent iOS SDK - swift registration • iOS 9 and 10 • Call Events • Audio Control JS SDK - WebRTC • Feedback • Chrome - current • Video Control • Firefox - current CODECS • H264 • Opus BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 26 Cisco Spark SDK – Calling Capabilities Cisco Spark SDK can dial • Spark SDKs • Spark clients • Spark phones • Spark rooms • SIP URI – Cisco or any 3rd party • PSTN number through Spark hybrid services with CUCM or HCS • PSTN number through Spark Call (US only) • PSTN number through Tropo (SIP call) BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 27 Add slide Cisco Spark SDK – Calling Capabilities Or animations Spark Hybrid services Pocket • Call Service Connect Your • Directory Service App & Spark SDK Cisco® Cisco Spark Service Collaboration Message | Meeting | Call Cloud Internet Cisco Hybrid PSTN Cisco Collaboration Edge Architecture Cisco On-Premises and Unified Customer Communications Care Conferencing Partner-Hosted HCS Boardroom End to End Security BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 28 Cisco Spark SDK – Calling Capabilities Add slide Or animations High level architectures examples Consumer to Consumer Enterprise collaboration with Hybrid CISCO CLOUD your your App + App & your Spark Spark App + SDK SDK Spark CISCO CLOUD SDK SIP Customer engagement Spark SDK your OPTIONAL EXISTING PSTN App + ON PREMISE CUCM Spark SDK SIP Internal participants External participants Business agents SPARK CALL - US CISCO CLOUD OR TROPO PSTN PSTN BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 29 Customers Incoming Call Notification JS SDK uses WebSocket iOS SDK uses APNS • Supported by all browsers • Incoming calls trigger a Spark membership webhook • Notifications sent to website opened in a running • Webhook registered to browser window developer’s server which calls APNS • Push notifications differ and are supported by few browsers BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 30 DATES & FEATURES SUBJECT TO CHANGE WITHOUT NOTICE Roadmap iOS and WebRTC SDK iOS and WebRTC SDK iOS and WebRTC SDK Beta General availability • Multiparty for Spark subscribers • Advanced screen sharing • Audio / Video • Audio / Video • 2-party • 2-party • Limited screen sharing • Limited screen sharing Android SDK (receive on iOS) (receive on iOS) Beta CY17 Q1 CY17 Q2 CY17 Later BRKCOL-2556 © 2017 Cisco and/or its affiliates. All rights reserved. Cisco Public 31 Spark SDK positioning Jabber Jabber Guest Remote Expert Mobile Spark SDK SDK SDK SDK Perpetual Perpetual Perpetual Go•-ToVs-Market Jabber Guest & REM Subscription pay upfront pay upfront pay upfront Mobile OS No mobile