Mafalda SFU projects

All Mafalda SFU packages have by design an orthogonal API, making it possible to combine them in a mix-n-match way to create the best fit for your use case. Next diagram shows all possible low-level combinations, and the projects implementing their high-level relationships:

Mediasoup vertical cluster

Mediasoup vertical server

Mediasoup vertical proxy

Mediasoup proxy

Mediasoup server

Mediasoup cluster

App

Mediasoup

Mediasoup horizontal

Mediasoup vertical

Remote Mediasoup client

Remote Mediasoup client mock

Remote Mediasoup server

Mediasoup getStats factory

Thick lines represent main usage relationships, thin lines are compatible ones but their usage is not promoted. Dotted line are client-server networked connections. Elements with blue color provides a Mediasoup compatible API, elements with green color provides Remote Mediasoup compatible API, and elements with orange color are Mafalda SFU specific internal components.

Main projects

  • Remote Mediasoup server & Remote Mediasoup client: remote control of Mediasoup instances, both of them build on top of ROPE server & ROPE client.

    Mediasoup-server

    Remote Mediasoup server

    Mediasoup getStats factory

    Mediasoup

    Remote Mediasoup server CLI

  • Mediasoup-proxy CLI: standalone server using Mediasoup-proxy to control a Remote Mediasoup server from another endpoint.

    Mediasoup-proxy

    Remote Mediasoup server

    Remote Mediasoup client

    Mediasoup proxy CLI

  • Mediasoup-cluster CLI: standalone server using Mediasoup-horizontal to control multiple Remote Mediasoup servers from a single endpoint, providing support for horizontal scalability.

    Mediasoup-cluster

    Remote Mediasoup server

    Mediasoup horizontal

    Remote Mediasoup client

    Remote Mediasoup client

    Mediasoup cluster CLI

  • Mediasoup-vertical-server and Mediasoup-vertical-proxy: implementations of Mediasoup-server and Mediasoup-proxy with integrated support for Mediasoup-vertical, unifying all server resources providing vertical scalability for them.

    Mediasoup-vertical-server

    Remote Mediasoup server

    Mediasoup vertical

    Mediasoup getStats factory

    Mediasoup

    Remote Mediasoup server CLI

    Mediasoup-vertical-proxy

    Remote Mediasoup server

    Mediasoup vertical

    Remote Mediasoup client

    Mediasoup vertical proxy CLI

  • Mediasoup-vertical-cluster CLI: standalone server using Mediasoup-vertical on top of Mediasoup-horizontal, implementing aggregated scalability. This project is the flagship package of Mafalda SFU.

    Mediasoup-vertical-cluster

    Remote Mediasoup server

    Mediasoup vertical

    Mediasoup horizontal

    Remote Mediasoup client

    Remote Mediasoup client

    Mediasoup vertical cluster CLI

Auxiliary packages

  • Mediasoup-vertical: Mediasoup vertical scalability, allow to have Router objects that by-pass Mediasoup per-Worker limits.
  • Mediasoup-horizontal: Mediasoup horizontal scalability, allow to use Mediasoup Worker instances located on multiple servers from a single place as if they were local to it.
  • ROPE server & ROPE client: canonical implementations of the Remote Objects, Procedures and Events protocol, that allow remote control of objects located as if they were local, including sync’ed updates of remote state, also when multiple clients are involved.

Future projects

  • Mafalda-monitor: Mafalda SFU network monitoring tool, allow to control stats and loads of the servers in the network and their connected clients.
  • Mafalda-swarm: Decentralized horizontal scaling for Mafalda SFU, allow to access streams from multiple entry points without a central management, based on P2P technologies and architecture.