SlideShare a Scribd company logo

FreeSWITCH Modules for Asterisk Developers

Diving into the internals of FreeSWITCH and its module interfaces and how they compare to Asterisk interfaces

1 of 41
Download to read offline
FreeSWITCH modules for
  Asterisk developers.

       Moises Silva <moy@sangoma.com>
       Software Developer
       Sangoma Technologies




                                   05-Aug-09/ 1
Agenda
•   Why Modules?

•   Module Architecture.

•   Core Basics.

•   Module Interfaces.

•   Application skeleton.

•   Module Configuration.

•   Argument parsing.

•   Interacting with the CLI.

•   Events and actions.

                                05-Aug-09 / 2
Why modules?
•   Building blocks.

•   Extend core capabilities.

•   Distribution and bug fixing is easier.




                                             Nov 25, 2012 / 3
Examples of modular architectures
•   Linux kernel (character devices, block devices, filesystems etc).



•   PHP, Python and PERL interpreters (extensions).




•   Apache (loggers, generators, filters, mappers).




•   FreeSWITCH and Asterisk.




                                                                 05-Aug-09 / 4
Common Approach to Modules
•   Register interfaces with the core.

•   The core provides APIs to module writers.

•   The core uses the module interfaces function pointers.


                          Core APIs


      Application                          Module

                     Module interfaces



                                                        Nov 25, 2012 / 5
Core basics
•   How a call leg is abstracted?




                                     Asterisk



         Incoming call



                                    FreeSWITCH




                                                 05-Aug-09 / 6

Recommended

FreeSWITCH on Docker
FreeSWITCH on DockerFreeSWITCH on Docker
FreeSWITCH on Docker建澄 吳
 
Introduction to FreeSWITCH
Introduction to FreeSWITCHIntroduction to FreeSWITCH
Introduction to FreeSWITCHChien Cheng Wu
 
ELK Elasticsearch Logstash and Kibana Stack for Log Management
ELK Elasticsearch Logstash and Kibana Stack for Log ManagementELK Elasticsearch Logstash and Kibana Stack for Log Management
ELK Elasticsearch Logstash and Kibana Stack for Log ManagementEl Mahdi Benzekri
 
FreeSWITCH as a Microservice
FreeSWITCH as a MicroserviceFreeSWITCH as a Microservice
FreeSWITCH as a MicroserviceEvan McGee
 
Scaling FreeSWITCH Performance
Scaling FreeSWITCH PerformanceScaling FreeSWITCH Performance
Scaling FreeSWITCH PerformanceMoises Silva
 
Namespaces and cgroups - the basis of Linux containers
Namespaces and cgroups - the basis of Linux containersNamespaces and cgroups - the basis of Linux containers
Namespaces and cgroups - the basis of Linux containersKernel TLV
 
FreeSWITCH as a Kickass SBC
FreeSWITCH as a Kickass SBCFreeSWITCH as a Kickass SBC
FreeSWITCH as a Kickass SBCMoises Silva
 
SIP Testing with FreeSWITCH
SIP Testing with FreeSWITCHSIP Testing with FreeSWITCH
SIP Testing with FreeSWITCHMoises Silva
 

More Related Content

What's hot

Apache Ignite vs Alluxio: Memory Speed Big Data Analytics
Apache Ignite vs Alluxio: Memory Speed Big Data AnalyticsApache Ignite vs Alluxio: Memory Speed Big Data Analytics
Apache Ignite vs Alluxio: Memory Speed Big Data AnalyticsDataWorks Summit
 
FreeSWITCH Cluster by K8s
FreeSWITCH Cluster by K8sFreeSWITCH Cluster by K8s
FreeSWITCH Cluster by K8sChien Cheng Wu
 
SIP Attack Handling (Kamailio World 2021)
SIP Attack Handling (Kamailio World 2021)SIP Attack Handling (Kamailio World 2021)
SIP Attack Handling (Kamailio World 2021)Fred Posner
 
Network Performance: Making Every Packet Count - NET401 - re:Invent 2017
Network Performance: Making Every Packet Count - NET401 - re:Invent 2017Network Performance: Making Every Packet Count - NET401 - re:Invent 2017
Network Performance: Making Every Packet Count - NET401 - re:Invent 2017Amazon Web Services
 
Homer - Workshop at Kamailio World 2017
Homer - Workshop at Kamailio World 2017Homer - Workshop at Kamailio World 2017
Homer - Workshop at Kamailio World 2017Giacomo Vacca
 
Choosing an HDFS data storage format- Avro vs. Parquet and more - StampedeCon...
Choosing an HDFS data storage format- Avro vs. Parquet and more - StampedeCon...Choosing an HDFS data storage format- Avro vs. Parquet and more - StampedeCon...
Choosing an HDFS data storage format- Avro vs. Parquet and more - StampedeCon...StampedeCon
 
rtpengine - Media Relaying and Beyond
rtpengine - Media Relaying and Beyondrtpengine - Media Relaying and Beyond
rtpengine - Media Relaying and BeyondAndreas Granig
 
The Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitchThe Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitchTe-Yen Liu
 
Openstack Summit Vancouver 2018 - Multicloud Networking
Openstack Summit Vancouver 2018 - Multicloud NetworkingOpenstack Summit Vancouver 2018 - Multicloud Networking
Openstack Summit Vancouver 2018 - Multicloud NetworkingShannon McFarland
 
Kamailio, FreeSWITCH, and You
Kamailio, FreeSWITCH, and YouKamailio, FreeSWITCH, and You
Kamailio, FreeSWITCH, and YouFred Posner
 
Redis Streams plus Spark Structured Streaming
Redis Streams plus Spark Structured StreamingRedis Streams plus Spark Structured Streaming
Redis Streams plus Spark Structured StreamingDave Nielsen
 
FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)Kirill Tsym
 
