Hosted multicast calls with 3CX

1

Multicast RTP is a great way to page multiple phones at once. 3CX supports multicast groups for on-premises installations, but when you’re cloud hosted and using a 3CX session border controller (SBC), SIP multicast is not available. So it would seem the only option is unicast ring groups, right?

Unfortunately, 3CX’s license model is based on the number of concurrent calls, so paging a large number of phones using a standard unicast ring group eats into your concurrent call limit very quickly.

There’s hardware options out there that work as unicast to multicast relays, that accept a call and relay the RTP streams to a multicast group. This will still consume one channel, but can address as many phones as you need that are subscribed to the same multicast group.

I wanted to find a software-only option. That way we could run it in a container alongside our session border controller appliances deployed to customer sites. This gives us the flexibility to remotely manage and deploy without any additional hardware.

I’ve been working on a Docker container that does exactly that:

  1. Registers with 3CX as an extension
  2. Automatically answers incoming calls
  3. Captures the RTP stream from the calls, and
  4. Forwards the audio do a multicast address

It uses Baresip to register as a 3CX extension and a Python script to capture the RTP stream. As we’re sending multicast traffic, we need to use host networking to send to multicast groups on the same broadcast domain as the phones on our local network.

Check out the repo here: https://github.com/bengrabau/SIP-Multicast-Relay

One Comment

  1. This is pretty cool

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.