十一月
14
2010

How to compare sipXecs IP PBX with the Asterisk PBX (sipXecs vs. Asterisk)

How to compare sipXecs IP PBX with the Asterisk PBX (sipXecs vs. Asterisk)

We are asked quite often how the sipXecs IP PBX Enterprise Communications System compares against theAsterisk PBX and what criteria should be used to select one over the other in a given situation or for a specific application. It is not our intent to start a “religious war” nor do we want to digress into marketing. Given that both projects are open source we aim at the same overall target: To commoditize real-time communications and provide a credible alternative to otherwise expensive and proprietary systems.

An interesting article in this context can be found on the FreeSWITCH site.Deadlocks are real and have been a problem with Asterisk forever as everyone will confirm who worked with Asterisk more than on a casual level. A CEO of a company who should know once said: “It cannot be fixed short of a holistic rewrite”. They are caused by a less than ideal threading model and lead to system crashes in installations small and large. The sipXecs IP PBX project now cooperates with FreeSWITCH where we use FreeSWITCH for media services such as conferencing, voicemail and IVR, fully integrated into sipXconfig.

Philosophy

Asterisk is best described as a platform where the sipXecs IP PBX is a turn-key solution, with pros & cons to both. Asterisk is a command line based application with several open source and closed sourced Web UI applications available. sipXecs is a complete solution with the Web administration application built in. Another way to illustrate this is the support for different signaling protocols. Asterisk is known to support SIP, H,323, Cisco SCCP (Skinny), Nortel Unistim, MGCP, IAX, and even SS7. sipXecs only supports SIP. The degree to which Asterisk offers support for all these protocols varies, but as a platform it is more important to offer basic capabilities for a lot of things as compared to full support of only a few things. sipXecs adopted a different philosophy where the objective is to build a fully capable SIP system with a very complete implementation of the SIP standard.
The sipXecs IP PBX is a native SIP solution. All features are implemented in SIP. The system is fully distributed with independent components for key features. These components communicate using the SIP protocol and can run on a single server or be distributed over several systems. Asterisk is one application, all in. It cannot scale across systems in a distributed way and it cannot offer redundancy.
The primary application for Asterisk is to replace the PBX, to provide protocol interworking (H.323, Skinny, MGCP, SIP, IAX, PSTN) in environments where this is still required and to offer media transcoding as it might be needed to interconnect disparate systems. Asterisk is not a SIP proxy server meant to provide global routing of SIP sessions. Asterisk is architected as an end system like a phone (the technical term is a “Back to Back User Agent” or B2BUA). While it “talks” all the different signaling protocols, the inside is a proprietary system to which all the outside protocols are converted as they enter Asterisk.

Web Management Solution

The management solution and user interface are important. Read more on how we think Asterisk NOW , SwitchVox and Trixbox Pro compare to sipXconfig. The most striking difference is the fact that both SwitchVox and Trixbox Pro are closed source applications. SwitchVox is not really useful for anything without registering the product with Digium. Trixbox Pro Standard, the free version, lacks key features such as the ability to configure call forwarding. Upgrading to a more complete solution requires a paid license. Trixbox Pro is also a hosted solution where only the Asterisk core runs on your server. The management interface runs on Fonality’s server and they have stated publicly that they collect data from deployments of Trixbox Pro.sipXecs IP PBX is the only solution that offers plug & play management for phones and gateways. Fonality requires either factory pre-configured phones or offers a service where the Fonality support team configures the phones for you, or you can configure phones manually. With SwitchVox you have to manually configure the phones. sipXecs auto-discovers phones and gateways and creates all the configuration.

Performance

There are two critical differences between Asterisk and sipXecs that significantly affect performance:a) sipXecs IP PBX uses external gateways. It supports as many external gateways you need without limit and offers automatic failover in case a gateway is unavailable or busy. It also offers least cost routing where gateways can be deployed anywhere you need them. Asterisk uses PCI gateway cards where the number of trunk ports is limited by the number of PCI slots available in a server.

b) sipXecs IP PBX does not route calls (media) through the server because it separates signaling from media. Therefore, sipXecs can support as many simultaneous calls as your LAN / WAN bandwidth permits. Asterisk has a hard limit because calls go through the Asterisk server. For a dual-core XEON with 2 GB RAM that limit is 60 simultaneous calls (see link below).

While there is lots of ongoing debate about how large an Asterisk deployment can be, Fonality published an interesting performance metric. This, if nothing else, says something about what they are willing to commit to their customers.

Trixbox Pro Performance Guide as published by Fonality

Processor Type           RAM 	# of calls    # of ACD calls
Celeron                  256MB      5             2
Celeron                  512MB      8             3
Pentium 4                512MB     15             6
Pentium 4                1GB       23             9
Pentium Dual Core        512MB     15             6
Pentium Dual Core        1GB       23             9
Pentium Dual Core        2GB       46            18
Dual Core XEON           1GB       45            25
Dual Core XEON           2GB       60            33
Quad Core XEON           1GB       68            37
Quad Core XEON           2GB       83            45
Quad Core XEON           4GB       98            54
Quad Core XEON           6GB      100+           70+

