SlideShare a Scribd company logo
1 of 78
Download to read offline
Facilitating WebRTC access to
Asterisk-based services with Janus
Lorenzo Miniero
@elminiero
Who am I?
Lorenzo Miniero
• Ph.D @ UniNA
• Chairman @ Meetecho
• Open source believer
• Viking wannabe (←)
Contacts and info
• lorenzo@meetecho.com
• https://twitter.com/elminiero
• https://www.slideshare.net/LorenzoMiniero
You may remember me from asterisk-opus
Before moving on, what’s Meetecho?
• Co-founded in 2009 as an academic spin-off
• University research efforts brought to the market
• Recently got my Ph.D @ UniNA
• Completely independent from the University
• https://www.meetecho.com
• 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!
• Proudly brewed in sunny Napoli(*), Italy
Before moving on, what’s Meetecho?
• Co-founded in 2009 as an academic spin-off
• University research efforts brought to the market
• Recently got my Ph.D @ UniNA
• Completely independent from the University
• https://www.meetecho.com
• 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!
• Proudly brewed in sunny Napoli(*), Italy
Before moving on, what’s Meetecho?
• Co-founded in 2009 as an academic spin-off
• University research efforts brought to the market
• Recently got my Ph.D @ UniNA
• Completely independent from the University
• https://www.meetecho.com
• 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!
• Proudly brewed in sunny Napoli(*), Italy
((*)
Napoli ruined by our ugly faces)
((*)
Much better...)
How do you pay your bills?
• Meetecho Web Conferencing and Collaboration
• Meetings, conference calls, webinars, etc.
• Subscription, one-shot, ...
• Streaming of live events
• Internet Engineering Task Force (IETF)
• ACM SIGCOMM
• Consultancy services
• Mostly (but not only) involving WebRTC and Janus
• Installation and configuration
• Custom plugins for custom use cases
• Wrapping/orchestration of Janus resources
• Sponsored development on new features or improvements
• ...
• Commercial support and Janus licenses
How do you pay your bills?
• Meetecho Web Conferencing and Collaboration
• Meetings, conference calls, webinars, etc.
• Subscription, one-shot, ...
• Streaming of live events
• Internet Engineering Task Force (IETF)
• ACM SIGCOMM
• Consultancy services
• Mostly (but not only) involving WebRTC and Janus
• Installation and configuration
• Custom plugins for custom use cases
• Wrapping/orchestration of Janus resources
• Sponsored development on new features or improvements
• ...
• Commercial support and Janus licenses
How do you pay your bills?
• Meetecho Web Conferencing and Collaboration
• Meetings, conference calls, webinars, etc.
• Subscription, one-shot, ...
• Streaming of live events
• Internet Engineering Task Force (IETF)
• ACM SIGCOMM
• Consultancy services
• Mostly (but not only) involving WebRTC and Janus
• Installation and configuration
• Custom plugins for custom use cases
• Wrapping/orchestration of Janus resources
• Sponsored development on new features or improvements
• ...
• Commercial support and Janus licenses
How do you pay your bills?
• Meetecho Web Conferencing and Collaboration
• Meetings, conference calls, webinars, etc.
• Subscription, one-shot, ...
• Streaming of live events
• Internet Engineering Task Force (IETF)
• ACM SIGCOMM
• Consultancy services
• Mostly (but not only) involving WebRTC and Janus
• Installation and configuration
• Custom plugins for custom use cases
• Wrapping/orchestration of Janus resources
• Sponsored development on new features or improvements
• ...
• Commercial support and Janus licenses
WebRTC reference architecture: peer-to-peer
WebRTC reference architecture: peer-to-peer
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)
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)
Involving a server as a peer (and applications)
Involving a server as a peer (and applications)
Involving a server as a peer (and applications)
Involving a server as a peer (and applications)
Involving a server as a peer (and applications)
Involving different technologies as well
Involving different technologies as well
Involving different technologies as well
Janus: a general purpose WebRTC server
“In ancient Roman religion and myth,
Janus [..] is the god of beginnings and
transitions, and thereby of gates, doors,
passages, endings and time. He is
usually depicted as having two faces,
since he looks to the future and to the
past.”
— http://en.wikipedia.org/wiki/Janus
Janus: a general purpose WebRTC server
• A door between the communications past and future
• Legacy technologies (the “past”)
• WebRTC (the “future”)
Janus
General purpose, open source WebRTC server and gateway
• https://github.com/meetecho/janus-gateway
• Demos and documentation: https://janus.conf.meetecho.com
• Community: https://groups.google.com/forum/#!forum/meetecho-janus
Modular architecture
• The core only implements the WebRTC stack
• JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ...
• Recording/simulcasting/monitoring/etc. natively done here as well
• Plugins expose Janus API over different transports
• Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT
• “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
• Plugins used as “bricks” to compose application
• Streaming + VideoRoom = Social TV
• VideoRoom + AudioBridge or SIP + TextRoom = Webinar
• ...
Modular architecture
• The core only implements the WebRTC stack
• JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ...
• Recording/simulcasting/monitoring/etc. natively done here as well
• Plugins expose Janus API over different transports
• Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT
• “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
• Plugins used as “bricks” to compose application
• Streaming + VideoRoom = Social TV
• VideoRoom + AudioBridge or SIP + TextRoom = Webinar
• ...
Modular architecture
• The core only implements the WebRTC stack
• JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ...
• Recording/simulcasting/monitoring/etc. natively done here as well
• Plugins expose Janus API over different transports
• Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT
• “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
• Plugins used as “bricks” to compose application
• Streaming + VideoRoom = Social TV
• VideoRoom + AudioBridge or SIP + TextRoom = Webinar
• ...
Modular architecture
• The core only implements the WebRTC stack
• JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ...
• Recording/simulcasting/monitoring/etc. natively done here as well
• Plugins expose Janus API over different transports
• Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT
• “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
• Plugins used as “bricks” to compose application
• Streaming + VideoRoom = Social TV
• VideoRoom + AudioBridge or SIP + TextRoom = Webinar
• ...
Extensible Architecture and API
Extensible Architecture and API
What can Janus do to help with SIP?
• Since day one, SIP support has been available as a Janus plugin
• Demo: https://janus.conf.meetecho.com/siptest
• Basically a WebRTC-to/from-SIP gateway
• WebRTC on one side, SIP(S)/(S)RTP on the other end
• Janus SIP plugin acts as a SIP endpoint
• SIP stack implemented with Sofia-SIP
• WebRTC users only see the Janus API (JSON)
• No transcoding, media is only relayed
• Simplifies life for web developers
• No need to worry about a SIP stack (only SIP URIs)
• Basic methods/events to handle call (call, answer, hangup)
• Allows headers injection (REGISTER, INVITE)
What can Janus do to help with SIP?
• Since day one, SIP support has been available as a Janus plugin
• Demo: https://janus.conf.meetecho.com/siptest
• Basically a WebRTC-to/from-SIP gateway
• WebRTC on one side, SIP(S)/(S)RTP on the other end
• Janus SIP plugin acts as a SIP endpoint
• SIP stack implemented with Sofia-SIP
• WebRTC users only see the Janus API (JSON)
• No transcoding, media is only relayed
• Simplifies life for web developers
• No need to worry about a SIP stack (only SIP URIs)
• Basic methods/events to handle call (call, answer, hangup)
• Allows headers injection (REGISTER, INVITE)
What can Janus do to help with SIP?
• Since day one, SIP support has been available as a Janus plugin
• Demo: https://janus.conf.meetecho.com/siptest
• Basically a WebRTC-to/from-SIP gateway
• WebRTC on one side, SIP(S)/(S)RTP on the other end
• Janus SIP plugin acts as a SIP endpoint
• SIP stack implemented with Sofia-SIP
• WebRTC users only see the Janus API (JSON)
• No transcoding, media is only relayed
• Simplifies life for web developers
• No need to worry about a SIP stack (only SIP URIs)
• Basic methods/events to handle call (call, answer, hangup)
• Allows headers injection (REGISTER, INVITE)
What can Janus do to help with SIP?
• Since day one, SIP support has been available as a Janus plugin
• Demo: https://janus.conf.meetecho.com/siptest
• Basically a WebRTC-to/from-SIP gateway
• WebRTC on one side, SIP(S)/(S)RTP on the other end
• Janus SIP plugin acts as a SIP endpoint
• SIP stack implemented with Sofia-SIP
• WebRTC users only see the Janus API (JSON)
• No transcoding, media is only relayed
• Simplifies life for web developers
• No need to worry about a SIP stack (only SIP URIs)
• Basic methods/events to handle call (call, answer, hangup)
• Allows headers injection (REGISTER, INVITE)
Yeah, yeah, but why should I care?
• Asterisk supports WebRTC out of the box
• Signalling done via SIP over WebSockets
• ICE support via pjnath
• DTLS-SRTP supported too
• Recently, added support for rtcp-mux too
• Sometimes helpful when it doesn’t have to, though
• Asterisk may already be responsible for a ton of other things
• What if we can at least remove the burden of WebRTC management?
• Lighten Asterisk, and WebRTC/services scaling can be done separately
• ... but having Janus in front of Asterisk can be useful for other reasons too
• More in the next few slides!
Yeah, yeah, but why should I care?
• Asterisk supports WebRTC out of the box
• Signalling done via SIP over WebSockets
• ICE support via pjnath
• DTLS-SRTP supported too
• Recently, added support for rtcp-mux too
• Sometimes helpful when it doesn’t have to, though
• Asterisk may already be responsible for a ton of other things
• What if we can at least remove the burden of WebRTC management?
• Lighten Asterisk, and WebRTC/services scaling can be done separately
• ... but having Janus in front of Asterisk can be useful for other reasons too
• More in the next few slides!
Yeah, yeah, but why should I care?
• Asterisk supports WebRTC out of the box
• Signalling done via SIP over WebSockets
• ICE support via pjnath
• DTLS-SRTP supported too
• Recently, added support for rtcp-mux too
• Sometimes helpful when it doesn’t have to, though
• Asterisk may already be responsible for a ton of other things
• What if we can at least remove the burden of WebRTC management?
• Lighten Asterisk, and WebRTC/services scaling can be done separately
• ... but having Janus in front of Asterisk can be useful for other reasons too
• More in the next few slides!
[PLEASE DON’T HIT ME] Asterisk 11/12!
• We already mentioned the “infamous” rtcp-mux constraint
• Normally RTP and RTCP are transported in different ports (e.g., RTCP = RTP + 1)
• rtcp-mux = muxing RTP and RTCP over the same transport
• Made mandatory since Chrome 57
• http://www.juandebravo.com/2017/02/15/rtcp-mux-in-webrtc
• Huge impact on SIP endpoints
• Most don’t support the new stuff WebRTC is adding, including rtcp-mux
• Definitely impacted Asterisk as well, when the news came out
• https://nimblea.pe/monkey-business/2017/01/19/webrtc-asterisk-and-chrome-57/
[PLEASE DON’T HIT ME] Asterisk 11/12!
• We already mentioned the “infamous” rtcp-mux constraint
• Normally RTP and RTCP are transported in different ports (e.g., RTCP = RTP + 1)
• rtcp-mux = muxing RTP and RTCP over the same transport
• Made mandatory since Chrome 57
• http://www.juandebravo.com/2017/02/15/rtcp-mux-in-webrtc
• Huge impact on SIP endpoints
• Most don’t support the new stuff WebRTC is adding, including rtcp-mux
• Definitely impacted Asterisk as well, when the news came out
• https://nimblea.pe/monkey-business/2017/01/19/webrtc-asterisk-and-chrome-57/
[PLEASE DON’T HIT ME] Asterisk 11/12!
• We already mentioned the “infamous” rtcp-mux constraint
• Normally RTP and RTCP are transported in different ports (e.g., RTCP = RTP + 1)
• rtcp-mux = muxing RTP and RTCP over the same transport
• Made mandatory since Chrome 57
• http://www.juandebravo.com/2017/02/15/rtcp-mux-in-webrtc
• Huge impact on SIP endpoints
• Most don’t support the new stuff WebRTC is adding, including rtcp-mux
• Definitely impacted Asterisk as well, when the news came out
• https://nimblea.pe/monkey-business/2017/01/19/webrtc-asterisk-and-chrome-57/
[PLEASE DON’T HIT ME] Asterisk 11/12!
• We already mentioned the “infamous” rtcp-mux constraint
• Normally RTP and RTCP are transported in different ports (e.g., RTCP = RTP + 1)
• rtcp-mux = muxing RTP and RTCP over the same transport
• Made mandatory since Chrome 57
• http://www.juandebravo.com/2017/02/15/rtcp-mux-in-webrtc
• Huge impact on SIP endpoints
• Most don’t support the new stuff WebRTC is adding, including rtcp-mux
• Definitely impacted Asterisk as well, when the news came out
• https://nimblea.pe/monkey-business/2017/01/19/webrtc-asterisk-and-chrome-57/
[PLEASE DON’T HIT ME] Asterisk 11/12!
• Asterisk developers promptly fixed this!
• http://blogs.asterisk.org/2017/04/26/rtcp-mux-webrtc/
• ... but ONLY for Asterisk >= 13.15.0 and >= 14.4.0
• Older versions don’t have this fix
• Now, you REALLY shouldn’t use older versions of Asterisk...
• ... but if for some reason you HAVE TO, Janus can fill that gap!
You may not want SIP in the browser
• By default, Asterisk requires you to do SIP in the browser
• SIP over WebSockets (e.g., via JsSIP)
• We explained how the Janus SIP plugin does SIP internally, instead
• A SIP stack is created for each new user
• The client exchanges messages via a JSON-based API
• There are indeed reasons why you may NOT want SIP in the browser...
1 Handling a whole SIP stack on the client side can be a nightmare
2 Using a simpler JSON API makes it easier for web developers
3 Wrapping SIP helps protecting from “well known” attacks (e.g., vulnerabilities)
4 Much easier to make “assumptions” on the traffic you’ll handle
5 Masking SIP also helps hiding the topology of the SIP infrastructure
You may not want SIP in the browser
• By default, Asterisk requires you to do SIP in the browser
• SIP over WebSockets (e.g., via JsSIP)
• We explained how the Janus SIP plugin does SIP internally, instead
• A SIP stack is created for each new user
• The client exchanges messages via a JSON-based API
• There are indeed reasons why you may NOT want SIP in the browser...
1 Handling a whole SIP stack on the client side can be a nightmare
2 Using a simpler JSON API makes it easier for web developers
3 Wrapping SIP helps protecting from “well known” attacks (e.g., vulnerabilities)
4 Much easier to make “assumptions” on the traffic you’ll handle
5 Masking SIP also helps hiding the topology of the SIP infrastructure
You may not want SIP in the browser
• By default, Asterisk requires you to do SIP in the browser
• SIP over WebSockets (e.g., via JsSIP)
• We explained how the Janus SIP plugin does SIP internally, instead
• A SIP stack is created for each new user
• The client exchanges messages via a JSON-based API
• There are indeed reasons why you may NOT want SIP in the browser...
1 Handling a whole SIP stack on the client side can be a nightmare
2 Using a simpler JSON API makes it easier for web developers
3 Wrapping SIP helps protecting from “well known” attacks (e.g., vulnerabilities)
4 Much easier to make “assumptions” on the traffic you’ll handle
5 Masking SIP also helps hiding the topology of the SIP infrastructure
You may not want SIP in the browser
• By default, Asterisk requires you to do SIP in the browser
• SIP over WebSockets (e.g., via JsSIP)
• We explained how the Janus SIP plugin does SIP internally, instead
• A SIP stack is created for each new user
• The client exchanges messages via a JSON-based API
• There are indeed reasons why you may NOT want SIP in the browser...
1 Handling a whole SIP stack on the client side can be a nightmare
2 Using a simpler JSON API makes it easier for web developers
3 Wrapping SIP helps protecting from “well known” attacks (e.g., vulnerabilities)
4 Much easier to make “assumptions” on the traffic you’ll handle
5 Masking SIP also helps hiding the topology of the SIP infrastructure
You may not want SIP in the browser
• By default, Asterisk requires you to do SIP in the browser
• SIP over WebSockets (e.g., via JsSIP)
• We explained how the Janus SIP plugin does SIP internally, instead
• A SIP stack is created for each new user
• The client exchanges messages via a JSON-based API
• There are indeed reasons why you may NOT want SIP in the browser...
1 Handling a whole SIP stack on the client side can be a nightmare
2 Using a simpler JSON API makes it easier for web developers
3 Wrapping SIP helps protecting from “well known” attacks (e.g., vulnerabilities)
4 Much easier to make “assumptions” on the traffic you’ll handle
5 Masking SIP also helps hiding the topology of the SIP infrastructure
You may not want SIP in the browser
• By default, Asterisk requires you to do SIP in the browser
• SIP over WebSockets (e.g., via JsSIP)
• We explained how the Janus SIP plugin does SIP internally, instead
• A SIP stack is created for each new user
• The client exchanges messages via a JSON-based API
• There are indeed reasons why you may NOT want SIP in the browser...
1 Handling a whole SIP stack on the client side can be a nightmare
2 Using a simpler JSON API makes it easier for web developers
3 Wrapping SIP helps protecting from “well known” attacks (e.g., vulnerabilities)
4 Much easier to make “assumptions” on the traffic you’ll handle
5 Masking SIP also helps hiding the topology of the SIP infrastructure
You may not want SIP in the browser
• By default, Asterisk requires you to do SIP in the browser
• SIP over WebSockets (e.g., via JsSIP)
• We explained how the Janus SIP plugin does SIP internally, instead
• A SIP stack is created for each new user
• The client exchanges messages via a JSON-based API
• There are indeed reasons why you may NOT want SIP in the browser...
1 Handling a whole SIP stack on the client side can be a nightmare
2 Using a simpler JSON API makes it easier for web developers
3 Wrapping SIP helps protecting from “well known” attacks (e.g., vulnerabilities)
4 Much easier to make “assumptions” on the traffic you’ll handle
5 Masking SIP also helps hiding the topology of the SIP infrastructure
You may not want SIP in the browser
• By default, Asterisk requires you to do SIP in the browser
• SIP over WebSockets (e.g., via JsSIP)
• We explained how the Janus SIP plugin does SIP internally, instead
• A SIP stack is created for each new user
• The client exchanges messages via a JSON-based API
• There are indeed reasons why you may NOT want SIP in the browser...
1 Handling a whole SIP stack on the client side can be a nightmare
2 Using a simpler JSON API makes it easier for web developers
3 Wrapping SIP helps protecting from “well known” attacks (e.g., vulnerabilities)
4 Much easier to make “assumptions” on the traffic you’ll handle
5 Masking SIP also helps hiding the topology of the SIP infrastructure
You may not want SIP in the browser
You may not want SIP in the browser
Making debugging/troubleshooting a bit less “hell”
• Establishing WebRTC PeerConnections might fail for different reasons
• ICE failures, DTLS handshake errors, MTU issues, etc.
• Can be even more problematic when you use different servers for the same app
• Different servers may handle different scenarios in a different way
• What if one works and the other doesn’t under the same conditions?
• Each WebRTC server has its libraries and debugging approaches
• This may be one more reason to deploy Janus as a frontend for WebRTC
• If SIP and, e.g., RTSP fail because of WebRTC, you know where to look at
• Several tools to use for debugging and troubleshooting
• Admin API (pull based)
• Event Handlers (async and modular, integrates with Homer/HEPIC)
• text2pcap support for dumping unencrypted traffic to .pcap (NEW!)
Making debugging/troubleshooting a bit less “hell”
• Establishing WebRTC PeerConnections might fail for different reasons
• ICE failures, DTLS handshake errors, MTU issues, etc.
• Can be even more problematic when you use different servers for the same app
• Different servers may handle different scenarios in a different way
• What if one works and the other doesn’t under the same conditions?
• Each WebRTC server has its libraries and debugging approaches
• This may be one more reason to deploy Janus as a frontend for WebRTC
• If SIP and, e.g., RTSP fail because of WebRTC, you know where to look at
• Several tools to use for debugging and troubleshooting
• Admin API (pull based)
• Event Handlers (async and modular, integrates with Homer/HEPIC)
• text2pcap support for dumping unencrypted traffic to .pcap (NEW!)
Making debugging/troubleshooting a bit less “hell”
• Establishing WebRTC PeerConnections might fail for different reasons
• ICE failures, DTLS handshake errors, MTU issues, etc.
• Can be even more problematic when you use different servers for the same app
• Different servers may handle different scenarios in a different way
• What if one works and the other doesn’t under the same conditions?
• Each WebRTC server has its libraries and debugging approaches
• This may be one more reason to deploy Janus as a frontend for WebRTC
• If SIP and, e.g., RTSP fail because of WebRTC, you know where to look at
• Several tools to use for debugging and troubleshooting
• Admin API (pull based)
• Event Handlers (async and modular, integrates with Homer/HEPIC)
• text2pcap support for dumping unencrypted traffic to .pcap (NEW!)
Making debugging/troubleshooting a bit less “hell”
• Establishing WebRTC PeerConnections might fail for different reasons
• ICE failures, DTLS handshake errors, MTU issues, etc.
• Can be even more problematic when you use different servers for the same app
• Different servers may handle different scenarios in a different way
• What if one works and the other doesn’t under the same conditions?
• Each WebRTC server has its libraries and debugging approaches
• This may be one more reason to deploy Janus as a frontend for WebRTC
• If SIP and, e.g., RTSP fail because of WebRTC, you know where to look at
• Several tools to use for debugging and troubleshooting
• Admin API (pull based)
• Event Handlers (async and modular, integrates with Homer/HEPIC)
• text2pcap support for dumping unencrypted traffic to .pcap (NEW!)
HEPIC is Epic!
https://fosdem.org/2017/schedule/event/homer/
“One API to rule them all!”
• As explained before, it’s very common
to mix plugins to build complex apps
• e.g., VideoRoom + SIP for hybrid
videoconferencing with PSTN support
• Some real-world examples in just a
few slides, stay tuned!
• If you’re using Janus for other features,
why not extend it to SIP as well?
• Using a single and consistent API will
make your web developer happier
• Besides, see previous point on
debugging...
What is Janus used for today, and by whom?
• We use it ourselves for many things (obviously)
• Web conferencing, Webinars, SIP gateway, ...
• Many folks/companies also using it in creative ways!
• E-learning
• Coworking
• Contact centers
• TV broadcasting and Social TV
• Videogames streaming and coplaying
• Surveillance systems
• E-health
• Home automation & Internet of Things
• Mobile devices, Raspberry Pis, wearables, drones, etc.
• Several third-party tools available already
• https://janus.conf.meetecho.com/docs/resources
What is Janus used for today, and by whom?
• We use it ourselves for many things (obviously)
• Web conferencing, Webinars, SIP gateway, ...
• Many folks/companies also using it in creative ways!
• E-learning
• Coworking
• Contact centers
• TV broadcasting and Social TV
• Videogames streaming and coplaying
• Surveillance systems
• E-health
• Home automation & Internet of Things
• Mobile devices, Raspberry Pis, wearables, drones, etc.
• Several third-party tools available already
• https://janus.conf.meetecho.com/docs/resources
What is Janus used for today, and by whom?
• We use it ourselves for many things (obviously)
• Web conferencing, Webinars, SIP gateway, ...
• Many folks/companies also using it in creative ways!
• E-learning
• Coworking
• Contact centers
• TV broadcasting and Social TV
• Videogames streaming and coplaying
• Surveillance systems
• E-health
• Home automation & Internet of Things
• Mobile devices, Raspberry Pis, wearables, drones, etc.
• Several third-party tools available already
• https://janus.conf.meetecho.com/docs/resources
Streaming IETF meetings with Janus
https://www.vuc.me/2017/vuc640-ietf-remote-participation-with-lorenzo-miniero/
Streaming IETF meetings with Janus
https://www.vuc.me/2017/vuc640-ietf-remote-participation-with-lorenzo-miniero/
Streaming IETF meetings with Janus
https://www.vuc.me/2017/vuc640-ietf-remote-participation-with-lorenzo-miniero/
Streaming IETF meetings with Janus
https://www.vuc.me/2017/vuc640-ietf-remote-participation-with-lorenzo-miniero/
Streaming IETF meetings with Janus
https://www.vuc.me/2017/vuc640-ietf-remote-participation-with-lorenzo-miniero/
Voxbone (click-to-call)
https://click2vox.com/
Lenovo’s AirClass (e-learning)
https://www.airclass.com
Convoso (contact centers)
https://www.convoso.com
Veeting rooms (web conferencing)
https://www.veeting.com
Evercast (collaboration & media production)
https://www.evercast.us/
What to do next?
• Improve the WebRTC implementation
• Work on effective renegotiation (ICE restarts almost ready)
• Implement multistream (Unified Plan)
• SIP-wise, we have some alternatives almost ready
• SIPre (same as existing plugin, but based on libRE)
• NoSIP (media-only gateway, signalling left to the application)
• https://www.slideshare.net/LorenzoMiniero/janussip-opensips-2017
• WIP: a Janus Lua plugin!
• Media routing and manipulation done at the C level
• All the logic/signalling in Lua instead
Your application here!
• What if this was just what you needed? Play with it!
• ... and why not, write your own applications/wrappers/plugins!
What to do next?
• Improve the WebRTC implementation
• Work on effective renegotiation (ICE restarts almost ready)
• Implement multistream (Unified Plan)
• SIP-wise, we have some alternatives almost ready
• SIPre (same as existing plugin, but based on libRE)
• NoSIP (media-only gateway, signalling left to the application)
• https://www.slideshare.net/LorenzoMiniero/janussip-opensips-2017
• WIP: a Janus Lua plugin!
• Media routing and manipulation done at the C level
• All the logic/signalling in Lua instead
Your application here!
• What if this was just what you needed? Play with it!
• ... and why not, write your own applications/wrappers/plugins!
What to do next?
• Improve the WebRTC implementation
• Work on effective renegotiation (ICE restarts almost ready)
• Implement multistream (Unified Plan)
• SIP-wise, we have some alternatives almost ready
• SIPre (same as existing plugin, but based on libRE)
• NoSIP (media-only gateway, signalling left to the application)
• https://www.slideshare.net/LorenzoMiniero/janussip-opensips-2017
• WIP: a Janus Lua plugin!
• Media routing and manipulation done at the C level
• All the logic/signalling in Lua instead
Your application here!
• What if this was just what you needed? Play with it!
• ... and why not, write your own applications/wrappers/plugins!
What to do next?
• Improve the WebRTC implementation
• Work on effective renegotiation (ICE restarts almost ready)
• Implement multistream (Unified Plan)
• SIP-wise, we have some alternatives almost ready
• SIPre (same as existing plugin, but based on libRE)
• NoSIP (media-only gateway, signalling left to the application)
• https://www.slideshare.net/LorenzoMiniero/janussip-opensips-2017
• WIP: a Janus Lua plugin!
• Media routing and manipulation done at the C level
• All the logic/signalling in Lua instead
Your application here!
• What if this was just what you needed? Play with it!
• ... and why not, write your own applications/wrappers/plugins!
Thanks! Questions? Comments?
Follow us!
• https://twitter.com/elminiero
• https://twitter.com/meetecho

