Introduction to FreeSWITCH
Stanley Wu (吳建澄)
skyeyester@gmail.com
Mar. 04, 2016
Outline
• IP Telephony System Overview
• What is FreeSWITCH?
• FreeSWITCH Functions
• FreeSWITCH Architecture
• FreeSWITCH Fundamentals
• PBX Applications
2
IP Telephony System Overview
3
Internet
Enterprise
Communication
Service Vender
User
Network
Operator
Private Branch
Exchange
System
IP Telephony System Overview
• Deep in Private Branch Exchange (PBX) System
4
Internet
Gateway
PSTN/ISDN
Analog
Gateway
IP Phone
Analog
Phone
Fax
Internal Network
PBX System
SIP Trunk
Gateway
Analog
Gateway
Database
IVR
PBX
Conference
Voice Mail
What is FreeSWITCH?
• FreeSWITCH™ is an open source
communications platform, licensed under the
MPL(Mozilla Public License)
• FreeSWITCH was created in 2006 to fill the
void left by proprietary commercial solutions
• Designed to be modular, scalable and stable
• FreeSWITCH current released version is 1.6
5
FreeSWITCH Functions
• PBX Server (Transcoding B2BUA)
• IVR & Announcement Server
• Conference Server
• Voicemail Server
• Fax Server
• Session Border Controller
6
FreeSWITCH Architecture
7
FreeSWITCH Architecture
• Important modules: Endpoint, Dialplan and
Application
• Endpoint
– The primary role of endpoint is to take certain
common communication technologies and
normalize them into a common abstract entity
which we refer to as a session.
– A session represents a connection between
FreeSWITCH and a particular protocol
8
FreeSWITCH Architecture
• Important modules: Endpoint, Dialplan and
Application
• Dialplan
– Dialplan is designed to lookup list of instructions
from the central XML registry within FreeSWITCH.
– The XML registry will parse a series of XML
extension objects using regular expression pattern
matching
– The extension object is selected based on the
configuration data for the calling Endpoint.
9
FreeSWITCH Architecture
• Important modules: Endpoint, Dialplan and Application
• Application
– Each instruction defined in the dialplan for an extension
object is added to the session in the form of an application
name and data argument that will be passed to that
application.
– Example of application:
• Set: configure extension parameter
• Bridge: bridge a new channel to the existing one
• Answer: answer the call for a channel
• Hangup: hangup a current channel
• Ivr: run an IVR menu
10
FreeSWITCH Architecture
• Example extension in a dialplan
11
• In this scenario the Endpoint module turned SIP into a FreeSWITCH session and
the dialplan module turned XML into an extension.
• The bridge application will connect the call to the endpoint/channel defined as argument of
data in the application.
• Simply an incoming call for 1001 will be send to the sipendpoint/1001 to reach the actual
phone
FreeSWITCH Fundamentals (1/2)
• Threaded Model (Parallel Operations)
– Every connection has its own thread.
– Sub-systems run in background threads.
– Event handlers push events into threads.
• Stable Protected Core
– Critical data structures are opaque.
– Complicated code is all in one place.
– Complicated routines get maximum reuse.
– Higher level code cannot be misused.
– With each new level of API the power increases as the
complexity decreases.
12
FreeSWITCH Fundamentals (2/2)
• Dynamic Modules to Extend Functionality
– FreeSWITCH API interface allows the addition of commands that can be accessed remotely.
– Application interface allows creation of custom IVRs and call routing apps.
– XML interface allows real-time dynamic access for user directory and configuration.
– Endpoint interface connects IM and phones.
– Formats, Automated Speech Recognition (ASR) & Text-to-Speech (TTS)
• Detailed Event and Logger System
– Events are fired whenever something significant happens.
– Detailed logging makes debugging easier.
– External applications can bind to events and track the status of the entire system.
• Hooks into Everything
– Embedded languages simplify the API even more.
– Same principle as the CGI / Web server.
13
PBX Application (1/2)
14
PBX Application (2/2)
• Intercom (Doorphone)
• Public Address System
15
Reference
• FreeSWITCH Offical Website
– https://freeswitch.org/
• Open Source Software Lab
– http://www.osslab.org.tw/VoIP/IP_PBX
16
Q&A
Thanks for your Listening
17
FreeSWITCH Development History
• History
– 2006, the FreeSWITCH project was first announced at
O'Reilly Media's ETEL Conference
– 2008, FreeSWITCH's first official 1.0.0 release (Phoenix)
– 2012, FreeSWITCH development team had adopted
separate stable (version 1.2) and development (version 1.3)
branches
– 2014, released FreeSWITCH 1.4, the first version support
SIP over Websocket and WebRTC
– 2015, released FreeSWITCH 1.6, the first version that
supports video transcoding and video conferencing
• Developer
– Lead designer, Anthony Minessale
18