PBX Features

The SIP standard is mature today and can be used to build a fully featured solution. sipXecs IP PBX offers a long list of features all based on standard SIP signaling. What we think matters are features accessible by a user over a Web UI or TUI and in that respect sipXecs offers more features than either SwitchVox or Trixbox Pro.

Voice Quality

sipXecs IP PBX supports better voice quality. The SIP standard is designed so that signaling can be separated from media. sipXecs is based on an architecture that implements such separation between signaling and media and therefore routes calls direct peer-to-peer and not through the call control server. The sipXecs IP PBX also supports HD voice for both end points as well as PBX services such as conferencing, voicemail and auto-attendant. Video support poses no additional load on the sipXecs IP PBX as the media streams do not go through the PBX server.
Asterisk is modeled like a more traditional TDM PBX where lines (“channels”) come into the PBX that carry voice and signaling. The IAX protocol even explicitly bundles voice and signaling along the same route. This not only uses more bandwidth than necessary, imposes additional delay, injects additional jitter, and represents a single point of failure, this also severely limits the total number of calls that can go on at any given time for the system. With Asterisk that number is around 100 even on a quad-core XEON with 6 GB RAM (see above). With HD voice wideband codecs or video that number will go down further.

Architecture

The sipXecs IP PBX is a fully distributed system that today consists of 12 independent server components: Configuration server, forking proxy server, authentication proxy server, registrar server, status server, presence server, call park server, media server, conferencing server, contact center ACD server, SIP trunking gateway server, and a group paging server. Communications between these servers is based on standard protocol (sockets) such as SIP, HTTP and XML RPC. While all the components of sipXecs can be installed and run on one physical server, significant progress has been made towards a fully distributed system.All configuration data (users, devices, permissions, dial plans, credentials, group policy, CDR data, etc) are stored in a centralized Postgres database. The sipXecs management and configuration system centrally generates all configuration. Servers have specifically assigned server roles that turn additional machines into i.e. a conferencing server, an ACD server or an additional SIP trunking gateway server.

Media & signaling are strictly separated as proposed in the SIP standard. Having media and signaling go through the same server would not only impose significant performance limitations, it also creates an unacceptable single point of failure.

A distributed architecture naturally allows for load-balancing, performance scalability, and fail-over. High-availability with a fully redundant call control system (proxy and registrar) is possible. Under normal operating conditions the redundant systems will load share. Registration state information is automatically and in real-time synchronized between redundant registrars creating one big system from a user perspective. This feature is normally only seen in expensive large enterprise systems.

Media gateways: The sipXecs IP PBX works with any network connected FXO/FXS/BRI/T1/E1 gateway from any vendor and allows for flexible rules based call routing using different gateways in different locations, including automated fail-over in case a gateway is temporarily unavailable. A special dialplan feature supports highly resilient emergency call routing (E911) at different levels, providing service even if the sipXecs server is unavailable. If desired, high-quality gateway PCI cards such as the TP-260 from Audiocodes can be integrated into the same server used for sipXecs.

SIP standard: sipXecs IP PBX is 100% SIP standards compliant.

Asterisk is a monolithic application that cannot be distributed across several physical servers. Configuration data is stored in flat files by default. An option exists to connect different database servers at the backend. Communications interfaces are implemented in “channels” with each channel being responsible for a particular protocol. E.g. the SIP channel implements the SIP capabilities (one source file with about 10,000 lines of code). The internal structure of Asterisk is proprietary and Asterisk does not implement a native SIP router. In addition to standard protocols such as SIP, MGCP, H.323, Asterisk also supports proprietary protocols such as Cisco Skinny and Asterisk IAX.Media & signaling by default go through the Asterisk box (i.e. Asterisk sits in the media path). This has advantages when it comes to the simple (but non standard) implementation of features such as music on hold or call recording. It also allows implementing features independent of the end point’s (i.e. phones) capabilities using DTMF tones for feature invocation instead of e.g. SIP signaling. Requiring media to go through the call control server has significant disadvantages as well, among them limited scalability, additional delay and jitter in the media path, as well as introducing a single point of failure. Using the SIP re-invite method SIP-to-SIP calls can sometimes be re-routed around the Asterisk box under certain conditions but only after the call first was established through the Asterisk PBX.

Media gateways: Asterisk is architected as a one-box solution including gateway PCI cards from Digium. While it can interoperate with external gateways, the easiest setup is using the Digium cards.

Management & Usability