More Related Content

What's hot

Can SFUs and MCUs be friends @ IIT-RTC 2020
Can SFUs and MCUs be friends @ IIT-RTC 2020Can SFUs and MCUs be friends @ IIT-RTC 2020
Can SFUs and MCUs be friends @ IIT-RTC 2020Lorenzo Miniero
 
SIP transfer with Janus/WebRTC @ OpenSIPS 2022
SIP transfer with Janus/WebRTC @ OpenSIPS 2022SIP transfer with Janus/WebRTC @ OpenSIPS 2022
SIP transfer with Janus/WebRTC @ OpenSIPS 2022Lorenzo Miniero
 
Janus + Audio @ Open Source World
Janus + Audio @ Open Source WorldJanus + Audio @ Open Source World
Janus + Audio @ Open Source WorldLorenzo Miniero
 
BGP and Traffic Engineering with Akamai
BGP and Traffic Engineering with AkamaiBGP and Traffic Engineering with Akamai
BGP and Traffic Engineering with AkamaiInternet Society
 
SIP Testing with FreeSWITCH
SIP Testing with FreeSWITCHSIP Testing with FreeSWITCH
SIP Testing with FreeSWITCHMoises Silva
 
Jean-Baptiste Favre - How to Monitor Bilions of Miles Shared by 20 Million Us...
Jean-Baptiste Favre - How to Monitor Bilions of Miles Shared by 20 Million Us...Jean-Baptiste Favre - How to Monitor Bilions of Miles Shared by 20 Million Us...
Jean-Baptiste Favre - How to Monitor Bilions of Miles Shared by 20 Million Us...Zabbix
 