AMSI: How Windows 10 Plans to Stop Script-Based Attacks and How Well It Does It
AMSI: How Windows 10 Plans to Stop Script-Based Attacks and How Well It Does ItAMSI: How Windows 10 Plans to Stop Script-Based Attacks and How Well It Does It
AMSI: How Windows 10 Plans to Stop Script-Based Attacks and How Well It Does ItNikhil Mittal
 
Kolla talk at OpenStack Summit 2017 in Sydney
Kolla talk at OpenStack Summit 2017 in SydneyKolla talk at OpenStack Summit 2017 in Sydney
Kolla talk at OpenStack Summit 2017 in SydneyVikram G Hosakote
 
Blazing Performance with Flame Graphs
Blazing Performance with Flame GraphsBlazing Performance with Flame Graphs
Blazing Performance with Flame GraphsBrendan Gregg
 

What's hot (20)

Apache Ignite vs Alluxio: Memory Speed Big Data Analytics
Apache Ignite vs Alluxio: Memory Speed Big Data AnalyticsApache Ignite vs Alluxio: Memory Speed Big Data Analytics
Apache Ignite vs Alluxio: Memory Speed Big Data Analytics
 
FreeSWITCH Cluster by K8s
FreeSWITCH Cluster by K8sFreeSWITCH Cluster by K8s
FreeSWITCH Cluster by K8s
 
Kamailio on Docker
Kamailio on DockerKamailio on Docker
Kamailio on Docker
 
SIP Attack Handling (Kamailio World 2021)
SIP Attack Handling (Kamailio World 2021)SIP Attack Handling (Kamailio World 2021)
SIP Attack Handling (Kamailio World 2021)
 
Network Performance: Making Every Packet Count - NET401 - re:Invent 2017
Network Performance: Making Every Packet Count - NET401 - re:Invent 2017Network Performance: Making Every Packet Count - NET401 - re:Invent 2017
Network Performance: Making Every Packet Count - NET401 - re:Invent 2017
 
Homer - Workshop at Kamailio World 2017
Homer - Workshop at Kamailio World 2017Homer - Workshop at Kamailio World 2017
Homer - Workshop at Kamailio World 2017
 
Choosing an HDFS data storage format- Avro vs. Parquet and more - StampedeCon...
Choosing an HDFS data storage format- Avro vs. Parquet and more - StampedeCon...Choosing an HDFS data storage format- Avro vs. Parquet and more - StampedeCon...
Choosing an HDFS data storage format- Avro vs. Parquet and more - StampedeCon...
 
rtpengine - Media Relaying and Beyond
rtpengine - Media Relaying and Beyondrtpengine - Media Relaying and Beyond
rtpengine - Media Relaying and Beyond
 
The Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitchThe Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitch
 
Openstack Summit Vancouver 2018 - Multicloud Networking
Openstack Summit Vancouver 2018 - Multicloud NetworkingOpenstack Summit Vancouver 2018 - Multicloud Networking
Openstack Summit Vancouver 2018 - Multicloud Networking
 
Kamailio, FreeSWITCH, and You
Kamailio, FreeSWITCH, and YouKamailio, FreeSWITCH, and You
Kamailio, FreeSWITCH, and You
 
Redis Streams plus Spark Structured Streaming
Redis Streams plus Spark Structured StreamingRedis Streams plus Spark Structured Streaming
Redis Streams plus Spark Structured Streaming
 
Linux Network Stack
Linux Network StackLinux Network Stack
Linux Network Stack
 
Sipwise rtpengine
Sipwise rtpengineSipwise rtpengine
Sipwise rtpengine
 
FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)
 
Sockets and Socket-Buffer
Sockets and Socket-BufferSockets and Socket-Buffer
Sockets and Socket-Buffer
 
AMSI: How Windows 10 Plans to Stop Script-Based Attacks and How Well It Does It
AMSI: How Windows 10 Plans to Stop Script-Based Attacks and How Well It Does ItAMSI: How Windows 10 Plans to Stop Script-Based Attacks and How Well It Does It
AMSI: How Windows 10 Plans to Stop Script-Based Attacks and How Well It Does It
 
Kolla talk at OpenStack Summit 2017 in Sydney
Kolla talk at OpenStack Summit 2017 in SydneyKolla talk at OpenStack Summit 2017 in Sydney
Kolla talk at OpenStack Summit 2017 in Sydney
 
DPDK In Depth
DPDK In DepthDPDK In Depth
DPDK In Depth
 
Blazing Performance with Flame Graphs
Blazing Performance with Flame GraphsBlazing Performance with Flame Graphs
Blazing Performance with Flame Graphs
 

Viewers also liked

Architettura VoIP con FreeSWITCH + gazzurbo
Architettura VoIP con FreeSWITCH + gazzurboArchitettura VoIP con FreeSWITCH + gazzurbo
Architettura VoIP con FreeSWITCH + gazzurboAlessandro Antani
 
Media Handling in FreeSWITCH
Media Handling in FreeSWITCHMedia Handling in FreeSWITCH
Media Handling in FreeSWITCHMoises Silva
 
Experience on-freeswitch-cluecon2011
Experience on-freeswitch-cluecon2011Experience on-freeswitch-cluecon2011
Experience on-freeswitch-cluecon2011seven1240
 
FreeSWITCH Monitoring
FreeSWITCH MonitoringFreeSWITCH Monitoring
FreeSWITCH MonitoringMoises Silva
 
開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽Will Huang
 

Viewers also liked (6)

Architettura VoIP con FreeSWITCH + gazzurbo
Architettura VoIP con FreeSWITCH + gazzurboArchitettura VoIP con FreeSWITCH + gazzurbo
Architettura VoIP con FreeSWITCH + gazzurbo
 
Media Handling in FreeSWITCH
Media Handling in FreeSWITCHMedia Handling in FreeSWITCH
Media Handling in FreeSWITCH
 
Experience on-freeswitch-cluecon2011
Experience on-freeswitch-cluecon2011Experience on-freeswitch-cluecon2011
Experience on-freeswitch-cluecon2011
 
Voip FreeSwitch
Voip FreeSwitchVoip FreeSwitch
Voip FreeSwitch
 
