Last Updated: 14-March-2013
What are the similarities and differences of Asterisk and FreeSwitch? Which is better? Which should I use?. These questions often arise in the VoIP community but no so often are answered in a helpful way.
In the following article I’ll try to throw some light over these topics with the hope of helping the readers to decide which one to choose. Note that I made emphasis in “helping.. to decide”. I do not claim to have the definite opinion about the subject.
Which one is better?
Neither of them. We can not compare apples to oranges and expect to say which of them is “better” (even if you can eat both, both have good taste, and both would do great as part of a healthy diet). While both software products are designed for telecommunication purposes, their authors did not have the same goal at the beginning, neither do they have it now.
What are the differences?
I won’t try to enumerate all of them because, depending on details, I might need a complete new blog (not post) to address that topic. But here are some pointers:
Asterisk is a framework for building communications applications. It is a reusable platform developed for developers to developers, acting as an abstraction layer for the underlying protocols and technologies, so it can be used to deliver specific solutions. As a framework (and probably because of it’s origins) it has a “default” that may be seen as a communications server (PBX).
FreeSwitch is designed to be a telephony platform, a soft switch to route and interconnect communications protocols using a wide range of media, all of this while being able to handle a growing amount of work.
While both of them follow a modular design architecture, the implementation of it is very different. While Asterisk has a core that loads each module (like Apache), FreeSwitch, by the other hand, has a monolithic implementation where main functionality is abstracted by the core (not provided by modules), and exposed through APIs to higher levels of the application, hence all communication between FreeSwitch’s modules is done through the core API and the internal event system.
What are the similarities?
As you might have noticed, both of them deal with communications protocols and technologies, so it’s completely possible to get to the same “final solution” using either of them.
From an architectural perspective, Asterisk and FreeSwitch follows a modular design (similar to Apache HTTP server) and are very robust software products.
Which should I use?
That is not the correct question, the question for both of them should be: “Is it the correct tool for this specific need?”, or “if my client decides to expand to a given area, which of the options would better fit his needs?”. What about if you are facing a deadline? which one would allow you to deliver the best solution in less time?.
Even more, they are not mutually exclusive. You might even get to a more robust solution using both of them on certain scenario (if needed, if possible).
I would advice my readers to stop trying to put them face to face in the battlefield of solutions, you will get better results if you put them back to back defending and helping each other.
If possible, learn both of them and decide when it’s time to use one or the other, or both.
For more information about FreeSwitch and Asterisk, I would recommend you the following books:
- FreeSWITCH 1.0.6 – “This book is a step-by-step tutorial with clear instructions and screenshots to guide you through the creation of a complete, cost-effective telephony system.”
- Asterisk: The Definitive Guide – “Design a complete VoIP or analog PBX with Asterisk, even if you have no previous Asterisk experience and only basic telecommunications knowledge.”