Upload
chien-cheng-wu
View
520
Download
4
Embed Size (px)
Citation preview
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
• 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
Reference
• FreeSWITCH Offical Website
– https://freeswitch.org/
• Open Source Software Lab
– http://www.osslab.org.tw/VoIP/IP_PBX
16
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