SlideShare a Scribd company logo
1 of 36
Download to read offline
Janus as a WebRTC “enabler”
Lorenzo Miniero
@elminiero
ClueCon TGI2021
Janus Workshop – February 17th 2021
Who am I?
Lorenzo Miniero
• Ph.D @ UniNA
• Chairman @ Meetecho
• Main author of Janus®
Contacts and info
• lorenzo@meetecho.com
• https://twitter.com/elminiero
• https://www.slideshare.net/LorenzoMiniero
• https://soundcloud.com/lminiero
Just a few words on Meetecho
• Co-founded in 2009 as an academic spin-off
• University research efforts brought to the market
• Completely independent from the University
• Focus on real-time multimedia applications
• Strong perspective on standardization and open source
• Several activities
• Consulting services
• Commercial support and Janus licenses
• Streaming of live events (IETF, ACM, etc.)
• Proudly brewed in sunny Napoli, Italy
Home Sweet Home!
In case you missed the first workshop...
https://www.youtube.com/watch?v=Ga_7lukslxw
... a quick recap on Janus
Janus
General purpose, open source WebRTC server
• 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, ...
• Plugins expose Janus API over different “transports”
• Currently HTTP / WebSockets / RabbitMQ / Unix Sockets / MQTT / Nanomsg
• “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 can be combined on client side as “bricks”
• Video SFU, Audio MCU, SIP gatewaying, broadcasting, etc.
Interacting with plugins
Interacting with plugins
Exchanging RTP (1): SIP plugin
https://janus.conf.meetecho.com/docs/sip
Exchanging RTP (2): NoSIP plugin
https://janus.conf.meetecho.com/docs/nosip
Re-broadcasting RTP: Streaming plugin
https://janus.conf.meetecho.com/docs/streaming
WebRTC-only MCU: AudioBridge plugin
https://janus.conf.meetecho.com/docs/audiobridge
WebRTC-only SFU: VideoRoom plugin
https://janus.conf.meetecho.com/docs/videoroom
Enter “RTP forwarders”
• Plugins like AudioBridge and VideoRoom only deal with WebRTC users...
• ... but all plugins have access to unencrypted media!
• Why not just forward those unencrypted packets somewhere else?
• Quite simply, relay RTP packets to specified address
• Plain RTP packets by default; SDES-SRTP supported, though
• A lot of existing tools can handle RTP natively
• You can take advantage of multicast networks easily
• Simulcast streams can be forwarded individually
• Basic RTCP support can help in some scenarios
• e.g., ask WebRTC peer to send a keyframe via a PLI
What about data channels?
Forwarded on UDP datagrams! (and so limited by MTU, at the moment...)
Enter “RTP forwarders”
• Plugins like AudioBridge and VideoRoom only deal with WebRTC users...
• ... but all plugins have access to unencrypted media!
• Why not just forward those unencrypted packets somewhere else?
• Quite simply, relay RTP packets to specified address
• Plain RTP packets by default; SDES-SRTP supported, though
• A lot of existing tools can handle RTP natively
• You can take advantage of multicast networks easily
• Simulcast streams can be forwarded individually
• Basic RTCP support can help in some scenarios
• e.g., ask WebRTC peer to send a keyframe via a PLI
What about data channels?
Forwarded on UDP datagrams! (and so limited by MTU, at the moment...)
Enter “RTP forwarders”
• Plugins like AudioBridge and VideoRoom only deal with WebRTC users...
• ... but all plugins have access to unencrypted media!
• Why not just forward those unencrypted packets somewhere else?
• Quite simply, relay RTP packets to specified address
• Plain RTP packets by default; SDES-SRTP supported, though
• A lot of existing tools can handle RTP natively
• You can take advantage of multicast networks easily
• Simulcast streams can be forwarded individually
• Basic RTCP support can help in some scenarios
• e.g., ask WebRTC peer to send a keyframe via a PLI
What about data channels?
Forwarded on UDP datagrams! (and so limited by MTU, at the moment...)
Enter “RTP forwarders”
• Plugins like AudioBridge and VideoRoom only deal with WebRTC users...
• ... but all plugins have access to unencrypted media!
• Why not just forward those unencrypted packets somewhere else?
• Quite simply, relay RTP packets to specified address
• Plain RTP packets by default; SDES-SRTP supported, though
• A lot of existing tools can handle RTP natively
• You can take advantage of multicast networks easily
• Simulcast streams can be forwarded individually
• Basic RTCP support can help in some scenarios
• e.g., ask WebRTC peer to send a keyframe via a PLI
What about data channels?
Forwarded on UDP datagrams! (and so limited by MTU, at the moment...)
Forwarding an AudioBridge mix
Forwarding an AudioBridge mix
Forwarding an AudioBridge mix
{
"request" : "rtp_forward",
"room" : <unique ID of the room to add the forwarder to>,
"ssrc" : <SSRC to use to use when streaming; optional>,
"ptype" : <payload type to use when streaming; optional>,
"host" : <host address to forward the RTP packets to>,
"host_family" : <ipv4|ipv6; optional>,
"port" : <port to forward the RTP packets to>,
"srtp_suite" : <length of auth tag (32 or 80); optional>,
"srtp_crypto" : <crypto key (base64, like SDES); optional>,
"always_on" : <forward silence when the room is empty; optional>
}
Forwarding individual VideoRoom streams
Forwarding individual VideoRoom streams
Forwarding individual VideoRoom streams
Forwarding individual VideoRoom streams
{
"request" : "rtp_forward",
"room" : <unique ID of the room the publisher is in>,
"publisher_id" : <unique ID of the publisher to relay externally>,
"host" : <host address to forward the RTP packets to>,
"host_family" : <ipv4|ipv6; optional>,
"audio_port" : <port to forward the audio RTP packets to>,
"audio_ssrc" : <audio SSRC to use to use when streaming; optional>,
"audio_pt" : <audio payload type to use when streaming; optional>,
"audio_rtcp_port" : <latching port to get audio RTCP feedback; optional (unused)>,
"video_port" : <port to forward the video RTP packets to>,
"video_ssrc" : <video SSRC to use to use when streaming; optional>,
"video_pt" : <video payload type to use when streaming; optional>,
[.. video_XYZ_2 and video_XYZ_3 relay simulcast layers 1 and 2 ..]
"video_rtcp_port" : <latching port to get video RTCP feedback; optional>,
"data_port" : <port to forward the datachannel messages to>,
"srtp_suite" : <length of auth tag (32 or 80); optional>,
"srtp_crypto" : <crypto key (base64, like SDES); optional>
}
Useful for remote processing/transcoding
Useful for remote processing/transcoding
Useful for remote processing/transcoding
... or for large-scale broadcasting
https://www.slideshare.net/LorenzoMiniero/scaling-webrtc-applications-with-janus
... or for large-scale broadcasting
https://www.slideshare.net/LorenzoMiniero/scaling-webrtc-applications-with-janus
... or, why not, geo-distributed access
https://www.slideshare.net/LorenzoMiniero/scaling-webrtc-applications-with-janus
... or, why not, geo-distributed access
https://www.slideshare.net/LorenzoMiniero/scaling-webrtc-applications-with-janus
We use it A LOT in our Virtual Events Platform!
https://commcon.xyz/session/turning-live-events-to-virtual-with-janus
RTP Forwarders support multicast too
RTP Forwarders support multicast too
Thanks! Questions? Comments?
Get in touch!
• https://twitter.com/elminiero
• https://twitter.com/meetecho
• http://www.meetecho.com

