janus @ webrtc meetup stockholm

80
Janus L. Miniero Intro WebRTC Standardization Janus Modules and APIs Deploying Troubleshooting Examples A few examples Next steps Janus: an open source and general purpose WebRTC gate way (application) server Lorenzo Miniero @elminiero WebRTC Stockholm Meetup 16 th February 2017, Stockholm

Upload: lorenzo-miniero

Post on 21-Feb-2017

221 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Janus: an open source and general purposeWebRTC gateway (application) server

Lorenzo Miniero@elminiero

WebRTC Stockholm Meetup16th February 2017, Stockholm

Page 2: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

My 2nd time in Stockholm! (1st was IETF75, 2009)

Page 3: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

So many reasons to love Sweden...

Page 4: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

So many reasons to love Sweden...

Page 5: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

So many reasons to love Sweden...

Page 6: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

So many reasons to love Sweden...

Page 7: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

So many reasons to love Sweden...

Page 8: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

So many reasons to love Sweden...

Page 9: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Outline

1 A brief introduction

2 Some contextWebRTC and standardization activities

3 Janus: a general purpose WebRTC gateway (application) serverModular architecture: plugins and APIsDeploying Janus: a few possible topologiesMonitoring and troubleshooting

4 Some practical examplesWhat is Janus used for today, and by whom?

5 Next steps

Page 10: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Who am I?

• Someone not used to this cold!• Born in Antwerp, Belgium• Too cold, so raised in sunny Sorrento, Italy ,• Now living (and working) in Napoli

• Current activities• Recently got my Ph.D @ UniNA• Co-founder @ Meetecho (and Chairman, if you can believe it...)

• Focus on real-time multimedia applications• Web conferencing only, at first• Then widened the scope to multimedia in general• Strong perspective on standardization and open source

• WebRTC rulez!

• Getting older but, unlike whisky, not getting any better• https://twitter.com/elminiero

Page 11: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Who am I?

• Someone not used to this cold!• Born in Antwerp, Belgium• Too cold, so raised in sunny Sorrento, Italy ,• Now living (and working) in Napoli

• Current activities• Recently got my Ph.D @ UniNA• Co-founder @ Meetecho (and Chairman, if you can believe it...)

• Focus on real-time multimedia applications• Web conferencing only, at first• Then widened the scope to multimedia in general• Strong perspective on standardization and open source

• WebRTC rulez!

• Getting older but, unlike whisky, not getting any better• https://twitter.com/elminiero

Page 12: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Who am I?

• Someone not used to this cold!• Born in Antwerp, Belgium• Too cold, so raised in sunny Sorrento, Italy ,• Now living (and working) in Napoli

• Current activities• Recently got my Ph.D @ UniNA• Co-founder @ Meetecho (and Chairman, if you can believe it...)

• Focus on real-time multimedia applications• Web conferencing only, at first• Then widened the scope to multimedia in general• Strong perspective on standardization and open source

• WebRTC rulez!

• Getting older but, unlike whisky, not getting any better• https://twitter.com/elminiero

Page 13: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Who am I?

• Someone not used to this cold!• Born in Antwerp, Belgium• Too cold, so raised in sunny Sorrento, Italy ,• Now living (and working) in Napoli

• Current activities• Recently got my Ph.D @ UniNA• Co-founder @ Meetecho (and Chairman, if you can believe it...)

• Focus on real-time multimedia applications• Web conferencing only, at first• Then widened the scope to multimedia in general• Strong perspective on standardization and open source

• WebRTC rulez!

• Getting older but, unlike whisky, not getting any better• https://twitter.com/elminiero

Page 14: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

((*)This is what Napoli looks like in the Winter...)

Page 15: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Ok, ok, enough about you... what’s WebRTC about?

• Real-time media in a browser• Up to some time ago, no standard solution!

• No interoperability• Plugins needed to be installed anyway

WebRTC = Joint standardization efforts• Internet Engineering Task Force (IETF)• World Wide Web Consortium (W3C)

• 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

Page 16: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Ok, ok, enough about you... what’s WebRTC about?

• Real-time media in a browser• Up to some time ago, no standard solution!

• No interoperability• Plugins needed to be installed anyway

WebRTC = Joint standardization efforts• Internet Engineering Task Force (IETF)• World Wide Web Consortium (W3C)

• 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

Page 17: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Ok, ok, enough about you... what’s WebRTC about?

• Real-time media in a browser• Up to some time ago, no standard solution!

• No interoperability• Plugins needed to be installed anyway

