Overview of freely available and free IP PBXs (Asterisk, FreeSWITCH, SipXecs, Yate)
Overview of freely available and free IP PBXs: Asterisk, FreeSWITCH, SipXecs, Yate. Advantages and disadvantages, a comparative analysis of functionality and applications are given. It is concluded that all products can be combined with each other.
Some time ago, a friend from Open Systems contacted me and asked me to review open IP PBXs. Since he turned not only to me, but also to other IP telephony experts, as a result, a compilation appeared in the journal , in which little was left of my original review. I publish it entirely on Habré.
At the beginning there will be a theoretical insert, for those who are not quite in the subject. If it will be boring - just skip it! Enjoy reading! And for better readability, the chapters are accompanied by musical gifts (I highly recommend headphones :-)
PBX (Private Branch Exhange) is an English term for an office telephone exchange that provides for the establishment, maintenance and disconnection of connections between devices, that is, switching. PBX allows you to share limited resources (city lines and numbers) between an unlimited number of internal users, using phone features such as an internal numbering plan, call transfer, put on hold, and others.
That is why the PBX system is necessary for any organization - it allows you to effectively organize telephone communications in the enterprise (well, still needed ;-)
Traditional PBX systems switch channels (communication lines) by switching electric current circuits. The new PBX systems switch packets on a TCP / IP network, and are called IP PBX. IP PBX is based on IP telephony protocols. Also, traditional PBXs can support IP PBXs - these are called hybrid IP PBXs. In the transition period from traditional telephony to the IP environment, it is hybrid IP PBX that is most in demand, although the function of converting traditional telephone channels to IP packets can also be carried out in a separate device - a VoIP adapter or VoIP gateway, which is then connected via IP telephony to IP PBX.
Currently, only two IP telephony protocols are widely used - H.323 and SIP.
Protocol, or more correctly, the H.323 protocol stack, was developed by the International Telecommunication Union (ITU), an international organization that defines recommendations in the field of telecommunications and radio. The goal of the protocol was the need for audio and video conferencing over modern telecommunication networks, including digital and IP networks.
SIP (Session Initiation Protocol)- a standard for the method of establishing and completing a user Internet session, including the exchange of multimedia content (video and audio conferences, instant messages, online games, etc.). The protocol was developed by the Internet Engineering Task Force (IETF), an open international community of designers, scientists, network operators and providers involved in the development of protocols and the architecture of the Internet.
The H.323 protocol has a large standard set of capabilities for working with video conferences (it was created by telephone operators, and the Internet is one of its working environments), and the SIP protocol is more adapted to work in TCP / IP networks, and is more universal (it was created by "Internet users ”, And voice and video are just some of the types of media content).
The Internet has won, and now SIP is considered the de facto standard for IP telephony, and the H.323 protocol is mainly used in multi-user video conferencing systems and for exchanging voice traffic over IP between telecom operators, although there is a tendency in these areas to switch to Sip.
Thus, we can confidently conclude that modern IP PBX systems operate on the basis of the SIP IP telephony protocol.
Consider the SIP architecture in more detail.
The SIP protocol specification defines a client-server architecture. The client issues requests indicating what it wants to receive from the server. The server receives and processes requests, issues responses containing a notification about the success of the request, an error notification, or information requested by the client. Call service is distributed among various elements of the SIP network.
The main functional element that implements the connection control functions is the subscriber terminal. Other network elements may be responsible for routing calls, as well as provide additional services. We list the main elements:
- Terminal. When the client and server are implemented in the terminal equipment and interact directly with the user, they are called the user agent client - User Agent Client (UAC), and the user agent server - User Agent Server (UAS). If the device has both UAC and UAS, then it is called a user agent - User Agent (UA), and in essence is a SIP terminal equipment. Examples UA - hardware or software SIP phone, SIP adapter.
- A proxy server (from the English proxy - "representative") represents the interests of the user on the network. It accepts requests, processes them, and performs the appropriate actions. The proxy server also consists of client and server parts, so it can receive calls, initiate requests and return responses. There are two types of proxies:
stateful. Such a server stores in its memory all received requests and related new generated requests until the transaction is completed.
stateless (stateless). Such a server simply processes the received requests and it is impossible to implement complex, intelligent services on its basis.
- Forwarding server - used to determine the current location of the user. The forwarding server does not terminate calls and does not initiate its own requests, but only reports the address of the necessary terminal or proxy server. For these purposes, it interacts with the location server. To make a connection, the user may not use the forwarding server if he himself knows the current address of the required user.
User Location Server. The user can move within the SIP network, so there is a mechanism for determining his location at the current time. The user location server serves to store the current user address and is a database of address information.
Thus, the SIP protocol specification defines nothing but a mechanism for establishing and breaking a session between a client and a server, as well as searching for network elements. Therefore, the SIP protocol is used simultaneously with other protocols that implement user services.
One such supporting protocol is the Session Description Protocol (SDP), which is used to describe a streaming session, including telephony, Internet radio, multimedia applications, and streaming applications. SDP protocol describes the format of headers and fields in which SIP clients and servers list their session capabilities (for example, supported compression algorithms - codecs).
The second necessary protocol is RTP (Real-time Transport Protocol), which is used to directly transmit real-time traffic. The RTP protocol transfers in its header the data necessary for voice or video restoration at the receiving node, as well as data on the type of information encoding (JPEG, MPEG, etc.). In the header of this protocol, in particular, a time stamp and a packet number are transmitted. These parameters allow, with minimal delays, to determine the order and moment of decoding of each packet, as well as interpolate the lost packets. The underlying transport layer protocol is typically UDP. Establishing and breaking the connection is not included in the list of RTP capabilities; such actions are performed by the SIP signaling protocol.
Thus, the operation of SIP PBX is based on three main protocols: SIP, SDP, RTP.
There are also protocols that implement additional functionality, for example, SIP TLS and Secure RTP, which add encryption of signaling and media streams, and others, however, the main ones are SIP, SDP and RTP.
However, if the SIP protocol does not define any high-level functions and services, then what exactly is IP PBX based on the SIP protocol?
What to consider SIP automatic telephone exchange?
Currently, there are a fairly large number of telecommunication software products that differ from each other in architecture, target functions, supported protocols, popularity, and other parameters. To understand if they are an IP PBX system, you need to consider them in accordance with the following criteria:
- Does the system support SIP registrar functions? IP PBX must know the location of its users, therefore, it must implement the functions of the SIP registrar.
- Does the system support SIP proxy features? IP PBX should deal with the establishment of connections between its users, as well as maintain information about the status of these connections.
- Does the system support mechanisms for controlling the established SIP session? IP PBX should be able to interrupt the current session due to a more important call, or to free the busy line needed by the leader. In the SIP architecture, the so-called Back-to-back User Agent (B2BUA) performs such functions. When using B2BU, communication is established not directly between two users, but between each user and B2BUA, and one call, as it were, turns into two completely independent SIP sessions.
- Does the system support RTP traffic proxy functions? IP PBX must pass media streams through itself, for example, to record conversations.
- What additional applications are available to users? Traditionally, PBX systems support features such as voice mail, conference calling, standby music, call statistics, and others.
The purpose of my article is to review the free IP PBX systems distributed in the source code, which I will compare in accordance with the above criteria. The most popular and mature open source IP PBX systems today are:
Let's consider them in more detail. But first, launch the next mega-track!
The Asterisk project was initiated in 1999 by Mark Spencer, the owner and sole employee of the American company Linux Support Services.
Mark was involved in system administration and commercial support for Linux, and also programmed in C.
One of Mark's clients contacted him with the question of providing office telephony, and Mark Found that PBXs cost a lot of money. And I decided to write my Linux-based PBX. Thus was born a project called Asterisk.
After some time, Mark founded the Digium company, which began to produce Asterisk interface cards with traditional telephone networks (via analog and digital ports).
Asterisk formed around a large community of users and developers, the project began to actively develop.
Currently, Asterisk is the most popular open IP PBX in the world , occupying almost 85% of the open source PBX “market” (and in general, open PBXs occupy about 18% of the PBX market in USA - Open PBXs occupy 18% of the North American telephony market).
The name for Asterisk (from the English "asterisk", the designation of the * sign) was chosen very well. In IT, an asterisk indicates the substitution of any character, or an unlimited number of characters. Even the standard features of Asterisk are surprising. The modular architecture of Asterisk makes it easy to connect any business logic written in almost any programming language or implemented in the Asterisk’s own dialplan into the switching field.
Here's an abridged list of Asterisk features:
- Both IP telephony and traditional communication lines are supported. You can insert Digium PCI cards with analog and / or digital ports in the required number and combination into the server with Asterisk.
- All basic and advanced PBX functions are supported: voice menu, call recording, call statistics, music on hold, voicemail, queuing and distribution by operators (call center functions), and many others.
- Skype is directly supported (Digium chan_skype channel driver), there is also a small WEB application that allows calling Skype users from push-button phones via short numbers from the notebook
- Supported video connection.
- There are applications for voice recognition and speech generation.
- Recent versions of Asterisk support call encryption.
- Asterisk has simple and well-documented interfaces for integration with other systems (AGI and AMI), which makes it easy to integrate communications into business processes and business applications.
- There are a large number of various graphical administration tools for Asterisk, both paid and free, among which the free WEB interface FreePBX is most popular. There are also ready-made distributions that allow you to deploy IP PBX server on a regular PC in minutes. The most popular free Asterisk distributions are TrixBox, Elastix. It should be said that Digium, the author of Asterisk, also offers a commercial solution based on Asterisk - SwitchVox, which is a comprehensive unified communications solution. In addition to SwitchVox, there are several dozens of both commercial and open systems based on Asterisk.
- Finally, around Asterisk there is a very large community of users, developers and integrators who help each other learn and use the full variety of Asterisk features. In RuNet, the largest community can be found on the site asterisk-support.ru, which was created in 2004 in order to support the community by the community itself. Also recently, in January of this year, the asteriskpeople.ru project was launched, on which a map of the Asteriskers community is presented.
Currently, Asterisk continues to evolve, even more rapidly than before. In 2010 alone, the number of Asterisk users doubled.
If a few years ago, commercial support or custom development for Asterisk could be obtained only in a few companies, today dozens of companies from all regions of Russia provide technical support and system integration services based on Asterisk solutions, which completely eliminated the risk of using free software in business - any company for a reasonable price can quickly get guaranteed help from top-class Asterisk specialists, some of which are among the top ten global Asterisk developers ikov.
The abundance of Asterisk features and active development is also a minus of this product - it is difficult for beginners to quickly master a large amount of information. Also, the most recent versions of Asterisk may experience stability problems due to the large number of additions and changes.
At the end of the Asterisk review, it should be said that Asterisk is an IP PBX solution for the office, although many telecom operators are trying to use the system to provide various services for their customers. But Asterisk is not very suitable for this, since it does not scale very well.
FreeSWITCH is a software switch that was created by Anthony Minessale, one of the former Asterisk developers, in 2006. After numerous attempts to use Asterisk under high load, Anthony made a number of comments on the basic architecture of the system, and suggested changing it. However, the author of Asterisk - Mark Spencer, refused to change the kernel. Therefore, Anthony quit the Asterisk developers and created “from scratch” his product, which he called FreeSWITCH.
When developing the FreeSWITCH architecture, the authors took into account all the problems of existing open software products for IP telephony.
Therefore, one of the main advantages of the new product has become stability and scalability, as well as cross-platform - FreeSWITCH runs on both Linux and Windows.
Another feature of FreeSWITCH is the use of the sofia-sip SIP stack from Nokia, which is considered the best open source implementation of the SIP protocol distributed in the source code. In Asterisk, chan_sip is implemented with incomplete compliance with standard standards. SIP is the main FreeSWITCH protocol, although PCI card drivers are also supported for integration with traditional telephony, as well as other IP telephony protocols.
FreeSWITCH can be used as a SIP proxy and SIP registrar, as a Session Border Controller (SBC), transcoding Back-to-back User Agent (B2BUA), as a conference or voice mail server.
FreeSWITCH also supports many IP PBX functions, such as call transfer, interception, call park, call recording, listening, and others.
However, to date, the list of IP PBX applications available for FreeSWITCH is inferior to that of Asterisk.
The main interface for configuring FreeSWITCH is XML text files, which complicates the administration of this system, while Asterisk uses well-read and convenient .ini files in section / option format.
There are no ready-to-use graphical management interfaces for FreeSWITCH, which also makes it difficult to use. And the existing GUIs for FreeSWITCH (WikiPBX, FusionPBX, blue.box) are far in functionality from the same FreePBX for Asterisk.
However, FreeSWITCH is actively developing. Some experts of open telecommunication software products call FreeSWITCH “Asterisk killer app”, others claim (including me!) That there is a place for both products on the market, since each of them has its own unique specificity.
The SipXecs product is based on the source code for the SipXpbx software, published freely in 2004 by PingTel.
It should be said that PingTel specialists created one of the very first products, with the help of which SIP devices from different manufacturers successfully interacted, and they can rightfully be considered pioneers of SIP-building. Since then, SipXecs has been considered the most complete and correct implementation of SIP RFC.
Following the launch of SipXpbx, PingTel continued to develop its commercial product, SIPxchange, periodically posting various pieces of code in the public domain and adding them to SipXpbx.
As active developers connected to an open project, it became difficult to support two different products, as the current licensing policy did not allow the inclusion of open source code written by enthusiasts in the commercial product. To solve this problem in 2007, PingTel changes the structure of projects, and puts the rest of the closed code in the public domain, combining it with SipXpbx. The new project is called SipXecs.
In 2008, PingTel was acquired by Nortel. Nortel has already delivered its customers the SipXecs source code product SCS (Software Communications System). Nortel experts have made significant contributions both to the development of their commercial SCS product and to the open source SipXecs project.
In 2009, Nortel filed for bankruptcy and ownership of the commercial SCS product was transferred to Avaya. In March 2010, Avaya stopped adding its best practices to SipXecs source code. Then the community of SipXecs users, including some former PingTel employees, came together under the roof of the newly created company eZuce, which is currently engaged in supporting and developing the project.
SipXecs software is written in the programming language C ++ and Java (in Java, in particular, its SIP stack is written using the Jain SIP library) and runs on Linux OS.
This is the only open IP PBX system in whose core the WEB management interface was included from the very beginning. If Asterisk is positioned as a voice platform, then SipXecs developers consider their product a “boxed” unified communications solution!
Asterisk's rich arsenal is located in a large number of configuration files of various modules, as well as in the built-in command line for management (CLI). SipXecs is controlled via the WEB interface, and it is possible to do only what is provided by the developers in it.
Asterisk supports many different telephone interfaces - analog, digital, several IP telephony protocols. SipXecs only supports SIP, being a pure SIP solution. All telephone functionality is implemented within the framework of the SIP protocol specification, and is also distributed into completely independent components that communicate via SIP / HTTP / XML-RPC protocols, and which can work on one or on different servers, which, incidentally, is on the new level provides reliability and scalability.
If Asterisk is a “multi-protocol” system that accepts calls from different types of channels and converts them to its own format for processing and switching (replacing with old PBXs), then SipXecs is a SIP proxy that routes SIP transactions without passing through itself media streams, and closing them directly between agent devices (IP phones).
However, all the weaknesses of the SipXecs package are strong. Since media streams are not proxied, it is impossible to implement some important PBX functions, for example, recording conversations. Also, a problem arises when the user is inside a network with private IP addresses - the NAT problem. It is also impossible to implement transcoding where necessary. However, these problems are solved in the latest versions of SipXecs using the FreeSWITCH package, which organically fit into the SipXecs architecture, performing functions such as a conference server and IVR server.
The Yet Another Telephone Engine (Yate) project was launched in 2004. Supported Operating Systems: Linux, BSD, Windows. Written by Yate in C ++. Yate does not use external SIP libraries, but implements the SIP stack on its own.
Yate is a softswitch that also contains many PBX functions, in particular:
- transfer, hold and park a call;
- music on hold;
- conference call;
- call statistics
However, Yate is primarily a multi-protocol switch with very flexible routing rules. Yate supports IP telephony protocols such as H323, IAX2, MGCP, various SS7 levels (MTP2, SIGTRAN), and drivers for digital streaming cards from different manufacturers.
Yate also includes a clustering mechanism that allows cost-effective scalable solutions.
Architecturally, Yate uses a micro-core model and message bus, and regular expressions are used to route messages with the ability to place any messages on the bus. This architecture makes it easy to add new modules without affecting existing code. Yate is a true telephone low-level engine.
There is a special free distribution with Yate and WEB management interface - FreeSentral, which includes a user interface where it manages its settings, such as call forwarding, voicemail, address book, and can also view the statistics of its calls.
Among all the products reviewed, Yate has the least functionality, however, what Yate can do does very well and stably. Another drawback is the lack of documentation.
The most common use of Yate is the H323-SIP signaling converter.
It is very difficult to choose an IP PBX system for your organization among open products.
The situation is worsened by the fact that all of them, in principle, can work simultaneously.
According to the author of this article, you should not spare the time and independently test Asterisk, FreeSWITCH and SipXecs, and choose a product that suits you more.
Or maybe use them all. Nothing prevents you from using SipXecs as the IP-PBX reference, on which users are registered, FreeSWITCH as an audio conference server, Yate as a SIP-H323 translator for connecting providers via the H323 protocol, since the only implementation of H323 in Yate is much better than any of 3 implementations of H323 in Asterisk, and Asterisk as a media gateway with Digium or Sangoma stream cards, and also as a server for additional applications, for example, video intercom.
Welcome to the world of open and free telephone solutions!
And for those who have read to the end - a musical bonus! Enjoy!