SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
SFU Cascading with Janus
Lorenzo Miniero
@elminiero
IIT Real-Time Communication 2022 – WebRTC Track
October 11th 2022, Chicago, IL, USA
A few words about me
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://lminiero.bandcamp.com
A quick reminder on what Janus is!
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
SFU functionality provided by the VideoRoom plugin
https://janus.conf.meetecho.com/docs/videoroom
Historically, different ways to scale Janus (and VideoRoom)
https://www.slideshare.net/LorenzoMiniero/scaling-webrtc-applications-with-janus
RTP forwarders played a key role
https://archive.fosdem.org/2020/schedule/event/janus/
RTP forwarders played a key role
https://archive.fosdem.org/2020/schedule/event/janus/
... especially when coupled with the Streaming plugin
https://janus.conf.meetecho.com/docs/streaming
... especially when coupled with the Streaming plugin
https://janus.conf.meetecho.com/docs/streaming
... especially when coupled with the Streaming plugin
https://janus.conf.meetecho.com/docs/streaming
... why not, maybe using multicast too!
https://www.slideshare.net/LorenzoMiniero/scaling-webrtc-deployments-with-multicast-ietf-110-mboned
Useful for large-scale broadcasting (e.g., via WHIP)
https://www.slideshare.net/LorenzoMiniero/whip-and-janus-iitrtc-2021
Useful for large-scale broadcasting (e.g., via WHIP)
https://www.slideshare.net/LorenzoMiniero/whip-and-janus-iitrtc-2021
... but also plain SFU cascading
... but also plain SFU cascading
We use it A LOT in our Virtual Events Platform!
https://commcon.xyz/session/turning-live-events-to-virtual-with-janus
This works great with Janus 0.x, but what about multistream?
• The first version of Janus (now called 0.x) had a key “limitation”
• Each PeerConnection could contain 1 audio and 1 video stream at max
• Multiple PCs needed to serve content from different SFU participants
• Very simple and easy to manage, as far as cascading is concerned
• 1 VideoRoom publisher = 1 Streaming mountpoint
• Relatively easy to orchestrate and negotiate in web apps
• New version of Janus (1.x, a.k.a. multistream) removes this constraint
• VideoRoom can be told to only use 2 PCs per participant
• One PC to send everything, one to receive everything
• Much more flexibility in how subscriptions are handled
This works great with Janus 0.x, but what about multistream?
• The first version of Janus (now called 0.x) had a key “limitation”
• Each PeerConnection could contain 1 audio and 1 video stream at max
• Multiple PCs needed to serve content from different SFU participants
• Very simple and easy to manage, as far as cascading is concerned
• 1 VideoRoom publisher = 1 Streaming mountpoint
• Relatively easy to orchestrate and negotiate in web apps
• New version of Janus (1.x, a.k.a. multistream) removes this constraint
• VideoRoom can be told to only use 2 PCs per participant
• One PC to send everything, one to receive everything
• Much more flexibility in how subscriptions are handled
This works great with Janus 0.x, but what about multistream?
• The first version of Janus (now called 0.x) had a key “limitation”
• Each PeerConnection could contain 1 audio and 1 video stream at max
• Multiple PCs needed to serve content from different SFU participants
• Very simple and easy to manage, as far as cascading is concerned
• 1 VideoRoom publisher = 1 Streaming mountpoint
• Relatively easy to orchestrate and negotiate in web apps
• New version of Janus (1.x, a.k.a. multistream) removes this constraint
• VideoRoom can be told to only use 2 PCs per participant
• One PC to send everything, one to receive everything
• Much more flexibility in how subscriptions are handled
VideoRoom usage in “multistream” Janus
https://www.slideshare.net/LorenzoMiniero/multistream-in-janus-commcon-2019
VideoRoom usage in “multistream” Janus
https://www.slideshare.net/LorenzoMiniero/multistream-in-janus-commcon-2019
Multistream PeerConnections not as easy to cascade
• A single Streaming mountpoint per participant wouldn’t help
• It would force subscribers to create multiple PCs for receiving media
• Wouldn’t really take advantage of multistream functionality
• A multistream Streaming mountpoint wouldn’t help either
• A mountpoint is a pretty static component, and SFU participants are dynamic
• Different subscribers will want to subscribe to different resources
The solution: cascading the VideoRoom itself!
https://www.meetecho.com/blog/sfu-cascading/
Multistream PeerConnections not as easy to cascade
• A single Streaming mountpoint per participant wouldn’t help
• It would force subscribers to create multiple PCs for receiving media
• Wouldn’t really take advantage of multistream functionality
• A multistream Streaming mountpoint wouldn’t help either
• A mountpoint is a pretty static component, and SFU participants are dynamic
• Different subscribers will want to subscribe to different resources
The solution: cascading the VideoRoom itself!
https://www.meetecho.com/blog/sfu-cascading/
Multistream PeerConnections not as easy to cascade
• A single Streaming mountpoint per participant wouldn’t help
• It would force subscribers to create multiple PCs for receiving media
• Wouldn’t really take advantage of multistream functionality
• A multistream Streaming mountpoint wouldn’t help either
• A mountpoint is a pretty static component, and SFU participants are dynamic
• Different subscribers will want to subscribe to different resources
The solution: cascading the VideoRoom itself!
https://www.meetecho.com/blog/sfu-cascading/
Implementing the concept of “remote publishers”
• VideoRoom in Janus 1.x now supports so-called “remote publishers”
• Handled and advertised (via signalling) as local publishers, but actually remote
• Media coming from another VideoRoom (or server)
• RTP forwarders still used internally for the purpose
• Remote publishers can be part of a VideoRoom multistream subscription
• Subscribers can combine local and remote publishers in the same PeerConnection
• Remote publishers can be updated dynamically as well
• Tracks added/removed at remote source are notified to local subscribers via API
• Renegotiations and updates work transparently as well, as far as users are concerned
Implementing the concept of “remote publishers”
• VideoRoom in Janus 1.x now supports so-called “remote publishers”
• Handled and advertised (via signalling) as local publishers, but actually remote
• Media coming from another VideoRoom (or server)
• RTP forwarders still used internally for the purpose
• Remote publishers can be part of a VideoRoom multistream subscription
• Subscribers can combine local and remote publishers in the same PeerConnection
• Remote publishers can be updated dynamically as well
• Tracks added/removed at remote source are notified to local subscribers via API
• Renegotiations and updates work transparently as well, as far as users are concerned
Implementing the concept of “remote publishers”
• VideoRoom in Janus 1.x now supports so-called “remote publishers”
• Handled and advertised (via signalling) as local publishers, but actually remote
• Media coming from another VideoRoom (or server)
• RTP forwarders still used internally for the purpose
• Remote publishers can be part of a VideoRoom multistream subscription
• Subscribers can combine local and remote publishers in the same PeerConnection
• Remote publishers can be updated dynamically as well
• Tracks added/removed at remote source are notified to local subscribers via API
• Renegotiations and updates work transparently as well, as far as users are concerned
Implementing the concept of “remote publishers”
Implementing the concept of “remote publishers”
A caveat: remote publishers not really automated, for now
• Manual API requests needed on both sides to create a remote publisher
1 Create a remote publisher Y on Janus B (returns connectivity info)
2 Tell VideoRoom on Janus A to forward publisher X to VideoRoom on Janus B
3 Y (Janus B) is now an avatar of X (Janus A)
• Manual API requests also needed on recipient side for updates
• Janus B needs to know when a track is added/removed (to notify subscribers)
• RTP management already automated, instead
• A single port per publisher used, no matter how many streams they send
• SSRC multiplexing used for sending RTP packets to the remote side
• Simple math to calculate SSRC on both sides (and demultiplex incoming streams)
A caveat: remote publishers not really automated, for now
• Manual API requests needed on both sides to create a remote publisher
1 Create a remote publisher Y on Janus B (returns connectivity info)
2 Tell VideoRoom on Janus A to forward publisher X to VideoRoom on Janus B
3 Y (Janus B) is now an avatar of X (Janus A)
• Manual API requests also needed on recipient side for updates
• Janus B needs to know when a track is added/removed (to notify subscribers)
• RTP management already automated, instead
• A single port per publisher used, no matter how many streams they send
• SSRC multiplexing used for sending RTP packets to the remote side
• Simple math to calculate SSRC on both sides (and demultiplex incoming streams)
A caveat: remote publishers not really automated, for now
• Manual API requests needed on both sides to create a remote publisher
1 Create a remote publisher Y on Janus B (returns connectivity info)
2 Tell VideoRoom on Janus A to forward publisher X to VideoRoom on Janus B
3 Y (Janus B) is now an avatar of X (Janus A)
• Manual API requests also needed on recipient side for updates
• Janus B needs to know when a track is added/removed (to notify subscribers)
• RTP management already automated, instead
• A single port per publisher used, no matter how many streams they send
• SSRC multiplexing used for sending RTP packets to the remote side
• Simple math to calculate SSRC on both sides (and demultiplex incoming streams)
Improving the performance of the VideoRoom
• Cascading as done in Janus 0.x leverages Streaming plugin
• Streaming plugin optimized for broadcasting (via “helper threads”)
• Easy to serve the same mountpoint to many subscribers on the same instance
• Very helpful in webinar scenarios (or for our virtual event platform)
• Janus 1.x has remote publishers, but VideoRoom not suited for large audiences
• Does the job for small/medium conferences
• Relay logic may have some bottlenecks in critical paths
WIP: support for helper threads in VideoRoom as well
• https://github.com/meetecho/janus-gateway/pull/3067
• Automatically supported for both local and remote publishers
Improving the performance of the VideoRoom
• Cascading as done in Janus 0.x leverages Streaming plugin
• Streaming plugin optimized for broadcasting (via “helper threads”)
• Easy to serve the same mountpoint to many subscribers on the same instance
• Very helpful in webinar scenarios (or for our virtual event platform)
• Janus 1.x has remote publishers, but VideoRoom not suited for large audiences
• Does the job for small/medium conferences
• Relay logic may have some bottlenecks in critical paths
WIP: support for helper threads in VideoRoom as well
• https://github.com/meetecho/janus-gateway/pull/3067
• Automatically supported for both local and remote publishers
Improving the performance of the VideoRoom
• Cascading as done in Janus 0.x leverages Streaming plugin
• Streaming plugin optimized for broadcasting (via “helper threads”)
• Easy to serve the same mountpoint to many subscribers on the same instance
• Very helpful in webinar scenarios (or for our virtual event platform)
• Janus 1.x has remote publishers, but VideoRoom not suited for large audiences
• Does the job for small/medium conferences
• Relay logic may have some bottlenecks in critical paths
WIP: support for helper threads in VideoRoom as well
• https://github.com/meetecho/janus-gateway/pull/3067
• Automatically supported for both local and remote publishers
Thanks! Questions? Comments?
Get in touch!
• https://twitter.com/elminiero
• https://twitter.com/meetecho
• https://www.meetecho.com