More Related Content

What's hot

What's hot (20)

Janus + Audio @ Open Source World
Janus + Audio @ Open Source WorldJanus + Audio @ Open Source World
Janus + Audio @ Open Source World
 
Scaling WebRTC applications with Janus
Scaling WebRTC applications with JanusScaling WebRTC applications with Janus
Scaling WebRTC applications with Janus
 
WHIP and Janus @ IIT-RTC 2021
WHIP and Janus @ IIT-RTC 2021WHIP and Janus @ IIT-RTC 2021
WHIP and Janus @ IIT-RTC 2021
 
Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019
 
Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020
 
FOSDEM2018 Janus Lua plugin presentation
FOSDEM2018 Janus Lua plugin presentationFOSDEM2018 Janus Lua plugin presentation
FOSDEM2018 Janus Lua plugin presentation
 
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
 
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...
Talk@JanusCon2019: Janus, WebRTC and ML - Fantastic technologies and how to m...
 
Janus + NDI @ ClueCon 2021
Janus + NDI @ ClueCon 2021Janus + NDI @ ClueCon 2021
Janus + NDI @ ClueCon 2021
 
IETF remote participation via Meetecho @ WebRTC Meetup Stockholm
IETF remote participation via Meetecho @ WebRTC Meetup StockholmIETF remote participation via Meetecho @ WebRTC Meetup Stockholm
IETF remote participation via Meetecho @ WebRTC Meetup Stockholm
 
WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022
 
Janus/HOMER/HEPIC @ OpenSIPS18
Janus/HOMER/HEPIC @ OpenSIPS18Janus/HOMER/HEPIC @ OpenSIPS18
Janus/HOMER/HEPIC @ OpenSIPS18
 
Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017
 
Fuzzing RTC @ Kamailio World 2019
Fuzzing RTC @ Kamailio World 2019Fuzzing RTC @ Kamailio World 2019
Fuzzing RTC @ Kamailio World 2019
 
Janus @ ClueCon 2019
Janus @ ClueCon 2019Janus @ ClueCon 2019
Janus @ ClueCon 2019
 
Janus @ WebRTC Meetup Stockholm
Janus @ WebRTC Meetup StockholmJanus @ WebRTC Meetup Stockholm
Janus @ WebRTC Meetup Stockholm
 
Simulcast/SVC @ IIT-RTC 2019
Simulcast/SVC @ IIT-RTC 2019Simulcast/SVC @ IIT-RTC 2019
Simulcast/SVC @ IIT-RTC 2019
 
JamRTC @ Wonder WebRTC unConference
JamRTC @ Wonder WebRTC unConferenceJamRTC @ Wonder WebRTC unConference
JamRTC @ Wonder WebRTC unConference
 
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 @ RTC2017 Beijing
Janus @ RTC2017 BeijingJanus @ RTC2017 Beijing
Janus @ RTC2017 Beijing
 

Similar to Janus Workshop pt.2 @ ClueCon 2021

Trick or XFLTReaT a.k.a. Tunnel All The Things
Trick or XFLTReaT a.k.a. Tunnel All The ThingsTrick or XFLTReaT a.k.a. Tunnel All The Things
Trick or XFLTReaT a.k.a. Tunnel All The Things
Balazs Bucsay
 
Balázs Bucsay - XFLTReaT: Building a Tunnel
Balázs Bucsay - XFLTReaT: Building a TunnelBalázs Bucsay - XFLTReaT: Building a Tunnel
Balázs Bucsay - XFLTReaT: Building a Tunnel
hacktivity
 
XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)
XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)
XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)
Balazs Bucsay
 
Privacy Enhanced RTP Conferencing with WebRTC - PERC
Privacy Enhanced RTP Conferencing with WebRTC - PERCPrivacy Enhanced RTP Conferencing with WebRTC - PERC
Privacy Enhanced RTP Conferencing with WebRTC - PERC
Arnaud BUDKIEWICZ
 
XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)
XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)
XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)
Balazs Bucsay
 
XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)
XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)
XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)
Balazs Bucsay
 

Similar to Janus Workshop pt.2 @ ClueCon 2021 (20)

Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020
 
WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023
 
Webrtc overview
Webrtc overviewWebrtc overview
Webrtc overview
 
Trick or XFLTReaT a.k.a. Tunnel All The Things
Trick or XFLTReaT a.k.a. Tunnel All The ThingsTrick or XFLTReaT a.k.a. Tunnel All The Things
Trick or XFLTReaT a.k.a. Tunnel All The Things
 
Balázs Bucsay - XFLTReaT: Building a Tunnel
Balázs Bucsay - XFLTReaT: Building a TunnelBalázs Bucsay - XFLTReaT: Building a Tunnel
Balázs Bucsay - XFLTReaT: Building a Tunnel
 
XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)
XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)
XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)
 
XFLTReat: a new dimension in tunnelling
XFLTReat:  a new dimension in tunnellingXFLTReat:  a new dimension in tunnelling
XFLTReat: a new dimension in tunnelling
 
Privacy Enhanced RTP Conferencing with WebRTC - PERC
Privacy Enhanced RTP Conferencing with WebRTC - PERCPrivacy Enhanced RTP Conferencing with WebRTC - PERC
Privacy Enhanced RTP Conferencing with WebRTC - PERC
 
XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)
XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)
XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)
 
Janus/Asterisk @ Astricon 2017
Janus/Asterisk @ Astricon 2017Janus/Asterisk @ Astricon 2017
Janus/Asterisk @ Astricon 2017
 
Making and breaking security in embedded devices
Making and breaking security in embedded devicesMaking and breaking security in embedded devices
Making and breaking security in embedded devices
 
Second screen iot_day_stockholm_2014
Second screen iot_day_stockholm_2014Second screen iot_day_stockholm_2014
Second screen iot_day_stockholm_2014
 
Internet TV
Internet TVInternet TV
Internet TV
 
