FreeSWITCH

FreeSWITCH
FreeSWITCH Logo
Original author(s) Anthony Minessale
Developer(s) Many contributors
Stable release 1.6.19 (July 13, 2017 (2017-07-13)) [±]
Development status Active
Written in C
Operating system Unix-like, Windows, Solaris, OS X
Platform Cross-platform
Available in multi-lingual
Type VoIP software, Softswitch
License Mozilla Public License (MPL)
Website freeswitch.org

FreeSWITCH is a free and open source application server for real-time communication, WebRTC, telecommunications, video and Voice over Internet Protocol (VoIP). Multiplatform, it runs on Linux, Windows, MacOS and FreeBSD. Is used to build PBX systems, IVR services, videoconferencing with chat and screen sharing, wholesale least cost routing, Session Border Controller (SBC) and embedded communication appliances. Has full support for encryption, ZRTP, DTLS, SIPS. Can act as a gateway between PSTN, SIP, WebRTC, and many other communication protocols. Its core library, libfreeswitch, can be embedded into other projects. It is licensed under the Mozilla Public License (MPL), a free software license.

History

The FreeSWITCH project was first announced in January 2006 at O'Reilly Media's ETEL Conference.[1] In June 2007, FreeSWITCH was selected by Truphone for use,[2] and in August 2007, Gaboogie announced that it selected FreeSWITCH as its conferencing platform.[3]

FreeSWITCH's first official 1.0.0 release (Phoenix) was on May 26, 2008.[4] A minor 1.0.1 patch release came out on July 24, 2008.[5] At ClueCon 2012 Anthony Minessale announced[6] the release of FreeSWITCH version 1.2.0[7] and that the FreeSWITCH development team had adopted separate stable (version 1.2) and development (version 1.3) branches.

FreeSWITCH 1.4, released at early 2014, is the first version support SIP over Websocket and WebRTC.

FreeSWITCH 1.6 added support for video transcoding and video conferencing, Verto protocol for WebRTC, and all WebRTC codecs and standards.

Design

According to the lead designer, Anthony Minessale,[8] FreeSWITCH is intended to be a softswitch that is built on top of a solid core, driven by a state machine.[9] The stated goals of the project include stability, scalability, and abstraction.

To reduce complexity, FreeSWITCH uses freely available software libraries that perform needed functions. Some dependencies are:[10]

Not all of these software dependencies are required to build the core freeswitch application, but are dependencies of various external modules, such as codecs. FreeSWITCH is a modular application, in which modules can extend the functionality but the abstraction layer prevents inter-module dependency. The goal is to ensure that one module is not required to load another.[11]

Features

FreeSWITCH includes many modules that provide many telephony applications, such as conferencing, XML-RPC control of live calls, interactive voice response (IVR), speech synthesis and speech recognition, public switched telephone network (PSTN) interfaces for analogue and digital circuits, voice over IP protocols including Session Initiation Protocol (SIP), Verto, Skinny Client Control Protocol (SCCP), H.323, Extensible Messaging and Presence Protocol (XMPP), GoogleTalk, T.38 and others.[12]

FreeSWITCH provides an application programming interface that exposes primitives for call control and IVR functionality. Applications may be written in the C language, C++, Python, Perl, Lua, JavaScript, Java and Microsoft .NET via Microsoft's CLR or via Mono.[13]

Call control applications can use the Event Socket, which is an Internet socket-based communications facility within FreeSWITCH providing a language independent interface. The Event Socket Library (ESL) and "ESL-wrappers" are available for Erlang, JavaScript, Lua, Perl, PHP, Python, and Ruby.

As of FreeSWITCH version 1.4, support exists for WebRTC.[14]

In FreeSWITCH 1.6 support was added for Video muxing and complete WebRTC, wss, dtls, SIP.js, Verto.js, Opus 48khz to 8khz, resilient up to 40% packet loss.

Main FreeSWITCH 1.6 features:

WebRTC support

[15]

Video conferencing support