WebRTC = Joint standardization efforts• Internet Engineering Task Force (IETF)• World Wide Web Consortium (W3C)

• 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

Page 18: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

WebRTC reference architecture

Page 19: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

The WebRTC protocol suite

Page 20: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

The WebRTC protocol suite

• Signalling (well, sort of) and Negotiation• Javascript Session Establishment Protocol (JSEP)• Session Description Protocol (SDP) adaptation

• Connection Establishment and NAT Traversal• Session Traversal Utilities for NAT (STUN)• Traversal Using Relay NAT (TURN)• Interactive Connectivity Establishment (ICE)

• Media Transport and Control• Real-time Transport (and Control) Protocol (RTP/RTCP)• Secure Extensions to RTP (SRTP)• Datagram Transport Layer Security (DTLS)

• Multimedia codecs• Opus audio codec (MTI, Mandatory-to-implement)• VP8 and H.264 video codecs (MTI, Mandatory-to-implement)

• Generic Data• WebRTC Data Channels (SCTP)

Page 21: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

The WebRTC protocol suite

• Signalling (well, sort of) and Negotiation• Javascript Session Establishment Protocol (JSEP)• Session Description Protocol (SDP) adaptation

• Connection Establishment and NAT Traversal• Session Traversal Utilities for NAT (STUN)• Traversal Using Relay NAT (TURN)• Interactive Connectivity Establishment (ICE)

• Media Transport and Control• Real-time Transport (and Control) Protocol (RTP/RTCP)• Secure Extensions to RTP (SRTP)• Datagram Transport Layer Security (DTLS)

• Multimedia codecs• Opus audio codec (MTI, Mandatory-to-implement)• VP8 and H.264 video codecs (MTI, Mandatory-to-implement)

• Generic Data• WebRTC Data Channels (SCTP)

Page 22: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

WebRTC reference architecture (again)

Page 23: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Involving a gateway/server (and applications)

Page 24: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Involving different technologies as well

“What is a WebRTC Gateway anyway?”• https://webrtchacks.com/webrtc-gw/

Page 25: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Involving different technologies as well

“What is a WebRTC Gateway anyway?”• https://webrtchacks.com/webrtc-gw/

Page 26: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Janus: a general purpose WebRTC gateway server

“In ancient Roman religion andmyth, Janus [..] is the god ofbeginnings and transitions, andthereby of gates, doors, passages,endings and time. He is usuallydepicted as having two faces, sincehe looks to the future and to thepast.”

— http://en.wikipedia.org/wiki/Janus

Page 27: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Janus: a general purpose WebRTC gateway server

• A door between the communications past and future• Legacy technologies (the “past”)• WebRTC (the “future”)

JanusGeneral purpose, open source WebRTC gateway• https://github.com/meetecho/janus-gateway• Demos and documentation: https://janus.conf.meetecho.com• Community: https://groups.google.com/forum/#!forum/meetecho-janus

Page 28: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Modular architecture

• The core only implements the WebRTC stack• JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ...

• Plugins expose Janus API over different transports• Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT (new!)

• “Application” logic implemented in plugins too• Users attach to plugins via the Janus core• The core handles the WebRTC stuff• Plugins route/manipulate the media/data

• Some plugins available out-of-the-box• Streaming (→ Plain RTP or RTSP to WebRTC!)• Video Room (→ Selective Forwarding Unit!)• Audio Bridge (→ Mixer/MCU!)• SIP Gateway (→ “Legacy” SIP!)• ...

Page 29: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Modular architecture

• The core only implements the WebRTC stack• JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ...

• Plugins expose Janus API over different transports• Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT (new!)

• “Application” logic implemented in plugins too• Users attach to plugins via the Janus core• The core handles the WebRTC stuff• Plugins route/manipulate the media/data

• Some plugins available out-of-the-box• Streaming (→ Plain RTP or RTSP to WebRTC!)• Video Room (→ Selective Forwarding Unit!)• Audio Bridge (→ Mixer/MCU!)• SIP Gateway (→ “Legacy” SIP!)• ...

Page 30: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Modular architecture

• The core only implements the WebRTC stack• JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ...

• Plugins expose Janus API over different transports• Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT (new!)

• “Application” logic implemented in plugins too• Users attach to plugins via the Janus core• The core handles the WebRTC stuff• Plugins route/manipulate the media/data

• Some plugins available out-of-the-box• Streaming (→ Plain RTP or RTSP to WebRTC!)• Video Room (→ Selective Forwarding Unit!)• Audio Bridge (→ Mixer/MCU!)• SIP Gateway (→ “Legacy” SIP!)• ...

