SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Janus + Audio @ Open Source World
Janus + Audio @ Open Source WorldJanus + Audio @ Open Source World
Janus + Audio @ Open Source WorldLorenzo Miniero
 
Red Hat Openshift on Microsoft Azure
Red Hat Openshift on Microsoft AzureRed Hat Openshift on Microsoft Azure
Red Hat Openshift on Microsoft AzureJohn Archer
 
Build HA Asterisk on Microsoft Azure using DRBD/Heartbeat
Build HA Asterisk on Microsoft Azure using DRBD/HeartbeatBuild HA Asterisk on Microsoft Azure using DRBD/Heartbeat
Build HA Asterisk on Microsoft Azure using DRBD/HeartbeatSanjay Willie
 
Gérer sa dette technique avec SonarQube
Gérer sa dette technique avec SonarQubeGérer sa dette technique avec SonarQube
Gérer sa dette technique avec SonarQubePierre-Henri Gache
 
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
 
Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Lorenzo Miniero
 
HA Deployment Architecture with HAProxy and Keepalived
HA Deployment Architecture with HAProxy and KeepalivedHA Deployment Architecture with HAProxy and Keepalived
HA Deployment Architecture with HAProxy and KeepalivedGanapathi Kandaswamy
 
Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 rockplace
 
Software Defined Datacenter with Proxmox
Software Defined Datacenter with ProxmoxSoftware Defined Datacenter with Proxmox
Software Defined Datacenter with ProxmoxGLC Networks
 
FreeSWITCH on Docker
FreeSWITCH on DockerFreeSWITCH on Docker
FreeSWITCH on Docker建澄 吳
 
Understanding docker networking
Understanding docker networkingUnderstanding docker networking
Understanding docker networkingLorenzo Fontana
 
Red Hat OpenShift on Bare Metal and Containerized Storage
Red Hat OpenShift on Bare Metal and Containerized StorageRed Hat OpenShift on Bare Metal and Containerized Storage
Red Hat OpenShift on Bare Metal and Containerized StorageGreg Hoelzer
 
Dockers and containers basics
Dockers and containers basicsDockers and containers basics
Dockers and containers basicsSourabh Saxena
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to dockerJohn Willis
 
Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019Lorenzo Miniero
 
OpenStack High Availability
OpenStack High AvailabilityOpenStack High Availability
OpenStack High AvailabilityJakub Pavlik
 
WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022Lorenzo Miniero
 
What you need to know about ceph
What you need to know about cephWhat you need to know about ceph
What you need to know about cephEmma Haruka Iwao
 
Cluster-as-code. The Many Ways towards Kubernetes
Cluster-as-code. The Many Ways towards KubernetesCluster-as-code. The Many Ways towards Kubernetes
Cluster-as-code. The Many Ways towards KubernetesQAware GmbH
 
Deploying CloudStack and Ceph with flexible VXLAN and BGP networking
Deploying CloudStack and Ceph with flexible VXLAN and BGP networking Deploying CloudStack and Ceph with flexible VXLAN and BGP networking
Deploying CloudStack and Ceph with flexible VXLAN and BGP networking ShapeBlue
 

Was ist angesagt? (20)

Janus + Audio @ Open Source World
Janus + Audio @ Open Source WorldJanus + Audio @ Open Source World
Janus + Audio @ Open Source World
 
Red Hat Openshift on Microsoft Azure
Red Hat Openshift on Microsoft AzureRed Hat Openshift on Microsoft Azure
Red Hat Openshift on Microsoft Azure
 
Build HA Asterisk on Microsoft Azure using DRBD/Heartbeat
Build HA Asterisk on Microsoft Azure using DRBD/HeartbeatBuild HA Asterisk on Microsoft Azure using DRBD/Heartbeat
Build HA Asterisk on Microsoft Azure using DRBD/Heartbeat
 
Gérer sa dette technique avec SonarQube
Gérer sa dette technique avec SonarQubeGérer sa dette technique avec SonarQube
Gérer sa dette technique avec SonarQube
 
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
 
Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019
 
HA Deployment Architecture with HAProxy and Keepalived
HA Deployment Architecture with HAProxy and KeepalivedHA Deployment Architecture with HAProxy and Keepalived
HA Deployment Architecture with HAProxy and Keepalived
 
Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성
 
Software Defined Datacenter with Proxmox
Software Defined Datacenter with ProxmoxSoftware Defined Datacenter with Proxmox
Software Defined Datacenter with Proxmox
 
FreeSWITCH on Docker
FreeSWITCH on DockerFreeSWITCH on Docker
FreeSWITCH on Docker
 
Understanding docker networking
Understanding docker networkingUnderstanding docker networking
Understanding docker networking
 
Red Hat OpenShift on Bare Metal and Containerized Storage
Red Hat OpenShift on Bare Metal and Containerized StorageRed Hat OpenShift on Bare Metal and Containerized Storage
Red Hat OpenShift on Bare Metal and Containerized Storage
 
Dockers and containers basics
Dockers and containers basicsDockers and containers basics
Dockers and containers basics
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019Multistream in Janus @ CommCon 2019
Multistream in Janus @ CommCon 2019
 
OpenStack High Availability
OpenStack High AvailabilityOpenStack High Availability
OpenStack High Availability
 
WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022
 
What you need to know about ceph
What you need to know about cephWhat you need to know about ceph
What you need to know about ceph
 
Cluster-as-code. The Many Ways towards Kubernetes
Cluster-as-code. The Many Ways towards KubernetesCluster-as-code. The Many Ways towards Kubernetes
Cluster-as-code. The Many Ways towards Kubernetes
 
Deploying CloudStack and Ceph with flexible VXLAN and BGP networking
Deploying CloudStack and Ceph with flexible VXLAN and BGP networking Deploying CloudStack and Ceph with flexible VXLAN and BGP networking
Deploying CloudStack and Ceph with flexible VXLAN and BGP networking
 

Ähnlich wie Janus SFU cascading @ IIT-RTC 2022

Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021Lorenzo Miniero
 
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...Alan Quayle
 
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
 
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 mediasoupIñaki Baz Castillo
 
Kurento - FI-WARE Bootcamp
Kurento - FI-WARE BootcampKurento - FI-WARE Bootcamp
Kurento - FI-WARE BootcampIvan Gracia
 
Building real time applications with Symfony2
Building real time applications with Symfony2Building real time applications with Symfony2
Building real time applications with Symfony2Antonio Peric-Mazar
 
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.Luis Lopez
 
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...Anders Sjöman
 
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 ApplicationsRonny López
 
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 FriendsTimothy Spann
 
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 minieroGreg Kawere
 
Unicon Nov 2014 IAM Briefing
Unicon Nov 2014 IAM BriefingUnicon Nov 2014 IAM Briefing
Unicon Nov 2014 IAM BriefingJohn Gasper
 
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 2014Sean Chen
 
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 UpdateJohn Gasper
 
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 streamsLuis Lopez
 
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 MonitoringJordan McBain
 
BigBlueButton Platform Components
BigBlueButton Platform ComponentsBigBlueButton Platform Components
BigBlueButton Platform ComponentsRIADVICE
 
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 playChris Simmonds
 
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 UpdateMisagh Moayyed
 

Ähnlich wie 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...
 
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
 
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
 
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
 

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

Mehr von Lorenzo Miniero (19)

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 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
 

Kürzlich hochgeladen

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
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
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
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 StreamsRoshan Dwivedi
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
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 2024The Digital Insurer
 
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 Processorsdebabhi2
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 

Kürzlich hochgeladen (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
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...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
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
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
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
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

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