Media Handling in FreeSWITCH
Media Handling in FreeSWITCHMedia Handling in FreeSWITCH
Media Handling in FreeSWITCHMoises Silva
 
Simplifying Your IT Workflow with Katello and Foreman
Simplifying Your IT Workflow with Katello and ForemanSimplifying Your IT Workflow with Katello and Foreman
Simplifying Your IT Workflow with Katello and ForemanNikhil Kathole
 
Entity provider selection confusion attacks in JAX-RS applications
Entity provider selection confusion attacks in JAX-RS applicationsEntity provider selection confusion attacks in JAX-RS applications
Entity provider selection confusion attacks in JAX-RS applicationsMikhail Egorov
 
Understanding InfluxDB Basics: Tags, Fields and Measurements
Understanding InfluxDB Basics: Tags, Fields and MeasurementsUnderstanding InfluxDB Basics: Tags, Fields and Measurements
Understanding InfluxDB Basics: Tags, Fields and MeasurementsInfluxData
 
GitOps & the deployment branching models - DevOps D-day Marseille 2021
GitOps & the deployment branching models - DevOps D-day Marseille 2021GitOps & the deployment branching models - DevOps D-day Marseille 2021
GitOps & the deployment branching models - DevOps D-day Marseille 2021SoKube
 
IPFS introduction
IPFS introductionIPFS introduction
IPFS introductionGenta M
 
