ElixirConf 2023 - Michał Śledź - Rewrite Pion in Elixir

Rewrite Pion in Elixir: Overcoming WebRTC Drawbacks and Building a Scalable Solution

Key takeaways
  • The speaker decided to rewrite Pion in Elixir due to drawbacks in the existing WebRTC implementation in Membrane.
  • Tern server is a simple concept that forwards traffic from one side to the other.
  • In the current implementation, listener processes are bounded to the same IP address and port, which can be a bottleneck.
  • The reuse port option for sockets allows for multiple sockets to be created, bounded to the same IP address.
  • The speaker emphasizes the importance of logs and telemetry in the development process.
  • The Elixir WebRTC project is being developed to provide a pure Elixir WebRTC API and Membrane wrapper.
  • The project currently supports role conflict resolution, different types of candidates, transaction pacing, and keep-alikes.
  • The speaker highlights the need to automate benchmarks and deployment, and to test at a real scale.
  • The current implementation is able to handle 2,000 connections, but the journey was not easy.
  • The speaker notes that the maximum throughput on a Tern server is about 1 gigabit per second.
  • The project is still looking for a better network path and is debugging issues with mutexes.
  • The speaker mentions that the code is publicly available and that the team is willing to debug and fix issues.
  • The team is planning to start working on RTP and RTCP protocols soon.
  • The speaker encourages the audience to ask questions and provide feedback.
  • The project’s goal is to provide a high-quality WebRTC implementation that is easy to use and scalable.
  • The speaker emphasizes the importance of not optimizing too early and of using telemetry and logs to understand the system’s behavior.
  • The team is planning to release the first pre-connection skeleton version in four months.