We have been monitoring the recently discovered Log4j vulnerability (CVE-2021-44228)
and have taken action to audit and monitor our infrastructure for potential risks. As creators of streaming audio software and
a global streaming audio platform, we wanted to reassure broadcasters about the status of our products:
Rocket Broadcaster - Not vulnerable to the Log4j security vulnerability. Rocket Broadcaster and its third party components do not use Java nor Log4j.
Rocket Streaming Audio Server (RSAS) - Not vulnerable to the Log4j security vulnerability. Does not use Java.
Radio Mast - Not vulnerable to the Log4j security vulnerability. More details here.
For more information about the scope of this Log4j vulnerability and the steps we've taken to assess our infrastructure and keep broadcasters safe,
please see our Log4J Vulnerability Update on the Radio Mast blog.
We're pleased to announce the release of RSAS 0.1.20! Rocket Streaming Audio Server (RSAS) is a high-performance webserver designed for broadcasting live streaming audio through the web, with low latency and high listener capacity.
This release contains major performance improvements, a new management API, tons of small improvements to existing features, and bugfixes.
We're skipping it. Late in the development cycle of 0.1.19, we started pursuing a new line of optimizations to boost performance on very large servers with hundreds of thousands of listeners.
We started working on these optimizations in a separate branch for 0.1.20 and continued final preparations for the 0.1.19 release.
However, our benchmark results for 0.1.20 were so good that we put it through our QA process and quickly started using it in production
at Radio Mast. We've excited to share 0.1.20 with you as an even better
version of RSAS than we initially planned.
Without further ado, here's what's new in RSAS 0.1.20:
Performance Boost
In this update, our new optimizations have achieved a roughly 2x reduction in CPU usage at high workloads, enabling broadcasters to reach more listeners
than ever before on a single server. We've also further reduced the CPU usage for relays. No changes or config tweaks are
required, simply upgrade and enjoy.
On our server test rig with a Ryzen 2700 processor (8 cores, 16 threads), RSAS is now able to serve 240,000 concurrent
listeners on a 64 kbps MP3 stream. This is on a consumer-class CPU that is already 2 generations old. Importantly, RSAS fully utilizes all available
cores and is limited by CPU speed alone.
In the nload screenshot, RSAS is sending almost 15 Gbps of traffic!
We'll be publishing an updated set of benchmarks with more details soon, so be sure to check back.
Manage API
The new Manage API allows you to perform management actions on individual mounts. Two actions have been implemented thus far, allowing you to
force a source to disconnect (kick) or move listeners to a different mount.
Compatible encoders can now seamless kick and takeover an existing stream when they connect.
When connecting to RSAS with Rocket Broadcaster 1.3.22 and up, if a stream mount is already in use, users will be
prompted if they want to kick the existing source. This allows broadcasters to seamlessly takeover a stream or switch DJs without any dead air.
Other Small Features:
Relay URLs can now be changed dynamically via config reloads. Listeners will get moved to the new URL.
Added admin-password config setting from Icecast (currently only used for the Manage API).
Added optional <config-version> field to config file format and is exposed in /health. This can help you track whether your new config has been
loaded.
Added last_config_reload field to /health (UNIX timestamp)
Added --test/-t flag for checking config file syntax
Added warning if default passwords used (hackme/adminhackme)
Prevent blank passwords from being used.
Improved Icecast compatibility:
Implemented <hidden> mount flag from Icecast, which hides a stream from the emulated Icecast status page and status-json.xsl page.
Added <alias> directive, allowing you to remap URL paths.
Added the "stream started" timestamp to Icecast status page and to the status-json.xsl.
HTTP referer now shows up in the access log.
The "referer" header is not supported by all browsers and players, which can make traffic attribution tricky. To make accounting for your traffic sources easier, you can now override this header by setting the "referer" querystring parameter. (eg. /mystream?referer=myapp)
Fixed serving static files on Windows, which prevented the LetsEncrypt wizard from working for some users.
Fixed FLAC compatibility with BUTT encoder.
Fixed rare relay race condition that could lead to a crash.
Fixed HTTP "referer" always being blank in the access log.
Fixed a rare crash related to TLS.
What's Next?
RSAS 0.1.21 is planned to come shortly, and will include improved HTTP/1.1 support for serving static audio files on-demand, such as podcasts.
It will allow seekable playback of large audio and video (!) files out-of-the-box.
These features will also help round out our HLS implementation, which we're hoping to release as an experimental feature soon.
Audio preroll (aka intro files) is high on our list of priorities and we are planning this for Fall 2021.
We're hoping to throw in some experimental features with this too, like the ability to trigger audio insertion mid-stream (mid-roll).
Lastly, we would like to thank our dedicated users for all your feedback on our previous releases. Your feedback has helped
us make RSAS better for the global broadcasting community. Thank you!
We're pleased to announce the release of RSAS 0.1.18! Rocket Streaming Audio Server (RSAS) is a high-performance webserver designed for broadcasting live streaming audio through the web, with low latency and high listener capacity.
This release adds a couple new features including persistent relays, SNI support for multiple SSL/TLS certificates, as well as
major performance optimizations, bugfixes, and more. The update is the culmination of 6 months of development work which
included over 18 minor alpha releases that were tested across the globe.
Persistent relays are now the default type of relay.
In previous releases, all relays were "on-demand", which meant they only started relaying after the first listener
attempted to connect. Persistent relays automatically connect at startup and will continually try to reconnect if the
stream ever drops. Since a relay must be online before it can be used as a fallback, persistent relays are now recommended for fallbacks.
A single RSAS instance can now use multiple TLS certificates. This is needed when you have multiple domains pointing at a single server
and you wish to use HTTPS on all of them. RSAS can now load a different TLS certificate for each configured hostname, via a mechanism called SNI.
To configure multiple TLS certificates, a new <vhosts> section needs to be declared in your config file.
Various parts of RSAS have seen major performance improvements, including a large reduction in CPU usage and
reduced disk access. We're working on new benchmarks, but so far we've seen that RSAS can handle over 10X the listeners compared
to the other streaming server software we tested.
Upgrading?
Please see the "Behaviour change" notes below. Most users should be able to upgrade without issue. Users with large numbers
of relays should test that persistent relays operate as intended with their setup. If you need the old on-demand
relay behaviour instead of persistent relays, add <on-demand>1</on-demand> to your <relay> config section.
Bugfix: Improved compatibility with Unity game engine - Only send in-band ICY metadata if it changed.
Bugfix: Various other bugfixes
What's next?
We'll be continuing to refine RSAS and improve the features that our users are utilizing the most. Over the last few
months, much of our effort was focused on optimization and refinement of existing features. We are still experimenting with HLS
and working on rounding out the HLS feature set. We've also laid the groundwork for some other features we're not yet
ready to announce, so stay tuned.
We're pleased to announce the release of RSAS 0.1.17! Rocket Streaming Audio Server (RSAS) is a high-performance webserver designed for broadcasting live audio through the web, with low latency and high listener capacity.
This release adds a new Metadata History API, Icecast-compatible status page (optional), customizable error pages, and more.
A new JSON API is available that provides the last 10 received metadata updates, which can be used to display recently played tracks.
Previously, developers had to build their own server-side play history solution, but now RSAS saves you time by having this built-in.
Visit /mount/metadata-history on your RSAS server to test it out, or read the Metadata History API docs for more information.
RSAS now displays user-friendly error pages, which can be customized. Templates for the error pages are now bundled with
RSAS for Windows and in our DEB/RPM packages.
RSAS will now retain listeners for up to 10 seconds after a source disconnects, to allow sources to reconnect and resume broadcasting to those listeners.
This also applies to relays.
Icecast-compatible Status Page
An optional Icecast-compatible Status Page and JSON endpoint (/status-json.xsl) can now be enabled. Some web-based player
widgets and other services designed for Icecast get stream metadata by trying to scrape the JSON endpoint, and this
update makes RSAS compatible with those players and services.
The Icecast-compatible status page can be enabled on Linux by adding the following to your config file:
TLS certificate errors are now non-fatal on service reload.
Various relay and fallback bugfixes, including:
Fallback override now works with relays, allowing listeners to be moved back from a fallback mount to a relay if it reconnects.
Improved relay reconnection logic
Bitrate/channels/samplerate info is now shown in /health for relays.
Improved logging, especially related to relays and fallbacks, to aid troubleshooting.
Authentication options (<option>) can now be removed during config reloads.
Added CORS headers to all error responses.
Improved compatibility when relaying from AIS and Shoutcast 2.5.5
Added a DEB package for Ubuntu 16.04
Added experimental FreeBSD 12 package
What's next?
We're planning to implement persistent relays (non-on-demand) next and are experimenting with some ideas for <alias> mounts.
We're still pushing towards support for HLS and hope to ship at least experimental HLS support soon.
We're pleased to announce the release of RSAS 0.1.16! Rocket Streaming Audio Server (RSAS) is a high-performance webserver designed for broadcasting live audio through the web, with low latency and high listener capacity.
This release adds HTTPS stream relaying, fast start and low latency modes, improved source encoder compatibility, and more. We've also added packages for Ubuntu 20.04 and FreeBSD 12.
Relaying HTTPS streams is now supported! To make this possible, we've improved and simplified the config syntax for relays, by
introducing a new <url> tag which replaces the confusing <server>, <port>, and <mount> syntax inherited from Icecast.
For compatibility, the old syntax is still supported, but the new syntax is required if you want to specify the protocol (eg. https://).
As an example, adding an HTTPS relay to your config is now as easy as:
Certain web browsers take longer to start playback with RSAS because they have a large playback buffer and wait for it to fill
before playing. This release adds a new, optional URL parameter that allows you to accelerate the start of playback, at the expense
of increased latency. By adding ?latency=high to the end of your stream URL, web browsers will start playing more quickly.
Additionally, we've added a ?latency=low mode that allows you to experiment with even lower latency. The benefit of these
options being URL parameters is that you can tailor the latency for different devices or browsers without having to change
your configuration.
This update improves compatibility with several older Icecast source encoders, including SAM and StationPlaylist. These
encoders all speak a slightly different ICE/1.0 protocol, which is a consequence of there being no real written specification
or standard for Icecast streaming. As of now, every encoder that we know of that is Icecast-compatible works with RSAS.
Webpage Serving
You can now serve a webpage at the / URL by creating an index.html file in your webroot directory. RSAS already
supported static file serving, but this release includes some important bugfixes related to that for Windows users.
What else is new in RSAS 0.1.16?
Here's a full list of changes in this release:
Improved compatibility with older ICE/1.0 source clients (SAM, SPL).
The / URL is now aliased to index.html. Create an index.html file to create a homepage at the / URL.
Reduced memory usage for Server-Sent Events metadata stream
Improved cache headers, to prevent browser caching (Cache-Control: no-store, Date/Expires).
Added <hostname> setting, for future work.
Added correct mimetype for MPEG-TS files (.ts)
Added OPTIONS HTTP request handling
Bugfix: Escape pipe symbols in playlist.log
Bugfix: Fixed mimetypes for static files on Windows (they don't all download as attachments anymore.)
Bugfix: Fixed relaying from Nimble Streamer
Bugfix: Wildcard mount settings aren't applied to static audio files - avoids them being treated as looping audio.
Bugfix: Apply port 8000 firewall rule to rsas.exe in installer, instead for the service.
Bugfix: Fixed several bugs in X-Forwarded-For handling.
Bugfix: Escape Server-Sent Events metadata
Bugfix: Fixed relaying streams with apostrophes in metadata.
What's next?
We've been continuing to work on HLS support in RSAS, which will bring HLS to the Icecast ecosystem. As part of this work,
we're also adding support for MPEG-TS streams, which may be useful for certain niches.
If you need HLS support, we'd love to hear from you to learn more about your needs. Please get in touch!
We're pleased to announce the release of RSAS 0.1.14! Rocket Streaming Audio Server (RSAS) is a high-performance webserver designed for broadcasting live audio through the web, with low latency and high listener capacity.
As a result of these policy changes, we've had a numerous users switching from Icecast and SHOUTcast over to RSAS, for its
excellent HTTPS support. For Linux users, we already have a guide for on setting up RSAS using free Let's Encrypt certificates,
but we're committed to first-class support for Windows, and we wanted to make the HTTPS setup process easier for Windows users too.
With RSAS 0.1.14 for Windows, we've built-in a new HTTPS wizard, to automatically request Let's Encrypt TLS/SSL certificates and configure HTTPS for you.
Setting up HTTPS for your audio stream is now easier than ever before.
What's new in RSAS 0.1.14?
Let's Encrypt HTTPS Wizard (Windows only)
Easily setup HTTPS using our new HTTPS Wizard. Automatically requests a certificate for your from Let's Encrypt, configures HTTPS, and setups
up automatic certificate renewal for you.
Fixed a bug causing high CPU usage after certain fallback transitions
We're pleased to announce our first release of 2020, Rocket Broadcaster 1.3.3. This cumulative update was developed in close
collaboration with a number of radio stations, and is focused on improving support for high-end soundcards and adding
support for two new metadata formats.
Here's what's new:
Soundcard Compatibility Improvements
Audiophiles will be pleased to hear that we've improved support for high-end soundcards. We've also added support for mono inputs, which is particularly useful if you need to
capture many streams from a single soundcard (via multiple instances of Rocket Broadcaster Pro).
Added ASIO Support
Improved compatibility with high-end soundcards via the ASIO audio API. ASIO can now be chosen in the preferences, and supports up to 96 kHz.
Improved support for UAD soundcards.
ASIO channel names are now shown, which is especially helpful on soundcards with many inputs.
Reintroduced Windows MME and DirectSound audio APIs, to improve compatibility with certain legacy soundcards with older drivers.
Added mono input support. This allows you to capture from individual mono inputs on a soundcard, and automatically handles
upmixing to stereo if needed.
New Metadata Ingestion
Metadata can now be ingested from more automation and metadata systems:
Added Artic Palm CSRDS XML metadata support
Added Enco DAD XML metadata support
Other Improvements
Fixed saving Shoutcast 2 artwork and "private stream" preferences
Pro Edition - If you're a Pro Edition user, click the download link in your purchase confirmation email again to get the latest update,
or visit My Products in the Oscillicious Shop.
Feedback
Lastly, your feedback is what helps drive Rocket Broadcaster development. If you're looking for a missing feature,
or have ideas for how we can make Rocket Broadcaster even better, please let us know!
We're pleased to announce RSAS 0.1.12 is now available for download. Rocket Streaming Audio Server (RSAS) is a streaming
audio webserver designed for low latency and high capacity audio streaming.
Broadcasters can now offer private or premium radio streams that require listeners to authenticate before connecting.
Listener authentication can be integrated with your website via webhooks. For more information,
see our full documentation on Listener Authentication.
How many listeners can your streaming server handle? If you want to deliver stable live audio to a large online audience, you'll want to know the answer.
We decided to put RSAS head-to-head with Icecast and SHOUTcast and measure the performance of each, to help broadcasters plan their server deployments
and better understand how each streaming server scales.
Which streaming server performs best? Read on!
Test Setup
Before we get into the numbers, here's a breakdown of the test environment. The test hardware consisted of two PCs:
Server PC: Intel Core i5-7600K, 32 GB DDR4 RAM, Windows 10, 1903
Both PCs were directly connected via a 40 Gbps copper connection using a pair of Mellanox ConnectX-3 Ethernet cards.
On the client PC, 10 instances of ab were spawned and connected via HTTP to the server PC, each simulating 1000 concurrent listeners,
for a total of 10,000 listeners. Standard tuning was also applied to each PC to allow them to handle high numbers of network connections (increased socket descriptor limits, etc.).
The server PC was configured with the following software:
RSAS 0.18.0
Icecast-KH 2.4.0-kh12
SHOUTcast 2.6.0.753
These are the latest versions of each application at the time of writing. Each application had a single mount/stream configured with the default minimal configuration. No customization was done.
The server PC was also configured with Rocket Broadcaster 1.3.0 as the encoder, with a single 64 kbps MP3 stream connected to each server for each test.
The encoder was connected to RSAS and Icecast using the Icecast2 protocol, and the Shoutcast2 protocol for SHOUTcast.
Benchmark Results
CPU Usage Comparison
With 10,000 listeners connected, RSAS had the lowest CPU usage, beating both Icecast-KH and SHOUTcast.
RSAS is currently the fastest streaming audio server on the market, and is almost 20% more efficient than Icecast-KH.
This efficiency translates into a number of advantages for broadcasters. After network bandwidth, CPU usage is the next biggest bottleneck for streaming.
A more efficient streaming server means you can serve more listeners with the
same hardware. RSAS is also better equipped to handle transient spikes in utilization, such as big jumps in listener counts or drop offs,
without disrupting other listeners.
Memory Usage Comparison
In terms of memory usage, each application faired well. Icecast came out on top here, narrowly beating RSAS.
With all of the applications tested, the memory consumption is so low that if you have the CPU power to serve tens of thousands of listeners,
you'll definitely have more than enough RAM on your system to handle it. Memory consumption is good to keep an eye on,
but will not be a concern for broadcasters.
Going beyond 10K listeners
When we started doing these benchmarks, we initially load tested each application with 30,000 listeners @ 64 kbps, requiring about 2 Gbps of bandwidth.
However, we found that SHOUTcast started dropping listeners around the 15,000 mark, and Icecast started dropping listeners around the 12,000 mark.
On the same PC, RSAS was able to serve 37,000 listeners simultaneously without dropping listeners. When testing RSAS, the bottleneck was actually the
Client PC that was running the 37,000 listener, as we fully saturated its CPU. In other words, 37K wasn't even the limit for RSAS on our Server PC.
To demonstrate this, we ran another test where we ramped up the number of listeners to 18,000 over the course of a few minutes,
and measured the number of listeners connected vs. the CPU usage:
In the graphs above, the red line shows how many listeners were reported by each streaming server, as we ramped up 18K listeners over 7 minutes.
While RSAS managed to reach 18K listeners and stay stable, Icecast has a meltdown and started dropping thousands of listeners once it hit 12K. Similarly,
SHOUTcast started dropping listeners around the 15K mark. The large spikes in Icecast CPU usage indicate a snowball effect, where it temporarily locks up
when it is unable to serve listeners anymore.
We limited our earlier CPU and memory usage comparisons to 10K listeners since it's a regime where each application clearly operated normally.
Our theory is that poor multithreading performance limits the listener capacity of Icecast and Shoutcast, while RSAS's optimized
mulithreading allows it to scale far better.
For a future article, we're working on repeating our testing with an upgraded Client PC and trying to push 10 Gbps of listener traffic.
We'd also like to look at performance on Linux, and measuring the stability of each server under load.
The Bottom Line
RSAS comes out on top as the highest performing streaming audio server,
allowing broadcasters to serve more listeners than ever before with the same hardware.
Questions about RSAS or planning streaming capacity? Get in touch!
We're pleased to announce the release of Rocket Broadcaster 1.3. This much anticipated release adds new features like recording to disk and the option to hear your master output,
which are available to both Free and Pro Edition users. This version also includes a slew of refinements and bugfixes.
Here's what's new in this release:
New Features
Recording to Disk
Record your broadcast to any supported audio format / codec, not just the format you're streaming.
Automatically remove old recordings when there's low disk space or when there's a certain number of recordings.
Manually split recordings on-demand
Automatically split recordings at the top of the hour
Master Output Monitoring: Added the ability to listen to your master output (Options->Monitor Master Output). This is particularly useful when tweaking VST effects.
Added a button to "Clone" a stream in the Streams window.
Added option to auto detect the character encoding with the Text File metadata ingestion method.
Bugfixes
Improved FLAC encoding compatibility (eliminated glitching) and optimized bandwidth. (FLAC works great with the newly released RSAS 0.18 too!)
Fixed FLAC and Opus streams disconnecting after sustained silence.
Removed an old DLL that could cause intermittent metadata connectivity issues on certain systems with wifi.
Fixed remote encoder monitoring connectivity issues the "Link to Radio Mast" feature.
Failed metadata updates are now logged.
Fixed tab order in Streams dialog.
Fixed muted VU meters appearing unmuted after opening the Preferences window.
When using a custom metadata output format, the fully formatted metadata is displayed in the main window.
LINK metadata for RCS Zetta Lite XML format is now parsed.
Pro Edition - If you're a Pro Edition user, click the download link in your purchase confirmation email again to get the latest update,
or visit My Products in the Oscillicious Shop.
Feedback
Lastly, your feedback is what helps drive Rocket Broadcaster development. If you're looking for a missing feature,
or have ideas for how we can make Rocket Broadcaster even better, please let us know!