A Progressive Approach to the Past: Ensuring Backwards Compatability Through ...
A Progressive Approach to the Past: Ensuring Backwards Compatability Through ...A Progressive Approach to the Past: Ensuring Backwards Compatability Through ...
A Progressive Approach to the Past: Ensuring Backwards Compatability Through ...
 
XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)
XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)
XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)
 
Upperside Webinar - WebRTC Standards Update
Upperside Webinar - WebRTC Standards UpdateUpperside Webinar - WebRTC Standards Update
Upperside Webinar - WebRTC Standards Update
 
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
 
BWE in Janus
BWE in JanusBWE in Janus
BWE in Janus
 
FOSDEM 2020: How can we make WebRTC Easier?
FOSDEM 2020: How can we make WebRTC Easier?FOSDEM 2020: How can we make WebRTC Easier?
FOSDEM 2020: How can we make WebRTC Easier?
 
Scaling server side web rtc applications the janus challenge by lorenzo miniero
Scaling server side web rtc applications the janus challenge by lorenzo minieroScaling server side web rtc applications the janus challenge by lorenzo miniero
Scaling server side web rtc applications the janus challenge by lorenzo miniero
 

More from Lorenzo Miniero

More from Lorenzo Miniero (9)

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
 
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!
 
Janus SFU cascading @ IIT-RTC 2022
Janus SFU cascading @ IIT-RTC 2022Janus SFU cascading @ IIT-RTC 2022
Janus SFU cascading @ IIT-RTC 2022
 
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 workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 BeijingJanus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 Beijing
 
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
 
Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019
 

Recently uploaded

