About

About.Version-Overview-3-4-0 History

Hide minor edits - Show changes to markup

May 17, 2023, at 04:16 PM by 109.99.227.30 -
Changed lines 61-62 from:
to:


So setups like "send all longs to text/plain syslog, but ones with level above ERR to be sent in CEE format vai Kafka" are now possible. Alos json formatted logs to syslog? Not a problem.

Changed lines 68-69 from:

More Media relaying

to:

More friendly flags for script functions

The ugly and unfriendly hexa flags were replaces with token based flags in CSV format. Functions like nat_uac_test() are now "readable - instead of nat_uac_test("7"), you have now nat_uac_test("private-contact,diff-ip-src-via,private-via") - nicer, isn't it?
Several function from nathelper, TM or b2b module got this kind of improvement.

Delay in deleting dialogs

This was a feature that have being asked for years - the ability of the dialog to keep in memory the terminated dialogs for a while, before trashing them. Why? There are cases where late in-dialog signalling happens, maybe cross BYE-ing or similar case - so, even if the dialog was terminated, OpenSIPS should still have the ability to pass the in-dialog requests between the parties - and if using topo-hiding with dialog, you cannot do this without still having the dialog data in memory .

SIP probing / pinging

The way the probing is done in the Dynamic Routing, Dispatcher and Load-Balancer modules was improved, so the large number of destinations to be probed will have 0 impact on the routing data (using or reloading it) - this is especially valid when talking about SIP over TCP, with delays and timeouts :(.

Route-reload re-work

Full re-engineering of how references (from outside the script) to script routes are kept by modules (modparams or function params) in order to solve some systemic issues of the existing reload_routes MI command. The new version is able to cope with any changes in the routes (their order, adding, removing, their content). This applies to the Timer Routes too which may be also fully altered.

Blacklists improvements

The blacklist support provided by core is now more flexible, to allow you, from script level, to dynamically manage the lists.


All

There are many many other changes with this release, and you can read about all of them in this detailed listing.

May 17, 2023, at 03:55 PM by 109.99.227.30 -
Changed lines 56-57 from:
to:

Somehow a last minute addition to OpenSIPS 3.4 is the enhancement on the OpenSIPS logging abilities. If so far we had text plain logging to syslog or stderr, the 3.4 brings in some radical changes :

  • the produced logs may be consumed via vary "backend"s , like syslog, stderr, events and other in the future (like RMQ, Kafka, flatstore)
  • the logs may be consumed by multiple backends in the same time, each backend having some verbosity filter (like to consume logs only above a certain log level)
  • the logs may be formatted (whatever the backend/consumer is) as plain/text, json or CEE specific.

New core parameters were added to enable vary logging backends; also new MI commands allow you at runtime to mute/unmute a certain logging backend/consumer.

Changed line 66 from:

to:

May 17, 2023, at 03:44 PM by 109.99.227.30 -
Changed lines 35-37 from:

What we plan here is to go even further with more scenarios to be benchmark'ed, like presence related features or how re-transmissions impacts the overall OpenSIPS performance.\\

to:

What we plan here is to go even further with more scenarios to be benchmark'ed, like presence related features or how re-transmissions impacts the overall OpenSIPS performance.

Changed line 45 from:

The 3.4 released focused on addressing some flaws and limitations in the core B2B mechanisms, limitations that needed to be addressed. The number one was here to fix the way a SIP entity from an ongoing B2B session is re-bridged with a new participant. Previous version had issues with delayed ACK'ed leading to call dropping, or issues with no media during a call bridge ringing.

to:

The 3.4 released focused on addressing some flaws and limitations in the core B2B mechanisms, limitations that needed to be addressed. The number one was here to fix the way a SIP entity from an ongoing B2B session is re-bridged with a new participant. Previous version had issues with delayed ACK'ed leading to call dropping, or issues with no media during a call bridge ringing. Another issue that was addressed in 3.4 the limitation of the logic of the initial bridging in order to allow easy (as B2B logic level) handling of failover (if callee does not answer) - previously this is not supported, if initial callee did not answer, the whole call died.\\

Changed lines 49-52 from:
to:

While OpenSIPS is mainly a SIP proxy, the SIP Back-2-Back capabilities have been supported for a while. But recently we felt the need for a “end user agent” support in OpenSIPS. Meaning the ability to create and control a Server / Client SIP User Agent, doing all the SIP magic (transactional and dialog level) transparently for you.
So OpenSIPS 3.4 now offers the ability to act as a mixed (SIP and non-SIP) back-to-back, with a User-Agent entity (server or client) on one side and some custom logic on the other side, API controlling what how the SIP side should behave.
This feature opens a lot of door for external integration of OpenSIPS or even for building external logic for Application Servers, while having OpenSIPS as the SIP stack.
More on how this work, with descriptions, scenarios being explained and schematics are presented by this blog post.

May 17, 2023, at 03:35 PM by 109.99.227.30 -
Changed lines 12-14 from:


---

to:

Added line 38:

Added line 51:

Added lines 54-55:

May 17, 2023, at 03:34 PM by 109.99.227.30 -
Changed line 4 from:
to:

https://cdn.fcw.com/media/img/cd/2021/12/12/consolidate_puzzle/860x394.jpg

Changed line 22 from:

How did we address this? By creating SIPssert - this is a conformance testing framework that provides various instruments for building and running conformity tests for VoIP-based platforms. It provides a very simple but generic way of provisioning tests for various types of components and scenarios within a system, orchestrate their execution and provide easy means of troubleshooting in case of failure. Its goal is to ensure that OpenSIPS, as well as the other components within a VoIP system perform correctly as a whole by running a set of tests (consisting of all its steps: initialization/provisioning, running the components, testing and finally cleanup) and validating they behave properly.\\

to:

How did we address this? By creating SIPssert - this is a conformance testing framework that provides various instruments for building and running conformity tests for VoIP-based platforms. It provides a very simple but generic way of provisioning tests for various types of components and scenarios within a system, orchestrate their execution and provide easy means of troubleshooting in case of failure. Its goal is to ensure that OpenSIPS, as well as the other components within a VoIP system perform correctly as a whole by running a set of tests (consisting of all its steps: initialization/provisioning, running the components, testing and finally cleanup) and validating they behave properly.\\

Changed line 32 from:

The end results are that we do have now some numbers for the processing capacity of OpenSIPS, we do better understand the performance degradation due to configuration complexity and we do have a certainty that no bootleneck are deep hidden in the OpenSIPS code. Not to mention a very important aspect of these tests - some bugs were found and fixed, and some code got optimized.

to:

The end results are that we do have now some numbers for the processing capacity of OpenSIPS, we do better understand the performance degradation due to configuration complexity and we do have a certainty that no skeletons are deep hidden in the OpenSIPS code. Not to mention a very important aspect of these tests - some bugs were found and fixed, and some code got optimized.

May 17, 2023, at 03:31 PM by 109.99.227.30 -
Changed lines 13-14 from:

to:

---

Testing

The testing, in vary ways, was an important component of the 3.4 release. This was a bit of an overdue topic for OpenSIPS, so here the decision to address it. The goal here was to ensure that OpenSIPs works correctly and performs as fast as expected. For each type of test (performance and conformity) we worked out the full spectrum, from having the right tools in place, up to the methodologies and mechanisms to ensure a continuous and automatic process of testing.

Conformity testing

There are dozens of functionalities (registration, authentication, call routing, accounting, dialog, b2b and others), complex functionalities, which often inter-operate -- they may depend on each other. So even the smallest changes or extensions in one part of the code may impact unrelated functionalities in unexpected ways.
How did we address this? By creating SIPssert - this is a conformance testing framework that provides various instruments for building and running conformity tests for VoIP-based platforms. It provides a very simple but generic way of provisioning tests for various types of components and scenarios within a system, orchestrate their execution and provide easy means of troubleshooting in case of failure. Its goal is to ensure that OpenSIPS, as well as the other components within a VoIP system perform correctly as a whole by running a set of tests (consisting of all its steps: initialization/provisioning, running the components, testing and finally cleanup) and validating they behave properly.
There is here a very detailed introduction of the SIPssert testing engine, but also a documentation of the steps we did so far into using SIPssert for testing OpenSIPS.
We do expect here, with the contribution of the community, to build a quite large and covering set of tests for OpenSIPS.

Performance testing

The performance testing had two goals in mind :

  1. get some benchmark numbers, as throughput
  2. identify potential bottlenecks in the code

So we build a testing environment and start creating incremental testes with different configurations, while measuring the capacity (as calls per second) and collecting profiling data. The end results are that we do have now some numbers for the processing capacity of OpenSIPS, we do better understand the performance degradation due to configuration complexity and we do have a certainty that no bootleneck are deep hidden in the OpenSIPS code. Not to mention a very important aspect of these tests - some bugs were found and fixed, and some code got optimized. A comprehensive description of the results, their interpretation and conclusions are described in a dedicated blog post.
The information on the testing setup, the configurations and scripts are all available, so anyone can use them in order to do his own testing.
What we plan here is to go even further with more scenarios to be benchmark'ed, like presence related features or how re-transmissions impacts the overall OpenSIPS performance.\\

Changed lines 40-46 from:

SIPssert testing engine

Performance and profiling testing

to:

The B2B capabilities in OpenSIPS got a more and more attention lately, so OpenSIPS 3.4 got some significant work in the area.

B2B bridging

The 3.4 released focused on addressing some flaws and limitations in the core B2B mechanisms, limitations that needed to be addressed. The number one was here to fix the way a SIP entity from an ongoing B2B session is re-bridged with a new participant. Previous version had issues with delayed ACK'ed leading to call dropping, or issues with no media during a call bridge ringing. The detailed explanation of the issues, along with the solutions to fix them, are covered by this blog post.

API driven SIP User-Agent

May 17, 2023, at 01:29 PM by 109.99.227.30 -
Changed lines 8-9 from:

https://blogopensips.files.wordpress.com/2021/12/opensips-3.4-im.jpg The instant messaging is evolving and gaining more and more importance. This happens in both worlds of VoIP/ITSP and IMS/MNO/MVNOs - and the overlapping and mixing of these worlds in increasing each year. The OpenSIPS 3.4 is to address more, in depth, the topic of Instant Messaging, in the context of SIP. And this is done through two major perspectives: from the Unified Communication perspective, by aligning IM with the voice and presence capabilities in OpenSIPS, and from the IMS perspective, mainly as support/integration with RCS (Rich Communication Services).

to:

Various topics were addressed by the past releases, but most of the work with regards to each topic was mainly covered within a single release, so limited in terms of allocated resources (time and man-power). And some of these past topics are actually wider than what we managed to deliver. This is why the OpenSIPS 3.4 addressed the consolidation of various past topics, to complete or even expand them. But one of the most important sides of this consolidation process is the testing of OpenSIPS, from the performance and conformity perspective. This testing was a long overdue task that definitely needs to be addressed.

Deleted lines 12-14:

Learn more from this blog post about the OpenSIPS 3.4's vision on Instant Messaging in the IMS and Unified Communication ecosystem
\\

Changed lines 15-26 from:

Messaging sessions or MSRP

Clustering engine

Unified communication

IMS

Status Report support

TCP boost

to:

B2B enhancements

SIPssert testing engine

Performance and profiling testing

Logging

Miscellaneous but important

May 18, 2022, at 04:05 PM by 109.99.227.30 -
Added lines 8-29:

https://blogopensips.files.wordpress.com/2021/12/opensips-3.4-im.jpg The instant messaging is evolving and gaining more and more importance. This happens in both worlds of VoIP/ITSP and IMS/MNO/MVNOs - and the overlapping and mixing of these worlds in increasing each year. The OpenSIPS 3.4 is to address more, in depth, the topic of Instant Messaging, in the context of SIP. And this is done through two major perspectives: from the Unified Communication perspective, by aligning IM with the voice and presence capabilities in OpenSIPS, and from the IMS perspective, mainly as support/integration with RCS (Rich Communication Services).

Learn more from this blog post about the OpenSIPS 3.4's vision on Instant Messaging in the IMS and Unified Communication ecosystem

----

Messaging sessions or MSRP

Clustering engine

Unified communication

IMS

Status Report support

TCP boost

More Media relaying

May 18, 2022, at 03:51 PM by 109.99.227.30 -
December 19, 2019, at 07:40 PM by 109.99.227.30 -
Deleted lines 7-93:

https://blogopensips.files.wordpress.com/2019/12/opensips-3.4-crafting.jpg Routing calls and handling large volume of traffic is not a challenge anymore for OpenSIPS. The upcoming 3.4 release will focus on complex call crafting, basically on increasing OpenSIPS's ability to create and handle complex calling scenarios where multiple SIP calls are mixed and able to interact. Or shortly said, the 3.4 release will address the Class 5 specific calling features and how to control such calling features via APIs.

As usual, all the OpenSIPS major releases are in depth presented during the OpenSIPS Summit yearly events. So, the 3.4 release is the star of OpenSIPS Summit in Amsterdam, May 2020.


Class 5 calling ingredients

Without actually using a Back2Back model, but simply operating with calls (dialogs, UACs or UASs), many complex class 5 calling (and call mixing) scenarios may be scripted.

Calling API

A new OpenSIPS module, placed on top of dialog module, will allow remote control over the calls going through OpenSIPS. The module will expose a simplified set of commands (API like) for setting up new calls, for answering and terminating calls, for transferring or putting on-hold calls - all these without interacting with the end-devices, but triggering and handling the action only from the OpenSIPS (as proxy) level.

Call mixing

Another new OpenSIPS module, that is able to manipulate calls/dialogs going through OpenSIPS, along with UAC/UAS dialogs (call originated or terminated into OpenSIPS), with the sole propose of mixing the RTP media between these multiple flows. The idea is to make possible the injection of streams of media from / to proxied calls, with the help of auxiliary calls initiated by OpenSIPS. Typical example is to play media within an existing call/dialog with nothing more than simple re-INVITEs - OpenSIPS will initial a new sip call to a media server, in order to get the RTP stream for the playback and it will push it into the proxied call by triggering in-dialog re-INVITEs.

Per-call hooks

As we already have for transactions, the dialog module will allow the script writer to set, in a per-dialog fashion, script routes to be triggered by various dialog events. Similar to t_on_failure(route), you can do dlg_on_timeout(route) to have a route called when the dialog lifetime is exceed. In the route, you may decide to extend the lifetime, to terminate the call or do any other logging. We can foresen dlg_on_answer(route), dlg_on_terminate(route)' (and more) triggers, which will give a better interaction and control over the ongoing calls.

SDP topology hiding

Due to the specificity of class 5 scenarios, there is a real need to completely decouple the SDP's (not only from IP/port perspective) from the caller and callee side, like hiding the originator or overwriting the session name and version.

DTMF support

For both RTProxy and RTPEngine, OpenSIPS will be able to report to the OpenSIPS script the DTMF events sampled from the passing RTP. This will make possible the implementation of simple IVRs and/or authentication via DTMF with nothing more than OpenSIPS and the media relay.

Extended BLF support

In Class 5 services, BLF is an important feature. Besides working out clustering support for BLF, an important task is reworking the BLF implementation to be call-branch aware, to be able to properly report the call events in parallel calling or call hunting scenarios.

Dialog module enhancements

We are looking at a good set of additions for the dialog module, like:

  • improve the way of correlating multiple dialogs, and also to exchange data between calls (like accessing data specific to a call from a totally different call)
  • sending in-dialog requests, crafted from script level
  • better support for UAC or UAS like dialogs (not only proxy like)

Back-to-back support

The existing B2B implementation in OpenSIPS has some limitations, so we are looking to overcome via some major rework here.

Script driven B2B

Instead of using the XML scenario to drive the B2B logic (mixing between the calls), we want to use the OpenSIPS scripting for this purpose. This will eliminate all the limitations of the XML language (logic and action) and it will tremendously increase the level of integration of the B2B engine with the rest of the OpenSIPS functionalities. Shortly, more complex B2B logic will be possible, and also better integrated with the rest of OpenSIPS.

B2B clustering support

To be 100% production ready, an High-Availability support maybe available for the B2B engine. This will be achieved by adding clustering and replication support for the B2B calling.

B2B context

An important improvement of the B2B engine will be the addition of the B2B context, to help in correlating all the entities (UAC, UAS) part of a B2B session, to attach custom data to the entities and to exchange such data between the entities. This will help with Accounting and media relaying support for B2B, but also with building custom data sharing inside a B2B session (or between the sessions).


Call Center

For 3.4, we are looking at:

  • adding clustering support and data replication for the call queue - this is extremely important for achieving High-Availability.
  • more feature and metrics for managing the call queue
  • distributed call-center or a geo-distributed single call queue which gets calls via different OpenSIPS instances and which distributed agents connected to different OpenSIPS instances.

Device Feature Key Synchronization (DFKS)

DFKS support is planned for OpenSIPS 3.4. This will help to keep feature settings in sync between multiple device and application servers, an essential need in a class 5 / PBX environment.


STIR/SHAKEN

Dealing with Robocalling and CLI spoofing becomes a must when building advanced calling solutions. The support for STIR/SHAKEN will be part of OpenSIPS 3.4, providing multiple usage models, in terms of how the certificates are to be handled during the verification process. Also a flexible approach (to the standards) will be able to cope with all the potential changes derived from the adoption process (of the standard by the providers).


Push Notification (RFC8599)

The existing PN support will be improved and aligned to the requirements as per newly adopted RFC 8599. Besides the notification itself, we need to address some particularities in contact registration, derived from privacy concerns or device identification concerns.


noSQL adds-on

The DB layer needs a constant attention, so here is the plan for 3.4:

  • add support for Dynamo noSQL DB, from Amazon, to improve the experience when comes to running OpenSIPS in AWS cloud.
  • support for raw queries for Cassandra

December 19, 2019, at 07:28 PM by razvancrainea -
Changed lines 24-25 from:

Another new OpenSIPS module, that is able to manipulate calls/dialogs going through OpenSIPS, along with UAC/UAS dialogs (call originated or terminated into OpenSIPS), with the sole propose of mixing the RTP media between these multiple flows. The idea is to make possible the injection or stream of media from / to proxied calls, with the help of auxiliary calls initiated by OpenSIPS. Typical example is to play media within an existing call/dialog with nothing more than simple re-INVITEs - OpenSIPS will initial a new sip call to a media server, in order to get the RTP stream for the playback and it will push it into the proxied call by triggering in-dialog re-INVITEs.

to:

Another new OpenSIPS module, that is able to manipulate calls/dialogs going through OpenSIPS, along with UAC/UAS dialogs (call originated or terminated into OpenSIPS), with the sole propose of mixing the RTP media between these multiple flows. The idea is to make possible the injection of streams of media from / to proxied calls, with the help of auxiliary calls initiated by OpenSIPS. Typical example is to play media within an existing call/dialog with nothing more than simple re-INVITEs - OpenSIPS will initial a new sip call to a media server, in order to get the RTP stream for the playback and it will push it into the proxied call by triggering in-dialog re-INVITEs.

Changed lines 27-28 from:

As we already have for transactions, the dialog module will allow the script writer to set, in a per-dialog fashion, script routes to be triggered by various dialog events. Similar to t_on_failure(route), you can do dlg_on_timeout(route) to have a route called when the dialog lifetime is exceed. In the route, you may decide to prolong the lifetime, to terminate the call or do any other login. We can foreseen dlg_on_answer(route), dlg_on_terminate(route)' (and more) triggers, which will give a better interaction and control over the ongoing calls.

to:

As we already have for transactions, the dialog module will allow the script writer to set, in a per-dialog fashion, script routes to be triggered by various dialog events. Similar to t_on_failure(route), you can do dlg_on_timeout(route) to have a route called when the dialog lifetime is exceed. In the route, you may decide to extend the lifetime, to terminate the call or do any other logging. We can foresen dlg_on_answer(route), dlg_on_terminate(route)' (and more) triggers, which will give a better interaction and control over the ongoing calls.

Changed lines 33-34 from:

For both RTProxy and RTPEngine, OpenSIPS will be able to report to script the DTMF sampled from the passing RTP. This will make possible the implementation of simple IVRs or authentication via DTMF with nothing more than OpenSIPS and the media relay.

to:

For both RTProxy and RTPEngine, OpenSIPS will be able to report to the OpenSIPS script the DTMF events sampled from the passing RTP. This will make possible the implementation of simple IVRs and/or authentication via DTMF with nothing more than OpenSIPS and the media relay.

Changed lines 36-37 from:

In Class 5 services, BLF is an important feature. Beside working out clustering support for BLF, an important task is reworking the BLF implementation to be call-branch aware, to be able to properly report the call events in parallel calling or call hunting scenarios.

to:

In Class 5 services, BLF is an important feature. Besides working out clustering support for BLF, an important task is reworking the BLF implementation to be call-branch aware, to be able to properly report the call events in parallel calling or call hunting scenarios.

Changed lines 51-52 from:

Instead of using the XML scenario to drive the B2B logic (mixing between the calls), we want to use the OpenSIPS scripting for the purpose. This will eliminate all the limitation of the XML language (logic and action) and it will tremendously increase the level of integration of the B2B engine with the rest of the OpenSIPS functionalities. Shortly, more complex B2B logic will be possible, and also better integrated with the rest of OpenSIPS.

to:

Instead of using the XML scenario to drive the B2B logic (mixing between the calls), we want to use the OpenSIPS scripting for this purpose. This will eliminate all the limitations of the XML language (logic and action) and it will tremendously increase the level of integration of the B2B engine with the rest of the OpenSIPS functionalities. Shortly, more complex B2B logic will be possible, and also better integrated with the rest of OpenSIPS.

Changed lines 57-61 from:

An important improvement of the B2B engine will be the addition of the B2B context, to help in correlating all the entities (UAC, UAS) part of a B2B session, to attach custom data to the entities and to exchange such data between the entities. This will help with Accounting and media relaying support for B2B, but also with building custom data sharing inside a B2B session (or between the sessions)

B2B engine

Improve the media

to:

An important improvement of the B2B engine will be the addition of the B2B context, to help in correlating all the entities (UAC, UAS) part of a B2B session, to attach custom data to the entities and to exchange such data between the entities. This will help with Accounting and media relaying support for B2B, but also with building custom data sharing inside a B2B session (or between the sessions).

Changed lines 66-67 from:
  • distributed call-center or a goe-distributed single call queue which gets calls via different OpenSIPS instances and which distributed agents connected to different OpenSIPS instances.
to:
  • distributed call-center or a geo-distributed single call queue which gets calls via different OpenSIPS instances and which distributed agents connected to different OpenSIPS instances.
Changed line 78 from:

Dealing with Robocalling and CLI spoofing becomes a must when building advanced calling solutions. The support for STIR/SHAKEN will be part of OpenSIPS 3.4, providing multiple usage models, in therms of how the certificates are to be handled during the verification process. Also a flexible approach (to the standards) will be able to cope with all the potential changes derived from the adoption process (of the standard by the providers).

to:

Dealing with Robocalling and CLI spoofing becomes a must when building advanced calling solutions. The support for STIR/SHAKEN will be part of OpenSIPS 3.4, providing multiple usage models, in terms of how the certificates are to be handled during the verification process. Also a flexible approach (to the standards) will be able to cope with all the potential changes derived from the adoption process (of the standard by the providers).

December 19, 2019, at 07:22 PM by 109.99.227.30 -
Changed lines 18-19 from:

Without actually using a Back2BAck model, but simply operating with calls (dialogs, UACs or UASs), many complex class 5 calling (and call mixing) scenarios may be scripted.

to:

Without actually using a Back2Back model, but simply operating with calls (dialogs, UACs or UASs), many complex class 5 calling (and call mixing) scenarios may be scripted.

Changed lines 21-22 from:

A new OpenSIPS module, placed on top of dialog module, will allow remote control over the calls going through OpenSIPS. The module will expose an simplify set of command (API like) for setting up new calls, for answering and terminating calls, for transferring or putting on-hold calls - all these without interacting with the end-devices, but triggering and handling the action only from the OpenSIPS (as proxy) level.

to:

A new OpenSIPS module, placed on top of dialog module, will allow remote control over the calls going through OpenSIPS. The module will expose a simplified set of commands (API like) for setting up new calls, for answering and terminating calls, for transferring or putting on-hold calls - all these without interacting with the end-devices, but triggering and handling the action only from the OpenSIPS (as proxy) level.

Changed lines 24-25 from:

Another new OpenSIPS module, that is able to manipulate calls/dialogs going through OpenSIPS, along with UAC/UAS dialogs (call originated or terminated into OpenSIPS), with the sole propose the mixing the RTP media between these multiple flows. The idea is to make possible the injection or stream of media from / to proxied calls, with the help of auxiliary calls initiated by OpenSIPS. Typical example is to play media within an existing call/dialog with nothing more than simple re-INVITEs - OpenSIPS will initial a new sip call to a media server, in order to get the RTP stream for the playback and it will push it into the proxied call by triggering in-dialog re-INVITEs.

to:

Another new OpenSIPS module, that is able to manipulate calls/dialogs going through OpenSIPS, along with UAC/UAS dialogs (call originated or terminated into OpenSIPS), with the sole propose of mixing the RTP media between these multiple flows. The idea is to make possible the injection or stream of media from / to proxied calls, with the help of auxiliary calls initiated by OpenSIPS. Typical example is to play media within an existing call/dialog with nothing more than simple re-INVITEs - OpenSIPS will initial a new sip call to a media server, in order to get the RTP stream for the playback and it will push it into the proxied call by triggering in-dialog re-INVITEs.

Added lines 58-60:

B2B engine

Improve the media

December 19, 2019, at 07:19 PM by 109.99.227.30 -
Changed lines 9-10 from:

Routing calls and handling large volume of traffic is not a challenge anymore for OpenSIPS. The upcoming 3.4 release will focus on complex call crafting, basically on increasing OpenSIPS's ability to create and handle complex calling scenarios where multiple SIP calls are mixed and interacting. Or shortly said, the 3.4 release will address the Class 5 specific calling features and how to control such calling features via APIs.

to:

Routing calls and handling large volume of traffic is not a challenge anymore for OpenSIPS. The upcoming 3.4 release will focus on complex call crafting, basically on increasing OpenSIPS's ability to create and handle complex calling scenarios where multiple SIP calls are mixed and able to interact. Or shortly said, the 3.4 release will address the Class 5 specific calling features and how to control such calling features via APIs.

Changed lines 78-94 from:
to:

Dealing with Robocalling and CLI spoofing becomes a must when building advanced calling solutions. The support for STIR/SHAKEN will be part of OpenSIPS 3.4, providing multiple usage models, in therms of how the certificates are to be handled during the verification process. Also a flexible approach (to the standards) will be able to cope with all the potential changes derived from the adoption process (of the standard by the providers).


Push Notification (RFC8599)

The existing PN support will be improved and aligned to the requirements as per newly adopted RFC 8599. Besides the notification itself, we need to address some particularities in contact registration, derived from privacy concerns or device identification concerns.


noSQL adds-on

The DB layer needs a constant attention, so here is the plan for 3.4:

  • add support for Dynamo noSQL DB, from Amazon, to improve the experience when comes to running OpenSIPS in AWS cloud.
  • support for raw queries for Cassandra

December 19, 2019, at 07:03 PM by 109.99.227.30 -
Added lines 7-77:

https://blogopensips.files.wordpress.com/2019/12/opensips-3.4-crafting.jpg Routing calls and handling large volume of traffic is not a challenge anymore for OpenSIPS. The upcoming 3.4 release will focus on complex call crafting, basically on increasing OpenSIPS's ability to create and handle complex calling scenarios where multiple SIP calls are mixed and interacting. Or shortly said, the 3.4 release will address the Class 5 specific calling features and how to control such calling features via APIs.

As usual, all the OpenSIPS major releases are in depth presented during the OpenSIPS Summit yearly events. So, the 3.4 release is the star of OpenSIPS Summit in Amsterdam, May 2020.


Class 5 calling ingredients

Without actually using a Back2BAck model, but simply operating with calls (dialogs, UACs or UASs), many complex class 5 calling (and call mixing) scenarios may be scripted.

Calling API

A new OpenSIPS module, placed on top of dialog module, will allow remote control over the calls going through OpenSIPS. The module will expose an simplify set of command (API like) for setting up new calls, for answering and terminating calls, for transferring or putting on-hold calls - all these without interacting with the end-devices, but triggering and handling the action only from the OpenSIPS (as proxy) level.

Call mixing

Another new OpenSIPS module, that is able to manipulate calls/dialogs going through OpenSIPS, along with UAC/UAS dialogs (call originated or terminated into OpenSIPS), with the sole propose the mixing the RTP media between these multiple flows. The idea is to make possible the injection or stream of media from / to proxied calls, with the help of auxiliary calls initiated by OpenSIPS. Typical example is to play media within an existing call/dialog with nothing more than simple re-INVITEs - OpenSIPS will initial a new sip call to a media server, in order to get the RTP stream for the playback and it will push it into the proxied call by triggering in-dialog re-INVITEs.

Per-call hooks

As we already have for transactions, the dialog module will allow the script writer to set, in a per-dialog fashion, script routes to be triggered by various dialog events. Similar to t_on_failure(route), you can do dlg_on_timeout(route) to have a route called when the dialog lifetime is exceed. In the route, you may decide to prolong the lifetime, to terminate the call or do any other login. We can foreseen dlg_on_answer(route), dlg_on_terminate(route)' (and more) triggers, which will give a better interaction and control over the ongoing calls.

SDP topology hiding

Due to the specificity of class 5 scenarios, there is a real need to completely decouple the SDP's (not only from IP/port perspective) from the caller and callee side, like hiding the originator or overwriting the session name and version.

DTMF support

For both RTProxy and RTPEngine, OpenSIPS will be able to report to script the DTMF sampled from the passing RTP. This will make possible the implementation of simple IVRs or authentication via DTMF with nothing more than OpenSIPS and the media relay.

Extended BLF support

In Class 5 services, BLF is an important feature. Beside working out clustering support for BLF, an important task is reworking the BLF implementation to be call-branch aware, to be able to properly report the call events in parallel calling or call hunting scenarios.

Dialog module enhancements

We are looking at a good set of additions for the dialog module, like:

  • improve the way of correlating multiple dialogs, and also to exchange data between calls (like accessing data specific to a call from a totally different call)
  • sending in-dialog requests, crafted from script level
  • better support for UAC or UAS like dialogs (not only proxy like)

Back-to-back support

The existing B2B implementation in OpenSIPS has some limitations, so we are looking to overcome via some major rework here.

Script driven B2B

Instead of using the XML scenario to drive the B2B logic (mixing between the calls), we want to use the OpenSIPS scripting for the purpose. This will eliminate all the limitation of the XML language (logic and action) and it will tremendously increase the level of integration of the B2B engine with the rest of the OpenSIPS functionalities. Shortly, more complex B2B logic will be possible, and also better integrated with the rest of OpenSIPS.

B2B clustering support

To be 100% production ready, an High-Availability support maybe available for the B2B engine. This will be achieved by adding clustering and replication support for the B2B calling.

B2B context

An important improvement of the B2B engine will be the addition of the B2B context, to help in correlating all the entities (UAC, UAS) part of a B2B session, to attach custom data to the entities and to exchange such data between the entities. This will help with Accounting and media relaying support for B2B, but also with building custom data sharing inside a B2B session (or between the sessions)


Call Center

For 3.4, we are looking at:

  • adding clustering support and data replication for the call queue - this is extremely important for achieving High-Availability.
  • more feature and metrics for managing the call queue
  • distributed call-center or a goe-distributed single call queue which gets calls via different OpenSIPS instances and which distributed agents connected to different OpenSIPS instances.

Device Feature Key Synchronization (DFKS)

DFKS support is planned for OpenSIPS 3.4. This will help to keep feature settings in sync between multiple device and application servers, an essential need in a class 5 / PBX environment.


STIR/SHAKEN

April 16, 2019, at 10:25 PM by 109.99.227.30 -
Deleted lines 6-86:

https://blogopensips.files.wordpress.com/2018/12/opensips-3.4-icon.png For the upcoming OpenSIPS 3.4 release (and 3.x family) the main focus is on the devops concept. This translates into introducing and enhancing in OpenSIPS features / capabilities that (1) will increase the easiness when comes the writing / developing OpenSIPS scripts and (2) simplify the operational activities when comes to running and managing OpenSIPS.

This OpenSIPS 3.4 release is the star of OpenSIPS Summit in Amsterdam, April-May 2019 - beside presentations and workshops around the new cool things in this version, OpenSIPS 3.4 will also be the subject of several interactive demos on its new capabilities.


Script Development aspects

Generic Preprocessor Support

This feature adds full built-in pre-processing support for the OpenSIPS script. OpenSIPS 3.4 integrates various existing pre-processors within OpenSIPS. This simplify the scripting itself, the script portability across multiple servers and not to mention the entire deployment process of more complex platforms (where OpenSIPS is just a part of it). Even more, you will be able to use your preferred pre-processor and align OpenSIPS with the rest of your system (M4, Jinja, Embedded Ruby or others).
Read a full description of this feature here.

Module Functions Now Benefit From a New Parameter Interface

As a response to frequent mailing list complaints of wildly varying behaviors across different module functions (e.g. some accept integers/strings as inputs while others accept both integers/strings or variables holding such values), we've introduced an abstract layer which handles the parameter passing task for all module functions, effectively making all of them more powerful by globally allowing flexible input. An added benefit is that new OpenSIPS modules are now even faster to develop. See the new function calling conventions here.


Operational aspects

Routing Script Re-load

OpenSIPS 3.4 exposes the valuable ability of reloading the routes (not the module configuration) during runtime, with zero penalties and with zero loses as traffic. See the documentation of the MI "reload_routes" function.

Processes Auto-Scaling Support

This is the ability of OpenSIPS to scale up and down the number of processes at runtime. Basically OpenSIPS is able to automatically scale up (by forking new processes) according to the volume of traffic, or to scale down (terminating some worker processes) if the internal load is low. This means you do not have to worry if your estimation on the number for worker processes is correct or not (will my OpenSIPS hold to the traffic??) or to worry about planning restarts during the night (to manually resize the number of processes).
Read a full description of this feature here.

New OpenSIPS CLI (Command Line Interface) tool

Starting with OpenSIPS 3.4, the old opensipsctl tool becomes deprecated (as functionality and as software) and it is replaced by the new opensips-cli - a powerful Python3 application that allows you to interact in a smart way with OpenSIPS, to invoke advanced tools such as diagnose or tracer, as well as to perform DB provisioning. Read a full description of opensips-cli here.

Selectable Memory Allocator Support

This feature allows the internal memory manager to be selected at startup time. In OpenSIPS 3.4, the memory manager selection becomes a startup option, via command line arguments, allowing you to change it without any need to recompile or redeploy. Read a full description of this feature here.

Internal Memory Persistence during Restart

As there are several modules caching (in OpenSIPS internal memory, not in external no-sql cachers) large chunks of data, like Dynamic Routing, Dialplan, Dispatcher or Permissions, OpenSIPS 3.4 is able to avoid the date loading and caching penalty during a restart - this segments of the internal memory do "survive" during the restart. This dramatically reduces the time to restart of the entire service.
Read a full description of this feature here.

Unified Sharing Tags for Clustering

In 2.4, each module (with clustering support) is managing its own sharing tags completely isolated from other modules - this make the operating OpenSIPS a bit difficult sometime, as for a single switch from active to backup, you need to individually inform and change the tags in several modules, via several MI commands. In OpenSIPS 3.4 we have now the sharing tags managed by clusterer module itself and shared between multiple modules. So with a single MI command, changing a single sharing tag, you can control all the cluster-aware modules (like dialog timeouts, nathelper pinging, dispatcher pinging, etc) Read a full description of this feature here.


Integration aspects

MI Interaction Standardization

An extensive rework of the Management Interface in an attempt to standardize and speed up development of external applications which need to interact with OpenSIPS. The custom, JSON-based HTTP calls of OpenSIPS 2.X are now replaced with the JSON-RPC version 2 standard. The custom, line-oriented syntax was completely dropped. XMLRPC and mi_html (former mi_http) were kept backwards-compatible. Read a detailed description of the new interactions here

SMPP support

OpenSIPS 3.4 provides a new SMPP module that allows you to do bidirectional gatewaying between SIP and SMPP traffic - this is a powerful but flexible way to integrate with most of the SMS providers / gateways. Read a full description of this feature here.

RabbitMQ Consumer support

A new RabbitMQ consumer module which manages connections with one or more brokers, subscribes for events and exports them at OpenSIPS script level via the event interface.




But the full list of goodies offered by OpenSIPS 3.4 (and a more technical one too), together with migration instructions, can be found on the OpenSIPS 3.4 release notes page.

April 16, 2019, at 09:52 PM by 109.99.227.30 -
Changed line 5 from:
to:

Changed lines 8-31 from:

https://blogopensips.files.wordpress.com/2017/11/google-idi_018-1.jpg?w=300&h=200 The OpenSIPS 3.4 version is built around the clustering concept - today’s VoIP world is getting more and more dynamic, services are moving into Clouds and more and more flexibility is needed for the application to fully exploit such environments. But let’s pin point the main reasons for going for a clustered approach:

  • scaling up with the processing/traffic load
  • geographical distribution
  • redundancy and High-Availability

The best of

SIPCapture/Homer integration

FreeSWITCH integration

As a powerful Class5 Engine, FreeSWITCH is the perfect complementary tool for OpenSIPS

the rest

Migration from 2.2.x to 3.4.0?

to:

https://blogopensips.files.wordpress.com/2018/12/opensips-3.4-icon.png For the upcoming OpenSIPS 3.4 release (and 3.x family) the main focus is on the devops concept. This translates into introducing and enhancing in OpenSIPS features / capabilities that (1) will increase the easiness when comes the writing / developing OpenSIPS scripts and (2) simplify the operational activities when comes to running and managing OpenSIPS.

This OpenSIPS 3.4 release is the star of OpenSIPS Summit in Amsterdam, April-May 2019 - beside presentations and workshops around the new cool things in this version, OpenSIPS 3.4 will also be the subject of several interactive demos on its new capabilities.

Added lines 16-88:

Script Development aspects

Generic Preprocessor Support

This feature adds full built-in pre-processing support for the OpenSIPS script. OpenSIPS 3.4 integrates various existing pre-processors within OpenSIPS. This simplify the scripting itself, the script portability across multiple servers and not to mention the entire deployment process of more complex platforms (where OpenSIPS is just a part of it). Even more, you will be able to use your preferred pre-processor and align OpenSIPS with the rest of your system (M4, Jinja, Embedded Ruby or others).
Read a full description of this feature here.

Module Functions Now Benefit From a New Parameter Interface

As a response to frequent mailing list complaints of wildly varying behaviors across different module functions (e.g. some accept integers/strings as inputs while others accept both integers/strings or variables holding such values), we've introduced an abstract layer which handles the parameter passing task for all module functions, effectively making all of them more powerful by globally allowing flexible input. An added benefit is that new OpenSIPS modules are now even faster to develop. See the new function calling conventions here.


Operational aspects

Routing Script Re-load

OpenSIPS 3.4 exposes the valuable ability of reloading the routes (not the module configuration) during runtime, with zero penalties and with zero loses as traffic. See the documentation of the MI "reload_routes" function.

Processes Auto-Scaling Support

This is the ability of OpenSIPS to scale up and down the number of processes at runtime. Basically OpenSIPS is able to automatically scale up (by forking new processes) according to the volume of traffic, or to scale down (terminating some worker processes) if the internal load is low. This means you do not have to worry if your estimation on the number for worker processes is correct or not (will my OpenSIPS hold to the traffic??) or to worry about planning restarts during the night (to manually resize the number of processes).
Read a full description of this feature here.

New OpenSIPS CLI (Command Line Interface) tool

Starting with OpenSIPS 3.4, the old opensipsctl tool becomes deprecated (as functionality and as software) and it is replaced by the new opensips-cli - a powerful Python3 application that allows you to interact in a smart way with OpenSIPS, to invoke advanced tools such as diagnose or tracer, as well as to perform DB provisioning. Read a full description of opensips-cli here.

Selectable Memory Allocator Support

This feature allows the internal memory manager to be selected at startup time. In OpenSIPS 3.4, the memory manager selection becomes a startup option, via command line arguments, allowing you to change it without any need to recompile or redeploy. Read a full description of this feature here.

Internal Memory Persistence during Restart

As there are several modules caching (in OpenSIPS internal memory, not in external no-sql cachers) large chunks of data, like Dynamic Routing, Dialplan, Dispatcher or Permissions, OpenSIPS 3.4 is able to avoid the date loading and caching penalty during a restart - this segments of the internal memory do "survive" during the restart. This dramatically reduces the time to restart of the entire service.
Read a full description of this feature here.

Unified Sharing Tags for Clustering

In 2.4, each module (with clustering support) is managing its own sharing tags completely isolated from other modules - this make the operating OpenSIPS a bit difficult sometime, as for a single switch from active to backup, you need to individually inform and change the tags in several modules, via several MI commands. In OpenSIPS 3.4 we have now the sharing tags managed by clusterer module itself and shared between multiple modules. So with a single MI command, changing a single sharing tag, you can control all the cluster-aware modules (like dialog timeouts, nathelper pinging, dispatcher pinging, etc) Read a full description of this feature here.


Integration aspects

MI Interaction Standardization

An extensive rework of the Management Interface in an attempt to standardize and speed up development of external applications which need to interact with OpenSIPS. The custom, JSON-based HTTP calls of OpenSIPS 2.X are now replaced with the JSON-RPC version 2 standard. The custom, line-oriented syntax was completely dropped. XMLRPC and mi_html (former mi_http) were kept backwards-compatible. Read a detailed description of the new interactions here

SMPP support

OpenSIPS 3.4 provides a new SMPP module that allows you to do bidirectional gatewaying between SIP and SMPP traffic - this is a powerful but flexible way to integrate with most of the SMS providers / gateways. Read a full description of this feature here.

RabbitMQ Consumer support

A new RabbitMQ consumer module which manages connections with one or more brokers, subscribes for events and exports them at OpenSIPS script level via the event interface.




But the full list of goodies offered by OpenSIPS 3.4 (and a more technical one too), together with migration instructions, can be found on the OpenSIPS 3.4 release notes page.

March 28, 2018, at 05:33 PM by 109.99.227.30 -
Changed lines 8-15 from:

http://www.gearitservices.com/Portals/0/SitePics/SystemIntegration.jpg The OpenSIPS 3.4 version is built around the integration concept - the OpenSIPS ability to integrate and work together in all possible means with other projects, protocols, systems or concepts.
Why is integration so important to end up being the main tag of a major release? Well, everybody in the VoIP world is operating VoIP platforms/systems – and these are more than SIP Engines (as OpenSIPS is). Indeed, the SIP Engine is the core and most important part of the platform, but to build something usable and useful, you need additional components into your platform like CDR/billing engines, monitoring and tracing tools, data backends, non-SIP trunking or more specialized SIP engines. Shortly you need your SIP Engine (OpenSIPS, of course) to be able to easily integrate with all these components.

The success of this release - in terms of achieving its integration goal - was strongly weighted by the collaboration with the teams of the partner projects, like SIPCapture, FreeSWITCH or CGRates. A collaboration in terms of ideas, brainstorming, solutions and of course, work. A collaboration that resulted in solutions and benefits for all the involved communities.

to:

https://blogopensips.files.wordpress.com/2017/11/google-idi_018-1.jpg?w=300&h=200 The OpenSIPS 3.4 version is built around the clustering concept - today’s VoIP world is getting more and more dynamic, services are moving into Clouds and more and more flexibility is needed for the application to fully exploit such environments. But let’s pin point the main reasons for going for a clustered approach:

  • scaling up with the processing/traffic load
  • geographical distribution
  • redundancy and High-Availability
Changed lines 20-23 from:

The integration with the SIPCapture engine was a hot topic again. The work in this area focused in adding two new concepts (both on OpenSIPS and SIPCapture sides) when comes to capturing:

  • non-SIP tracing - if up to this point, all the tracing was SIP-centric, now you can capture and visualize more types of data. You can capture information from transport layer (TCP, TLS, WS, WSS), information on the REST queries you performed from OpenSIPS script, information about the MI commands and also the script logs. All this information will help you (from operational perspective) to have a global view over how your OpenSIPS is doing (and lot limited to the SIP level only) - in other words, monitoring and troubleshooting will became much easier.
  • data correlation - now that you have so many types of data traced, it is vital to be able to correlate them - to know what were the TCP/TLS/WSS connections involved in a SIP call, to know which were the REST queries or logs triggered by a call handling. Such correlation concept gives a new dimension to the tracing concept - you can navigate and jump between different data types in order to understand the relation between them (like why a SIP call failed by looking at the data from the transport level)
to:
Changed line 25 from:

the rest

to:

the rest

March 16, 2017, at 06:49 PM by 136.243.43.436 -
Changed lines 13-19 from:

The success of this release - in terms of achieving its integration goal - was strongly weighted by the collaboration with the teams of the partner projects, like SIPCapture, FreeSWITCH or CGRates. A collaboration in terms of ideas, brainstorming, solutions and of course, work. A collaboration that

Integration

to:

The success of this release - in terms of achieving its integration goal - was strongly weighted by the collaboration with the teams of the partner projects, like SIPCapture, FreeSWITCH or CGRates. A collaboration in terms of ideas, brainstorming, solutions and of course, work. A collaboration that resulted in solutions and benefits for all the involved communities.

The best of

SIPCapture/Homer integration

The integration with the SIPCapture engine was a hot topic again. The work in this area focused in adding two new concepts (both on OpenSIPS and SIPCapture sides) when comes to capturing:

  • non-SIP tracing - if up to this point, all the tracing was SIP-centric, now you can capture and visualize more types of data. You can capture information from transport layer (TCP, TLS, WS, WSS), information on the REST queries you performed from OpenSIPS script, information about the MI commands and also the script logs. All this information will help you (from operational perspective) to have a global view over how your OpenSIPS is doing (and lot limited to the SIP level only) - in other words, monitoring and troubleshooting will became much easier.
  • data correlation - now that you have so many types of data traced, it is vital to be able to correlate them - to know what were the TCP/TLS/WSS connections involved in a SIP call, to know which were the REST queries or logs triggered by a call handling. Such correlation concept gives a new dimension to the tracing concept - you can navigate and jump between different data types in order to understand the relation between them (like why a SIP call failed by looking at the data from the transport level)

FreeSWITCH integration

As a powerful Class5 Engine, FreeSWITCH is the perfect complementary tool for OpenSIPS

Added lines 29-30:
March 16, 2017, at 06:33 PM by 136.243.43.436 -
Added lines 1-25:
About -> Available Versions -> 3.4.x Releases -> Release 3.4.0 Overview

OpenSIPS 3.4 philosophy

http://www.gearitservices.com/Portals/0/SitePics/SystemIntegration.jpg The OpenSIPS 3.4 version is built around the integration concept - the OpenSIPS ability to integrate and work together in all possible means with other projects, protocols, systems or concepts.
Why is integration so important to end up being the main tag of a major release? Well, everybody in the VoIP world is operating VoIP platforms/systems – and these are more than SIP Engines (as OpenSIPS is). Indeed, the SIP Engine is the core and most important part of the platform, but to build something usable and useful, you need additional components into your platform like CDR/billing engines, monitoring and tracing tools, data backends, non-SIP trunking or more specialized SIP engines. Shortly you need your SIP Engine (OpenSIPS, of course) to be able to easily integrate with all these components.

The success of this release - in terms of achieving its integration goal - was strongly weighted by the collaboration with the teams of the partner projects, like SIPCapture, FreeSWITCH or CGRates. A collaboration in terms of ideas, brainstorming, solutions and of course, work. A collaboration that

Integration

the rest

Migration from 2.2.x to 3.4.0?



Page last modified on May 17, 2023, at 04:16 PM