Page 31: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Modular architecture

• The core only implements the WebRTC stack• JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ...

• Plugins expose Janus API over different transports• Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT (new!)

• “Application” logic implemented in plugins too• Users attach to plugins via the Janus core• The core handles the WebRTC stuff• Plugins route/manipulate the media/data

• Some plugins available out-of-the-box• Streaming (→ Plain RTP or RTSP to WebRTC!)• Video Room (→ Selective Forwarding Unit!)• Audio Bridge (→ Mixer/MCU!)• SIP Gateway (→ “Legacy” SIP!)• ...

Page 32: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Extensible Architecture and API

Page 33: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Extensible Architecture and API

Page 34: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Plugins as “bricks”

• Each plugin is a feature, not an application

• Application can be composed out of different features• Features as “bricks” for a complex scenario

• A few examples...• Multimedia conferencing with PSTN support

• Video Room (participants video & screen) + SIP (participants audio)

• Webinar with Q&A

• Video Room (screen) + Video Room (speakers) + Audio Bridge (questions)

• Social TV

• Streaming (TV channel) + Video Room (interaction)

• Contact center / Communication in social networks

• SIP plugin (calls) + Echo Test (diagnostics) + Record & Play (messaging)

Page 35: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Plugins as “bricks”

• Each plugin is a feature, not an application

• Application can be composed out of different features• Features as “bricks” for a complex scenario

• A few examples...• Multimedia conferencing with PSTN support

• Video Room (participants video & screen) + SIP (participants audio)

• Webinar with Q&A

• Video Room (screen) + Video Room (speakers) + Audio Bridge (questions)

• Social TV

• Streaming (TV channel) + Video Room (interaction)

• Contact center / Communication in social networks

• SIP plugin (calls) + Echo Test (diagnostics) + Record & Play (messaging)

Page 36: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Webinar with Q/A

Page 37: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Social TV

Page 38: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Deploying Janus: a few possible topologies

Page 39: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Deploying Janus: a few possible topologies

Page 40: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Deploying Janus: a few possible topologies

Page 41: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Deploying Janus: a few possible topologies

Page 42: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Deploying Janus: a few possible topologies

Page 43: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Deploying Janus: a few possible topologies

Page 44: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Deploying Janus: a few possible topologies

Page 45: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Anything wrong? Check the Admin API!

• Requests/response API to interrogate Janus• Query server capabilities• Control some aspects (e.g., enable/disable debugging)• Inspect handles and WebRTC “internals”

• What about asynchronous events? More on that in a minute!

http://www.meetecho.com/blog/understanding-the-janus-admin-api/

Page 46: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Admin API overview: polling for information

Page 47: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

An asynchronous approach to monitoring/troubleshooting

• Admin API is cool, but is request/response...

• Needs constant polling, and data is unavailable after the session ends

• What about an asynchronous approach?

• A new mechanism: Event Handlers

• Core and plugins generate events• Custom modules can subscribe to and handle them

• e.g., save to DB, send to external service, CDR, etc.

• “Sample Event Handler” forwards JSON events via HTTP

• Learning more with practical examples (node.js + DB)

• http://www.meetecho.com/blog/event-handlers-a-practical-example/

• http://www.meetecho.com/blog/correlating-janus-event-handlers/

• https://fosdem.org/2017/schedule/event/janus/

Page 48: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

An asynchronous approach to monitoring/troubleshooting

• Admin API is cool, but is request/response...

• Needs constant polling, and data is unavailable after the session ends

• What about an asynchronous approach?

• A new mechanism: Event Handlers

• Core and plugins generate events• Custom modules can subscribe to and handle them

• e.g., save to DB, send to external service, CDR, etc.

• “Sample Event Handler” forwards JSON events via HTTP

• Learning more with practical examples (node.js + DB)

• http://www.meetecho.com/blog/event-handlers-a-practical-example/

• http://www.meetecho.com/blog/correlating-janus-event-handlers/

• https://fosdem.org/2017/schedule/event/janus/

Page 49: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

An asynchronous approach to monitoring/troubleshooting

• Admin API is cool, but is request/response...

• Needs constant polling, and data is unavailable after the session ends

• What about an asynchronous approach?

• A new mechanism: Event Handlers

• Core and plugins generate events• Custom modules can subscribe to and handle them

• e.g., save to DB, send to external service, CDR, etc.

• “Sample Event Handler” forwards JSON events via HTTP