Contenu connexe

Tendances

Deep dive into highly available open stack architecture openstack summit va...
Deep dive into highly available open stack architecture   openstack summit va...Deep dive into highly available open stack architecture   openstack summit va...
Deep dive into highly available open stack architecture openstack summit va...
Arthur Berezin
 
WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?
Weaveworks
 

Tendances (20)

Ceph on Windows
Ceph on WindowsCeph on Windows
Ceph on Windows
 
Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019
 
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
 
Gitlab ci-cd
Gitlab ci-cdGitlab ci-cd
Gitlab ci-cd
 
BWE in Janus
BWE in JanusBWE in Janus
BWE in Janus
 
Deep dive into highly available open stack architecture openstack summit va...
Deep dive into highly available open stack architecture   openstack summit va...Deep dive into highly available open stack architecture   openstack summit va...
Deep dive into highly available open stack architecture openstack summit va...
 
Devops Devops Devops, at Froscon
Devops Devops Devops, at FrosconDevops Devops Devops, at Froscon
Devops Devops Devops, at Froscon
 
Janus + Audio @ Open Source World
Janus + Audio @ Open Source WorldJanus + Audio @ Open Source World
Janus + Audio @ Open Source World
 
WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?
 
Getting Started: Intro to Telegraf - July 2021
Getting Started: Intro to Telegraf - July 2021Getting Started: Intro to Telegraf - July 2021
Getting Started: Intro to Telegraf - July 2021
 
