Review of freely available and free IP PBXs (Asterisk, FreeSWITCH, SipXecs, Yate)
Overview of freely available and free IP PBX: Asterisk, FreeSWITCH, SipXecs, Yate. The advantages and disadvantages, a comparative analysis of functionality and applications. It is concluded that all products can be combined with each other.
Initially there will be a theoretical insert, for those who are not quite in the subject. If it's boring, just skip it! Enjoy reading! And to better read, the chapters are accompanied by musical gifts (I highly recommend headphones :-) ')
Go!
Theory
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. The PBX allows you to share limited resources (city lines and numbers) between an unlimited number of internal users, using such phone functions as an internal numbering plan, transferring calls, putting on hold, and others.
That is why a PBX system is necessary for any organization - it allows you to efficiently organize telephone communications in your company (well, you still need it ;-)
Traditional PBX systems switch channels (communication lines), switching electric current circuits. New PBX systems switch packets on a TCP / IP network and are called IP PBXs. IP PBX works on the basis of IP telephony protocols. Also IP PBX can support traditional communication lines - such IP PBXs are called hybrid. During the transition period from traditional telephony to IP environment, hybrid IP PBXs are most in demand, although the function of converting traditional telephone channels to IP packets can also be transferred to a separate device - VoIP adapter or VoIP gateway, which is then connected via IP telephony to IP PBX.
Currently, only two IP telephony protocols are widespread - H.323 and SIP.
The protocol, and more correctly, the H.323 protocol stack , was developed by the International Telecommunications Union (English International Telecommunication Union, ITU) - an international organization defining recommendations in the field of telecommunications and radio. The purpose of the protocol was the need for audio and video conferencing on modern telecommunications networks, including digital and IP networks.
SIP (English Session Initiation Protocol) is a standard for the method of establishing and terminating a user Internet session, including the exchange of multimedia content (video and audio conferencing, instant messaging, 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, which is engaged in the development of Internet protocols and architecture.
The H.323 protocol has a large standard set of capabilities for working with video conferences (it was created by telephonists, and the Internet is one of its working environments), and the SIP protocol is more adapted to work in TCP / IP networks, and more versatile (it was created by ", And voice and video - only one of the types of media content).
The Internet has won, and currently the de facto standard for IP telephony is SIP, and the H.323 protocol is mainly used in multi-user video conferencing systems and for the exchange of voice traffic over IP between telecom operators, although in these areas there is a tendency to switch to SIP.
Thus, it is safe to conclude that modern IP PBX systems operate on the basis of the IP telephony protocol SIP.
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 accepts and processes requests, issues responses containing a notification of the success of the request, an error notification, or information requested by the client. The call service is distributed between different SIP network elements.
The main functional element that implements the functions of connection management is the subscriber terminal. The remaining 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, the User Agent Client (UAC), and the user agent server, the User Agent Server (UAS). If both UAC and UAS are present in the device, then it is called a User Agent (User Agent (UA)), and is essentially 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 accept calls, initiate requests and return responses. There are two types of proxy servers: stateful. Such a server stores in its memory all received requests and new generated requests related to it until the end of the transaction. without state saving (stateless). Such a server simply processes the received requests and it is impossible to implement complex, intelligent services on its basis.
Redirect 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 redirection server if he himself knows the current address of the required user. Server location information. The user can move within the SIP network, so there is a mechanism for determining its location at the current time. The server of the location of users serves to store the current address of the user and is a database of address information.
Thus, the specification of the SIP protocol does not define anything except the mechanism for establishing and breaking the session between the client and the server, as well as the search for network elements. Therefore, the SIP protocol is used simultaneously with other protocols that implement user services.
One such auxiliary protocol is the SDP - Session Description Protocol, which is intended to describe a session of streaming data, 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, the supported compression algorithms are codecs).
The second necessary protocol is RTP (English Real-time Transport Protocol), which is used to directly transmit real-time traffic. RTP carries in its header the data necessary for recovering voice or video at the receiving node, as well as data on the type of encoding information (JPEG, MPEG, etc.). In the header of this protocol, in particular, the timestamp and the packet number are transmitted. These parameters allow, with minimal delays, to determine the order and time of decoding each packet, as well as interpolate lost packets. UDP protocol is usually used as the underlying transport layer protocol. Connection establishment and disconnection are not included in the RTP capability list, such actions are performed by the SIP signaling protocol.
Thus, the work 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, adding encryption of signaling and media streams, and others, but the main ones are SIP, SDP and RTP.
However, if the SIP protocol does not define any high-level functions and services, then what is an IP PBX based on the SIP protocol?
What to consider SIP PBX?
Currently, there are quite a large number of telecommunication software products that differ from each other in architecture, target functions, supported protocols, popularity, and other parameters. To understand whether they are IP PBX systems, they must be considered in accordance with the following criteria:
Does the system support SIP recorder functions? IP PBX must be aware of the location of its users, so it must implement the functions of the SIP registrar.
Does the system support SIP proxy functions? IP PBX should establish connections between its users, as well as maintain information about the status of these connections.
Does the system support control mechanisms over the established SIP session? The IP PBX should be able to interrupt the current session due to the incoming more important call, or to release the busy line required by the manager. In the SIP architecture, the so-called Back-to-back User Agent (B2BUA) performs such functions. When using B2BU, the connection is established not directly between two users, but between each of the users and the B2BUA, and one call turns into two completely independent SIP sessions.
Does the system support proxy RTP traffic? IP PBX should pass through the media streams, for example, in order to record conversations.
What additional applications are available to users? Traditionally, PBX systems support such functions as voice mail, conference calling, music on hold, call statistics, and others.
The purpose of my article is to review free IP PBX systems distributed in the source code, which I will compare in accordance with the above criteria. The most popular and mature IP PBX open source systems today are the following:
Asterisk
FreeSWITCH
Sipxecs
Yate
Consider them in more detail. But first we launch the next mega-track!
Asterisk
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 turned to him with the question of providing office telephony, and Mark discovered that office PBXs cost a lot of money. And I decided to write my own PBX based on Linux. Thus was born the project called Asterisk.
After some time, Mark founded Digium, which began to produce Asterisk interfacing boards with traditional telephone networks (via analog and digital ports).
A large community of users and developers was formed around Asterisk, 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 the USA - Open PBXs account for 18% of the North American telephony market).
The name for Asterisk (from English "asterisk", designation of the sign *) was chosen very successful. In IT, an asterisk denotes the substitution of any character, or an unlimited number of characters. Even the regular features of Asterisk are surprising. The modular architecture of Asterisk allows you to easily connect any business logic written in virtually any programming language, or implemented in Asterisk's own dialplan language, to the switching field. Here is an abbreviated list of Asterisk functionality:
Both IP telephony protocols and traditional communication lines are supported. In the server with Asterisk you can insert PCI Digium cards with analog and / or digital ports in the right quantity and combination.
All basic and advanced PBX functions are supported: voice menu, call recording, call statistics, music on hold, voice mail, placing calls in a queue and distributing to operators (call center functions), and many others.
Skype is directly supported (channel driver chan_skype from Digium), there is also a small WEB application that allows users to call Skype from push-button phones via short numbers from a notebook
Video communication is supported.
There are voice recognition and speech generation applications.
The latest 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 is a large number of various Asterisk graphical administration tools, 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 an IP PBX server on a standard PC in a matter of minutes. The most popular Asterisk free distributions are TrixBox, Elastix. It should be said that the company Digium, the author of Asterisk, also offers a commercial solution based on Asterisk - SwitchVox, which is a complete 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 range of Asterisk features. In RuNet, the largest community can be found on the website asterisk-support.ru, which was created in 2004 in order to support the community by the community itself. Also very recently, in January of this year, the project asteriskpeople.ru was launched, on which a map of the Asterisk community was presented.
Currently, Asterisk continues to evolve, even more rapidly than before. In 2010 alone, the number of Asterisk users has doubled.
A few years ago, commercial support or individual development for Asterisk was available only in a few companies, today dozens of companies from all regions of Russia provide technical support services and system integration solutions based on Asterisk, which completely eliminated the risk of using free software in business - any company for reasonable money can quickly receive a guaranteed help of Asterisk specialists of the highest class, some of whom are in the first dozens of Asterisk world developers. ikov.
The abundance of Asterisk opportunities and active development is also a disadvantage 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.
In conclusion, the Asterisk review should say that Asterisk is an IP PBX solution for the office, although many telecom operators are trying to use the system to provide various services to their customers. But Asterisk is not very suitable for this, as it does not scale well.
FreeSWITCH
FreeSWITCH is a software switch , the creation of which was initiated by one of the former developers of Asterisk - Anthony Minessale 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 offered to change it. However, the author of Asterisk - Mark Spencer, refused to change the core. Therefore, Anthony withdrew from the Asterisk developers and created his product from scratch, which he called FreeSWITCH.
When developing the FreeSWITCH architecture, the authors took into account all the problems of existing open source software for IP telephony.
Therefore, one of the main advantages of the new product is stability and scalability, as well as cross-platform - FreeSWITCH runs on both Linux and Windows.
Another feature of FreeSWITCH is the use of Nokia's SIP sofia-sip stack, which is considered to be the best open implementation of the SIP protocol distributed in the source code. In Asterisk, chan_sip is implemented with incomplete observance of standards. SIP is the main FreeSWITCH operation protocol, although PCI card drivers for integration with traditional telephony are also supported, as well as other IP telephony protocols.
FreeSWITCH can be used as SIP proxy and SIP recorder, as 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 parking, call recording, listening, and others.
However, today the list of IP PBX applications available for FreeSWITCH loses similarly to Asterisk.
The main configuration interface of FreeSWITCH is text files in XML format, which makes administration of this system difficult, whereas Asterisk uses well-read and convenient .ini files in the section / option format.
There are no ready-to-use graphical management interfaces for FreeSWITCH, which also complicates its use. And the existing GUI 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 source software for telecommunications call the FreeSWITCH “Asterisk killer app”, others claim (including myself!) That both products have a place in the market, since each of them has its own unique specifics.
Sipxecs
The SipXecs product is based on the SipXpbx software source code, published for free access 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 the pioneers of SIP engineering. Since SipXecs is considered the most complete and correct implementation of the SIP RFC.
After starting SipXpbx, PingTel continued to develop its commercial product, SIPxchange, periodically posting various parts of the code in open access and adding them to SipXpbx.
As active developers were connected to the open project, it became difficult to maintain two different products, as the current licensing policy did not allow the inclusion of open source code written by enthusiasts into a commercial product. To solve this problem in 2007, PingTel changes the structure of projects, and puts the rest of the proprietary code in the public domain, merging it with SipXpbx. The new project is called SipXecs.
In 2008, PingTel is absorbed by Nortel. Nortel has already delivered a SCS (Software Communications System) product to its customers, based on the SipXecs source code. Nortel experts have made a great contribution to the development of their commercial product SCS, and to the open source project SipXecs.
In 2009, Nortel declared itself bankrupt, and the rights to the commercial product SCS were transferred to Avaya. In March 2010, Avaya stopped adding its groundwork to the SipXecs source code. Then the SipXecs user community, including some former employees of PingTel, united under the roof of the newly created company eZuce, which is currently engaged in the support and development of the project.
The SipXecs software is written in the C ++ and Java programming languages ​​(Java, in particular, its SIP stack is written using the Jain SIP library) and runs on Linux.
This is the only open IP PBX system, the core of which from the very beginning was included WEB management interface. If Asterisk is positioned as a voice platform, then the 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 control (CLI). SipXecs is controlled through the WEB interface, and it is possible to do only what is provided by the developers.
Asterisk supports many various telephone interfaces - analog, digital, several IP telephony protocols. SipXecs supports only SIP, being a pure SIP solution. All telephone functionality is implemented within the specification of the SIP protocol, and is also separated into completely independent components that interact over SIP / HTTP / XML-RPC protocols and which can work both on the same and on different servers, which, by the way, on the new level provides reliability and scalability.
If Asterisk is a “multiprotocol” system that accepts calls from different types of channels and converts them into its internal format for processing and switching (replacing with old PBXs), then SipXecs is a SIP proxy that deals with the routing of SIP transactions without passing through media streams, and closing them directly between agent devices (IP phones).
However, the strengths of the SipXecs package also imply all its weaknesses. Since media streams are not proxied, it is impossible to implement some important PBX functions, for example, recording conversations. Also, there is a problem when a user is inside a network with private IP addresses - a NAT problem. It is also impossible to implement transcoding where necessary. However, these problems in the latest versions of SipXecs are solved using the FreeSWITCH package, which seamlessly fits into the SipXecs architecture, performing functions such as a conference server and an IVR server.
Yate
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 independently.
Yate is a softswitch that also contains many PBX functions, in particular:
transfer, hold and park a call;
music on hold;
conference call;
queues
IVR
call statistics
However, Yate is primarily a multi-protocol switch with very flexible routing rules. Yate well supports IP telephony protocols such as H323, IAX2, MGCP, various levels of SS7 (MTP2, SIGTRAN), drivers for streaming digital cards from different manufacturers.
Yate also includes a clustering mechanism that allows for cost-effective scalable solutions.
Architecturally, Yate uses a micro kernel and message bus model, and regular expressions are used to route messages with the possibility of placing any messages on the bus. This architecture makes it easy to add new modules without affecting existing code. Yate is a real low-level telephone engine (engine).
There is a special free distribution with Yate and the WEB management interface - FreeSentral, which includes the user interface, where it manages its settings, such as call forwarding, voice mail, address book, and it can also view its call statistics.
Among all the products reviewed, Yate has the least functionality, but what Yate can do is very good and stable. Another flaw is insufficient documentation.
The most common use of Yate is a H323-SIP signaling converter.
Conclusion
Choosing an IP PBX system for your organization among open products is not easy.
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 spare no time, and independently test Asterisk, FreeSWITCH and SipXecs, and choose a product that suits you best.
Or maybe use them all. Nothing prevents SipXecs from being used as a basic IP-PBX, on which users register, FreeSWITCH as an audio conferencing server, Yate as a SIP-H323 translator for connecting H323 communication providers, since the only H323 implementation in Yate is much better than any of 3 implementations of H323 in Asterisk, and Asterisk as a media gateway with streaming cards Digium or Sangoma, as well as a server for additional applications, for example, selector video communication.
Welcome to the world of open and free phone solutions!
And for those who read to the end - a music bonus! Enjoy!