FreeSWITCH Monitoring
FreeSWITCH MonitoringFreeSWITCH Monitoring
FreeSWITCH Monitoring
 
開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽
 

Similar to FreeSWITCH Modules for Asterisk Developers

Five cool ways the JVM can run Apache Spark faster
Five cool ways the JVM can run Apache Spark fasterFive cool ways the JVM can run Apache Spark faster
Five cool ways the JVM can run Apache Spark fasterTim Ellison
 
Cell Technology for Graphics and Visualization
Cell Technology for Graphics and VisualizationCell Technology for Graphics and Visualization
Cell Technology for Graphics and VisualizationSlide_N
 
Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...
Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...
Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...Intel® Software
 
Lecture10_RealTimeOperatingSystems.pptx
Lecture10_RealTimeOperatingSystems.pptxLecture10_RealTimeOperatingSystems.pptx
Lecture10_RealTimeOperatingSystems.pptxSekharSankuri1
 
Spirit20090924poly
Spirit20090924polySpirit20090924poly
Spirit20090924polyGary Dare
 
hyperlynx_compress.pdf
hyperlynx_compress.pdfhyperlynx_compress.pdf
hyperlynx_compress.pdfraimonribal
 
Web Template Mechanisms in SOC Verification - DVCon.pdf
Web Template Mechanisms in SOC Verification - DVCon.pdfWeb Template Mechanisms in SOC Verification - DVCon.pdf
Web Template Mechanisms in SOC Verification - DVCon.pdfSamHoney6
 
MIPI DevCon 2016: How MIPI Debug Specifications Help Me to Develop System SW
MIPI DevCon 2016: How MIPI Debug Specifications Help Me to Develop System SWMIPI DevCon 2016: How MIPI Debug Specifications Help Me to Develop System SW
MIPI DevCon 2016: How MIPI Debug Specifications Help Me to Develop System SWMIPI Alliance
 
infraXstructure Alexis Dacquay, "How to win back visibility into your network...
infraXstructure Alexis Dacquay, "How to win back visibility into your network...infraXstructure Alexis Dacquay, "How to win back visibility into your network...
infraXstructure Alexis Dacquay, "How to win back visibility into your network...PROIDEA
 
Presentation systemc
Presentation systemcPresentation systemc
Presentation systemcSUBRAHMANYA S
 
The Potential Impact of Software Defined Networking SDN on Security
The Potential Impact of Software Defined Networking SDN on SecurityThe Potential Impact of Software Defined Networking SDN on Security
The Potential Impact of Software Defined Networking SDN on SecurityBrent Salisbury
 
Kognitio - an overview
Kognitio - an overviewKognitio - an overview
Kognitio - an overviewKognitio
 
Timothy J Cash Career Portfolio
Timothy J Cash Career PortfolioTimothy J Cash Career Portfolio
Timothy J Cash Career PortfolioTimothy Cash
 
Data Centre Design for Canadian Small & Medium Sized Businesses
Data Centre Design for Canadian Small & Medium Sized BusinessesData Centre Design for Canadian Small & Medium Sized Businesses
Data Centre Design for Canadian Small & Medium Sized BusinessesCisco Canada
 
PLNOG14: Service orchestration in provider network, Tail-f - Przemysław Borek
PLNOG14: Service orchestration in provider network, Tail-f - Przemysław BorekPLNOG14: Service orchestration in provider network, Tail-f - Przemysław Borek
PLNOG14: Service orchestration in provider network, Tail-f - Przemysław BorekPROIDEA
 
Design for manufacture techniques for PCB design
Design for manufacture techniques for PCB designDesign for manufacture techniques for PCB design
Design for manufacture techniques for PCB designDevangsingh Sankhala
 

Similar to FreeSWITCH Modules for Asterisk Developers (20)

Five cool ways the JVM can run Apache Spark faster
Five cool ways the JVM can run Apache Spark fasterFive cool ways the JVM can run Apache Spark faster
Five cool ways the JVM can run Apache Spark faster
 
Cell Technology for Graphics and Visualization
Cell Technology for Graphics and VisualizationCell Technology for Graphics and Visualization
Cell Technology for Graphics and Visualization
 
Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...
Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...
Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...
 
Lecture10_RealTimeOperatingSystems.pptx
Lecture10_RealTimeOperatingSystems.pptxLecture10_RealTimeOperatingSystems.pptx
Lecture10_RealTimeOperatingSystems.pptx
 
Spirit20090924poly
Spirit20090924polySpirit20090924poly
Spirit20090924poly
 
hyperlynx_compress.pdf
hyperlynx_compress.pdfhyperlynx_compress.pdf
hyperlynx_compress.pdf
 
Web Template Mechanisms in SOC Verification - DVCon.pdf
Web Template Mechanisms in SOC Verification - DVCon.pdfWeb Template Mechanisms in SOC Verification - DVCon.pdf
Web Template Mechanisms in SOC Verification - DVCon.pdf
 
MIPI DevCon 2016: How MIPI Debug Specifications Help Me to Develop System SW
MIPI DevCon 2016: How MIPI Debug Specifications Help Me to Develop System SWMIPI DevCon 2016: How MIPI Debug Specifications Help Me to Develop System SW
MIPI DevCon 2016: How MIPI Debug Specifications Help Me to Develop System SW
 
infraXstructure Alexis Dacquay, "How to win back visibility into your network...
infraXstructure Alexis Dacquay, "How to win back visibility into your network...infraXstructure Alexis Dacquay, "How to win back visibility into your network...
infraXstructure Alexis Dacquay, "How to win back visibility into your network...
 
Presentation systemc
Presentation systemcPresentation systemc
Presentation systemc
 
L05 parallel
L05 parallelL05 parallel
L05 parallel
 
The Potential Impact of Software Defined Networking SDN on Security
The Potential Impact of Software Defined Networking SDN on SecurityThe Potential Impact of Software Defined Networking SDN on Security
The Potential Impact of Software Defined Networking SDN on Security
 