Branching and merging strategy
Branching and merging strategyBranching and merging strategy
Branching and merging strategy
 
Meetup 23 - 03 - Application Delivery on K8S with GitOps
Meetup 23 - 03 - Application Delivery on K8S with GitOpsMeetup 23 - 03 - Application Delivery on K8S with GitOps
Meetup 23 - 03 - Application Delivery on K8S with GitOps
 
What is DevOps | DevOps Introduction | DevOps Tutorial For Beginners | DevOps...
What is DevOps | DevOps Introduction | DevOps Tutorial For Beginners | DevOps...What is DevOps | DevOps Introduction | DevOps Tutorial For Beginners | DevOps...
What is DevOps | DevOps Introduction | DevOps Tutorial For Beginners | DevOps...
 
OpenShift Container Platform 4.12 Release Notes
OpenShift Container Platform 4.12 Release NotesOpenShift Container Platform 4.12 Release Notes
OpenShift Container Platform 4.12 Release Notes
 
DevOps - A Gentle Introduction
DevOps - A Gentle IntroductionDevOps - A Gentle Introduction
DevOps - A Gentle Introduction
 
Introducing GitLab (June 2018)
Introducing GitLab (June 2018)Introducing GitLab (June 2018)
Introducing GitLab (June 2018)
 
