Voice over IP (VOIP) is both a technique and a technology for communicating by transmitting voice and multimedia over IP as sessions. It is often at the core of internet telephony applications, and provides signaling, setup and audio services, among other features. Many of these applications are built upon one of two popular software platforms: Asterisk and FreeSWITCH.
Asterisk, a software based private branch exchange (PBX) solution, can provide much of the required functionality for a VOIP product. Asterisk was one of the first software based PBX solutions. An open source solution, it was created in 1999 and, with sponsorship provided by Digium, was released for production in 2005. It is released under dual licenses: the GNU GPL (General Public License) and a proprietary license to allow further development of proprietary solutions based on Asterisk. It has a large user base, in over 170 countries with more than a million Asterisk based systems in use.
While Asterisk is able to satisfy much of a VOIP requirement, its use historically came with obstacles. The number of concurrent calls that it could originally handle was limited for the caller throughput that was expected, and there were issues with scalability. With increased load, there were also stability issues. Extending Asterisk to provide related services, such as voice mail, was not an easy venture. Combined with issues relating to licensing and support going forward, another option was needed.
In 2006, a group of former contributing Asterisk developers, created an alternative solution called FreeSWITCH. Inspired by the modular design of the Apache Web Server, their goals were to use this modular approach to produce improved scalability and stability over multiple platforms. Built upon a state-machine model, it was designed so that each call/channel operates on its own separate and unique thread. Freely available open source components were used as building blocks, such as the Sofia-SIP open source SIP user agent library developed at Nokia Research Centre. A new open-source telephony platform was born.
Overall, there are a number of key areas in which FreeSWITCH has some advantages over Asterisk:
Performance: Although the FreeSWITCH project team does not release official performance numbers, there are many sources for this information available. Reported gains have been as much as four- to ten-times improvement on number of concurrent calls supported. The addition of the Sofia-SIP stack provides a reliable, industry proven implementation for communications control.
Stability: Asterisk design relied upon shared resources, including threads, to provision multiple calls. This resulted in occasional deadlocking, race conditions, and potential data corruption in high capacity environments. FreeSWITCH was designed so that each call has unique control of its own resources, and that shared resources are managed by core functionality through a layered API.
Configuration/Design: Sometimes cited as an advantage, Asterisk utilizes plain text files in its approach for configuration and dialplan design, which can simplify administration and setup. Conversely, FreeSWITCH configuration is based upon XML, which may make manual maintenance of configuration files a bit more involved. There are other open source applications available that may simplify that task for FreeSWITCH, however. Where XML comes to an advantage is automating these tasks. FreeSWITCH also adds better support for regular expressions, and more call properties against which to match, allowing for more advanced dialplan design. SQL is also available can be extended for even more advanced administration features. A growing FreeSWITCH development community also assures a vibrant platform on which new features can be innovated.
The Right Tool For The Job: While Asterisk is a bit more mature, and possibly more suitable for a more specific and traditional PBX requirements, FreeSWITCH is a much better solution for this case. It is a platform that offers more possibilities beyond simple VoIP telephony. As Anthony Minnesale, the author of FreeSWITCH has stated, “Asterisk is an open source PBX. FreeSWITCH is an open source soft switch”. For performance, stability and versatility reasons, FreeSWITCH is the right tool for a diverse VOIP solution.
“Tale of the Tape”
Northforge has the necessary skills and knowledge to make VOIP solutions happen. Industry knowledge of telephone switching and networking, with a focus on VoIP protocols and SIP, allows Northforge engineers to design modules on the FreeSWITCH platform to meet new goals. Strong development skills in C, Python and Perl, combined with experience with XML, embedded Linux and varied database technologies not only allows Northforge to implement FreeSWITCH as the core of a new solution, but allows for other technologies to be integrated for more comprehensive solutions.
With FreeSWITCH at the new core of a VoIP/multimedia-based service, there are significant advantages including performance and functionality. Combined with its advanced SIP functionality and increased codec support, FreeSWITCH opens up new possibilities.