Slides for my "WebRTC-to-SIP and back: it's not all about audio and video" presentation at the OpenSIPS Summit 2024.
They describe my prototype efforts to add gatewaying support for a few SIP application protocols (T.140 for real-time text and MSRP) to Janus via data channels, with the related implementation challenges and the interesting opportunities they open.
Slides for the talk I made at the virtual edition of FOSDEM 2022, on how to use WHIP for WebRTC broadcasting ingestion, and how the distribution process could be done via WebRTC as well, e.g., via Janus (and the SOLEIL architecture).
Put some Web in your RTC SIP infrastructure! A good intro and updates on the Janus SIP and NoSIP plugins, and when it makes sense to use them (e.g., for PSTN integration, contact centers, etc.), from a presentation made at the OpenSIPS Summit 2019 in Amsterdam.
Slides for the "WebRTC broadcasting: standardization, challenges and opportunities" presentation I made at TADSummit 2023 in Paris. It presents the problems traditional broadcasting has with new scenarios that would benefit from a much lower latency solution, and how WebRTC can help. It also introduces the standard WHIP and WHEP protocols for ingestion and egress, with a few details on how a WebRTC stream could be scaled to a very wide audience using something like SOLEIL (Streaming Of Large scale Events over Internet cLouds).
Slides for the presentation on Insertable Streams and E2EE in WebRTC I presented at the virtual edition of ClueCon 2020. After an introduction on the past and recent E2EE efforts, the slides also present some efforts to integrate the technology in the Janus WebRTC server as well.
Slides for the presentation I did remotely at Open Source World, to talk about audio-only WebRTC applications, and what we've done in Janus to improve and cover the requirements so far.
Slides for the 60 minutes "part 2" Janus workshop I presented at the virtual edition of ClueCon 2021. This time the slides covered Janus ability to bridge WebRTC and non-WebRTC applications to do interesting things, especially with the help of plain RTP and RTP forwarders. Check the conference recordings to see the actual demos in action.
A Webinar by Victor Pascual Avila and Amir Zmora about WebRTC standards. IETF and W3C work on WebRTC as well as interworking with other networks such as IMS. The Webinar also talks about WebRTC signaling options and video codecs.
The slides for the "Fuzzing Janus for fun and profit" paper I presented at IPTComm 2019, in Chicago. Simon (Romano) came up with the title, as a homage to the famous "Smashing the stack for fun and profit" article.
Slides for the talk I made at the virtual edition of FOSDEM 2022, on how to use WHIP for WebRTC broadcasting ingestion, and how the distribution process could be done via WebRTC as well, e.g., via Janus (and the SOLEIL architecture).
Put some Web in your RTC SIP infrastructure! A good intro and updates on the Janus SIP and NoSIP plugins, and when it makes sense to use them (e.g., for PSTN integration, contact centers, etc.), from a presentation made at the OpenSIPS Summit 2019 in Amsterdam.
Slides for the "WebRTC broadcasting: standardization, challenges and opportunities" presentation I made at TADSummit 2023 in Paris. It presents the problems traditional broadcasting has with new scenarios that would benefit from a much lower latency solution, and how WebRTC can help. It also introduces the standard WHIP and WHEP protocols for ingestion and egress, with a few details on how a WebRTC stream could be scaled to a very wide audience using something like SOLEIL (Streaming Of Large scale Events over Internet cLouds).
Slides for the presentation on Insertable Streams and E2EE in WebRTC I presented at the virtual edition of ClueCon 2020. After an introduction on the past and recent E2EE efforts, the slides also present some efforts to integrate the technology in the Janus WebRTC server as well.
Slides for the presentation I did remotely at Open Source World, to talk about audio-only WebRTC applications, and what we've done in Janus to improve and cover the requirements so far.
Slides for the 60 minutes "part 2" Janus workshop I presented at the virtual edition of ClueCon 2021. This time the slides covered Janus ability to bridge WebRTC and non-WebRTC applications to do interesting things, especially with the help of plain RTP and RTP forwarders. Check the conference recordings to see the actual demos in action.
A Webinar by Victor Pascual Avila and Amir Zmora about WebRTC standards. IETF and W3C work on WebRTC as well as interworking with other networks such as IMS. The Webinar also talks about WebRTC signaling options and video codecs.
The slides for the "Fuzzing Janus for fun and profit" paper I presented at IPTComm 2019, in Chicago. Simon (Romano) came up with the title, as a homage to the famous "Smashing the stack for fun and profit" article.
WebRTC enables real-time communication through the web, while SIP is a protocol commonly used for initiating and maintaining real-time communication sessions, particularly in telephony networks.
Bridging WebRTC with SIP is essential in many industries, such as remote healthcare, education, and customer support, where current modern video solutions must communicate with telephony infrastructure at scale. The integration of WebRTC-based video conferencing with legacy SIP-based systems enables seamless communication across platforms and devices. In this presentation, we will talk about lessons learned and explore different approaches to bridging WebRTC and SIP, discussing their advantages and disadvantages.
This is the presentation I made at Astricon on how to use Janus and Asterisk together for WebRTC applications. It focuses on the reasons why it might make sense to have Janus as a frontend to Asterisk, rather than let Asterisk handle WebRTC by itself, with real examples of applications doing this.
My talk on the excellent work Alessandro Toppi did at Meetecho on investigating the different code fuzzing options, and how it was eventually integrated in Janus for improving the robustness of the WebRTC stack (RTP, RTCP and SDP currently). It includes considerations on sharing corpora files and making this all distributed via OSS-Fuzz.
These slides cover a workshop called "Having fun with Janus and WebRTC" at the virtual edition of OpenSIPS 2021. The workshop guided viewers to how they could use different features in Janus to build a WebRTC Social TV application, including how to write a new plugin in JavaScript to build a virtual remote.
Upperside Webinar- WebRTC from the service provider prism-finalAmir Zmora
A Webinar I did with Victor Pascual Avila (Quobis) and Sebastian Schumann (Slovak Telekom) for Upperside Conferences. Webinar talks about the different approaches service providers can take with WebRTC, what developers need and some actual examples of things Slovak Telekom has done.
Recording of this Webinar can be found here: https://attendee.gotowebinar.com/register/5051075414841550849
An overview on the different ways Janus can interact with endpoints dealing with plain RTP, whether it's for receiving and sending media, and thus allow Janus to act as a WebRTC "enabler" for non-WebRTC infrastructures,
An overview on how WebRTC was written from the ground up with some specific concepts in mind, specifically to try and address Security, Authentication and Privacy the right way.
Slides for the presentation on how you can get SFUs and MCUs to actually be friends, which I presented at the virtual edition of IIT-RTC 2020. The slides cover some of the pros and cons of both, and some use cases where you may actually want to use both. At the end, a few words are spent on how to use browsers as an MCU instead, which might make them being used with SFUs even easier.
Slides for the talk I made at IIT-RTC 2021 about WHIP (WebRTC-HTTP ingestion protocol) and how it can help foster adoption of WebRTC in traditional broadcasting tools. The slides also cover my open source implementations of WHIP server (based on Janus) and WHIP client (based on GStreamer), and interoperability tests with other implementations.
A slide deck from my tech talks on WebRTC. These slides give a high-level technical overview of WebRTC, outlining its internal mechanisms and some of the signaling and RTP topologies that are typically seen with it. Plus some of the updates and improvements coming as technology evolves.
You already have working infrastructure. You know the ins and outs of your video protocol.
Everything is working, but you feel like things could work even better. If so, this talk is for you!
This talk explores all the things WebRTC could unlock for you. There could be solutions for problems you didn't
even realize were fixable!
Slides for the "Bandwidth Estimation in the Janus WebRTC Server" presentation I made at the new RTC.ON event in Krakow. It covers my journey in BWE, starting from the existing options, up to the decision to start from scratch and create a new approach to create a Janus-based testbed for simulcast subscribers.
WebRTC for Telco: Informa's WebRTC Global Summit PreconferenceTsahi Levent-levi
The preconference workshop I did at Informa's WebRTC Global Summit in London, 31st of March 2014
It is targeted at bringing people up to speed with what WebRTC is, how people and vendors are using it today and placing it also in the context of the telecom world (which is the focus of this specific conference).
My (quite boring) slides on what we needed to do in Janus to support multiple streams of the same type (e.g., 3 video streams) on the same PeerConnection.
Real-Time Text and WebRTC @ Kamailio World 2023Lorenzo Miniero
Slides for my "Bringing real-time text to WebRTC for NG Emergency Services" presentation at Kamailio World 2023.
They describe my prototype efforts to get SIP-based T.140 Real-Time Text to work with WebRTC endpoints via data channels, thanks to Janus acting as a gateway for the purpose.
Slides for my "Am I sober or am I trunk? A Janus story" presentation at Kamailio World 2024.
They describe my prototype efforts to add an option to create a trunk between a Janus instance and a SIP server, with the related implementation challenges and the interesting opportunities it opens.
Getting AV1/SVC to work in the Janus WebRTC ServerLorenzo Miniero
Slides for the "Getting AV1/SVC to work in the Janus WebRTC Server" presentation I made at the Real-Time Communications devroom of FOSDEM 2024 in Brussels. It describes in detail how AV1 is used in real-time communications (e.g., RTP packetization rules) and how the Dependency Descriptor extensions allows for SVC to be used in a server, by sharing my experience integrating it in the Janus WebRTC Server.
More Related Content
Similar to WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC enables real-time communication through the web, while SIP is a protocol commonly used for initiating and maintaining real-time communication sessions, particularly in telephony networks.
Bridging WebRTC with SIP is essential in many industries, such as remote healthcare, education, and customer support, where current modern video solutions must communicate with telephony infrastructure at scale. The integration of WebRTC-based video conferencing with legacy SIP-based systems enables seamless communication across platforms and devices. In this presentation, we will talk about lessons learned and explore different approaches to bridging WebRTC and SIP, discussing their advantages and disadvantages.
This is the presentation I made at Astricon on how to use Janus and Asterisk together for WebRTC applications. It focuses on the reasons why it might make sense to have Janus as a frontend to Asterisk, rather than let Asterisk handle WebRTC by itself, with real examples of applications doing this.
My talk on the excellent work Alessandro Toppi did at Meetecho on investigating the different code fuzzing options, and how it was eventually integrated in Janus for improving the robustness of the WebRTC stack (RTP, RTCP and SDP currently). It includes considerations on sharing corpora files and making this all distributed via OSS-Fuzz.
These slides cover a workshop called "Having fun with Janus and WebRTC" at the virtual edition of OpenSIPS 2021. The workshop guided viewers to how they could use different features in Janus to build a WebRTC Social TV application, including how to write a new plugin in JavaScript to build a virtual remote.
Upperside Webinar- WebRTC from the service provider prism-finalAmir Zmora
A Webinar I did with Victor Pascual Avila (Quobis) and Sebastian Schumann (Slovak Telekom) for Upperside Conferences. Webinar talks about the different approaches service providers can take with WebRTC, what developers need and some actual examples of things Slovak Telekom has done.
Recording of this Webinar can be found here: https://attendee.gotowebinar.com/register/5051075414841550849
An overview on the different ways Janus can interact with endpoints dealing with plain RTP, whether it's for receiving and sending media, and thus allow Janus to act as a WebRTC "enabler" for non-WebRTC infrastructures,
An overview on how WebRTC was written from the ground up with some specific concepts in mind, specifically to try and address Security, Authentication and Privacy the right way.
Slides for the presentation on how you can get SFUs and MCUs to actually be friends, which I presented at the virtual edition of IIT-RTC 2020. The slides cover some of the pros and cons of both, and some use cases where you may actually want to use both. At the end, a few words are spent on how to use browsers as an MCU instead, which might make them being used with SFUs even easier.
Slides for the talk I made at IIT-RTC 2021 about WHIP (WebRTC-HTTP ingestion protocol) and how it can help foster adoption of WebRTC in traditional broadcasting tools. The slides also cover my open source implementations of WHIP server (based on Janus) and WHIP client (based on GStreamer), and interoperability tests with other implementations.
A slide deck from my tech talks on WebRTC. These slides give a high-level technical overview of WebRTC, outlining its internal mechanisms and some of the signaling and RTP topologies that are typically seen with it. Plus some of the updates and improvements coming as technology evolves.
You already have working infrastructure. You know the ins and outs of your video protocol.
Everything is working, but you feel like things could work even better. If so, this talk is for you!
This talk explores all the things WebRTC could unlock for you. There could be solutions for problems you didn't
even realize were fixable!
Slides for the "Bandwidth Estimation in the Janus WebRTC Server" presentation I made at the new RTC.ON event in Krakow. It covers my journey in BWE, starting from the existing options, up to the decision to start from scratch and create a new approach to create a Janus-based testbed for simulcast subscribers.
WebRTC for Telco: Informa's WebRTC Global Summit PreconferenceTsahi Levent-levi
The preconference workshop I did at Informa's WebRTC Global Summit in London, 31st of March 2014
It is targeted at bringing people up to speed with what WebRTC is, how people and vendors are using it today and placing it also in the context of the telecom world (which is the focus of this specific conference).
My (quite boring) slides on what we needed to do in Janus to support multiple streams of the same type (e.g., 3 video streams) on the same PeerConnection.
Real-Time Text and WebRTC @ Kamailio World 2023Lorenzo Miniero
Slides for my "Bringing real-time text to WebRTC for NG Emergency Services" presentation at Kamailio World 2023.
They describe my prototype efforts to get SIP-based T.140 Real-Time Text to work with WebRTC endpoints via data channels, thanks to Janus acting as a gateway for the purpose.
Similar to WebRTC and SIP not just audio and video @ OpenSIPS 2024 (20)
Slides for my "Am I sober or am I trunk? A Janus story" presentation at Kamailio World 2024.
They describe my prototype efforts to add an option to create a trunk between a Janus instance and a SIP server, with the related implementation challenges and the interesting opportunities it opens.
Getting AV1/SVC to work in the Janus WebRTC ServerLorenzo Miniero
Slides for the "Getting AV1/SVC to work in the Janus WebRTC Server" presentation I made at the Real-Time Communications devroom of FOSDEM 2024 in Brussels. It describes in detail how AV1 is used in real-time communications (e.g., RTP packetization rules) and how the Dependency Descriptor extensions allows for SVC to be used in a server, by sharing my experience integrating it in the Janus WebRTC Server.
The challenges of hybrid meetings @ CommCon 2023Lorenzo Miniero
Slides for "The challenges of hybrid meetings" presentation I made at CommCon 2023. It covers how we provided remote participation services to live events before the pandemic, how we had to refactor everything for virtual only events, and what had to be changed again to accomodate audiences that may be evenly split between local and remote participants, with IETF meetings as a practical test case.
Slides I presented in the Open Media devroom at FOSDEM 2023, where I gave an intro on how to capture, record and produce music using just open source software on Linux. It's a very high level overview on available software to do different things, and how they can be used together using JACK and/or Pipewire.
These are the slides for the presentation I shared at the virtual edition of IIT-RTC 2022. I talked about how cascading/scalability worked with Janus 0.x, and what steps we've taken to do the same for 1.x (multistream) as well. In particular, the focus is on the new integrated cascading support in the VideoRoom plugin.
SIP transfer with Janus/WebRTC @ OpenSIPS 2022Lorenzo Miniero
These are the slides I presented at the OpenSIPS Summit 2022, where I talked about support for SIP call transfer and multiple lines in Janus, to make those features available to SIP-unaware WebRTC endpoints easily. The presentation also included a few details on a practical interaction with OpenSIPS instances.
Slides for the presentation I made at ClueCon 21 on the experimental RED support in WebRTC, and how we've started tinkering with it in Janus. The presentation also addresses a more generic overview on audio features in WebRTC.
Just a few slides to talk about the first efforts on JamRTC, a native application based on GStreamer to do live jam sessions using WebRTC and Janus as an SFU. Mostly an overview of the initial architecture, with questions at the end to figure out if the approach is right or not, how to minimize latency, etc.
Scaling WebRTC deployments with multicast @ IETF 110 MBONEDLorenzo Miniero
An overview of how multicast can be used to scale WebRTC deployments, with focus on the Virtual Event Platform used to provide remote participation support to IETF meetings, given during the MBONED WG session at IETF 110.
Virtual IETF meetings with WebRTC @ IETF 109 MOPSLorenzo Miniero
An overview of how the Janus WebRTC Server was used to serve virtual IETF meetings at scale, with focus on how audio and video streams were handled in different ways, given during the MOPS WG session at IETF 109. Some considerations on some specific enhancements made between IETF 108 and 109 are provided as well.
Slides for the 60 minutes workshop I presented at the virtual edition of ClueCon 2020 (ClueCon Deconstructed). The many slides cover different aspects in Janus, ranging from configuration, to plugins, how to write your own plugin, core features, recording, monitoring, and so on. Unfortunately I didn't have enough time to talk about everything, but slides should be easy to follow anyway.
Slides for the "Turning live events to virtual with Janus" talk I presented at the Virtual CommCon 2020 edition. It covers how we streamed live events in the past, and how we had to shift to a completely virtual approach because of the troubling times we live in.
Slides for the 90 minutes workshop I presented at the RTC2019 event in Beijing. The many slides cover different aspects in Janus, ranging from configuration, to plugins, how to write your own plugin, core features, recording, monitoring, and so on.
The slides for a talk I presented at the WebRTC track of IIT-RTC in Chicago, titled "SFU's, Simulcast and SVC: what's new in WebRTC?". Mostly a high-level introduction to how simulcast and SVC work (or not) today in browsers, how they came to be and where they might be headed from a standards perspective.
Welcome to JanusCon! -- Past, Present and Future of JanusLorenzo Miniero
The slides for my "Welcome" presentation at JanusCon '19, with an overview on the history of Janus (how it changed in this first five years) and on some possible future directions for the project. Unfortunately, my talk was not recorded, so some slides may look a bit "cryptic" without some vocal context.
This is an introduction on Janus and its WebRTC features to the ClueCon audience, with a few words on how it can be used to complement FreeSwitch in some interesting scenarios.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
3. Who am I?
Lorenzo Miniero
• Ph.D @ UniNA
• Chairman @ Meetecho
• Main author of Janus
Contacts and info
• lorenzo@meetecho.com
• https://fosstodon.org/@lminiero
• https://www.meetecho.com
• https://lminiero.it
4. Just a few words on Meetecho
• Co-founded in 2009 as an academic spin-off
• University research efforts brought to the market
• Completely independent from the University
• Focus on real-time multimedia applications
• Strong perspective on standardization and open source
• Several activities
• Consulting services
• Commercial support and Janus licenses
• Streaming of live events (IETF, ACM, etc.)
• Proudly brewed in sunny Napoli, Italy
5. A bit of context: Janus, WebRTC and SIP
Janus
General purpose, open source WebRTC server
• https://github.com/meetecho/janus-gateway
• Demos and documentation: https://janus.conf.meetecho.com
• Community: https://janus.discourse.group/
6. SIP plugin in Janus
https://janus.conf.meetecho.com/docs/sip
7. An endpoint of behalf of WebRTC users
• Janus SIP plugin acts as a collection of SIP endpoints, not a server/trunk
• SIP stack implemented with Sofia-SIP
• WebRTC users only see the Janus API (JSON), no SIP
• No transcoding, media is only relayed
• Built-in recording (separate media legs)
• Simplifies life for web developers
• No need to worry about a SIP stack (only SIP URIs)
• Basic methods/events to handle dialogs (call, answer, hangup, message, etc.)
• Allows SIP headers injection/interception in many requests
• Support for more advanced features too (e.g., hold, transfer, etc.)
8. An endpoint of behalf of WebRTC users
• Janus SIP plugin acts as a collection of SIP endpoints, not a server/trunk
• SIP stack implemented with Sofia-SIP
• WebRTC users only see the Janus API (JSON), no SIP
• No transcoding, media is only relayed
• Built-in recording (separate media legs)
• Simplifies life for web developers
• No need to worry about a SIP stack (only SIP URIs)
• Basic methods/events to handle dialogs (call, answer, hangup, message, etc.)
• Allows SIP headers injection/interception in many requests
• Support for more advanced features too (e.g., hold, transfer, etc.)
9. Works great with OpenSIPS!
Workshop on Janus and SIP (lesson/tutorial) at OpenSIPS 2020
https://www.youtube.com/watch?v=fv9KwrguR-4&t=3544s
10. Audio and video are “easy”
• Both SIP and WebRTC use SDP and RTP/RTCP
• WebRTC uses SDP/RTP/RTCP on “steroids”
• Apart from this, just differences in encryption (WebRTC mandates DTLS-SRTP)
• Media is basically encoded, packaged and sent the same way
• As long as the same codec is used, they’re interoperable
• When they aren’t, transcoding helps (but Janus won’t do it for you)
• WebRTC has mandatory-to-implement codecs
• Opus and G.711 for audio, VP8 and H.264 (baseline) for video
• G.711 and H.264 should guarantee compliance with legacy equipment
11. Audio and video are “easy”
• Both SIP and WebRTC use SDP and RTP/RTCP
• WebRTC uses SDP/RTP/RTCP on “steroids”
• Apart from this, just differences in encryption (WebRTC mandates DTLS-SRTP)
• Media is basically encoded, packaged and sent the same way
• As long as the same codec is used, they’re interoperable
• When they aren’t, transcoding helps (but Janus won’t do it for you)
• WebRTC has mandatory-to-implement codecs
• Opus and G.711 for audio, VP8 and H.264 (baseline) for video
• G.711 and H.264 should guarantee compliance with legacy equipment
12. Audio and video are “easy”
• Both SIP and WebRTC use SDP and RTP/RTCP
• WebRTC uses SDP/RTP/RTCP on “steroids”
• Apart from this, just differences in encryption (WebRTC mandates DTLS-SRTP)
• Media is basically encoded, packaged and sent the same way
• As long as the same codec is used, they’re interoperable
• When they aren’t, transcoding helps (but Janus won’t do it for you)
• WebRTC has mandatory-to-implement codecs
• Opus and G.711 for audio, VP8 and H.264 (baseline) for video
• G.711 and H.264 should guarantee compliance with legacy equipment
13. SIP sometimes does more than that, though!
• A whole ecosystem of other protocols that could be used
• Real-Time Text (T.140 over RTP)
• Message Session Relay Protocol (MSRP)
• Binary Floor Control Protocol (BFCP)
• Fax (T.38 over RTP)
• ...
• These protocols can’t simply be gateway-ed to WebRTC
• WebRTC supports RTP, but only for audio/video, not generic data
• Custom protocols are not supported at all
• WebRTC-to-SIP gateways will in general strip them from the SDP
• We can’t rely on a WebRTC browser to simply reject unsupported media
• An unsupported m-line will cause an exception in setRemoteDescription
14. SIP sometimes does more than that, though!
• A whole ecosystem of other protocols that could be used
• Real-Time Text (T.140 over RTP)
• Message Session Relay Protocol (MSRP)
• Binary Floor Control Protocol (BFCP)
• Fax (T.38 over RTP)
• ...
• These protocols can’t simply be gateway-ed to WebRTC
• WebRTC supports RTP, but only for audio/video, not generic data
• Custom protocols are not supported at all
• WebRTC-to-SIP gateways will in general strip them from the SDP
• We can’t rely on a WebRTC browser to simply reject unsupported media
• An unsupported m-line will cause an exception in setRemoteDescription
15. SIP sometimes does more than that, though!
• A whole ecosystem of other protocols that could be used
• Real-Time Text (T.140 over RTP)
• Message Session Relay Protocol (MSRP)
• Binary Floor Control Protocol (BFCP)
• Fax (T.38 over RTP)
• ...
• These protocols can’t simply be gateway-ed to WebRTC
• WebRTC supports RTP, but only for audio/video, not generic data
• Custom protocols are not supported at all
• WebRTC-to-SIP gateways will in general strip them from the SDP
• We can’t rely on a WebRTC browser to simply reject unsupported media
• An unsupported m-line will cause an exception in setRemoteDescription
18. What are data channels?
• Arbitrary real-time connection for pretty much anything
• Bidirectional data between two WebRTC peers
• Support for multiple channels of different kinds
• Supports ordered/unordered and reliable/unreliable
• Generic data sent via SCTP and encapsulated in DTLS
• SCTP implements features, DTLS implements security
• Negotiated as an application in the SDP
• m=application 9 UDP/DTLS/SCTP webrtc-datachannel
19. What are data channels?
• Arbitrary real-time connection for pretty much anything
• Bidirectional data between two WebRTC peers
• Support for multiple channels of different kinds
• Supports ordered/unordered and reliable/unreliable
• Generic data sent via SCTP and encapsulated in DTLS
• SCTP implements features, DTLS implements security
• Negotiated as an application in the SDP
• m=application 9 UDP/DTLS/SCTP webrtc-datachannel
20. What are data channels?
• Arbitrary real-time connection for pretty much anything
• Bidirectional data between two WebRTC peers
• Support for multiple channels of different kinds
• Supports ordered/unordered and reliable/unreliable
• Generic data sent via SCTP and encapsulated in DTLS
• SCTP implements features, DTLS implements security
• Negotiated as an application in the SDP
• m=application 9 UDP/DTLS/SCTP webrtc-datachannel
21. That’s better, but still not enough!
• Non audio/video protocols have their own technical requirements
• RTT and T.38 will have custom RTP packetization rules
• BFCP/MSRP/others will require custom UDP or TCP transport
• All this will be reflected in the SDP negotiation
• WebRTC only supports m=application + UDP/DTLS/SCTP
• It’s the only non audio/video thing it can negotiate
• A gateway will have more work to do than with RTP audio/video
• Translate between SDP formats (e.g., custom protocol ↔ application)
• Gateway the protocol itself (e.g., RTP/T.140 ↔ data channel)
22. That’s better, but still not enough!
• Non audio/video protocols have their own technical requirements
• RTT and T.38 will have custom RTP packetization rules
• BFCP/MSRP/others will require custom UDP or TCP transport
• All this will be reflected in the SDP negotiation
• WebRTC only supports m=application + UDP/DTLS/SCTP
• It’s the only non audio/video thing it can negotiate
• A gateway will have more work to do than with RTP audio/video
• Translate between SDP formats (e.g., custom protocol ↔ application)
• Gateway the protocol itself (e.g., RTP/T.140 ↔ data channel)
23. That’s better, but still not enough!
• Non audio/video protocols have their own technical requirements
• RTT and T.38 will have custom RTP packetization rules
• BFCP/MSRP/others will require custom UDP or TCP transport
• All this will be reflected in the SDP negotiation
• WebRTC only supports m=application + UDP/DTLS/SCTP
• It’s the only non audio/video thing it can negotiate
• A gateway will have more work to do than with RTP audio/video
• Translate between SDP formats (e.g., custom protocol ↔ application)
• Gateway the protocol itself (e.g., RTP/T.140 ↔ data channel)
24. A practical example: Real-Time Text (T.140)
• Text transmitted instantly, as it is typed or created
• ITU-T T.140 (Protocol for multimedia application text conversation)
• Allows for real-time editing (e.g., backspace, rewriting)
• T.140 messages transported over RTP
• RFC 4103 (RTP Payload for Text Conversation)
• Redundancy implemented via RED (RFC 2198)
Specification to use T.140 over data channels
• T.140 Real-Time Text Conversation over WebRTC Data Channels (RFC 8865)
• https://www.rfc-editor.org/rfc/rfc8865.html
25. A practical example: Real-Time Text (T.140)
• Text transmitted instantly, as it is typed or created
• ITU-T T.140 (Protocol for multimedia application text conversation)
• Allows for real-time editing (e.g., backspace, rewriting)
• T.140 messages transported over RTP
• RFC 4103 (RTP Payload for Text Conversation)
• Redundancy implemented via RED (RFC 2198)
Specification to use T.140 over data channels
• T.140 Real-Time Text Conversation over WebRTC Data Channels (RFC 8865)
• https://www.rfc-editor.org/rfc/rfc8865.html
26. A practical example: Real-Time Text (T.140)
• Text transmitted instantly, as it is typed or created
• ITU-T T.140 (Protocol for multimedia application text conversation)
• Allows for real-time editing (e.g., backspace, rewriting)
• T.140 messages transported over RTP
• RFC 4103 (RTP Payload for Text Conversation)
• Redundancy implemented via RED (RFC 2198)
Specification to use T.140 over data channels
• T.140 Real-Time Text Conversation over WebRTC Data Channels (RFC 8865)
• https://www.rfc-editor.org/rfc/rfc8865.html
33. A more complex example: MSRP
• Instant Messaging protocol negotiated in SIP/SDP
• RFC 4975 (Message Session Relay Protocol)
• Requires a reliable transport (e.g., TCP)
• Used m=message m-line type for negotiation
• Protocol must be TCP/MSRP or TCP/TLS/MSRP
• path attribute defines endpoints
Specification to use MSRP over data channels
• Message Session Relay Protocol (MSRP) over Data Channels (RFC 8873)
• https://www.rfc-editor.org/rfc/rfc8873.html
34. A more complex example: MSRP
• Instant Messaging protocol negotiated in SIP/SDP
• RFC 4975 (Message Session Relay Protocol)
• Requires a reliable transport (e.g., TCP)
• Used m=message m-line type for negotiation
• Protocol must be TCP/MSRP or TCP/TLS/MSRP
• path attribute defines endpoints
Specification to use MSRP over data channels
• Message Session Relay Protocol (MSRP) over Data Channels (RFC 8873)
• https://www.rfc-editor.org/rfc/rfc8873.html
35. A more complex example: MSRP
• Instant Messaging protocol negotiated in SIP/SDP
• RFC 4975 (Message Session Relay Protocol)
• Requires a reliable transport (e.g., TCP)
• Used m=message m-line type for negotiation
• Protocol must be TCP/MSRP or TCP/TLS/MSRP
• path attribute defines endpoints
Specification to use MSRP over data channels
• Message Session Relay Protocol (MSRP) over Data Channels (RFC 8873)
• https://www.rfc-editor.org/rfc/rfc8873.html
36. Much more complex to handle than RTT
• T.140 still uses RTP (and UDP)
• Easier to integrate in existing Janus SIP plugin bridging
• Complexity mostly in SDP translation (and maybe RED)
• MSRP requires a reliable transport protocol
• With TCP, who connects to who?
• Integrating TCP with UDP poll loop can be tricky (head-of-line blocking)
• On the WebRTC side, we need to be able to provide MSRP path
• It won’t be in the SDP (attribute stripped) and dcsa unsupported by browsers
• Needs out of band (Janus SIP plugin API?) mechanism for that
37. Much more complex to handle than RTT
• T.140 still uses RTP (and UDP)
• Easier to integrate in existing Janus SIP plugin bridging
• Complexity mostly in SDP translation (and maybe RED)
• MSRP requires a reliable transport protocol
• With TCP, who connects to who?
• Integrating TCP with UDP poll loop can be tricky (head-of-line blocking)
• On the WebRTC side, we need to be able to provide MSRP path
• It won’t be in the SDP (attribute stripped) and dcsa unsupported by browsers
• Needs out of band (Janus SIP plugin API?) mechanism for that
38. Much more complex to handle than RTT
• T.140 still uses RTP (and UDP)
• Easier to integrate in existing Janus SIP plugin bridging
• Complexity mostly in SDP translation (and maybe RED)
• MSRP requires a reliable transport protocol
• With TCP, who connects to who?
• Integrating TCP with UDP poll loop can be tricky (head-of-line blocking)
• On the WebRTC side, we need to be able to provide MSRP path
• It won’t be in the SDP (attribute stripped) and dcsa unsupported by browsers
• Needs out of band (Janus SIP plugin API?) mechanism for that
39. SIP plugin in Janus + MSRP
https://github.com/meetecho/janus-gateway/tree/sip-msrp
43. What’s next?
• Both RTT and MSRP “work” in Janus, but there’s a lot to do!
• RTT is in a better shape, but needs testing with actual endpoints
• MSRP in a more embrional stage, needs a lot of love
• Multiple protocols in same PeerConnection not supported yet either
• Data channels allow for that (single m-line, multiple labels)
• We need better mapping when dealing with SDP translation
• Maybe add support for other protocols?
• Not sure what’s really used and needed, out there
• Is this effort really worth it, though?
• Probably yes for RTT (Emergency Services mandate it)
• Other protocols may have better “solutions” already
44. What’s next?
• Both RTT and MSRP “work” in Janus, but there’s a lot to do!
• RTT is in a better shape, but needs testing with actual endpoints
• MSRP in a more embrional stage, needs a lot of love
• Multiple protocols in same PeerConnection not supported yet either
• Data channels allow for that (single m-line, multiple labels)
• We need better mapping when dealing with SDP translation
• Maybe add support for other protocols?
• Not sure what’s really used and needed, out there
• Is this effort really worth it, though?
• Probably yes for RTT (Emergency Services mandate it)
• Other protocols may have better “solutions” already
45. What’s next?
• Both RTT and MSRP “work” in Janus, but there’s a lot to do!
• RTT is in a better shape, but needs testing with actual endpoints
• MSRP in a more embrional stage, needs a lot of love
• Multiple protocols in same PeerConnection not supported yet either
• Data channels allow for that (single m-line, multiple labels)
• We need better mapping when dealing with SDP translation
• Maybe add support for other protocols?
• Not sure what’s really used and needed, out there
• Is this effort really worth it, though?
• Probably yes for RTT (Emergency Services mandate it)
• Other protocols may have better “solutions” already
46. What’s next?
• Both RTT and MSRP “work” in Janus, but there’s a lot to do!
• RTT is in a better shape, but needs testing with actual endpoints
• MSRP in a more embrional stage, needs a lot of love
• Multiple protocols in same PeerConnection not supported yet either
• Data channels allow for that (single m-line, multiple labels)
• We need better mapping when dealing with SDP translation
• Maybe add support for other protocols?
• Not sure what’s really used and needed, out there
• Is this effort really worth it, though?
• Probably yes for RTT (Emergency Services mandate it)
• Other protocols may have better “solutions” already