WebRTC, RED and Janus @ ClueCon21
WebRTC, RED and Janus @ ClueCon21WebRTC, RED and Janus @ ClueCon21
WebRTC, RED and Janus @ ClueCon21
 
Git Lab Introduction
Git Lab IntroductionGit Lab Introduction
Git Lab Introduction
 
Monitoring with prometheus
Monitoring with prometheusMonitoring with prometheus
Monitoring with prometheus
 
GitFlow, SourceTree and GitLab
GitFlow, SourceTree and GitLabGitFlow, SourceTree and GitLab
GitFlow, SourceTree and GitLab
 

Similaire à Janus SFU cascading @ IIT-RTC 2022

Similaire à Janus SFU cascading @ IIT-RTC 2022 (20)

Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021
 
How to Architect your WebRTC application, Alberto Gonzalez and Arin Sime, Web...
How to Architect your WebRTC application, Alberto Gonzalez and Arin Sime, Web...How to Architect your WebRTC application, Alberto Gonzalez and Arin Sime, Web...
How to Architect your WebRTC application, Alberto Gonzalez and Arin Sime, Web...
 
Iñaki Baz - CommCon 2018 | Building multy-party video apps with mediasoup
Iñaki Baz - CommCon 2018 | Building multy-party video apps with mediasoupIñaki Baz - CommCon 2018 | Building multy-party video apps with mediasoup
Iñaki Baz - CommCon 2018 | Building multy-party video apps with mediasoup
 
Kurento - FI-WARE Bootcamp
Kurento - FI-WARE BootcampKurento - FI-WARE Bootcamp
Kurento - FI-WARE Bootcamp
 
Building real time applications with Symfony2
Building real time applications with Symfony2Building real time applications with Symfony2
Building real time applications with Symfony2
 