[16] FreeSWITCH has always been a powerful platform for conferencing, starting many years ago as a hugely scalable audio conferencing bridge. In a breakthrough at ClueCon 2015 in Chicago Illinois, FreeSWITCH's creator Anthony Minessale II announced support for video transcoding, mixing, manipulation, and Multipoint Control Unit (MCU) functionality. FreeSWITCH now has the most advanced and mature video conferencing features:

Codec support

FreeSWITCH supports a variety of audio and video codecs:[17]

G.723.1, H263 and H264 are supported in pass-through mode. Since the raw compressed data is passed through between callers without any processing, this allows support for some codecs that cannot be provided free of charge due to patent or other licensing issues.

The software supports hardware transcoding cards, such as produced by Sangoma.[19] These implement codecs in hardware, reducing the CPU usage of the server. Some of these codecs are fully licensed, providing an alternative to the pass-through options above.

Protocol support

[20]

Application support

[21]

Encryption support

Text-to-speech and Automatic Speech Recognition support

Operating and build system support

Comparison with other telephony software

FreeSWITCH occupies a space between pure switches that simply route calls, such as Kamailio and OpenSIPS, and those that provide primarily PBX or IVR functionality, such as Asterisk and its derivatives. FreeSWITCH provides building blocks from which applications – such as a PBX, a voicemail system, a conferencing system or a calling card – can be built using any of the supported languages.[22]

Derived products

FreeSWITCH is a core component in many PBX in a box commercial products and open-source projects. Some of the commercial products are hardware and software bundles, for which the manufacturer supports and releases the software as open source.

See also

References

  1. "Beyond Asterisk, The Future of Telephony. What's Next?". O'Reilly Media. 2006-01-25. Retrieved 2007-10-06.
  2. "Truphone Selects FreeSWITCH and TelcoBridges to Enable VoIP Calls over WiFi on Mobile Phones" (Press release). Truphone. June 5, 2007.
  3. "Gaboogie Embraces Open Source For New Mobile Group Calling and Conference Calling Solution". Gaboogie. 2007-08-03. Retrieved 2007-10-06.
  4. "FreeSWITCH 1.0.0 "Phoenix" Released!".
  5. "FreeSWITCH 1.0.1 "Phoenix" Released!".
  6. "ClueCon 2012 Keynote Address".
  7. "It's Official! FreeSWITCH 1.2 Has Been Released.".
  8. Gallagher, Kathleen (October 18, 2009). "Flipping the FreeSWITCH - Brookfield is home to revolutionary software". Milwaukee Journal Sentinel.
  9. "An Interview with the Creator of FreeSWITCH". O'Reilly Media. July 25, 2006.
  10. A complete list of dependencies can be found in the dependencies page section of the FreeSWITCH documentation.
  11. "FreeSWITCH Introduction". FreeSWITCH Wiki. Retrieved 29 January 2016.
  12. "Modules". FreeSWITCH Documentation Wiki. 2016-01-29. Retrieved 2007-10-07.
  13. "Client and Developer Interfaces". FreeSWITCH Documentation Wiki. 2016-01-29. Retrieved 2007-10-07.
  14. "FreeSWITCH Project Releases Version 1.4 Beta with WebRTC Media Support". FreeSWITCH Official Website. 2013-06-19. Retrieved 2013-06-19.
  15. FreeSWITCH 1.6 Cookbook, Packt Publishing, ISBN 1785280910
  16. Mastering FreeSWITCH, Packt Publishing, ISBN 1784398888
  17. https://freeswitch.org/confluence/display/FREESWITCH/Audio+Codecs
  18. http://www.freeswitch.org/node/235
  19. http://wiki.sangoma.com/sangoma-media-transcoding#sng_freeswitch_usage
  20. https://freeswitch.org/confluence/display/FREESWITCH/Specifications
  21. https://freeswitch.org/confluence/display/FREESWITCH/Specifications
  22. "FreeSWITCH Applications". Retrieved 30 January 2016.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.