• Learning more with practical examples (node.js + DB)

• http://www.meetecho.com/blog/event-handlers-a-practical-example/

• http://www.meetecho.com/blog/correlating-janus-event-handlers/

• https://fosdem.org/2017/schedule/event/janus/

Page 50: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Event Handlers overview: routing and managing async events

Page 51: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

A first real integration: HEPIC (Homer++)

https://fosdem.org/2017/schedule/event/homer/

Page 52: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Stressing Janus: Jattack!

• Jattack = Janus Attack (or J’attaque ,)• Controllable (via WebSockets) WebRTC client stack• Allows dynamic creation/monitoring of tons of WebRTC PeerConnections

• Still improving it, but already in a usable state• Can receive (and optionally record) media• Can also send media, if you provide an RTP source yourself• Live events on everything that happens

• Originally conceived as a homemade tool for stressing Janus• Might actually be used with other servers as well• All the logic (signalling included) is in the controller

• Presented at IPTComm in Chicago just a few months ago!• https://prezi.com/krg1esxoa6ug/jattack/• https://www.youtube.com/watch?v=UwNq8p0m1js

Page 53: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Stressing Janus: Jattack!

• Jattack = Janus Attack (or J’attaque ,)• Controllable (via WebSockets) WebRTC client stack• Allows dynamic creation/monitoring of tons of WebRTC PeerConnections

• Still improving it, but already in a usable state• Can receive (and optionally record) media• Can also send media, if you provide an RTP source yourself• Live events on everything that happens

• Originally conceived as a homemade tool for stressing Janus• Might actually be used with other servers as well• All the logic (signalling included) is in the controller

• Presented at IPTComm in Chicago just a few months ago!• https://prezi.com/krg1esxoa6ug/jattack/• https://www.youtube.com/watch?v=UwNq8p0m1js

Page 54: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Stressing Janus: Jattack!

• Jattack = Janus Attack (or J’attaque ,)• Controllable (via WebSockets) WebRTC client stack• Allows dynamic creation/monitoring of tons of WebRTC PeerConnections

• Still improving it, but already in a usable state• Can receive (and optionally record) media• Can also send media, if you provide an RTP source yourself• Live events on everything that happens

• Originally conceived as a homemade tool for stressing Janus• Might actually be used with other servers as well• All the logic (signalling included) is in the controller

• Presented at IPTComm in Chicago just a few months ago!• https://prezi.com/krg1esxoa6ug/jattack/• https://www.youtube.com/watch?v=UwNq8p0m1js

Page 55: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Stressing Janus: Jattack!

• Jattack = Janus Attack (or J’attaque ,)• Controllable (via WebSockets) WebRTC client stack• Allows dynamic creation/monitoring of tons of WebRTC PeerConnections

• Still improving it, but already in a usable state• Can receive (and optionally record) media• Can also send media, if you provide an RTP source yourself• Live events on everything that happens

• Originally conceived as a homemade tool for stressing Janus• Might actually be used with other servers as well• All the logic (signalling included) is in the controller

• Presented at IPTComm in Chicago just a few months ago!• https://prezi.com/krg1esxoa6ug/jattack/• https://www.youtube.com/watch?v=UwNq8p0m1js

Page 56: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Stressing Janus: Jattack!

Page 57: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Stressing Janus: Jattack!

Page 58: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

What is Janus used for today, and by whom?

• We use it ourselves for many things (obviously)• Web conferencing and Webinars• WebRTC-to-SIP gateway• Streaming of live events (e.g., IETF meetings, stay tuned!)

• Many folks/companies also using it in creative ways!• E-learning• Coworking• Contact centers• TV broadcasting and Social TV• Surveillance systems• E-health• Home automation & Internet of Things• Mobile devices, Raspberry Pis, drones, etc.

• New third-party tools are starting to come out• https://janus.conf.meetecho.com/docs/resources

Page 59: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

What is Janus used for today, and by whom?

• We use it ourselves for many things (obviously)• Web conferencing and Webinars• WebRTC-to-SIP gateway• Streaming of live events (e.g., IETF meetings, stay tuned!)

• Many folks/companies also using it in creative ways!• E-learning• Coworking• Contact centers• TV broadcasting and Social TV• Surveillance systems• E-health• Home automation & Internet of Things• Mobile devices, Raspberry Pis, drones, etc.

• New third-party tools are starting to come out• https://janus.conf.meetecho.com/docs/resources

Page 60: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

What is Janus used for today, and by whom?