Digital Design Flow
Digital Design FlowDigital Design Flow
Digital Design Flow
 
Kognitio - an overview
Kognitio - an overviewKognitio - an overview
Kognitio - an overview
 
SOC design
SOC design SOC design
SOC design
 
Timothy J Cash Career Portfolio
Timothy J Cash Career PortfolioTimothy J Cash Career Portfolio
Timothy J Cash Career Portfolio
 
Data Centre Design for Canadian Small & Medium Sized Businesses
Data Centre Design for Canadian Small & Medium Sized BusinessesData Centre Design for Canadian Small & Medium Sized Businesses
Data Centre Design for Canadian Small & Medium Sized Businesses
 
PLNOG14: Service orchestration in provider network, Tail-f - Przemysław Borek
PLNOG14: Service orchestration in provider network, Tail-f - Przemysław BorekPLNOG14: Service orchestration in provider network, Tail-f - Przemysław Borek
PLNOG14: Service orchestration in provider network, Tail-f - Przemysław Borek
 
Design for manufacture techniques for PCB design
Design for manufacture techniques for PCB designDesign for manufacture techniques for PCB design
Design for manufacture techniques for PCB design
 
Active network
Active networkActive network
Active network
 

More from Moises Silva

Interfaces de Scripting para librerias en C
Interfaces de Scripting para librerias en CInterfaces de Scripting para librerias en C
Interfaces de Scripting para librerias en CMoises Silva
 
Vulnerabilidades en Aplicaciones Web PHP
Vulnerabilidades en Aplicaciones Web PHPVulnerabilidades en Aplicaciones Web PHP
Vulnerabilidades en Aplicaciones Web PHPMoises Silva
 
Manejo de Medios en FreeSWITCH
Manejo de Medios en FreeSWITCHManejo de Medios en FreeSWITCH
Manejo de Medios en FreeSWITCHMoises Silva
 
Implementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in AsteriskImplementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in AsteriskMoises Silva
 
FreeSWITCH: Asterisk con Esteroides
FreeSWITCH: Asterisk con EsteroidesFreeSWITCH: Asterisk con Esteroides
FreeSWITCH: Asterisk con EsteroidesMoises Silva
 
Negociacion de Codecs en Asterisk
Negociacion de Codecs en AsteriskNegociacion de Codecs en Asterisk
Negociacion de Codecs en AsteriskMoises Silva
 
Sangoma en el Ecosistema Open Source
Sangoma en el Ecosistema Open SourceSangoma en el Ecosistema Open Source
Sangoma en el Ecosistema Open SourceMoises Silva
 
FreeTDM PRI Passive Recording
FreeTDM PRI Passive RecordingFreeTDM PRI Passive Recording
FreeTDM PRI Passive RecordingMoises Silva
 
Asterisk PRI Passive Call Recording
Asterisk PRI Passive Call RecordingAsterisk PRI Passive Call Recording
Asterisk PRI Passive Call RecordingMoises Silva
 
OpenR2 in Asterisk
OpenR2 in AsteriskOpenR2 in Asterisk
OpenR2 in AsteriskMoises Silva
 

More from Moises Silva (10)

Interfaces de Scripting para librerias en C
Interfaces de Scripting para librerias en CInterfaces de Scripting para librerias en C
Interfaces de Scripting para librerias en C
 
Vulnerabilidades en Aplicaciones Web PHP
Vulnerabilidades en Aplicaciones Web PHPVulnerabilidades en Aplicaciones Web PHP
Vulnerabilidades en Aplicaciones Web PHP
 
Manejo de Medios en FreeSWITCH
Manejo de Medios en FreeSWITCHManejo de Medios en FreeSWITCH
Manejo de Medios en FreeSWITCH
 
Implementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in AsteriskImplementation Lessons using WebRTC in Asterisk
Implementation Lessons using WebRTC in Asterisk
 
FreeSWITCH: Asterisk con Esteroides
FreeSWITCH: Asterisk con EsteroidesFreeSWITCH: Asterisk con Esteroides
FreeSWITCH: Asterisk con Esteroides
 
Negociacion de Codecs en Asterisk
Negociacion de Codecs en AsteriskNegociacion de Codecs en Asterisk
Negociacion de Codecs en Asterisk
 
Sangoma en el Ecosistema Open Source
Sangoma en el Ecosistema Open SourceSangoma en el Ecosistema Open Source
Sangoma en el Ecosistema Open Source
 
FreeTDM PRI Passive Recording
FreeTDM PRI Passive RecordingFreeTDM PRI Passive Recording
FreeTDM PRI Passive Recording
 
Asterisk PRI Passive Call Recording
Asterisk PRI Passive Call RecordingAsterisk PRI Passive Call Recording
Asterisk PRI Passive Call Recording
 
OpenR2 in Asterisk
OpenR2 in AsteriskOpenR2 in Asterisk
OpenR2 in Asterisk
 

Recently uploaded

The Future of Product, by Founder & CEO, Product School
The Future of Product, by Founder & CEO, Product SchoolThe Future of Product, by Founder & CEO, Product School
The Future of Product, by Founder & CEO, Product SchoolProduct School
 
Confoo 2024 Gettings started with OpenAI and data science
Confoo 2024 Gettings started with OpenAI and data scienceConfoo 2024 Gettings started with OpenAI and data science
Confoo 2024 Gettings started with OpenAI and data scienceSusan Ibach
 
"DevOps Practisting Platform on EKS with Karpenter autoscaling", Dmytro Kozhevin
"DevOps Practisting Platform on EKS with Karpenter autoscaling", Dmytro Kozhevin"DevOps Practisting Platform on EKS with Karpenter autoscaling", Dmytro Kozhevin
"DevOps Practisting Platform on EKS with Karpenter autoscaling", Dmytro KozhevinFwdays
 
From Challenger to Champion: How SpiraPlan Outperforms JIRA+Plugins
From Challenger to Champion: How SpiraPlan Outperforms JIRA+PluginsFrom Challenger to Champion: How SpiraPlan Outperforms JIRA+Plugins
From Challenger to Champion: How SpiraPlan Outperforms JIRA+PluginsInflectra
 
