Janus L. Miniero Intro WebRTC Janus: a general purpose WebRTC gateway Standardization Gateways Requirements Janus Modules and APIs Lorenzo Miniero lorenzo@meetecho.com A few examples Next steps FOSDEM 2016 Real Time devroom 30 th January 2016, Brussels
Outline Janus L. Miniero 1 A brief introduction Intro 2 Some context WebRTC Standardization WebRTC and standardization activities Gateways Requirements Janus 3 Writing a WebRTC gateway from scratch Modules and APIs Programmable Real-time Media Components A few examples Next steps 4 Janus: a general purpose WebRTC gateway Modular architecture What is it used for today, and by whom? 5 Next steps
Who am I? Janus • Someone not used to this weather! L. Miniero • From sunny Sorrento, Italy � Intro • Current activities WebRTC Standardization • Just got my Ph.D @ UniNA Gateways • Co-founder @ Meetecho Requirements Janus • Worked on real-time applications for a long time Modules and APIs A few examples • IETF participant Next steps • Several WGs • First time in IETF67 San Diego (2006) • Open source contributor • libbfcp, libmsrp, confiance, mediactrl, Asterisk, ... • Janus WebRTC gateway main author • Getting older but, unlike whisky, not getting any better • https://twitter.com/elminiero
Christmas in Napoli! Janus L. Miniero Intro WebRTC Standardization Gateways Requirements Janus Modules and APIs A few examples Next steps
Real-time media in browsers Janus • No standard solution! L. Miniero • No interoperability Intro • Plugins need to be installed anyway WebRTC Standardization WebRTC = Joint standardization efforts Gateways Requirements • Internet Engineering Task Force (IETF) Janus Modules and APIs • World Wide Web Consortium (W3C) A few examples Next steps • RTCWEB (IETF) • Real-Time Communication in WEB browsers WG • Defines protocols and formats to use • WEBRTC (W3C) • Web Real-Time Communications WG • Defines UI and API to access devices
WebRTC reference architecture Janus L. Miniero Intro WebRTC Standardization Gateways Requirements Janus Modules and APIs A few examples Next steps
Involving a gateway (and applications) Janus L. Miniero Intro WebRTC Standardization Gateways Requirements Janus Modules and APIs A few examples Next steps
Involving different technologies as well Janus L. Miniero Intro WebRTC Standardization Gateways Requirements Janus Modules and APIs A few examples Next steps
Do we really need a gateway? Janus • Several reasons for a YES, here L. Miniero • Relieve full-meshes (heavy on the client side) Intro • Leveraging widespread technologies (e.g., SIP WebRTC Standardization infrastructures) Gateways • Fixing things between implementations Requirements Janus Modules and APIs • Reason for a NO? A few examples Next steps • You won’t go beyond interaction among few users • You don’t want an infrastructure • You don’t care about legacy stuff “What is a WebRTC Gateway anyway?” • http://webrtchacks.com/webrtc-gw/
Real-time Media Components Janus • Writing a gateway from scratch is a heavy task L. Miniero • Implementation of the WebRTC protocol suite Intro WebRTC • Bridge between “legacy” stuff (SIP , RTMP , etc.) and Standardization WebRTC Gateways Requirements • Needs to support both (WebRTC gateway) Janus Modules and APIs • What about statistics? A few examples Next steps • Reachability may be an issue • Programmable interface • Different applications/technologies, different requirements • Dynamic management of media flows and users • Something à la MEDIACTRL?
The WebRTC protocol suite Janus • Signalling (well, sort of) and Negotiation L. Miniero • Javascript Session Establishment Protocol (JSEP) • Session Description Protocol (SDP) adaptation Intro • Connection Establishment and NAT Traversal WebRTC Standardization • Session Traversal Utilities for NAT (STUN) Gateways • Traversal Using Relay NAT (TURN) Requirements • Interactive Connectivity Establishment (ICE) Janus Modules and APIs • Media Transport and Control A few examples • Real-time Transport (and Control) Protocol (RTP/RTCP) Next steps • Secure Extensions to RTP (SRTP) • Datagram Transport Layer Security (DTLS) • Media Transport and Control • Opus audio codec (MTI, Mandatory-to-implement) • VP8 video codec (MTI candidate) • Generic Data • WebRTC Data Channels (SCTP)
Janus: a general purpose WebRTC gateway Janus L. Miniero “In ancient Roman religion Intro and myth, Janus [..] is the WebRTC god of beginnings and Standardization Gateways transitions, and thereby of Requirements gates, doors, passages, Janus Modules and APIs endings and time. He is A few examples usually depicted as having Next steps two faces, since he looks to the future and to the past.” — http://en.wikipedia.org/wiki/Janus
Janus: a general purpose WebRTC gateway Janus • A door between the communications past and future L. Miniero • Legacy technologies (the “past”) Intro • WebRTC (the “future”) WebRTC Standardization Janus Gateways Requirements General purpose, open source WebRTC gateway Janus Modules and APIs • https://github.com/meetecho/janus-gateway A few examples Next steps • Demos and documentation: https://janus.conf.meetecho.com
Modular architecture Janus • The core only implements the WebRTC stack L. Miniero • JSEP/SDP , ICE, DTLS-SRTP , Data Channels, ... Intro • Modules for API over HTTP / WebSockets / RabbitMQ WebRTC Standardization • Application logic implemented in server side plugins Gateways Requirements • Users attach to plugins via the gateway core Janus • The gateway handles the WebRTC stuff Modules and APIs A few examples • Plugins route/manipulate the media/data Next steps • Some proof of concept plugins implemented • Echo Test • Streaming ( → Live events!) • Conferencing ( → Meetecho!) • SIP Gateway ( → “Legacy” SIP!) • ...
Extensible Architecture and API Janus L. Miniero Intro WebRTC Standardization Gateways Requirements Janus Modules and APIs A few examples Next steps
Extensible Architecture and API Janus L. Miniero Intro WebRTC Standardization Gateways Requirements Janus Modules and APIs A few examples Next steps
Extensible Architecture and API Janus L. Miniero Intro WebRTC Standardization Gateways Requirements Janus Modules and APIs A few examples Next steps
Extensible Architecture and API Janus L. Miniero Intro WebRTC Standardization Gateways Requirements Janus Modules and APIs A few examples Next steps
Extensible Architecture and API Janus L. Miniero Intro WebRTC Standardization Gateways Requirements Janus Modules and APIs A few examples Next steps
Extensible Architecture and API Janus L. Miniero Intro WebRTC Standardization Gateways Requirements Janus Modules and APIs A few examples Next steps
Plugins as “bricks” Janus • Each plugin is a feature, not an application L. Miniero • Application can be composed out of different features Intro WebRTC • Features as “bricks” for a complex scenario Standardization Gateways Requirements • A few examples... Janus • Webinar with Q&A Modules and APIs A few examples • Video Room (screen) + Video Room (speakers) + Audio Next steps Bridge (questions) • Video communication in social networks • SIP plugin (calls) + Echo Test (diagnostics) + Voice Mail (messaging) • Social TV • Streaming (TV channel) + Video Room (interaction)
Webinar with Q/A Janus L. Miniero Intro WebRTC Standardization Gateways Requirements Janus Modules and APIs A few examples Next steps
Social TV Janus L. Miniero Intro WebRTC Standardization Gateways Requirements Janus Modules and APIs A few examples Next steps
How do I... Janus • ... use Janus in my web app? L. Miniero • JavaScript library available ( janus.js ) Intro • https://janus.conf.meetecho.com/docs/JS WebRTC • Several demos available to start from Standardization Gateways • ... use Janus, but keeping my API? Requirements Janus • Wrap the Janus API on the server side Modules and APIs • https://janus.conf.meetecho.com/docs/rest A few examples Next steps • https://janus.conf.meetecho.com/docs/resources • Effective way to control what users can do • Also helps to orchestrate pool of Janus servers • ... do this or that? • https://janus.conf.meetecho.com/docs/FAQ • https://groups.google.com/forum/#!forum/meetecho- janus
Anything wrong? Check the Admin API! Janus • Requests/response API to poll Janus L. Miniero • Query server capabilities Intro • Control some aspects (e.g., enable/disable debugging) WebRTC • Inspect handles and WebRTC “internals” Standardization Gateways Requirements Janus Modules and APIs A few examples Next steps http://www.meetecho.com/blog/understanding-the-janus- admin-api/
Recommend
More recommend