• We use it ourselves for many things (obviously)• Web conferencing and Webinars• WebRTC-to-SIP gateway• Streaming of live events (e.g., IETF meetings, stay tuned!)

• Many folks/companies also using it in creative ways!• E-learning• Coworking• Contact centers• TV broadcasting and Social TV• Surveillance systems• E-health• Home automation & Internet of Things• Mobile devices, Raspberry Pis, drones, etc.

• New third-party tools are starting to come out• https://janus.conf.meetecho.com/docs/resources

Page 61: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

A “silly” use case: The Jumping Sumo!

https://www.youtube.com/watch?v=isGSnMlKcss

Page 62: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

A “silly” use case: The Jumping Sumo!

https://www.youtube.com/watch?v=isGSnMlKcss

Page 63: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

“Matrix wins Best of Show at WebRTC World!”

https://www.youtube.com/watch?v=OMzDklvDS3c

Page 64: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

“Matrix wins Best of Show at WebRTC World!”

https://www.youtube.com/watch?v=NpBStIIq6fM

Page 65: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Jangouts (for "Janus Hangouts" ,)

https://github.com/jangouts/jangouts

Page 66: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

SylkServer (SIP/XMPP Application Server)

http://sylkserver.com/

Page 67: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

SylkServer (SIP/XMPP Application Server)

http://sylkserver.com/

Page 68: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Slack (team co-working)

https://webrtchacks.com/dear-slack/https://webrtchacks.com/slack-webrtc-slacking/

https://slack.engineering/calls-is-it-you-or-is-it-me-f5d36749e8edhttps://webrtchacks.com/slack-video/

Page 69: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Mattermost (team co-working)

https://docs.mattermost.com/deployment/webrtc.htmlhttps://github.com/mattermost/mattermost-webrtc

Page 70: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Beam (videogame streaming)

https://beam.pro/https://github.com/WatchBeam/ftl-sdk

Page 71: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Lenovo’s AirClass (e-learning)

https://www.airclass.com

Page 72: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Sqwiggle / Speak.io (team co-working)

https://www.sqwiggle.comhttps://speak.io

Page 73: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Sqwiggle / Speak.io (team co-working)

https://www.sqwiggle.comhttps://speak.io

Page 74: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Veeting rooms (web conferencing)

https://www.veeting.com

Page 75: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

AliceX (let’s call it “virtual reality” ,)

https://www.alicex.com

Page 76: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

What to do next?

• Finalize the WebRTC implementation

• Work on effective renegotiation (ICE restarts almost ready)

• Implement multistream (Unified Plan)

• Keep on improving and fixing things

• Code cleanup, reference counters, new modules, ...

• A monitoring/troubleshooting framework on top of Event Handlers

• Test Test Test!

• Jattack will greatly help here

Help us improve this!• Play with it, more testing is important• Write your own applications/wrappers/plugins!

Page 77: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

What to do next?

• Finalize the WebRTC implementation

• Work on effective renegotiation (ICE restarts almost ready)

• Implement multistream (Unified Plan)

• Keep on improving and fixing things

• Code cleanup, reference counters, new modules, ...

• A monitoring/troubleshooting framework on top of Event Handlers

• Test Test Test!

• Jattack will greatly help here

Help us improve this!• Play with it, more testing is important• Write your own applications/wrappers/plugins!

Page 78: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

What to do next?

• Finalize the WebRTC implementation

• Work on effective renegotiation (ICE restarts almost ready)

• Implement multistream (Unified Plan)

• Keep on improving and fixing things

• Code cleanup, reference counters, new modules, ...

• A monitoring/troubleshooting framework on top of Event Handlers

• Test Test Test!

• Jattack will greatly help here

Help us improve this!• Play with it, more testing is important• Write your own applications/wrappers/plugins!

Page 79: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

What to do next?

• Finalize the WebRTC implementation

• Work on effective renegotiation (ICE restarts almost ready)

• Implement multistream (Unified Plan)

• Keep on improving and fixing things

• Code cleanup, reference counters, new modules, ...

• A monitoring/troubleshooting framework on top of Event Handlers

• Test Test Test!

• Jattack will greatly help here

Help us improve this!• Play with it, more testing is important• Write your own applications/wrappers/plugins!

Page 80: Janus @ WebRTC Meetup Stockholm

Janus

L. Miniero

Intro

WebRTCStandardization

JanusModules and APIs

Deploying

Troubleshooting

ExamplesA few examples

Next steps

Questions?

@elminiero@meetecho