"Running Open-Source LLM models on Kubernetes", Volodymyr Tsap
"Running Open-Source LLM models on Kubernetes",  Volodymyr Tsap"Running Open-Source LLM models on Kubernetes",  Volodymyr Tsap
"Running Open-Source LLM models on Kubernetes", Volodymyr TsapFwdays
 
How AI and ChatGPT are changing cybersecurity forever.pptx
How AI and ChatGPT are changing cybersecurity forever.pptxHow AI and ChatGPT are changing cybersecurity forever.pptx
How AI and ChatGPT are changing cybersecurity forever.pptxInfosec
 
Synergy in Leadership and Product Excellence: A Blueprint for Growth by CPO, ...
Synergy in Leadership and Product Excellence: A Blueprint for Growth by CPO, ...Synergy in Leadership and Product Excellence: A Blueprint for Growth by CPO, ...
Synergy in Leadership and Product Excellence: A Blueprint for Growth by CPO, ...Product School
 
Campotel: Telecommunications Infra and Network Builder - Company Profile
Campotel: Telecommunications Infra and Network Builder - Company ProfileCampotel: Telecommunications Infra and Network Builder - Company Profile
Campotel: Telecommunications Infra and Network Builder - Company ProfileCampotelPhilippines
 
AI MODELS USAGE IN FINTECH PRODUCTS: PM APPROACH & BEST PRACTICES by Kasthuri...
AI MODELS USAGE IN FINTECH PRODUCTS: PM APPROACH & BEST PRACTICES by Kasthuri...AI MODELS USAGE IN FINTECH PRODUCTS: PM APPROACH & BEST PRACTICES by Kasthuri...
AI MODELS USAGE IN FINTECH PRODUCTS: PM APPROACH & BEST PRACTICES by Kasthuri...ISPMAIndia
 
Act Like an Owner, Challenge Like a VC by former CPO, Tripadvisor
Act Like an Owner,  Challenge Like a VC by former CPO, TripadvisorAct Like an Owner,  Challenge Like a VC by former CPO, Tripadvisor
Act Like an Owner, Challenge Like a VC by former CPO, TripadvisorProduct School
 
Building Bridges: Merging RPA Processes, UiPath Apps, and Data Service to bu...
Building Bridges:  Merging RPA Processes, UiPath Apps, and Data Service to bu...Building Bridges:  Merging RPA Processes, UiPath Apps, and Data Service to bu...
Building Bridges: Merging RPA Processes, UiPath Apps, and Data Service to bu...DianaGray10
 
"Testing of Helm Charts or There and Back Again", Yura Rochniak
"Testing of Helm Charts or There and Back Again", Yura Rochniak"Testing of Helm Charts or There and Back Again", Yura Rochniak
"Testing of Helm Charts or There and Back Again", Yura RochniakFwdays
 
My Journey towards Artificial Intelligence
My Journey towards Artificial IntelligenceMy Journey towards Artificial Intelligence
My Journey towards Artificial IntelligenceVijayananda Mohire
 
The Art of the Possible with Graph by Dr Jim Webber Neo4j.pptx
The Art of the Possible with Graph by Dr Jim Webber Neo4j.pptxThe Art of the Possible with Graph by Dr Jim Webber Neo4j.pptx
The Art of the Possible with Graph by Dr Jim Webber Neo4j.pptxNeo4j
 
"The Transformative Power of AI and Open Challenges" by Dr. Manish Gupta, Google
"The Transformative Power of AI and Open Challenges" by Dr. Manish Gupta, Google"The Transformative Power of AI and Open Challenges" by Dr. Manish Gupta, Google
"The Transformative Power of AI and Open Challenges" by Dr. Manish Gupta, GoogleISPMAIndia
 
Empowering Net-Zero: Digital Insights and Funding Opportunities for Industria...
Empowering Net-Zero: Digital Insights and Funding Opportunities for Industria...Empowering Net-Zero: Digital Insights and Funding Opportunities for Industria...
Empowering Net-Zero: Digital Insights and Funding Opportunities for Industria...IES VE
 
GraphSummit London Feb 2024 - ABK - Neo4j Product Vision and Roadmap.pptx
GraphSummit London Feb 2024 - ABK - Neo4j Product Vision and Roadmap.pptxGraphSummit London Feb 2024 - ABK - Neo4j Product Vision and Roadmap.pptx
GraphSummit London Feb 2024 - ABK - Neo4j Product Vision and Roadmap.pptxNeo4j
 
National Institute of Standards and Technology (NIST) Cybersecurity Framework...
National Institute of Standards and Technology (NIST) Cybersecurity Framework...National Institute of Standards and Technology (NIST) Cybersecurity Framework...
National Institute of Standards and Technology (NIST) Cybersecurity Framework...MichaelBenis1
 
Utilising Energy Modelling for LCSF and PSDS Funding Applications
Utilising Energy Modelling for LCSF and PSDS Funding ApplicationsUtilising Energy Modelling for LCSF and PSDS Funding Applications
Utilising Energy Modelling for LCSF and PSDS Funding ApplicationsIES VE
 
Unleash the Solace Pub Sub connector | Banaglore MuleSoft Meetup #31
Unleash the Solace Pub Sub connector | Banaglore MuleSoft Meetup #31Unleash the Solace Pub Sub connector | Banaglore MuleSoft Meetup #31
Unleash the Solace Pub Sub connector | Banaglore MuleSoft Meetup #31shyamraj55
 

Recently uploaded (20)

The Future of Product, by Founder & CEO, Product School
The Future of Product, by Founder & CEO, Product SchoolThe Future of Product, by Founder & CEO, Product School
The Future of Product, by Founder & CEO, Product School
 
Confoo 2024 Gettings started with OpenAI and data science
Confoo 2024 Gettings started with OpenAI and data scienceConfoo 2024 Gettings started with OpenAI and data science
Confoo 2024 Gettings started with OpenAI and data science
 