Developing rich multimedia applications with FI-WARE.
Developing rich multimedia applications with FI-WARE.Developing rich multimedia applications with FI-WARE.
Developing rich multimedia applications with FI-WARE.
 
About Voddler, our streaming technology Vnet and accelerating video-on-demand...
About Voddler, our streaming technology Vnet and accelerating video-on-demand...About Voddler, our streaming technology Vnet and accelerating video-on-demand...
About Voddler, our streaming technology Vnet and accelerating video-on-demand...
 
Adding Real-time Features to PHP Applications
Adding Real-time Features to PHP ApplicationsAdding Real-time Features to PHP Applications
Adding Real-time Features to PHP Applications
 
PortoTechHub - Hail Hydrate! From Stream to Lake with Apache Pulsar and Friends
PortoTechHub  - Hail Hydrate! From Stream to Lake with Apache Pulsar and FriendsPortoTechHub  - Hail Hydrate! From Stream to Lake with Apache Pulsar and Friends
PortoTechHub - Hail Hydrate! From Stream to Lake with Apache Pulsar and Friends
 
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
 
Unicon Nov 2014 IAM Briefing
Unicon Nov 2014 IAM BriefingUnicon Nov 2014 IAM Briefing
Unicon Nov 2014 IAM Briefing
 
Empowering Customer Centric NFV - by Sean Chen @ Openstack Summit Paris 2014
Empowering Customer Centric NFV - by Sean Chen @ Openstack Summit Paris 2014Empowering Customer Centric NFV - by Sean Chen @ Openstack Summit Paris 2014
Empowering Customer Centric NFV - by Sean Chen @ Openstack Summit Paris 2014
 
2014 Q4 IAM Open Source Support Program Update
2014 Q4 IAM Open Source Support Program Update2014 Q4 IAM Open Source Support Program Update
2014 Q4 IAM Open Source Support Program Update
 
Recording and media manipulation of WebRTC streams
Recording and media manipulation of WebRTC streamsRecording and media manipulation of WebRTC streams
Recording and media manipulation of WebRTC streams
 
Architecting your WebRTC application for scalability, Arin Sime
Architecting your WebRTC application for scalability, Arin SimeArchitecting your WebRTC application for scalability, Arin Sime
Architecting your WebRTC application for scalability, Arin Sime
 
Dynamic Reactor Pattern for Distributed Systems in Control and Monitoring
Dynamic Reactor Pattern for Distributed Systems in Control and MonitoringDynamic Reactor Pattern for Distributed Systems in Control and Monitoring
Dynamic Reactor Pattern for Distributed Systems in Control and Monitoring
 
Janus @ ClueCon 2019
Janus @ ClueCon 2019Janus @ ClueCon 2019
Janus @ ClueCon 2019
 
BigBlueButton Platform Components
BigBlueButton Platform ComponentsBigBlueButton Platform Components
BigBlueButton Platform Components
 
Software update for IoT: the current state of play
Software update for IoT: the current state of playSoftware update for IoT: the current state of play
Software update for IoT: the current state of play
 
February 13th, 2014 - Unicon IAM Webinar Update
February 13th, 2014 - Unicon IAM Webinar UpdateFebruary 13th, 2014 - Unicon IAM Webinar Update
February 13th, 2014 - Unicon IAM Webinar Update
 

Plus de Lorenzo Miniero

Plus de Lorenzo Miniero (20)

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
 
WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 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!
 
WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022
 
WHIP and Janus @ IIT-RTC 2021
WHIP and Janus @ IIT-RTC 2021WHIP and Janus @ IIT-RTC 2021
WHIP and Janus @ IIT-RTC 2021
 
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
 
Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020
 
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
 
Janus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 BeijingJanus workshop @ RTC2019 Beijing
Janus workshop @ RTC2019 Beijing
 
Simulcast/SVC @ IIT-RTC 2019
Simulcast/SVC @ IIT-RTC 2019Simulcast/SVC @ IIT-RTC 2019
Simulcast/SVC @ IIT-RTC 2019
 
