When it comes to open source PBX phone systems, there are two competing underlying switches that tend to steal the show, these being FreeSWITCH and Asterisk.
In this FreeSWITCH versus Asterisk article we will provide an overview of each switch and take a look at some of the core features and how they differ. We will also review some of the most popular PBX systems that are built on top of each switch.
If you are in a hurry and want a high level view of Asterisk versus FreeSWITCH, go straight to Table 3.
Asterisk began because of the efforts from a computer Engineer by the name of Mark Spencer in 1999. His small team developed the Asterisk software switch under the label of Linux Support Systems that later re-branded as Digium. Since then, the Asterisk switch has been adapted into a wide variety of PBX systems such as FreePBX, Elastix and PBX in a Flash. It is worth pointing out here that Asterisk is really an open source PBX in its own right and can be used as a standalone phone system.
FreeSWITCH began when a reputable Asterisk developer by the name of Anthony Minessale decided to fix some of the perceived issues of the Asterisk platform. This resulted in a ground-up build for what eventually became known as FreeSWITCH. The project was announced in 2006 and eventually got off the ground in 2007. FreeSWITCH is a true open source software switch and the two largest platforms utilizing FreeSWITCH as its switching core are sipXcom (which started as sipXecs) and FusionPBX.
Underlying Switch Design
At its core, Asterisk is incredibly modular by design, which is somewhat apparent when viewing the final installation of the product. This is also indicative of the underlying composition of the system. Asterisk utilizes shared resources during run-time, including software threads, which can lead to issues under heavy call loads.
Despite some complex code, which was written in numerous programming languages, Asterisk is very efficient as seen in the many adaptations floating around the web. FreeSWITCH has a different approach, the system is written in C and takes a more structured approach to the core program foundation. Process threads execute consistently across memory, which is different to the Asterisk design since each channel maintains its own thread and memory space. This is also likely one of the reasons FreeSWITCH typically has a larger RAM requirement than Asterisk.
FreeSWITCH has a very well defined API, existing as several layers where each maintains a unique role. Asterisk, on the other hand, is slightly more fragmented because of the modular design (though FreeSWITCH does in fact use a modular model too) and does not feature read/write locking for its threads. This design protects the FreeSWITCH API, unlike Asterisk where the more open design allows for additional experimentation but there can be a higher opportunity for errors and bugs.
Asterisk relies on regular text files for configuration whereas FreeSWITCH is based on XML files. Though XML is a little more painful to edit, the benefits appear on the automation side, which is very valuable when grouping together multiple tasks.
Hardware and Software Requirements
Hardware requirements are difficult to precisely quantify because each system (i.e. each PBX that utilizes the underlying switch) has different goals it is trying to achieve, so the requirements can vary considerably. However, we have to start somewhere and Table 1 below is a reasonable minimum starting point for a given PBX with up to 15 phone extensions and 5 concurrent calls.
Lower specifications than those stated may well work for very light systems but such a system will provide very limited capabilities. The recommendation for a minimal install should only apply to a test machine, as a production systems should always have additional margin on top of peak load conditions (50% ideally). As the number of phone extensions and functionality grows, so too should your overall system performance in terms of processing power and memory, not to mention bandwidth.
|Processor||Single Core, at least 700MHz||Single Core, at least 1GHz|
|Operating System||Linux based, 32 or 64 bit||Linux based, 64 bit|
Table 1: Minimum Requirements for up to 15 Phone Extensions
Most flavors of Asterisk PBXs are very light, easily running on top of very basic machines. In some of our tests, we used a laptop from the early 2000s to produce our PBX guides and did not yield any major issues. However, this was for test purposes only and not for a production environment.
Most FreeSWITCH systems will recommend a more modern system to function as intended. A lighter system will work fine for testing but usually FreeSWITCH based systems are designed to handle larger loads thus have a higher performance need and RAM requirement. Indeed, most FreeSWITCH PBXs will recommend a modern quad core processor running at 2 GHz per core, at least 8GB of RAM and roughly 80GB of storage so the system runs effortlessly and with room to scale. Keep in mind, for either platform, recording calls, voicemails and system recordings for IVR menus require at least 1MB of storage for every minute of recording, depending on sampling rates and compression. Adjusting storage is necessary depending on the amount of recording desired for each system.
It is also worth pointing out that the general perception is that FreeSWITCH can handle a much larger number of concurrent calls than Asterisk, given the same underlying hardware and software specifications. Indeed, some have suggested as much as a four fold increase in concurrent calls but it is tough to give too much credence to this since there appears to be no official testing procedures for this and much of the testing was carried out over 5 years ago. A lot of software has been written during this time. Some real world examples, along with hardware and software specifications, for FreeSWITCH concurrent calls can be found here.
UPDATE: We created an article on SIP load testing tools that may be of interest. This has a real world example of traffic and CPU/RAM utilization.
At the base level, each switch offers most of the same features.
Creating extensions and gateways is much the same for either system. Each system can handle as many users as the underlying server can support, based on RAM and core performance.
Both are designed to take maximum advantage of SIP for calling between devices on the network as well as other endpoints such as mobile networks, other VoIP systems and the Public Switched Telephone Network (PSTN). Asterisk also provides a specific interface for connecting to other Asterisk systems via a specific protocol known as IAX. FreeSWITCH utilizes a different mechanism for clustering which not only enhances the power of an implementation, it can also provide redundancy for certain configurations.
Modern phone features are inherent to all Asterisk and FreeSWITCH systems. Voicemail, call recording and IVR menus tend to be available for any FreeSWITCH or Asterisk based switch on the market. Portals are usually provided so admins, superadmins and users can manage their specific feature sets using a secured browser login.
Perhaps one of the most notable features of any FreeSWITCH system is the ability to provide multi-tenant (multi-customer) capabilities. Though it is possible to host multiple tenants on a powerful Asterisk system, usually it is an expensive proprietary system built on top of Asterisk (though Elastix has recently released an open-source multi-tenant version of its software). FreeSWITCH natively provides the ability to serve multiple tenants on different domains or sub-domains and these will run in a segregated manner, ensuring that a tenant cannot call another tenant through an extension call.
Both systems can communicate with other installations that use the same platform. Asterisk can effectively communicate with other systems, whether using the same exact platform or a different variant of the same underlying platform (i.e. Asterisk). However, FreeSWITCH has potent interconnection capabilities, allowing individual systems in the cluster to fill multiple roles. Much like in a Windows server environment, installing every role to a single server can be poor practice, at least for larger PBX installations. FreeSWITCH allows each system in a cluster to fulfil a certain duty whereas Asterisk is somewhat set in stone at the core level.
Asterisk and FreeSWITCH systems have the ability to provide more advanced communication functions such as chat (instant messaging), video calling and conferencing. Most Asterisk systems do not support IM capabilities without an add-on (usually OpenFire, though others are available.) In some cases, this module requires payment but some systems, such as Elastix, include OpenFire free of charge after activation. FreeSWITCH simply requires activation of the XMPP service and proper configuration of devices allowed to use this feature.
Conference calling is a standard feature for both switches and it is hard to pinpoint a clear winner. Asterisk's design accommodates dial-in (meet-me) conferencing, as does FreeSWITCH. FreeSWITCH is configurable such that a unique system can handle this task as a sole function. When putting this burden on an "all-encompassing" FreeSWITCH system, resources are managed well for an appropriately powered machine. Yet, when a sole FreeSWITCH system is dedicated for conferencing, this opens doors for much larger voice conference scenarios, such as at the enterprise level where hundreds or thousands of people need to be on a company wide conference call.
Deployment on a network varies considerably. Asterisk has quite a few different modules for endpoint management (e.g. IP phones and soft phones), usually requiring a small financial investment around $100 or so which gives you access to provisioning software for a wide variety of popular phones on the market. FreeSWITCH systems have several configuration files built into the platform for provisioning phones, however it is somewhat lacking compared to what is available for Asterisk, and usually supports only the most popular models of IP phones from mainstream vendors such as Cisco and Polycom. However, it is worth pointing out that FreeSWITCH is catching up fast when it comes to auto provisioning.
Connecting either switch to the outside world through gateways is usually straightforward. Both FreeSWITCH and Asterisk systems have a handful of example templates for gateway configuration. As Asterisk is a more mature system, most SIP providers have clear documentation for connecting their system to an Asterisk gateway, less so for FreeSWITCH. If you are having issues, it is worth a quick call to your SIP provider, it will likely save a lot of debugging time.
Popular Software PBXs Based on FreeSWITCH and Asterisk
In Table 2, we list many of the popular open source software PBXs available on the market today and state their underlying switch, in other words, whether it is Asterisk or FreeSWITCH based. These systems are all free to download and use, though you are bound by the GPL license, so keep this in mind if you are making design changes to the underlying software.
WhichVoIP.com has many in-depth guides for the popular PBXs in the marketplace, and you can click on the links in Table 2 and be taken to the relevant guide.
|PBX in a Flash (PIAF)|
Table 2: Popular Asterisk and FreeSWITCH Based PBX Systems
Summary for Asterisk vs FreeSWITCH
To summarize our analysis above, Table 3 provides the high level view on where each switch stands out.
|Small server footprint in terms of processing and memory capabilities.|
|Longevity and support mechanisms. Access to forums, documentation, gateway configurations, quick bug fixes etc.|
|Large database of end device templates for auto provisioning (i.e. IP phones and soft phones).|
|Feature rich platforms with advanced features such as call recording, meet-me conferencing, chat.|
|Multi-tenant platform where each tenant (customer) is segregated.|
|Increased capabilities for maximizing concurrent calls, given the same underlying hardware.|
|Clustering capabilities to split functions up per installation (e.g. one installation handles conferencing).|
Table 3: High Level View for Asterisk versus FreeSWITCH
From a functionality standpoint, there are few differentiators when comparing an Asterisk switch and FreeSWITCH. With a proper setup, end users will most likely not see much of a difference between either system implementation, though in my experience I tend to prefer the look and feel of the Graphical User Interface (GUI) for FreeSWITCH systems, for example FusionPBX.
At some level, Asterisk is much easier to work with. Since it is a predecessor to FreeSWITCH in a very primal sense, the sheer fact the system is older (and well received) means much more documentation, especially with respect to forums and user base. As FreeSWITCH is a newer adaptation of a similar idea, it tends to be a little more difficult to troubleshoot since there are fewer technical guides and less users providing assistance. It should be said though that the actual FreeSWITCH documentation is decent and has plenty of example XML code.
Both systems are relatively easy to install and configure (especially if you follow our guides). Asterisk can be run on primitive hardware but for a high end PBX that can handle a large volume of concurrent calls, FreeSWITCH based systems tend to win.
Don't forget to check out our guides, as documented in Table 2, when you have picked a PBX you want to test, it could save you a lot of time.
Finally, if you are looking for a SIP provider for your gateway to the outside world, use our SIP trunking quote form on the top right of this page to request free quotes for trunking service.