Recently uploaded (20)

Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
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
 
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...
 
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...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
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)
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 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
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Janus Workshop pt.2 @ ClueCon 2021

  • 1. Janus as a WebRTC “enabler” Lorenzo Miniero @elminiero ClueCon TGI2021 Janus Workshop – February 17th 2021
  • 2. Who am I? Lorenzo Miniero • Ph.D @ UniNA • Chairman @ Meetecho • Main author of Janus® Contacts and info • lorenzo@meetecho.com • https://twitter.com/elminiero • https://www.slideshare.net/LorenzoMiniero • https://soundcloud.com/lminiero
  • 3. Just a few words on Meetecho • Co-founded in 2009 as an academic spin-off • University research efforts brought to the market • Completely independent from the University • Focus on real-time multimedia applications • Strong perspective on standardization and open source • Several activities • Consulting services • Commercial support and Janus licenses • Streaming of live events (IETF, ACM, etc.) • Proudly brewed in sunny Napoli, Italy
  • 5. In case you missed the first workshop... https://www.youtube.com/watch?v=Ga_7lukslxw
  • 6. ... a quick recap on Janus Janus General purpose, open source WebRTC server • https://github.com/meetecho/janus-gateway • Demos and documentation: https://janus.conf.meetecho.com • Community: https://groups.google.com/forum/#!forum/meetecho-janus
  • 7. 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 / Nanomsg • “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 can be combined on client side as “bricks” • Video SFU, Audio MCU, SIP gatewaying, broadcasting, etc.
  • 10. Exchanging RTP (1): SIP plugin https://janus.conf.meetecho.com/docs/sip
  • 11. Exchanging RTP (2): NoSIP plugin https://janus.conf.meetecho.com/docs/nosip
  • 12. Re-broadcasting RTP: Streaming plugin https://janus.conf.meetecho.com/docs/streaming
  • 13. WebRTC-only MCU: AudioBridge plugin https://janus.conf.meetecho.com/docs/audiobridge
  • 14. WebRTC-only SFU: VideoRoom plugin https://janus.conf.meetecho.com/docs/videoroom
  • 15. Enter “RTP forwarders” • Plugins like AudioBridge and VideoRoom only deal with WebRTC users... • ... but all plugins have access to unencrypted media! • Why not just forward those unencrypted packets somewhere else? • Quite simply, relay RTP packets to specified address • Plain RTP packets by default; SDES-SRTP supported, though • A lot of existing tools can handle RTP natively • You can take advantage of multicast networks easily • Simulcast streams can be forwarded individually • Basic RTCP support can help in some scenarios • e.g., ask WebRTC peer to send a keyframe via a PLI What about data channels? Forwarded on UDP datagrams! (and so limited by MTU, at the moment...)
  • 16. Enter “RTP forwarders” • Plugins like AudioBridge and VideoRoom only deal with WebRTC users... • ... but all plugins have access to unencrypted media! • Why not just forward those unencrypted packets somewhere else? • Quite simply, relay RTP packets to specified address • Plain RTP packets by default; SDES-SRTP supported, though • A lot of existing tools can handle RTP natively • You can take advantage of multicast networks easily • Simulcast streams can be forwarded individually • Basic RTCP support can help in some scenarios • e.g., ask WebRTC peer to send a keyframe via a PLI What about data channels? Forwarded on UDP datagrams! (and so limited by MTU, at the moment...)
  • 17. Enter “RTP forwarders” • Plugins like AudioBridge and VideoRoom only deal with WebRTC users... • ... but all plugins have access to unencrypted media! • Why not just forward those unencrypted packets somewhere else? • Quite simply, relay RTP packets to specified address • Plain RTP packets by default; SDES-SRTP supported, though • A lot of existing tools can handle RTP natively • You can take advantage of multicast networks easily • Simulcast streams can be forwarded individually • Basic RTCP support can help in some scenarios • e.g., ask WebRTC peer to send a keyframe via a PLI What about data channels? Forwarded on UDP datagrams! (and so limited by MTU, at the moment...)
  • 18. Enter “RTP forwarders” • Plugins like AudioBridge and VideoRoom only deal with WebRTC users... • ... but all plugins have access to unencrypted media! • Why not just forward those unencrypted packets somewhere else? • Quite simply, relay RTP packets to specified address • Plain RTP packets by default; SDES-SRTP supported, though • A lot of existing tools can handle RTP natively • You can take advantage of multicast networks easily • Simulcast streams can be forwarded individually • Basic RTCP support can help in some scenarios • e.g., ask WebRTC peer to send a keyframe via a PLI What about data channels? Forwarded on UDP datagrams! (and so limited by MTU, at the moment...)
  • 21. Forwarding an AudioBridge mix { "request" : "rtp_forward", "room" : <unique ID of the room to add the forwarder to>, "ssrc" : <SSRC to use to use when streaming; optional>, "ptype" : <payload type to use when streaming; optional>, "host" : <host address to forward the RTP packets to>, "host_family" : <ipv4|ipv6; optional>, "port" : <port to forward the RTP packets to>, "srtp_suite" : <length of auth tag (32 or 80); optional>, "srtp_crypto" : <crypto key (base64, like SDES); optional>, "always_on" : <forward silence when the room is empty; optional> }
  • 25. Forwarding individual VideoRoom streams { "request" : "rtp_forward", "room" : <unique ID of the room the publisher is in>, "publisher_id" : <unique ID of the publisher to relay externally>, "host" : <host address to forward the RTP packets to>, "host_family" : <ipv4|ipv6; optional>, "audio_port" : <port to forward the audio RTP packets to>, "audio_ssrc" : <audio SSRC to use to use when streaming; optional>, "audio_pt" : <audio payload type to use when streaming; optional>, "audio_rtcp_port" : <latching port to get audio RTCP feedback; optional (unused)>, "video_port" : <port to forward the video RTP packets to>, "video_ssrc" : <video SSRC to use to use when streaming; optional>, "video_pt" : <video payload type to use when streaming; optional>, [.. video_XYZ_2 and video_XYZ_3 relay simulcast layers 1 and 2 ..] "video_rtcp_port" : <latching port to get video RTCP feedback; optional>, "data_port" : <port to forward the datachannel messages to>, "srtp_suite" : <length of auth tag (32 or 80); optional>, "srtp_crypto" : <crypto key (base64, like SDES); optional> }
  • 26. Useful for remote processing/transcoding
  • 27. Useful for remote processing/transcoding
  • 28. Useful for remote processing/transcoding
  • 29. ... or for large-scale broadcasting https://www.slideshare.net/LorenzoMiniero/scaling-webrtc-applications-with-janus
  • 30. ... or for large-scale broadcasting https://www.slideshare.net/LorenzoMiniero/scaling-webrtc-applications-with-janus
  • 31. ... or, why not, geo-distributed access https://www.slideshare.net/LorenzoMiniero/scaling-webrtc-applications-with-janus
  • 32. ... or, why not, geo-distributed access https://www.slideshare.net/LorenzoMiniero/scaling-webrtc-applications-with-janus
  • 33. We use it A LOT in our Virtual Events Platform! https://commcon.xyz/session/turning-live-events-to-virtual-with-janus
  • 34. RTP Forwarders support multicast too
  • 35. RTP Forwarders support multicast too
  • 36. Thanks! Questions? Comments? Get in touch! • https://twitter.com/elminiero • https://twitter.com/meetecho • http://www.meetecho.com