"DevOps Practisting Platform on EKS with Karpenter autoscaling", Dmytro Kozhevin
"DevOps Practisting Platform on EKS with Karpenter autoscaling", Dmytro Kozhevin"DevOps Practisting Platform on EKS with Karpenter autoscaling", Dmytro Kozhevin
"DevOps Practisting Platform on EKS with Karpenter autoscaling", Dmytro Kozhevin
 
From Challenger to Champion: How SpiraPlan Outperforms JIRA+Plugins
From Challenger to Champion: How SpiraPlan Outperforms JIRA+PluginsFrom Challenger to Champion: How SpiraPlan Outperforms JIRA+Plugins
From Challenger to Champion: How SpiraPlan Outperforms JIRA+Plugins
 
"Running Open-Source LLM models on Kubernetes", Volodymyr Tsap
"Running Open-Source LLM models on Kubernetes",  Volodymyr Tsap"Running Open-Source LLM models on Kubernetes",  Volodymyr Tsap
"Running Open-Source LLM models on Kubernetes", Volodymyr Tsap
 
How AI and ChatGPT are changing cybersecurity forever.pptx
How AI and ChatGPT are changing cybersecurity forever.pptxHow AI and ChatGPT are changing cybersecurity forever.pptx
How AI and ChatGPT are changing cybersecurity forever.pptx
 
Synergy in Leadership and Product Excellence: A Blueprint for Growth by CPO, ...
Synergy in Leadership and Product Excellence: A Blueprint for Growth by CPO, ...Synergy in Leadership and Product Excellence: A Blueprint for Growth by CPO, ...
Synergy in Leadership and Product Excellence: A Blueprint for Growth by CPO, ...
 
Campotel: Telecommunications Infra and Network Builder - Company Profile
Campotel: Telecommunications Infra and Network Builder - Company ProfileCampotel: Telecommunications Infra and Network Builder - Company Profile
Campotel: Telecommunications Infra and Network Builder - Company Profile
 
AI MODELS USAGE IN FINTECH PRODUCTS: PM APPROACH & BEST PRACTICES by Kasthuri...
AI MODELS USAGE IN FINTECH PRODUCTS: PM APPROACH & BEST PRACTICES by Kasthuri...AI MODELS USAGE IN FINTECH PRODUCTS: PM APPROACH & BEST PRACTICES by Kasthuri...
AI MODELS USAGE IN FINTECH PRODUCTS: PM APPROACH & BEST PRACTICES by Kasthuri...
 
Act Like an Owner, Challenge Like a VC by former CPO, Tripadvisor
Act Like an Owner,  Challenge Like a VC by former CPO, TripadvisorAct Like an Owner,  Challenge Like a VC by former CPO, Tripadvisor
Act Like an Owner, Challenge Like a VC by former CPO, Tripadvisor
 
Building Bridges: Merging RPA Processes, UiPath Apps, and Data Service to bu...
Building Bridges:  Merging RPA Processes, UiPath Apps, and Data Service to bu...Building Bridges:  Merging RPA Processes, UiPath Apps, and Data Service to bu...
Building Bridges: Merging RPA Processes, UiPath Apps, and Data Service to bu...
 
"Testing of Helm Charts or There and Back Again", Yura Rochniak
"Testing of Helm Charts or There and Back Again", Yura Rochniak"Testing of Helm Charts or There and Back Again", Yura Rochniak
"Testing of Helm Charts or There and Back Again", Yura Rochniak
 
My Journey towards Artificial Intelligence
My Journey towards Artificial IntelligenceMy Journey towards Artificial Intelligence
My Journey towards Artificial Intelligence
 
The Art of the Possible with Graph by Dr Jim Webber Neo4j.pptx
The Art of the Possible with Graph by Dr Jim Webber Neo4j.pptxThe Art of the Possible with Graph by Dr Jim Webber Neo4j.pptx
The Art of the Possible with Graph by Dr Jim Webber Neo4j.pptx
 
"The Transformative Power of AI and Open Challenges" by Dr. Manish Gupta, Google
"The Transformative Power of AI and Open Challenges" by Dr. Manish Gupta, Google"The Transformative Power of AI and Open Challenges" by Dr. Manish Gupta, Google
"The Transformative Power of AI and Open Challenges" by Dr. Manish Gupta, Google
 
Empowering Net-Zero: Digital Insights and Funding Opportunities for Industria...
Empowering Net-Zero: Digital Insights and Funding Opportunities for Industria...Empowering Net-Zero: Digital Insights and Funding Opportunities for Industria...
Empowering Net-Zero: Digital Insights and Funding Opportunities for Industria...
 
GraphSummit London Feb 2024 - ABK - Neo4j Product Vision and Roadmap.pptx
GraphSummit London Feb 2024 - ABK - Neo4j Product Vision and Roadmap.pptxGraphSummit London Feb 2024 - ABK - Neo4j Product Vision and Roadmap.pptx
GraphSummit London Feb 2024 - ABK - Neo4j Product Vision and Roadmap.pptx
 
National Institute of Standards and Technology (NIST) Cybersecurity Framework...
National Institute of Standards and Technology (NIST) Cybersecurity Framework...National Institute of Standards and Technology (NIST) Cybersecurity Framework...
National Institute of Standards and Technology (NIST) Cybersecurity Framework...
 
Utilising Energy Modelling for LCSF and PSDS Funding Applications
Utilising Energy Modelling for LCSF and PSDS Funding ApplicationsUtilising Energy Modelling for LCSF and PSDS Funding Applications
Utilising Energy Modelling for LCSF and PSDS Funding Applications
 
Unleash the Solace Pub Sub connector | Banaglore MuleSoft Meetup #31
Unleash the Solace Pub Sub connector | Banaglore MuleSoft Meetup #31Unleash the Solace Pub Sub connector | Banaglore MuleSoft Meetup #31
Unleash the Solace Pub Sub connector | Banaglore MuleSoft Meetup #31
 