HTML5でDRMってアリなの?〜誰も教えてくれないマルチデバイス時代のコンテンツ保護。その現状と展望
HTML5でDRMってアリなの?〜誰も教えてくれないマルチデバイス時代のコンテンツ保護。その現状と展望HTML5でDRMってアリなの?〜誰も教えてくれないマルチデバイス時代のコンテンツ保護。その現状と展望
HTML5でDRMってアリなの?〜誰も教えてくれないマルチデバイス時代のコンテンツ保護。その現状と展望Teiichi Ota
 
Introduction to CNI (Container Network Interface)
Introduction to CNI (Container Network Interface)Introduction to CNI (Container Network Interface)
Introduction to CNI (Container Network Interface)HungWei Chiu
 
OpenStack Quantum Intro (OS Meetup 3-26-12)
OpenStack Quantum Intro (OS Meetup 3-26-12)OpenStack Quantum Intro (OS Meetup 3-26-12)
OpenStack Quantum Intro (OS Meetup 3-26-12)Dan Wendlandt
 
バックボーン運用から見るインターネットの実情
バックボーン運用から見るインターネットの実情バックボーン運用から見るインターネットの実情
バックボーン運用から見るインターネットの実情IIJ
 
GoBGP : yet another OSS BGPd
GoBGP : yet another OSS BGPdGoBGP : yet another OSS BGPd
GoBGP : yet another OSS BGPdPavel Odintsov
 

What's hot (20)

Can SFUs and MCUs be friends @ IIT-RTC 2020
Can SFUs and MCUs be friends @ IIT-RTC 2020Can SFUs and MCUs be friends @ IIT-RTC 2020
Can SFUs and MCUs be friends @ IIT-RTC 2020
 
SIP transfer with Janus/WebRTC @ OpenSIPS 2022
SIP transfer with Janus/WebRTC @ OpenSIPS 2022SIP transfer with Janus/WebRTC @ OpenSIPS 2022
SIP transfer with Janus/WebRTC @ OpenSIPS 2022
 
Janus + Audio @ Open Source World
Janus + Audio @ Open Source WorldJanus + Audio @ Open Source World
Janus + Audio @ Open Source World
 
Janus & docker: friends or foe
Janus & docker: friends or foe Janus & docker: friends or foe
Janus & docker: friends or foe
 
BGP and Traffic Engineering with Akamai
BGP and Traffic Engineering with AkamaiBGP and Traffic Engineering with Akamai
BGP and Traffic Engineering with Akamai
 
SIP Testing with FreeSWITCH
SIP Testing with FreeSWITCHSIP Testing with FreeSWITCH
SIP Testing with FreeSWITCH
 
Kamailio World 2014 - Kamailio - The Platform for Interoperable WebRTC
Kamailio World 2014 - Kamailio - The Platform for Interoperable WebRTCKamailio World 2014 - Kamailio - The Platform for Interoperable WebRTC
Kamailio World 2014 - Kamailio - The Platform for Interoperable WebRTC
 
Jean-Baptiste Favre - How to Monitor Bilions of Miles Shared by 20 Million Us...
Jean-Baptiste Favre - How to Monitor Bilions of Miles Shared by 20 Million Us...Jean-Baptiste Favre - How to Monitor Bilions of Miles Shared by 20 Million Us...
Jean-Baptiste Favre - How to Monitor Bilions of Miles Shared by 20 Million Us...
 
Media Handling in FreeSWITCH
Media Handling in FreeSWITCHMedia Handling in FreeSWITCH
Media Handling in FreeSWITCH
 
Simplifying Your IT Workflow with Katello and Foreman
Simplifying Your IT Workflow with Katello and ForemanSimplifying Your IT Workflow with Katello and Foreman
Simplifying Your IT Workflow with Katello and Foreman
 
Entity provider selection confusion attacks in JAX-RS applications
Entity provider selection confusion attacks in JAX-RS applicationsEntity provider selection confusion attacks in JAX-RS applications
Entity provider selection confusion attacks in JAX-RS applications
 
Understanding InfluxDB Basics: Tags, Fields and Measurements
Understanding InfluxDB Basics: Tags, Fields and MeasurementsUnderstanding InfluxDB Basics: Tags, Fields and Measurements
Understanding InfluxDB Basics: Tags, Fields and Measurements
 
GitOps & the deployment branching models - DevOps D-day Marseille 2021
GitOps & the deployment branching models - DevOps D-day Marseille 2021GitOps & the deployment branching models - DevOps D-day Marseille 2021
GitOps & the deployment branching models - DevOps D-day Marseille 2021
 
IPFS introduction
IPFS introductionIPFS introduction
IPFS introduction
 
Gstreamer Basics
Gstreamer BasicsGstreamer Basics
Gstreamer Basics
 
HTML5でDRMってアリなの?〜誰も教えてくれないマルチデバイス時代のコンテンツ保護。その現状と展望
HTML5でDRMってアリなの?〜誰も教えてくれないマルチデバイス時代のコンテンツ保護。その現状と展望HTML5でDRMってアリなの?〜誰も教えてくれないマルチデバイス時代のコンテンツ保護。その現状と展望
HTML5でDRMってアリなの?〜誰も教えてくれないマルチデバイス時代のコンテンツ保護。その現状と展望
 
Introduction to CNI (Container Network Interface)
Introduction to CNI (Container Network Interface)Introduction to CNI (Container Network Interface)
Introduction to CNI (Container Network Interface)
 
OpenStack Quantum Intro (OS Meetup 3-26-12)
OpenStack Quantum Intro (OS Meetup 3-26-12)OpenStack Quantum Intro (OS Meetup 3-26-12)
OpenStack Quantum Intro (OS Meetup 3-26-12)
 
バックボーン運用から見るインターネットの実情
バックボーン運用から見るインターネットの実情バックボーン運用から見るインターネットの実情
バックボーン運用から見るインターネットの実情
 
GoBGP : yet another OSS BGPd
GoBGP : yet another OSS BGPdGoBGP : yet another OSS BGPd
GoBGP : yet another OSS BGPd
 

Similar to Janus/Asterisk @ Astricon 2017

WebRTC Rockstars Asian Tour 2017
WebRTC Rockstars Asian Tour 2017WebRTC Rockstars Asian Tour 2017
WebRTC Rockstars Asian Tour 2017Lorenzo Miniero
 
Janus @ WebRTC Meetup Stockholm
Janus @ WebRTC Meetup StockholmJanus @ WebRTC Meetup Stockholm
Janus @ WebRTC Meetup StockholmLorenzo Miniero
 
WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023Lorenzo Miniero
 