Fuzzing Janus @ IPTComm 2019
Fuzzing Janus @ IPTComm 2019Fuzzing Janus @ IPTComm 2019
Fuzzing Janus @ IPTComm 2019
 
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
 

Dernier

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
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Dernier (20)

Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
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...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
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...
 
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
 
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
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
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
 
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
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
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...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
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
 
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
 
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
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
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
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

Janus SFU cascading @ IIT-RTC 2022

  • 1. SFU Cascading with Janus Lorenzo Miniero @elminiero IIT Real-Time Communication 2022 – WebRTC Track October 11th 2022, Chicago, IL, USA
  • 2. A few words about me 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://lminiero.bandcamp.com
  • 3. A quick reminder on what Janus is! 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
  • 4. SFU functionality provided by the VideoRoom plugin https://janus.conf.meetecho.com/docs/videoroom
  • 5. Historically, different ways to scale Janus (and VideoRoom) https://www.slideshare.net/LorenzoMiniero/scaling-webrtc-applications-with-janus
  • 6. RTP forwarders played a key role https://archive.fosdem.org/2020/schedule/event/janus/
  • 7. RTP forwarders played a key role https://archive.fosdem.org/2020/schedule/event/janus/
  • 8. ... especially when coupled with the Streaming plugin https://janus.conf.meetecho.com/docs/streaming
  • 9. ... especially when coupled with the Streaming plugin https://janus.conf.meetecho.com/docs/streaming
  • 10. ... especially when coupled with the Streaming plugin https://janus.conf.meetecho.com/docs/streaming
  • 11. ... why not, maybe using multicast too! https://www.slideshare.net/LorenzoMiniero/scaling-webrtc-deployments-with-multicast-ietf-110-mboned
  • 12. Useful for large-scale broadcasting (e.g., via WHIP) https://www.slideshare.net/LorenzoMiniero/whip-and-janus-iitrtc-2021
  • 13. Useful for large-scale broadcasting (e.g., via WHIP) https://www.slideshare.net/LorenzoMiniero/whip-and-janus-iitrtc-2021
  • 14. ... but also plain SFU cascading
  • 15. ... but also plain SFU cascading
  • 16. We use it A LOT in our Virtual Events Platform! https://commcon.xyz/session/turning-live-events-to-virtual-with-janus
  • 17. This works great with Janus 0.x, but what about multistream? • The first version of Janus (now called 0.x) had a key “limitation” • Each PeerConnection could contain 1 audio and 1 video stream at max • Multiple PCs needed to serve content from different SFU participants • Very simple and easy to manage, as far as cascading is concerned • 1 VideoRoom publisher = 1 Streaming mountpoint • Relatively easy to orchestrate and negotiate in web apps • New version of Janus (1.x, a.k.a. multistream) removes this constraint • VideoRoom can be told to only use 2 PCs per participant • One PC to send everything, one to receive everything • Much more flexibility in how subscriptions are handled
  • 18. This works great with Janus 0.x, but what about multistream? • The first version of Janus (now called 0.x) had a key “limitation” • Each PeerConnection could contain 1 audio and 1 video stream at max • Multiple PCs needed to serve content from different SFU participants • Very simple and easy to manage, as far as cascading is concerned • 1 VideoRoom publisher = 1 Streaming mountpoint • Relatively easy to orchestrate and negotiate in web apps • New version of Janus (1.x, a.k.a. multistream) removes this constraint • VideoRoom can be told to only use 2 PCs per participant • One PC to send everything, one to receive everything • Much more flexibility in how subscriptions are handled
  • 19. This works great with Janus 0.x, but what about multistream? • The first version of Janus (now called 0.x) had a key “limitation” • Each PeerConnection could contain 1 audio and 1 video stream at max • Multiple PCs needed to serve content from different SFU participants • Very simple and easy to manage, as far as cascading is concerned • 1 VideoRoom publisher = 1 Streaming mountpoint • Relatively easy to orchestrate and negotiate in web apps • New version of Janus (1.x, a.k.a. multistream) removes this constraint • VideoRoom can be told to only use 2 PCs per participant • One PC to send everything, one to receive everything • Much more flexibility in how subscriptions are handled
  • 20. VideoRoom usage in “multistream” Janus https://www.slideshare.net/LorenzoMiniero/multistream-in-janus-commcon-2019
  • 21. VideoRoom usage in “multistream” Janus https://www.slideshare.net/LorenzoMiniero/multistream-in-janus-commcon-2019
  • 22. Multistream PeerConnections not as easy to cascade • A single Streaming mountpoint per participant wouldn’t help • It would force subscribers to create multiple PCs for receiving media • Wouldn’t really take advantage of multistream functionality • A multistream Streaming mountpoint wouldn’t help either • A mountpoint is a pretty static component, and SFU participants are dynamic • Different subscribers will want to subscribe to different resources The solution: cascading the VideoRoom itself! https://www.meetecho.com/blog/sfu-cascading/
  • 23. Multistream PeerConnections not as easy to cascade • A single Streaming mountpoint per participant wouldn’t help • It would force subscribers to create multiple PCs for receiving media • Wouldn’t really take advantage of multistream functionality • A multistream Streaming mountpoint wouldn’t help either • A mountpoint is a pretty static component, and SFU participants are dynamic • Different subscribers will want to subscribe to different resources The solution: cascading the VideoRoom itself! https://www.meetecho.com/blog/sfu-cascading/
  • 24. Multistream PeerConnections not as easy to cascade • A single Streaming mountpoint per participant wouldn’t help • It would force subscribers to create multiple PCs for receiving media • Wouldn’t really take advantage of multistream functionality • A multistream Streaming mountpoint wouldn’t help either • A mountpoint is a pretty static component, and SFU participants are dynamic • Different subscribers will want to subscribe to different resources The solution: cascading the VideoRoom itself! https://www.meetecho.com/blog/sfu-cascading/
  • 25. Implementing the concept of “remote publishers” • VideoRoom in Janus 1.x now supports so-called “remote publishers” • Handled and advertised (via signalling) as local publishers, but actually remote • Media coming from another VideoRoom (or server) • RTP forwarders still used internally for the purpose • Remote publishers can be part of a VideoRoom multistream subscription • Subscribers can combine local and remote publishers in the same PeerConnection • Remote publishers can be updated dynamically as well • Tracks added/removed at remote source are notified to local subscribers via API • Renegotiations and updates work transparently as well, as far as users are concerned
  • 26. Implementing the concept of “remote publishers” • VideoRoom in Janus 1.x now supports so-called “remote publishers” • Handled and advertised (via signalling) as local publishers, but actually remote • Media coming from another VideoRoom (or server) • RTP forwarders still used internally for the purpose • Remote publishers can be part of a VideoRoom multistream subscription • Subscribers can combine local and remote publishers in the same PeerConnection • Remote publishers can be updated dynamically as well • Tracks added/removed at remote source are notified to local subscribers via API • Renegotiations and updates work transparently as well, as far as users are concerned
  • 27. Implementing the concept of “remote publishers” • VideoRoom in Janus 1.x now supports so-called “remote publishers” • Handled and advertised (via signalling) as local publishers, but actually remote • Media coming from another VideoRoom (or server) • RTP forwarders still used internally for the purpose • Remote publishers can be part of a VideoRoom multistream subscription • Subscribers can combine local and remote publishers in the same PeerConnection • Remote publishers can be updated dynamically as well • Tracks added/removed at remote source are notified to local subscribers via API • Renegotiations and updates work transparently as well, as far as users are concerned
  • 28. Implementing the concept of “remote publishers”
  • 29. Implementing the concept of “remote publishers”
  • 30. A caveat: remote publishers not really automated, for now • Manual API requests needed on both sides to create a remote publisher 1 Create a remote publisher Y on Janus B (returns connectivity info) 2 Tell VideoRoom on Janus A to forward publisher X to VideoRoom on Janus B 3 Y (Janus B) is now an avatar of X (Janus A) • Manual API requests also needed on recipient side for updates • Janus B needs to know when a track is added/removed (to notify subscribers) • RTP management already automated, instead • A single port per publisher used, no matter how many streams they send • SSRC multiplexing used for sending RTP packets to the remote side • Simple math to calculate SSRC on both sides (and demultiplex incoming streams)
  • 31. A caveat: remote publishers not really automated, for now • Manual API requests needed on both sides to create a remote publisher 1 Create a remote publisher Y on Janus B (returns connectivity info) 2 Tell VideoRoom on Janus A to forward publisher X to VideoRoom on Janus B 3 Y (Janus B) is now an avatar of X (Janus A) • Manual API requests also needed on recipient side for updates • Janus B needs to know when a track is added/removed (to notify subscribers) • RTP management already automated, instead • A single port per publisher used, no matter how many streams they send • SSRC multiplexing used for sending RTP packets to the remote side • Simple math to calculate SSRC on both sides (and demultiplex incoming streams)
  • 32. A caveat: remote publishers not really automated, for now • Manual API requests needed on both sides to create a remote publisher 1 Create a remote publisher Y on Janus B (returns connectivity info) 2 Tell VideoRoom on Janus A to forward publisher X to VideoRoom on Janus B 3 Y (Janus B) is now an avatar of X (Janus A) • Manual API requests also needed on recipient side for updates • Janus B needs to know when a track is added/removed (to notify subscribers) • RTP management already automated, instead • A single port per publisher used, no matter how many streams they send • SSRC multiplexing used for sending RTP packets to the remote side • Simple math to calculate SSRC on both sides (and demultiplex incoming streams)
  • 33. Improving the performance of the VideoRoom • Cascading as done in Janus 0.x leverages Streaming plugin • Streaming plugin optimized for broadcasting (via “helper threads”) • Easy to serve the same mountpoint to many subscribers on the same instance • Very helpful in webinar scenarios (or for our virtual event platform) • Janus 1.x has remote publishers, but VideoRoom not suited for large audiences • Does the job for small/medium conferences • Relay logic may have some bottlenecks in critical paths WIP: support for helper threads in VideoRoom as well • https://github.com/meetecho/janus-gateway/pull/3067 • Automatically supported for both local and remote publishers
  • 34. Improving the performance of the VideoRoom • Cascading as done in Janus 0.x leverages Streaming plugin • Streaming plugin optimized for broadcasting (via “helper threads”) • Easy to serve the same mountpoint to many subscribers on the same instance • Very helpful in webinar scenarios (or for our virtual event platform) • Janus 1.x has remote publishers, but VideoRoom not suited for large audiences • Does the job for small/medium conferences • Relay logic may have some bottlenecks in critical paths WIP: support for helper threads in VideoRoom as well • https://github.com/meetecho/janus-gateway/pull/3067 • Automatically supported for both local and remote publishers
  • 35. Improving the performance of the VideoRoom • Cascading as done in Janus 0.x leverages Streaming plugin • Streaming plugin optimized for broadcasting (via “helper threads”) • Easy to serve the same mountpoint to many subscribers on the same instance • Very helpful in webinar scenarios (or for our virtual event platform) • Janus 1.x has remote publishers, but VideoRoom not suited for large audiences • Does the job for small/medium conferences • Relay logic may have some bottlenecks in critical paths WIP: support for helper threads in VideoRoom as well • https://github.com/meetecho/janus-gateway/pull/3067 • Automatically supported for both local and remote publishers
  • 36. Thanks! Questions? Comments? Get in touch! • https://twitter.com/elminiero • https://twitter.com/meetecho • https://www.meetecho.com