Sipwise RTPengine is a very fast media proxy to bridge two different worlds: WebRTC and VoIP.
It supports a variety of encryption methods (plaintext RTP, SRTP via SDES and DTLS, ZRTP as passthrough) with a number of optional features, such as ICE, RTP/RTCP multiplexing (RTCP-mux), transcoding between several popular audio codecs, and unbundling BUNDLE’d media streams.
The list of RTPengine benefits is long and available on GitHub: https://github.com/sipwise/rtpengine, with the key technology being in-Linux-kernel packet forwarding for low latency and low CPU usage, allowing it to handle thousands of concurrent calls on regular consumer-grade hardware. RTPengine automatically falls back to normal userspace operation if the kernel module is unavailable or cannot be used for specific scenarios like transcoding (including DTMF and FAX transcoding), legal intercept/call recording, DTMF manipulation and many more.
The second key feature is a built-in high-availability capabilities with active-active mode support.
RTPengine has been developed by Sipwise for regular VoIP applications initially, but has received support for the most crucial WebRTC features due to its growing popularity. It is necessary to highlight that RTPengine provides a drop-in replacement for Janus for the Janus plugin ‘videoroom‘ (with more plugins on the way):
It is a matter of just a few steps to try RTPengine’s Janus mode for WebRTC cases:
Install RTPengine from Debian package (also available for arm and more) or build from sources
Adapt the provided default config file or create a new one:
Adjust the HTTP listening port. HTTPS is also supported if a certificate is provided.
Provide an authentication token for the Janus admin API.
Stop Janus and start RTPengine on the same IP+port using the same authentication:
sudo systemctl stop janus && sudo systemctl start rtpengine
Now you will see significantly lower CPU usage for the same WebRTC calls (audio+video).
Sipwise NGCP CPU usage has significantly decreased after switching from Janus to RTPengine.
Some important points to highlight:
increase debug level if necessary (use flag ‘debug‘ for the offer)
make sure you are using RTPengine version 10.2+ (to support Janus protocol)
The last important feature to mention is a very good track record of quality and stability.
But regardless in case of any questions or issues, feel free to ask your questions on the RTPengine mailing list or fire a bug report directly on GitHub. There are also videos you can watch about RTPengine on YouTube.
We are looking forward to community contribution! Embrace RTPengine!