Fuzzing RTC @ Kamailio World 2019
Fuzzing RTC @ Kamailio World 2019Fuzzing RTC @ Kamailio World 2019
Fuzzing RTC @ Kamailio World 2019Lorenzo Miniero
 
Fuzzing Janus @ IPTComm 2019
Fuzzing Janus @ IPTComm 2019Fuzzing Janus @ IPTComm 2019
Fuzzing Janus @ IPTComm 2019Lorenzo Miniero
 
Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021Lorenzo Miniero
 
Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017Lorenzo Miniero
 
Upperside Webinar - WebRTC Standards Update
Upperside Webinar - WebRTC Standards UpdateUpperside Webinar - WebRTC Standards Update
Upperside Webinar - WebRTC Standards UpdateUppersideConferences
 
Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Lorenzo Miniero
 
What's new in web standards?
What's new in web standards?What's new in web standards?
What's new in web standards?Daniel Appelquist
 
WebRTC & Asterisk 11
WebRTC & Asterisk 11WebRTC & Asterisk 11
WebRTC & Asterisk 11Sanjay Willie
 
WebRTC for Telco: Informa's WebRTC Global Summit Preconference
WebRTC for Telco: Informa's WebRTC Global Summit PreconferenceWebRTC for Telco: Informa's WebRTC Global Summit Preconference
WebRTC for Telco: Informa's WebRTC Global Summit PreconferenceTsahi Levent-levi
 
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...Amir Zmora
 
WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022Lorenzo Miniero
 
Janus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 BeijingJanus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 BeijingLorenzo Miniero
 
WebRTC standards update - November 2014
WebRTC standards update - November 2014WebRTC standards update - November 2014
WebRTC standards update - November 2014Victor Pascual Ávila
 
WHIP and Janus @ IIT-RTC 2021
WHIP and Janus @ IIT-RTC 2021WHIP and Janus @ IIT-RTC 2021
WHIP and Janus @ IIT-RTC 2021Lorenzo Miniero
 

Similar to Janus/Asterisk @ Astricon 2017 (20)

Janus @ RTC2017 Beijing
Janus @ RTC2017 BeijingJanus @ RTC2017 Beijing
Janus @ RTC2017 Beijing
 
WebRTC Rockstars Asian Tour 2017
WebRTC Rockstars Asian Tour 2017WebRTC Rockstars Asian Tour 2017
WebRTC Rockstars Asian Tour 2017
 
Janus @ DevDay Napoli
Janus @ DevDay NapoliJanus @ DevDay Napoli
Janus @ DevDay Napoli
 
Janus @ WebRTC Meetup Stockholm
Janus @ WebRTC Meetup StockholmJanus @ WebRTC Meetup Stockholm
Janus @ WebRTC Meetup Stockholm
 
WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023
 
Fuzzing RTC @ Kamailio World 2019
Fuzzing RTC @ Kamailio World 2019Fuzzing RTC @ Kamailio World 2019
Fuzzing RTC @ Kamailio World 2019
 
Fuzzing Janus @ IPTComm 2019
Fuzzing Janus @ IPTComm 2019Fuzzing Janus @ IPTComm 2019
Fuzzing Janus @ IPTComm 2019
 
Janus @ ClueCon 2019
Janus @ ClueCon 2019Janus @ ClueCon 2019
Janus @ ClueCon 2019
 
Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021
 
Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017
 
Upperside Webinar - WebRTC Standards Update
Upperside Webinar - WebRTC Standards UpdateUpperside Webinar - WebRTC Standards Update
Upperside Webinar - WebRTC Standards Update
 
Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020
 
What's new in web standards?
What's new in web standards?What's new in web standards?
What's new in web standards?
 
WebRTC & Asterisk 11
WebRTC & Asterisk 11WebRTC & Asterisk 11
WebRTC & Asterisk 11
 
WebRTC for Telco: Informa's WebRTC Global Summit Preconference
WebRTC for Telco: Informa's WebRTC Global Summit PreconferenceWebRTC for Telco: Informa's WebRTC Global Summit Preconference
WebRTC for Telco: Informa's WebRTC Global Summit Preconference
 
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
 
WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022
 
Janus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 BeijingJanus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 Beijing
 
WebRTC standards update - November 2014
WebRTC standards update - November 2014WebRTC standards update - November 2014
WebRTC standards update - November 2014
 
WHIP and Janus @ IIT-RTC 2021
WHIP and Janus @ IIT-RTC 2021WHIP and Janus @ IIT-RTC 2021
WHIP and Janus @ IIT-RTC 2021
 

More from Lorenzo Miniero

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Getting AV1/SVC to work in the Janus WebRTC Server
Getting AV1/SVC to work in the Janus WebRTC ServerGetting AV1/SVC to work in the Janus WebRTC Server
Getting AV1/SVC to work in the Janus WebRTC ServerLorenzo Miniero
 
The challenges of hybrid meetings @ CommCon 2023
The challenges of hybrid meetings @ CommCon 2023The challenges of hybrid meetings @ CommCon 2023
The challenges of hybrid meetings @ CommCon 2023Lorenzo Miniero
 
Real-Time Text and WebRTC @ Kamailio World 2023
Real-Time Text and WebRTC @ Kamailio World 2023Real-Time Text and WebRTC @ Kamailio World 2023
Real-Time Text and WebRTC @ Kamailio World 2023Lorenzo Miniero
 
Become a rockstar using FOSS!
Become a rockstar using FOSS!Become a rockstar using FOSS!
Become a rockstar using FOSS!Lorenzo Miniero
 
JamRTC @ Wonder WebRTC unConference
JamRTC @ Wonder WebRTC unConferenceJamRTC @ Wonder WebRTC unConference
JamRTC @ Wonder WebRTC unConferenceLorenzo Miniero
 
Janus Workshop pt.2 @ ClueCon 2021
Janus Workshop pt.2 @ ClueCon 2021Janus Workshop pt.2 @ ClueCon 2021
Janus Workshop pt.2 @ ClueCon 2021Lorenzo Miniero
 
Janus + NDI @ ClueCon 2021
Janus + NDI @ ClueCon 2021Janus + NDI @ ClueCon 2021
Janus + NDI @ ClueCon 2021Lorenzo Miniero
 
Can WebRTC help musicians? @ FOSDEM 2021
Can WebRTC help musicians? @ FOSDEM 2021Can WebRTC help musicians? @ FOSDEM 2021
Can WebRTC help musicians? @ FOSDEM 2021Lorenzo Miniero
 
Virtual IETF meetings with WebRTC @ IETF 109 MOPS
Virtual IETF meetings with WebRTC @ IETF 109 MOPSVirtual IETF meetings with WebRTC @ IETF 109 MOPS
Virtual IETF meetings with WebRTC @ IETF 109 MOPSLorenzo Miniero
 
Insertable Streams and E2EE @ ClueCon2020
Insertable Streams and E2EE @ ClueCon2020Insertable Streams and E2EE @ ClueCon2020
Insertable Streams and E2EE @ ClueCon2020Lorenzo Miniero
 
Turning live events to virtual with Janus
Turning live events to virtual with JanusTurning live events to virtual with Janus
Turning live events to virtual with JanusLorenzo Miniero
 
Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020Lorenzo Miniero
 
Welcome to JanusCon! -- Past, Present and Future of Janus
Welcome to JanusCon! -- Past, Present and Future of JanusWelcome to JanusCon! -- Past, Present and Future of Janus
Welcome to JanusCon! -- Past, Present and Future of JanusLorenzo Miniero
 

More from Lorenzo Miniero (15)

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Getting AV1/SVC to work in the Janus WebRTC Server
Getting AV1/SVC to work in the Janus WebRTC ServerGetting AV1/SVC to work in the Janus WebRTC Server
Getting AV1/SVC to work in the Janus WebRTC Server
 
BWE in Janus
BWE in JanusBWE in Janus
BWE in Janus
 
The challenges of hybrid meetings @ CommCon 2023
The challenges of hybrid meetings @ CommCon 2023The challenges of hybrid meetings @ CommCon 2023
The challenges of hybrid meetings @ CommCon 2023
 
Real-Time Text and WebRTC @ Kamailio World 2023
Real-Time Text and WebRTC @ Kamailio World 2023Real-Time Text and WebRTC @ Kamailio World 2023
Real-Time Text and WebRTC @ Kamailio World 2023
 
Become a rockstar using FOSS!
Become a rockstar using FOSS!Become a rockstar using FOSS!
Become a rockstar using FOSS!
 
JamRTC @ Wonder WebRTC unConference
JamRTC @ Wonder WebRTC unConferenceJamRTC @ Wonder WebRTC unConference
JamRTC @ Wonder WebRTC unConference
 
Janus Workshop pt.2 @ ClueCon 2021
Janus Workshop pt.2 @ ClueCon 2021Janus Workshop pt.2 @ ClueCon 2021
Janus Workshop pt.2 @ ClueCon 2021
 
Janus + NDI @ ClueCon 2021
Janus + NDI @ ClueCon 2021Janus + NDI @ ClueCon 2021
Janus + NDI @ ClueCon 2021
 
Can WebRTC help musicians? @ FOSDEM 2021
Can WebRTC help musicians? @ FOSDEM 2021Can WebRTC help musicians? @ FOSDEM 2021
Can WebRTC help musicians? @ FOSDEM 2021
 