FreeSWITCH Modules for Asterisk Developers

  • 1. FreeSWITCH modules for Asterisk developers. Moises Silva <moy@sangoma.com> Software Developer Sangoma Technologies 05-Aug-09/ 1
  • 2. Agenda • Why Modules? • Module Architecture. • Core Basics. • Module Interfaces. • Application skeleton. • Module Configuration. • Argument parsing. • Interacting with the CLI. • Events and actions. 05-Aug-09 / 2
  • 3. Why modules? • Building blocks. • Extend core capabilities. • Distribution and bug fixing is easier. Nov 25, 2012 / 3
  • 4. Examples of modular architectures • Linux kernel (character devices, block devices, filesystems etc). • PHP, Python and PERL interpreters (extensions). • Apache (loggers, generators, filters, mappers). • FreeSWITCH and Asterisk. 05-Aug-09 / 4
  • 5. Common Approach to Modules • Register interfaces with the core. • The core provides APIs to module writers. • The core uses the module interfaces function pointers. Core APIs Application Module Module interfaces Nov 25, 2012 / 5
  • 6. Core basics • How a call leg is abstracted? Asterisk Incoming call FreeSWITCH 05-Aug-09 / 6
  • 7. Core basics • How a call leg is abstracted? Asterisk struct ast_channel switch_core_session_t FreeSWITCH 05-Aug-09 / 7
  • 8. Core basics • How a call leg is represented? switch_core_session_t - Memory pool - Owner thread FreeSWITCH - I/O event hooks - Endpoint interface - Event and message queues - Codec preferences - Channel - Direction - Event hooks - DTMF queue - Private hash - State and state handlers - Caller profile 05-Aug-09 / 8
  • 9. Core basics • How a call leg is represented? struct ast_channel - No memory pool Asterisk - No owner thread - Just audio hooks - Tech interface - No event or message queues - Codec preferences - Direction as flag AST_FLAG_OUTGOING - No DTMF queue (generic frame queue) - Data stores instead of private hash - No generic state handlers - Extension, context and ast_callerid instead of caller profile. 05-Aug-09 / 9
  • 10. Core basics • What about Asterisk struct ast_frame? • Represents signaling. • Audio. • DTMF. • And more … Incoming leg frames Asterisk Outgoing leg frames Asterisk frames (signaling, audio, dtmf, video, fax) 05-Aug-09 / 10
  • 11. Core basics • FreeSWITCH has switch_frame_t. • switch_frame_t just represent media. • Signaling is handled through switch_core_session_message_t. • DTMF is handled through the DTMF queue. Incoming leg audio Outgoing leg audio Incoming leg dtmf Outgoing leg dtmf FreeSWITCH Incoming leg signaling Outgoing leg signaling Different data structures for signaling, audio, dtmf etc. 05-Aug-09 / 11
  • 12. Core basics • How a two-leg call is handled? Incoming leg Routing Outgoing leg 05-Aug-09 / 12
  • 13. Core basics • Asterisk making a call bridge between SIP and PRI. (monitor thread) SIP: Invite chan_sip - Allocate ast_channel - Set caller data - call ast_pbx_start() (new thread) PBX core ISDN: SETUP ast_request -> ast_call() chan_zap loop extensions.conf calls ast_waitfor() ISDN: CONNECT Dial() application Media ast_bridge_call() PBX core ast_channel_bridge() Exchange 05-Aug-09 / 13
  • 14. Core basics • FreeSWITCH making a call bridge between SIP and PRI. (monitor thread) SIP: Invite mod_sofia - call switch_core_session_request - Set caller profile - call switch_core_session_thread_launch() (new thread) ISDN: SETUP mod_openzap State routing state machine execute state Bridge Application ISDN: CONNECT switch_ivr_originate() (new thread) loop State Handling machine state changes Media loop Exchange Handling state changes 05-Aug-09 / 14
  • 15. Core basics • FreeSWITCH – switch_core_session_t is the call structure. – Each session has its own state machine thread. – You allocate memory using the session memory pool. • Asterisk - struct ast_chan is the call structure. - The initial leg thread is re-used for the outgoing leg. - You allocate memory from the process heap directly. 05-Aug-09 / 15
  • 16. FreeSWITCH Modules and interfaces. • Modules are shared objects or DLL’s. • The core loads the shared object on startup or on demand. • You must register your interfaces on module load. • Interface types: – Endpoints (switch_endpoint_interface_t -> ast_channel_tech) – Codec (switch_codec_interface_t -> ast_translator) – Files (switch_file_interface_t -> ast_format) – Application (switch_application_interface_t -> ast_app) – API (switch_api_interface_t -> no exact match) • More interfaces defined in src/include/switch_module_interfaces.h. 05-Aug-09 / 16
  • 17. Asterisk application skeleton. • Fundamental steps. – static int app_exec(struct ast_channel *c, const char *data); – Define static int load_module() and static int unload_module(); – AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, “Desc”); – Call ast_register_application_xml() on in load_module() to register app_exec • Your app_exec function will be called if the app is called from the dial plan. • Call ast_unregister_application in unload_module(). • Module loading and registering relies on gcc constructor-destructor attributes. 05-Aug-09 / 17
  • 18. FreeSWITCH application skeleton. • Fundamental steps. – SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_dummy_shutdo wn) – SWITCH_MODULE_RUNTIME_FUNCTION(mod_dummy_run) – SWITCH_MODULE_LOAD_FUNCTION(mod_dummy_load) – SWITCH_MODULE_DEFINITION(mod_dummy, mod_dummy_shutdown, mod_dummy_run, mod_dummy_load) • This is true for all modules, regardless of the exported interfaces. • The runtime routine is called once all modules have been loaded. 05-Aug-09 / 18
  • 19. FreeSWITCH application skeleton. • Define your main application function. – SWITCH_STANDARD_APP(dummy_function){ // arguments received are: // switch_core_session_t *session, const char *data } • Register your application interface. – SWITCH_MODULE_LOAD_FUNCTION(dummy_load) { …. switch_application_interface_t *app_interface; *module_interface = switch_loadable_module_create_interface(pool, modname); SWITCH_ADD_APP(app_interface, “dummy”, “dummy app”, “” ); …} 05-Aug-09 / 19
  • 20. FreeSWITCH application skeleton. • Load function prototype: – switch_status_t dummy_load(switch_loadable_module_interface_t **module_interface, switch_memory_pool_t *pool); • The module_interface argument is the place holder for all the possible interfaces your module may implement (endpoint, codec, application, api etc). • Your module may implement as many interfaces as you want. • Runtime and shutdown routines have no arguments. • SWITCH_MODULE_DEFINITION will declare static const char modname[] and the module function table. • Each module has a memory pool, use it for your allocations. 05-Aug-09 / 20
  • 21. Asterisk module configuration. • Asterisk has a configuration API abstract from the backend engine. • struct ast_config is your handle to the configuration. • To get your handle you call ast_config_load(). • You then use some functions to retrieve the configuration values: – const char *ast_variable_retrieve(struct ast_config *c, char *category, char *variable); – char *ast_category_browse(struct ast_config *c, const char *prev) – ast_variable_browse(struct ast_config *c, const char *category) 05-Aug-09 / 21
  • 22. Asterisk module configuration. • Assuming we have an application configuration like this: [section] parameter-x1=123 parameter-x2=456 05-Aug-09 / 22
  • 24. FreeSWITCH module configuration. • FreeSWITCH configuration is composed of a big chunk of XML • An XML configuration API is already there for you to use. • For simple things, no much difference than asterisk config • XML allows more advanced configuration setup. • Simple usage guide lines: – Use switch_xml_open_cfg() to get a handle to the configuration chunk you want. – Get the section (equivalent to asterisk category) through switch_xml_child() – Retrieve variable values through switch_xml_attr_soft 05-Aug-09 / 24
  • 25. FreeSWITCH module configuration. • Assuming we have an application configuration like this: <configuration name=”myconf.conf” description=“test config”> <section> <parameter name=“parameter-x1” value=“123”/> <parameter name=“parameter-x2” value=“456”/> </section> </configuration> 05-Aug-09 / 25
  • 27. Application return value. • Both FreeSWITCH and Asterisk applications return values to the user through dial plan variables. • Asterisk uses pbx_builtin_setvar_helper(chan, “var”, “value”); • FreeSWITCH uses switch_channel_set_variable(chan, ”var”, “val”); 05-Aug-09 / 27
  • 28. Interacting with the Asterisk CLI. • Asterisk has a very flexible and dynamic CLI. • Any Asterisk sub-system may register CLI entries. • Registering CLI entires involves: – Defining your CLI handlers static char *handler(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a); – Create an array of the CLI entries (Use the helper macro AST_CLI_ENTRY). – Call ast_cli_register_multiple to register the array with the Asterisk core. – Handle CLI requests like CLI_INIT, CLI_GENERATE and CLI_HANDLER. 05-Aug-09 / 28
  • 29. Interacting with the Asterisk CLI. 05-Aug-09 / 29
  • 30. Interacting with the FreeSWITCH CLI. • CLI commands exist as APIs. • An added benefit is availability of the function from other interfaces (ie mod_event_socket etc). • In general, your API can be used via switch_api_execute(). • No dynamic completion yet. • Simple usage: – Define your API function using SWITCH_STANDARD_API macro. – Add your API interface to your module interface using SWITCH_ADD_API. – Add command completion using switch_console_set_complete. 05-Aug-09 / 30
  • 31. Interacting with the FreeSWITCH CLI. 05-Aug-09 / 31
  • 32. Asterisk events and actions. • The Asterisk manager is built-in. • The module needlessly has to care about event protocol formatting through rn. • The manager is, by definition, tied to the TCP event protocol implementation. • Every new output format for events has to be coded right into the core. • manager_custom_hook helps, but not quite robust solution. • Basically you can do 2 things with the manager API: – Register and handle manager actions. – Send manager events. 05-Aug-09 / 32
  • 34. Launching Asterisk events. Manager session or HTTP session enqueue event Read event queue Write to session 05-Aug-09 / 34
  • 35. FreeSWITCH events. • Completely abstract API to the event sub-system is provided. • The core fires built-in events and applications fire custom events. • Modules can reserve and fire custom events. • mod_event_socket is a module that does what the Asterisk manager does. • Different priorities: – SWITCH_PRIORITY_NORMAL – SWITCH_PRIORITY_LOW – SWITCH_PRIORITY_HIGH 05-Aug-09 / 35
  • 36. Firing FreeSWITCH events. 05-Aug-09 / 36
  • 37. Listening for FreeSWITCH events. 05-Aug-09 / 37
  • 38. FreeSWITCH Actions???. • No need for actions, you already registered APIs. • The APIs may be executed through mod_event_socket. • APIs are the closest thing to manager actions that FreeSWITCH has. • APIs work both as CLI commands and “manager actions”, but are not limited to just that. mod_event_socket switch_api_execute() Your module FreeSWITCH CLI 05-Aug-09 / 38
  • 39. Conclusion. • We are in a race for scalability, feature set and adoption. • FreeSWITCH is in need of more features and applications on top of it. • Asterisk is in need of more core improvements to be a better media and telephony engine. • Open source is the clear winner of the competition we are seeing between this two open source telephony engines. 05-Aug-09 / 39
  • 40. References - src/include/switch_types.h - src/include/switch_loadable_module.h - src/include/switch_channel.h - src/include/switch_xml_config.h - http://docs.freeswitch.org/ - http://wiki.freeswitch.org/wiki/Core_Outline_of_FreeSWITCH Nov 25, 2012 / 40
  • 41. Thank You! Questions and Comments? Contact e-mail: moy@sangoma.com Presentation URL: http://www.moythreads.com/congresos/cluecon2009/ Nov 25, 2012 / 41