Introduction to FreeSWITCH

  • 1.
    Introduction to FreeSWITCH StanleyWu (吳建澄) skyeyester@gmail.com Mar. 04, 2016
  • 2.
    Outline • IP TelephonySystem Overview • What is FreeSWITCH? • FreeSWITCH Functions • FreeSWITCH Architecture • FreeSWITCH Fundamentals • PBX Applications 2
  • 3.
    IP Telephony SystemOverview 3 Internet Enterprise Communication Service Vender User Network Operator Private Branch Exchange System
  • 4.
    IP Telephony SystemOverview • Deep in Private Branch Exchange (PBX) System 4 Internet Gateway PSTN/ISDN Analog Gateway IP Phone Analog Phone Fax Internal Network PBX System SIP Trunk Gateway Analog Gateway Database IVR PBX Conference Voice Mail
  • 5.
    What is FreeSWITCH? •FreeSWITCH™ is an open source communications platform, licensed under the MPL(Mozilla Public License) • FreeSWITCH was created in 2006 to fill the void left by proprietary commercial solutions • Designed to be modular, scalable and stable • FreeSWITCH current released version is 1.6 5
  • 6.
    FreeSWITCH Functions • PBXServer (Transcoding B2BUA) • IVR & Announcement Server • Conference Server • Voicemail Server • Fax Server • Session Border Controller 6
  • 7.
  • 8.
    FreeSWITCH Architecture • Importantmodules: Endpoint, Dialplan and Application • Endpoint – The primary role of endpoint is to take certain common communication technologies and normalize them into a common abstract entity which we refer to as a session. – A session represents a connection between FreeSWITCH and a particular protocol 8
  • 9.
    FreeSWITCH Architecture • Importantmodules: Endpoint, Dialplan and Application • Dialplan – Dialplan is designed to lookup list of instructions from the central XML registry within FreeSWITCH. – The XML registry will parse a series of XML extension objects using regular expression pattern matching – The extension object is selected based on the configuration data for the calling Endpoint. 9
  • 10.
    FreeSWITCH Architecture • Importantmodules: Endpoint, Dialplan and Application • Application – Each instruction defined in the dialplan for an extension object is added to the session in the form of an application name and data argument that will be passed to that application. – Example of application: • Set: configure extension parameter • Bridge: bridge a new channel to the existing one • Answer: answer the call for a channel • Hangup: hangup a current channel • Ivr: run an IVR menu 10
  • 11.
    FreeSWITCH Architecture • Exampleextension in a dialplan 11 • In this scenario the Endpoint module turned SIP into a FreeSWITCH session and the dialplan module turned XML into an extension. • The bridge application will connect the call to the endpoint/channel defined as argument of data in the application. • Simply an incoming call for 1001 will be send to the sipendpoint/1001 to reach the actual phone
  • 12.
    FreeSWITCH Fundamentals (1/2) •Threaded Model (Parallel Operations) – Every connection has its own thread. – Sub-systems run in background threads. – Event handlers push events into threads. • Stable Protected Core – Critical data structures are opaque. – Complicated code is all in one place. – Complicated routines get maximum reuse. – Higher level code cannot be misused. – With each new level of API the power increases as the complexity decreases. 12
  • 13.
    FreeSWITCH Fundamentals (2/2) •Dynamic Modules to Extend Functionality – FreeSWITCH API interface allows the addition of commands that can be accessed remotely. – Application interface allows creation of custom IVRs and call routing apps. – XML interface allows real-time dynamic access for user directory and configuration. – Endpoint interface connects IM and phones. – Formats, Automated Speech Recognition (ASR) & Text-to-Speech (TTS) • Detailed Event and Logger System – Events are fired whenever something significant happens. – Detailed logging makes debugging easier. – External applications can bind to events and track the status of the entire system. • Hooks into Everything – Embedded languages simplify the API even more. – Same principle as the CGI / Web server. 13
  • 14.
  • 15.
    PBX Application (2/2) •Intercom (Doorphone) • Public Address System 15
  • 16.
    Reference • FreeSWITCH OfficalWebsite – https://freeswitch.org/ • Open Source Software Lab – http://www.osslab.org.tw/VoIP/IP_PBX 16
  • 17.
    Q&A Thanks for yourListening 17
  • 18.
    FreeSWITCH Development History •History – 2006, the FreeSWITCH project was first announced at O'Reilly Media's ETEL Conference – 2008, FreeSWITCH's first official 1.0.0 release (Phoenix) – 2012, FreeSWITCH development team had adopted separate stable (version 1.2) and development (version 1.3) branches – 2014, released FreeSWITCH 1.4, the first version support SIP over Websocket and WebRTC – 2015, released FreeSWITCH 1.6, the first version that supports video transcoding and video conferencing • Developer – Lead designer, Anthony Minessale 18