Call Home is an innovative system that enables network functions virtualization (NFV) and software-defined networking (SDN) in situations where virtual customer premises equipment (vCPE) is protected by a cable modem or a firewall. In this presentation, ADVA Optical Networking’s engineers outlined this new technique and explained how it makes secure NFV/SDN deployment possible when a NETCONF client is otherwise unable to initiate an SSH connection directly to the NETCONF server.
Rajendra Nagabhushan and Vikram Darsi discussed how the IETF draft for NETCONF Call Home Using SSH can be implemented as an OpenDaylight feature. They demonstrated how the technology can be applied in a real-world use-case and outlined how an ADVA Optical Networking product is being developed ahead of its 2017 release.
Homer - Workshop at Kamailio World 2017Giacomo Vacca
Homer is an Open Source tool for real-time analysis and monitoring of VoIP and RTC platforms. It supports all the major OSS voice platforms, it's modular, easy to install and scales to carrier-grade infrastructures. Homer goes beyond collecting and correlating signalling and logs, and can also capture RTCP reports, QoS reports, and other events. Through an ElasticSearch endpoint, Homer supports BigData analysis of traffic.
This workshop focuses on the deployment of a multi-node Homer framework with various approaches: bash installers, Docker containers, Puppet.
We'll see how to configure Kamailio, FreeSWITCH (including the ESL interface), RTPEngine, Janus gateway (Events API), to collect signalling, RTCP reports, app-specific events and have them correlated and presented in a user-friendly GUI.
For advanced users, we'll present the installation of captagent, the standalone capture agent, hepgen.js to generate test traffic, and a Wireshark dissector to have full visibility of data flows.
Deep Dive into Keystone Tokens and Lessons LearnedPriti Desai
Keystone supports four different types of tokens, UUID, PKI, PKIZ, and Fernet. Let’s take a deep dive into:
Understanding token formats
Pros and Cons of each format in Production
Performance across multiple data centers
Token revocation workflow for each of the formats
Horizon usage of the different token types
We previously deployed UUID and PKI in Production and are now moving towards the latest format, Fernet. We would like to share our lessons learned with different formats and help you decide on which format is suitable for your cloud.
Cluecon 2015
Use of external controller applications to fetch the next routes and let Kamailio handle the SIP layer.
Example with Node.js external application and evapi+rtjson modules in Kamailio
OSv Unikernel — Optimizing Guest OS to Run Stateless and Serverless Apps in t...ScyllaDB
Unikernels have been demonstrated to deliver excellent performance in terms of throughput and latency, while providing high isolation. However they have also been shown to underperform in some types of workloads when compared to a generic OS like Linux. In this presentation, we demonstrate that certain types of workloads - web servers, microservices, and other stateless and/or serverless apps - can greatly benefit from OSv optimized networking stack and other features. We describe number of experiments where OSv outperforms Linux guest: most notably we note 1.6 throughput (req/s) and 0.6 latency improvement (at p99 percentile) when running nginx and 1.7 throughput (req/s) and 0.6 latency improvement (at p99 percentile) when running simple microservice implemented in Golang.
We also show that OSv' small kernel, low boot time and memory consumption allow for very high density when running server-less workloads. The experiment described in this presentation shows we can boot 1,800 OSv microVMs per second on AWS c5n.metal machine with 72 CPUs (25 boots/sec on single CPU) with guest boot time recorded as low as 8.98ms at p50 and 31.49ms at p99 percentile respectively.
Lastly we also demonstrate how to automate the build process of the OSv kernel tailored exactly to the specific app and/or VMM so that only the code and symbols needed are part of the kernel and nothing more. OSv is an open source project and can be found at https://github.com/cloudius-systems/osv.
Tracing Summit 2014, Düsseldorf. What can Linux learn from DTrace: what went well, and what didn't go well, on its path to success? This talk will discuss not just the DTrace software, but lessons from the marketing and adoption of a system tracer, and an inside look at how DTrace was really deployed and used in production environments. It will also cover ongoing problems with DTrace, and how Linux may surpass them and continue to advance the field of system tracing. A world expert and core contributor to DTrace, Brendan now works at Netflix on Linux performance with the various Linux tracers (ftrace, perf_events, eBPF, SystemTap, ktap, sysdig, LTTng, and the DTrace Linux ports), and will summarize his experiences and suggestions for improvements. He has also been contributing to various tracers: recently promoting ftrace and perf_events adoption through articles and front-end scripts, and testing eBPF.
Scaling FreeSWITCH to high cps and number of concurrent calls.
You'll learn about how the FreeSWITCH internals work and how to tweak them to improve different call scenarios. You'll learn about OS and environment changes that can help to remove bottlenecks and ensure audio quality.
"Extended" or "Stretched" Oracle RAC has been available as a concept for a while. Oracle RAC 12c Release 2 introduces an Oracle Extended Cluster configuration, in which the cluster understands the concept of sites and extended setups. This knowledge is used to more efficiently manage "Extended Oracle RAC", whether the nodes are 0.1 mile or 10 miles apart.
The presentation was last updated on August 7th 2017 to add a reference to the new MAA White Paper: "Installing Oracle Extended Clusters on Exadata Database Machine" - http://www.oracle.com/technetwork/database/availability/maa-extclusters-installguide-3748227.pdf and to correct some minor details.
Five cool ways the JVM can run Apache Spark fasterTim Ellison
The IBM JVM runs Apache Spark fast! This talk explains some of the findings and optimizations from our experience of running Spark workloads.
The talk was originally presented at the SparkEU Summit 2015 in Amsterdam.
Call Home is an innovative system that enables network functions virtualization (NFV) and software-defined networking (SDN) in situations where virtual customer premises equipment (vCPE) is protected by a cable modem or a firewall. In this presentation, ADVA Optical Networking’s engineers outlined this new technique and explained how it makes secure NFV/SDN deployment possible when a NETCONF client is otherwise unable to initiate an SSH connection directly to the NETCONF server.
Rajendra Nagabhushan and Vikram Darsi discussed how the IETF draft for NETCONF Call Home Using SSH can be implemented as an OpenDaylight feature. They demonstrated how the technology can be applied in a real-world use-case and outlined how an ADVA Optical Networking product is being developed ahead of its 2017 release.
Homer - Workshop at Kamailio World 2017Giacomo Vacca
Homer is an Open Source tool for real-time analysis and monitoring of VoIP and RTC platforms. It supports all the major OSS voice platforms, it's modular, easy to install and scales to carrier-grade infrastructures. Homer goes beyond collecting and correlating signalling and logs, and can also capture RTCP reports, QoS reports, and other events. Through an ElasticSearch endpoint, Homer supports BigData analysis of traffic.
This workshop focuses on the deployment of a multi-node Homer framework with various approaches: bash installers, Docker containers, Puppet.
We'll see how to configure Kamailio, FreeSWITCH (including the ESL interface), RTPEngine, Janus gateway (Events API), to collect signalling, RTCP reports, app-specific events and have them correlated and presented in a user-friendly GUI.
For advanced users, we'll present the installation of captagent, the standalone capture agent, hepgen.js to generate test traffic, and a Wireshark dissector to have full visibility of data flows.
Deep Dive into Keystone Tokens and Lessons LearnedPriti Desai
Keystone supports four different types of tokens, UUID, PKI, PKIZ, and Fernet. Let’s take a deep dive into:
Understanding token formats
Pros and Cons of each format in Production
Performance across multiple data centers
Token revocation workflow for each of the formats
Horizon usage of the different token types
We previously deployed UUID and PKI in Production and are now moving towards the latest format, Fernet. We would like to share our lessons learned with different formats and help you decide on which format is suitable for your cloud.
Cluecon 2015
Use of external controller applications to fetch the next routes and let Kamailio handle the SIP layer.
Example with Node.js external application and evapi+rtjson modules in Kamailio
OSv Unikernel — Optimizing Guest OS to Run Stateless and Serverless Apps in t...ScyllaDB
Unikernels have been demonstrated to deliver excellent performance in terms of throughput and latency, while providing high isolation. However they have also been shown to underperform in some types of workloads when compared to a generic OS like Linux. In this presentation, we demonstrate that certain types of workloads - web servers, microservices, and other stateless and/or serverless apps - can greatly benefit from OSv optimized networking stack and other features. We describe number of experiments where OSv outperforms Linux guest: most notably we note 1.6 throughput (req/s) and 0.6 latency improvement (at p99 percentile) when running nginx and 1.7 throughput (req/s) and 0.6 latency improvement (at p99 percentile) when running simple microservice implemented in Golang.
We also show that OSv' small kernel, low boot time and memory consumption allow for very high density when running server-less workloads. The experiment described in this presentation shows we can boot 1,800 OSv microVMs per second on AWS c5n.metal machine with 72 CPUs (25 boots/sec on single CPU) with guest boot time recorded as low as 8.98ms at p50 and 31.49ms at p99 percentile respectively.
Lastly we also demonstrate how to automate the build process of the OSv kernel tailored exactly to the specific app and/or VMM so that only the code and symbols needed are part of the kernel and nothing more. OSv is an open source project and can be found at https://github.com/cloudius-systems/osv.
Tracing Summit 2014, Düsseldorf. What can Linux learn from DTrace: what went well, and what didn't go well, on its path to success? This talk will discuss not just the DTrace software, but lessons from the marketing and adoption of a system tracer, and an inside look at how DTrace was really deployed and used in production environments. It will also cover ongoing problems with DTrace, and how Linux may surpass them and continue to advance the field of system tracing. A world expert and core contributor to DTrace, Brendan now works at Netflix on Linux performance with the various Linux tracers (ftrace, perf_events, eBPF, SystemTap, ktap, sysdig, LTTng, and the DTrace Linux ports), and will summarize his experiences and suggestions for improvements. He has also been contributing to various tracers: recently promoting ftrace and perf_events adoption through articles and front-end scripts, and testing eBPF.
Scaling FreeSWITCH to high cps and number of concurrent calls.
You'll learn about how the FreeSWITCH internals work and how to tweak them to improve different call scenarios. You'll learn about OS and environment changes that can help to remove bottlenecks and ensure audio quality.
"Extended" or "Stretched" Oracle RAC has been available as a concept for a while. Oracle RAC 12c Release 2 introduces an Oracle Extended Cluster configuration, in which the cluster understands the concept of sites and extended setups. This knowledge is used to more efficiently manage "Extended Oracle RAC", whether the nodes are 0.1 mile or 10 miles apart.
The presentation was last updated on August 7th 2017 to add a reference to the new MAA White Paper: "Installing Oracle Extended Clusters on Exadata Database Machine" - http://www.oracle.com/technetwork/database/availability/maa-extclusters-installguide-3748227.pdf and to correct some minor details.
Five cool ways the JVM can run Apache Spark fasterTim Ellison
The IBM JVM runs Apache Spark fast! This talk explains some of the findings and optimizations from our experience of running Spark workloads.
The talk was originally presented at the SparkEU Summit 2015 in Amsterdam.
Embree Ray Tracing Kernels | Overview and New Features | SIGGRAPH 2018 Tech S...Intel® Software
Overview of the new Embree 3 ray tracing framework, including how to use the new API, supported geometry types, and ray intersection methods. Includes a look at new features like normal oriented curves, vertex grids, etc.
MIPI DevCon 2016: How MIPI Debug Specifications Help Me to Develop System SWMIPI Alliance
In this presentation, Norbert Schulz of Intel Corporation will discuss good system debug practices and different MIPI standards for creating state-of-the-art software debug solutions. Many software designers still arbitrarily insert text messages into their code to find errors in the same way as their predecessors did 40 years ago. With the Narrow Interface for Debug and Test (MIPI NIDnT), System Trace Protocol (MIPI STP) and System SW-Trace (SyS-T), a user can analyze IoT, automotive or mobile device software behavior in an easy, low-invasive manner through debug or functional ports, such as a USB Type-C™ connector.
The Potential Impact of Software Defined Networking SDN on SecurityBrent Salisbury
The Potential Impact of Software Defined Networking SDN on Security. The video of the presentation is at http://networkstatic.net/the-potential-impact-of-software-defined-networking-sdn-on-security/ by Brent Salisbury. It is the first cut so a lot is not in the deck yet on the example use case front.
PLNOG14: Service orchestration in provider network, Tail-f - Przemysław BorekPROIDEA
Przemysław Borek - Cisco Systems
Language: English
Service orchestration in provider network, Tail-f
Register to the next PLNOG edition today: krakow.plnog.pl
This presentation discusses design of PCBs for cutting-edge high-speed circuits in a fast-paced industrial environment. The use of BXL and IBIS models is presented for faster design of PCBs along with active BOM generation.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
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
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
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
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
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