Ease of use and installation is a critical design goal for sipXecs. All system administration and configuration is done using a Web interface provided byConfiguration Server. Configuration server is an integral component of the system and therefore data consistency is always maintained. The admin should not be required at any time to use a Linux command line or edit config files. Configuration server also provides a Web services API based on SOAP. In addition, user & device configuration data can be bulk uploaded from a csv filegenerated by your favorite spread sheet application.sipXecs IP PBX provides a defined upgrade path that includes automated data migration as you upgrade from release to release. In case of database schema changes automated scripts are invoked to migrate your configuration data.
The primary admin interface for Asterisk is a Linux command line interface (CLI). System configuration is accomplished by editing a large number of text based configuration files. Several Web based UIs became available over time including AMP, Asterisk NOW, SwitchVox, Trixbox Pro and others. Some of them, like Asterisk NOW are open source, others like SwitchVox and Trixbox Pro are closed source.Upgrading Asterisk can be a difficult task as data migration is not automated and documentation is hard to come by.

Plug & Play Mgmt of Devices

The sipXecs IP PBX provides plug & play management for an increasing number of peripheral devices such as phones and gateways. A simple XML based plug-in interface is available that can be used to easily add support for new devices. As such the sipXecs Configuration server replaces the management interface provided by the phone or gateway and allows all configuration to take place remotely. A high level of abstraction is provided where users can be assigned to devices, device and user properties are managed in groups with inheritance, and the management capability goes as far as including firmware upgrades for the devices, speeddial and directory support. Device configuration data is stored and backed up centrally as part of the sipXecs system. Phones use different protocols to load profiles automatically at boot time.
Device management is outside the scope of Asterisk. Even SwitchVox and Trixbox Pro do not offer remote device management and require manual configuration of phones.

IT Integration

sipXecs aims at complete IT integration. While the architectural framework has been laid out, some work is still required to accomplish this goal. Today sipXecs IP PBX provides a Web Services SOAP interface for configuration and integration into Web portals, an LDAP interface for open LDAP, Microsoft Active Directory, IBM Domino and others, integration with Microsoft Exchange 2007, and an SNMP interface for fault and performance.
Asterisk has been integrated with a lot of things using its many interfaces. It is not always easy to find out how best to do it though. Also even the more sophisticated Web administration applications like SwitchVox and Trixbox Pro do not offer Web UI based integration.

Code Base

Size of the Code Base: The sipXecs IP PBX code base is about twice the number of lines of code as compared to Asterisk (1,200,000 vs. 488,000).
Roadmap Planning & Upgrades: sipXecs development is driven by a published sipXecs IP PBX roadmap and releases go through a formal Q&A process before being released as stable. The sipXecs project also provides automated update procedures for seamless data migration during release upgrades of production systems. Asterisk planning is less formal and more ad-hoc driven by community contributions and a bounty system. Release upgrades require expert assistance.
Programming Language: Asterisk is witten in C. The sipXecs Communications server infrastructure is written in C++. The sipXecs IP PBX Configuration server is a Java application. sipXecs heavily relies on XML for its internal data structure and a set of related modern languages and protocols. Increasingly additional applications for sipXecs are written in Java. Good examples are the SIP trunking gateway, the group paging server and also the new media services (voicemail and auto-attendant).
SIP Implementation: The sipXecs IP PBX call control server is based on the sipXecs SIP stack, a comprehensive set of libraries that implement the SIP signaling protocol. Components of sipXecs written in Java use the Jain SIP stack. In Asterisk the SIP capabilities are concentrated in the SIP channel, which effectively implements a SIP user agent. The source code concentrates in a single file, chan_sip.c, with about 10,000 lines of code. Given significant issues with this SIP implementation, several attempts were made to replace it with a real SIP stack using either reSIProcate or eXosip2.
Testability: sipXecs rigorously implements a unit test framework, which leads to very high code coverage (>70%). Unit tests are integrated into the build system and together with automated “smoke” tests as part of every build assure high code quality even in the development branch. Asterisk does not use unit tests.
Documentation: sipXecs comes with extensive documentation including users and admin manuals. Doxygen is used extensively to document the sipXecs code. Asterisk also comes with lots of documentation, especially on the user and admin side. Code documentation is of lower quality if available at all. Documentation for Asterisk needs to be searched for on the Web and a fair bit is outdated.
Distribution: Asterisk is available as a source distribution only. Binaries are made available by the community for some Linux distros, but support is not always consistent and typically lags the source release considerably. Given the few external dependencies and the rather simple build system, Asterisk can be built from source by anyone with some Linux programming know-how. SIPfoundry provides binary releases and single file installers for sipXecs together with the source code. The main Linux distro for sipXecs is the Red Hat family (RHEL, Fedora Core, CentOS), and binaries are now available for an increasing number of other distros.
License: sipXecs IP PBX is available under the L-GPL license while Asterisk uses the GPL license. The sipXecs project encourages commercial use of its library components as permitted by the L-GPL license.

相关文章

我要评论