Virtual IETF meetings with WebRTC @ IETF 109 MOPS
Virtual IETF meetings with WebRTC @ IETF 109 MOPSVirtual IETF meetings with WebRTC @ IETF 109 MOPS
Virtual IETF meetings with WebRTC @ IETF 109 MOPS
 
Insertable Streams and E2EE @ ClueCon2020
Insertable Streams and E2EE @ ClueCon2020Insertable Streams and E2EE @ ClueCon2020
Insertable Streams and E2EE @ ClueCon2020
 
Turning live events to virtual with Janus
Turning live events to virtual with JanusTurning live events to virtual with Janus
Turning live events to virtual with Janus
 
Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020
 
Welcome to JanusCon! -- Past, Present and Future of Janus
Welcome to JanusCon! -- Past, Present and Future of JanusWelcome to JanusCon! -- Past, Present and Future of Janus
Welcome to JanusCon! -- Past, Present and Future of Janus
 

Recently uploaded

Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 

Recently uploaded (20)

Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

Janus/Asterisk @ Astricon 2017

  • 1. Facilitating WebRTC access to Asterisk-based services with Janus Lorenzo Miniero @elminiero
  • 2. Who am I? Lorenzo Miniero • Ph.D @ UniNA • Chairman @ Meetecho • Open source believer • Viking wannabe (←) Contacts and info • lorenzo@meetecho.com • https://twitter.com/elminiero • https://www.slideshare.net/LorenzoMiniero
  • 3. You may remember me from asterisk-opus
  • 4. Before moving on, what’s Meetecho? • Co-founded in 2009 as an academic spin-off • University research efforts brought to the market • Recently got my Ph.D @ UniNA • Completely independent from the University • https://www.meetecho.com • 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! • Proudly brewed in sunny Napoli(*), Italy
  • 5. Before moving on, what’s Meetecho? • Co-founded in 2009 as an academic spin-off • University research efforts brought to the market • Recently got my Ph.D @ UniNA • Completely independent from the University • https://www.meetecho.com • 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! • Proudly brewed in sunny Napoli(*), Italy
  • 6. Before moving on, what’s Meetecho? • Co-founded in 2009 as an academic spin-off • University research efforts brought to the market • Recently got my Ph.D @ UniNA • Completely independent from the University • https://www.meetecho.com • 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! • Proudly brewed in sunny Napoli(*), Italy
  • 7. ((*) Napoli ruined by our ugly faces)
  • 9. How do you pay your bills? • Meetecho Web Conferencing and Collaboration • Meetings, conference calls, webinars, etc. • Subscription, one-shot, ... • Streaming of live events • Internet Engineering Task Force (IETF) • ACM SIGCOMM • Consultancy services • Mostly (but not only) involving WebRTC and Janus • Installation and configuration • Custom plugins for custom use cases • Wrapping/orchestration of Janus resources • Sponsored development on new features or improvements • ... • Commercial support and Janus licenses
  • 10. How do you pay your bills? • Meetecho Web Conferencing and Collaboration • Meetings, conference calls, webinars, etc. • Subscription, one-shot, ... • Streaming of live events • Internet Engineering Task Force (IETF) • ACM SIGCOMM • Consultancy services • Mostly (but not only) involving WebRTC and Janus • Installation and configuration • Custom plugins for custom use cases • Wrapping/orchestration of Janus resources • Sponsored development on new features or improvements • ... • Commercial support and Janus licenses
  • 11. How do you pay your bills? • Meetecho Web Conferencing and Collaboration • Meetings, conference calls, webinars, etc. • Subscription, one-shot, ... • Streaming of live events • Internet Engineering Task Force (IETF) • ACM SIGCOMM • Consultancy services • Mostly (but not only) involving WebRTC and Janus • Installation and configuration • Custom plugins for custom use cases • Wrapping/orchestration of Janus resources • Sponsored development on new features or improvements • ... • Commercial support and Janus licenses
  • 12. How do you pay your bills? • Meetecho Web Conferencing and Collaboration • Meetings, conference calls, webinars, etc. • Subscription, one-shot, ... • Streaming of live events • Internet Engineering Task Force (IETF) • ACM SIGCOMM • Consultancy services • Mostly (but not only) involving WebRTC and Janus • Installation and configuration • Custom plugins for custom use cases • Wrapping/orchestration of Janus resources • Sponsored development on new features or improvements • ... • Commercial support and Janus licenses
  • 15. 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)
  • 16. 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)
  • 17. Involving a server as a peer (and applications)
  • 18. Involving a server as a peer (and applications)
  • 19. Involving a server as a peer (and applications)
  • 20. Involving a server as a peer (and applications)
  • 21. Involving a server as a peer (and applications)
  • 25. Janus: a general purpose WebRTC server “In ancient Roman religion and myth, Janus [..] is the god of beginnings and transitions, and thereby of gates, doors, passages, endings and time. He is usually depicted as having two faces, since he looks to the future and to the past.” — http://en.wikipedia.org/wiki/Janus
  • 26. Janus: a general purpose WebRTC server • A door between the communications past and future • Legacy technologies (the “past”) • WebRTC (the “future”) Janus General purpose, open source WebRTC server and gateway • https://github.com/meetecho/janus-gateway • Demos and documentation: https://janus.conf.meetecho.com • Community: https://groups.google.com/forum/#!forum/meetecho-janus
  • 27. Modular architecture • The core only implements the WebRTC stack • JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ... • Recording/simulcasting/monitoring/etc. natively done here as well • Plugins expose Janus API over different transports • Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT • “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 • Plugins used as “bricks” to compose application • Streaming + VideoRoom = Social TV • VideoRoom + AudioBridge or SIP + TextRoom = Webinar • ...
  • 28. Modular architecture • The core only implements the WebRTC stack • JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ... • Recording/simulcasting/monitoring/etc. natively done here as well • Plugins expose Janus API over different transports • Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT • “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 • Plugins used as “bricks” to compose application • Streaming + VideoRoom = Social TV • VideoRoom + AudioBridge or SIP + TextRoom = Webinar • ...
  • 29. Modular architecture • The core only implements the WebRTC stack • JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ... • Recording/simulcasting/monitoring/etc. natively done here as well • Plugins expose Janus API over different transports • Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT • “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 • Plugins used as “bricks” to compose application • Streaming + VideoRoom = Social TV • VideoRoom + AudioBridge or SIP + TextRoom = Webinar • ...
  • 30. Modular architecture • The core only implements the WebRTC stack • JSEP/SDP, ICE, DTLS-SRTP, Data Channels, ... • Recording/simulcasting/monitoring/etc. natively done here as well • Plugins expose Janus API over different transports • Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT • “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 • Plugins used as “bricks” to compose application • Streaming + VideoRoom = Social TV • VideoRoom + AudioBridge or SIP + TextRoom = Webinar • ...
  • 33. What can Janus do to help with SIP? • Since day one, SIP support has been available as a Janus plugin • Demo: https://janus.conf.meetecho.com/siptest • Basically a WebRTC-to/from-SIP gateway • WebRTC on one side, SIP(S)/(S)RTP on the other end • Janus SIP plugin acts as a SIP endpoint • SIP stack implemented with Sofia-SIP • WebRTC users only see the Janus API (JSON) • No transcoding, media is only relayed • Simplifies life for web developers • No need to worry about a SIP stack (only SIP URIs) • Basic methods/events to handle call (call, answer, hangup) • Allows headers injection (REGISTER, INVITE)
  • 34. What can Janus do to help with SIP? • Since day one, SIP support has been available as a Janus plugin • Demo: https://janus.conf.meetecho.com/siptest • Basically a WebRTC-to/from-SIP gateway • WebRTC on one side, SIP(S)/(S)RTP on the other end • Janus SIP plugin acts as a SIP endpoint • SIP stack implemented with Sofia-SIP • WebRTC users only see the Janus API (JSON) • No transcoding, media is only relayed • Simplifies life for web developers • No need to worry about a SIP stack (only SIP URIs) • Basic methods/events to handle call (call, answer, hangup) • Allows headers injection (REGISTER, INVITE)
  • 35. What can Janus do to help with SIP? • Since day one, SIP support has been available as a Janus plugin • Demo: https://janus.conf.meetecho.com/siptest • Basically a WebRTC-to/from-SIP gateway • WebRTC on one side, SIP(S)/(S)RTP on the other end • Janus SIP plugin acts as a SIP endpoint • SIP stack implemented with Sofia-SIP • WebRTC users only see the Janus API (JSON) • No transcoding, media is only relayed • Simplifies life for web developers • No need to worry about a SIP stack (only SIP URIs) • Basic methods/events to handle call (call, answer, hangup) • Allows headers injection (REGISTER, INVITE)
  • 36. What can Janus do to help with SIP? • Since day one, SIP support has been available as a Janus plugin • Demo: https://janus.conf.meetecho.com/siptest • Basically a WebRTC-to/from-SIP gateway • WebRTC on one side, SIP(S)/(S)RTP on the other end • Janus SIP plugin acts as a SIP endpoint • SIP stack implemented with Sofia-SIP • WebRTC users only see the Janus API (JSON) • No transcoding, media is only relayed • Simplifies life for web developers • No need to worry about a SIP stack (only SIP URIs) • Basic methods/events to handle call (call, answer, hangup) • Allows headers injection (REGISTER, INVITE)
  • 37. Yeah, yeah, but why should I care? • Asterisk supports WebRTC out of the box • Signalling done via SIP over WebSockets • ICE support via pjnath • DTLS-SRTP supported too • Recently, added support for rtcp-mux too • Sometimes helpful when it doesn’t have to, though • Asterisk may already be responsible for a ton of other things • What if we can at least remove the burden of WebRTC management? • Lighten Asterisk, and WebRTC/services scaling can be done separately • ... but having Janus in front of Asterisk can be useful for other reasons too • More in the next few slides!
  • 38. Yeah, yeah, but why should I care? • Asterisk supports WebRTC out of the box • Signalling done via SIP over WebSockets • ICE support via pjnath • DTLS-SRTP supported too • Recently, added support for rtcp-mux too • Sometimes helpful when it doesn’t have to, though • Asterisk may already be responsible for a ton of other things • What if we can at least remove the burden of WebRTC management? • Lighten Asterisk, and WebRTC/services scaling can be done separately • ... but having Janus in front of Asterisk can be useful for other reasons too • More in the next few slides!
  • 39. Yeah, yeah, but why should I care? • Asterisk supports WebRTC out of the box • Signalling done via SIP over WebSockets • ICE support via pjnath • DTLS-SRTP supported too • Recently, added support for rtcp-mux too • Sometimes helpful when it doesn’t have to, though • Asterisk may already be responsible for a ton of other things • What if we can at least remove the burden of WebRTC management? • Lighten Asterisk, and WebRTC/services scaling can be done separately • ... but having Janus in front of Asterisk can be useful for other reasons too • More in the next few slides!
  • 40. [PLEASE DON’T HIT ME] Asterisk 11/12! • We already mentioned the “infamous” rtcp-mux constraint • Normally RTP and RTCP are transported in different ports (e.g., RTCP = RTP + 1) • rtcp-mux = muxing RTP and RTCP over the same transport • Made mandatory since Chrome 57 • http://www.juandebravo.com/2017/02/15/rtcp-mux-in-webrtc • Huge impact on SIP endpoints • Most don’t support the new stuff WebRTC is adding, including rtcp-mux • Definitely impacted Asterisk as well, when the news came out • https://nimblea.pe/monkey-business/2017/01/19/webrtc-asterisk-and-chrome-57/
  • 41. [PLEASE DON’T HIT ME] Asterisk 11/12! • We already mentioned the “infamous” rtcp-mux constraint • Normally RTP and RTCP are transported in different ports (e.g., RTCP = RTP + 1) • rtcp-mux = muxing RTP and RTCP over the same transport • Made mandatory since Chrome 57 • http://www.juandebravo.com/2017/02/15/rtcp-mux-in-webrtc • Huge impact on SIP endpoints • Most don’t support the new stuff WebRTC is adding, including rtcp-mux • Definitely impacted Asterisk as well, when the news came out • https://nimblea.pe/monkey-business/2017/01/19/webrtc-asterisk-and-chrome-57/
  • 42. [PLEASE DON’T HIT ME] Asterisk 11/12! • We already mentioned the “infamous” rtcp-mux constraint • Normally RTP and RTCP are transported in different ports (e.g., RTCP = RTP + 1) • rtcp-mux = muxing RTP and RTCP over the same transport • Made mandatory since Chrome 57 • http://www.juandebravo.com/2017/02/15/rtcp-mux-in-webrtc • Huge impact on SIP endpoints • Most don’t support the new stuff WebRTC is adding, including rtcp-mux • Definitely impacted Asterisk as well, when the news came out • https://nimblea.pe/monkey-business/2017/01/19/webrtc-asterisk-and-chrome-57/
  • 43. [PLEASE DON’T HIT ME] Asterisk 11/12! • We already mentioned the “infamous” rtcp-mux constraint • Normally RTP and RTCP are transported in different ports (e.g., RTCP = RTP + 1) • rtcp-mux = muxing RTP and RTCP over the same transport • Made mandatory since Chrome 57 • http://www.juandebravo.com/2017/02/15/rtcp-mux-in-webrtc • Huge impact on SIP endpoints • Most don’t support the new stuff WebRTC is adding, including rtcp-mux • Definitely impacted Asterisk as well, when the news came out • https://nimblea.pe/monkey-business/2017/01/19/webrtc-asterisk-and-chrome-57/
  • 44. [PLEASE DON’T HIT ME] Asterisk 11/12! • Asterisk developers promptly fixed this! • http://blogs.asterisk.org/2017/04/26/rtcp-mux-webrtc/ • ... but ONLY for Asterisk >= 13.15.0 and >= 14.4.0 • Older versions don’t have this fix • Now, you REALLY shouldn’t use older versions of Asterisk... • ... but if for some reason you HAVE TO, Janus can fill that gap!
  • 45. You may not want SIP in the browser • By default, Asterisk requires you to do SIP in the browser • SIP over WebSockets (e.g., via JsSIP) • We explained how the Janus SIP plugin does SIP internally, instead • A SIP stack is created for each new user • The client exchanges messages via a JSON-based API • There are indeed reasons why you may NOT want SIP in the browser... 1 Handling a whole SIP stack on the client side can be a nightmare 2 Using a simpler JSON API makes it easier for web developers 3 Wrapping SIP helps protecting from “well known” attacks (e.g., vulnerabilities) 4 Much easier to make “assumptions” on the traffic you’ll handle 5 Masking SIP also helps hiding the topology of the SIP infrastructure
  • 46. You may not want SIP in the browser • By default, Asterisk requires you to do SIP in the browser • SIP over WebSockets (e.g., via JsSIP) • We explained how the Janus SIP plugin does SIP internally, instead • A SIP stack is created for each new user • The client exchanges messages via a JSON-based API • There are indeed reasons why you may NOT want SIP in the browser... 1 Handling a whole SIP stack on the client side can be a nightmare 2 Using a simpler JSON API makes it easier for web developers 3 Wrapping SIP helps protecting from “well known” attacks (e.g., vulnerabilities) 4 Much easier to make “assumptions” on the traffic you’ll handle 5 Masking SIP also helps hiding the topology of the SIP infrastructure
  • 47. You may not want SIP in the browser • By default, Asterisk requires you to do SIP in the browser • SIP over WebSockets (e.g., via JsSIP) • We explained how the Janus SIP plugin does SIP internally, instead • A SIP stack is created for each new user • The client exchanges messages via a JSON-based API • There are indeed reasons why you may NOT want SIP in the browser... 1 Handling a whole SIP stack on the client side can be a nightmare 2 Using a simpler JSON API makes it easier for web developers 3 Wrapping SIP helps protecting from “well known” attacks (e.g., vulnerabilities) 4 Much easier to make “assumptions” on the traffic you’ll handle 5 Masking SIP also helps hiding the topology of the SIP infrastructure
  • 48. You may not want SIP in the browser • By default, Asterisk requires you to do SIP in the browser • SIP over WebSockets (e.g., via JsSIP) • We explained how the Janus SIP plugin does SIP internally, instead • A SIP stack is created for each new user • The client exchanges messages via a JSON-based API • There are indeed reasons why you may NOT want SIP in the browser... 1 Handling a whole SIP stack on the client side can be a nightmare 2 Using a simpler JSON API makes it easier for web developers 3 Wrapping SIP helps protecting from “well known” attacks (e.g., vulnerabilities) 4 Much easier to make “assumptions” on the traffic you’ll handle 5 Masking SIP also helps hiding the topology of the SIP infrastructure
  • 49. You may not want SIP in the browser • By default, Asterisk requires you to do SIP in the browser • SIP over WebSockets (e.g., via JsSIP) • We explained how the Janus SIP plugin does SIP internally, instead • A SIP stack is created for each new user • The client exchanges messages via a JSON-based API • There are indeed reasons why you may NOT want SIP in the browser... 1 Handling a whole SIP stack on the client side can be a nightmare 2 Using a simpler JSON API makes it easier for web developers 3 Wrapping SIP helps protecting from “well known” attacks (e.g., vulnerabilities) 4 Much easier to make “assumptions” on the traffic you’ll handle 5 Masking SIP also helps hiding the topology of the SIP infrastructure
  • 50. You may not want SIP in the browser • By default, Asterisk requires you to do SIP in the browser • SIP over WebSockets (e.g., via JsSIP) • We explained how the Janus SIP plugin does SIP internally, instead • A SIP stack is created for each new user • The client exchanges messages via a JSON-based API • There are indeed reasons why you may NOT want SIP in the browser... 1 Handling a whole SIP stack on the client side can be a nightmare 2 Using a simpler JSON API makes it easier for web developers 3 Wrapping SIP helps protecting from “well known” attacks (e.g., vulnerabilities) 4 Much easier to make “assumptions” on the traffic you’ll handle 5 Masking SIP also helps hiding the topology of the SIP infrastructure
  • 51. You may not want SIP in the browser • By default, Asterisk requires you to do SIP in the browser • SIP over WebSockets (e.g., via JsSIP) • We explained how the Janus SIP plugin does SIP internally, instead • A SIP stack is created for each new user • The client exchanges messages via a JSON-based API • There are indeed reasons why you may NOT want SIP in the browser... 1 Handling a whole SIP stack on the client side can be a nightmare 2 Using a simpler JSON API makes it easier for web developers 3 Wrapping SIP helps protecting from “well known” attacks (e.g., vulnerabilities) 4 Much easier to make “assumptions” on the traffic you’ll handle 5 Masking SIP also helps hiding the topology of the SIP infrastructure
  • 52. You may not want SIP in the browser • By default, Asterisk requires you to do SIP in the browser • SIP over WebSockets (e.g., via JsSIP) • We explained how the Janus SIP plugin does SIP internally, instead • A SIP stack is created for each new user • The client exchanges messages via a JSON-based API • There are indeed reasons why you may NOT want SIP in the browser... 1 Handling a whole SIP stack on the client side can be a nightmare 2 Using a simpler JSON API makes it easier for web developers 3 Wrapping SIP helps protecting from “well known” attacks (e.g., vulnerabilities) 4 Much easier to make “assumptions” on the traffic you’ll handle 5 Masking SIP also helps hiding the topology of the SIP infrastructure
  • 53. You may not want SIP in the browser
  • 54. You may not want SIP in the browser
  • 55. Making debugging/troubleshooting a bit less “hell” • Establishing WebRTC PeerConnections might fail for different reasons • ICE failures, DTLS handshake errors, MTU issues, etc. • Can be even more problematic when you use different servers for the same app • Different servers may handle different scenarios in a different way • What if one works and the other doesn’t under the same conditions? • Each WebRTC server has its libraries and debugging approaches • This may be one more reason to deploy Janus as a frontend for WebRTC • If SIP and, e.g., RTSP fail because of WebRTC, you know where to look at • Several tools to use for debugging and troubleshooting • Admin API (pull based) • Event Handlers (async and modular, integrates with Homer/HEPIC) • text2pcap support for dumping unencrypted traffic to .pcap (NEW!)
  • 56. Making debugging/troubleshooting a bit less “hell” • Establishing WebRTC PeerConnections might fail for different reasons • ICE failures, DTLS handshake errors, MTU issues, etc. • Can be even more problematic when you use different servers for the same app • Different servers may handle different scenarios in a different way • What if one works and the other doesn’t under the same conditions? • Each WebRTC server has its libraries and debugging approaches • This may be one more reason to deploy Janus as a frontend for WebRTC • If SIP and, e.g., RTSP fail because of WebRTC, you know where to look at • Several tools to use for debugging and troubleshooting • Admin API (pull based) • Event Handlers (async and modular, integrates with Homer/HEPIC) • text2pcap support for dumping unencrypted traffic to .pcap (NEW!)
  • 57. Making debugging/troubleshooting a bit less “hell” • Establishing WebRTC PeerConnections might fail for different reasons • ICE failures, DTLS handshake errors, MTU issues, etc. • Can be even more problematic when you use different servers for the same app • Different servers may handle different scenarios in a different way • What if one works and the other doesn’t under the same conditions? • Each WebRTC server has its libraries and debugging approaches • This may be one more reason to deploy Janus as a frontend for WebRTC • If SIP and, e.g., RTSP fail because of WebRTC, you know where to look at • Several tools to use for debugging and troubleshooting • Admin API (pull based) • Event Handlers (async and modular, integrates with Homer/HEPIC) • text2pcap support for dumping unencrypted traffic to .pcap (NEW!)
  • 58. Making debugging/troubleshooting a bit less “hell” • Establishing WebRTC PeerConnections might fail for different reasons • ICE failures, DTLS handshake errors, MTU issues, etc. • Can be even more problematic when you use different servers for the same app • Different servers may handle different scenarios in a different way • What if one works and the other doesn’t under the same conditions? • Each WebRTC server has its libraries and debugging approaches • This may be one more reason to deploy Janus as a frontend for WebRTC • If SIP and, e.g., RTSP fail because of WebRTC, you know where to look at • Several tools to use for debugging and troubleshooting • Admin API (pull based) • Event Handlers (async and modular, integrates with Homer/HEPIC) • text2pcap support for dumping unencrypted traffic to .pcap (NEW!)
  • 60. “One API to rule them all!” • As explained before, it’s very common to mix plugins to build complex apps • e.g., VideoRoom + SIP for hybrid videoconferencing with PSTN support • Some real-world examples in just a few slides, stay tuned! • If you’re using Janus for other features, why not extend it to SIP as well? • Using a single and consistent API will make your web developer happier • Besides, see previous point on debugging...
  • 61. What is Janus used for today, and by whom? • We use it ourselves for many things (obviously) • Web conferencing, Webinars, SIP gateway, ... • Many folks/companies also using it in creative ways! • E-learning • Coworking • Contact centers • TV broadcasting and Social TV • Videogames streaming and coplaying • Surveillance systems • E-health • Home automation & Internet of Things • Mobile devices, Raspberry Pis, wearables, drones, etc. • Several third-party tools available already • https://janus.conf.meetecho.com/docs/resources
  • 62. What is Janus used for today, and by whom? • We use it ourselves for many things (obviously) • Web conferencing, Webinars, SIP gateway, ... • Many folks/companies also using it in creative ways! • E-learning • Coworking • Contact centers • TV broadcasting and Social TV • Videogames streaming and coplaying • Surveillance systems • E-health • Home automation & Internet of Things • Mobile devices, Raspberry Pis, wearables, drones, etc. • Several third-party tools available already • https://janus.conf.meetecho.com/docs/resources
  • 63. What is Janus used for today, and by whom? • We use it ourselves for many things (obviously) • Web conferencing, Webinars, SIP gateway, ... • Many folks/companies also using it in creative ways! • E-learning • Coworking • Contact centers • TV broadcasting and Social TV • Videogames streaming and coplaying • Surveillance systems • E-health • Home automation & Internet of Things • Mobile devices, Raspberry Pis, wearables, drones, etc. • Several third-party tools available already • https://janus.conf.meetecho.com/docs/resources
  • 64. Streaming IETF meetings with Janus https://www.vuc.me/2017/vuc640-ietf-remote-participation-with-lorenzo-miniero/
  • 65. Streaming IETF meetings with Janus https://www.vuc.me/2017/vuc640-ietf-remote-participation-with-lorenzo-miniero/
  • 66. Streaming IETF meetings with Janus https://www.vuc.me/2017/vuc640-ietf-remote-participation-with-lorenzo-miniero/
  • 67. Streaming IETF meetings with Janus https://www.vuc.me/2017/vuc640-ietf-remote-participation-with-lorenzo-miniero/
  • 68. Streaming IETF meetings with Janus https://www.vuc.me/2017/vuc640-ietf-remote-participation-with-lorenzo-miniero/
  • 72. Veeting rooms (web conferencing) https://www.veeting.com
  • 73. Evercast (collaboration & media production) https://www.evercast.us/
  • 74. What to do next? • Improve the WebRTC implementation • Work on effective renegotiation (ICE restarts almost ready) • Implement multistream (Unified Plan) • SIP-wise, we have some alternatives almost ready • SIPre (same as existing plugin, but based on libRE) • NoSIP (media-only gateway, signalling left to the application) • https://www.slideshare.net/LorenzoMiniero/janussip-opensips-2017 • WIP: a Janus Lua plugin! • Media routing and manipulation done at the C level • All the logic/signalling in Lua instead Your application here! • What if this was just what you needed? Play with it! • ... and why not, write your own applications/wrappers/plugins!
  • 75. What to do next? • Improve the WebRTC implementation • Work on effective renegotiation (ICE restarts almost ready) • Implement multistream (Unified Plan) • SIP-wise, we have some alternatives almost ready • SIPre (same as existing plugin, but based on libRE) • NoSIP (media-only gateway, signalling left to the application) • https://www.slideshare.net/LorenzoMiniero/janussip-opensips-2017 • WIP: a Janus Lua plugin! • Media routing and manipulation done at the C level • All the logic/signalling in Lua instead Your application here! • What if this was just what you needed? Play with it! • ... and why not, write your own applications/wrappers/plugins!
  • 76. What to do next? • Improve the WebRTC implementation • Work on effective renegotiation (ICE restarts almost ready) • Implement multistream (Unified Plan) • SIP-wise, we have some alternatives almost ready • SIPre (same as existing plugin, but based on libRE) • NoSIP (media-only gateway, signalling left to the application) • https://www.slideshare.net/LorenzoMiniero/janussip-opensips-2017 • WIP: a Janus Lua plugin! • Media routing and manipulation done at the C level • All the logic/signalling in Lua instead Your application here! • What if this was just what you needed? Play with it! • ... and why not, write your own applications/wrappers/plugins!
  • 77. What to do next? • Improve the WebRTC implementation • Work on effective renegotiation (ICE restarts almost ready) • Implement multistream (Unified Plan) • SIP-wise, we have some alternatives almost ready • SIPre (same as existing plugin, but based on libRE) • NoSIP (media-only gateway, signalling left to the application) • https://www.slideshare.net/LorenzoMiniero/janussip-opensips-2017 • WIP: a Janus Lua plugin! • Media routing and manipulation done at the C level • All the logic/signalling in Lua instead Your application here! • What if this was just what you needed? Play with it! • ... and why not, write your own applications/wrappers/plugins!
  • 78. Thanks! Questions? Comments? Follow us! • https://twitter.com/elminiero • https://twitter.com/meetecho