About |
About -> Available Versions -> 3.4.x Releases -> Release 3.4.0 OverviewOpenSIPS 3.4 philosophyVarious 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.
TestingThe 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 testingThere 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. Performance testingThe performance testing had two goals in mind :
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 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.
A comprehensive description of the results, their interpretation and conclusions are described in a dedicated blog post. B2B enhancementsThe B2B capabilities in OpenSIPS got a more and more attention lately, so OpenSIPS 3.4 got some significant work in the area. B2B bridgingThe 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. API driven SIP User-AgentWhile 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. LoggingSomehow 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 :
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.
Miscellaneous but importantMore friendly flags for script functionsThe 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? Delay in deleting dialogsThis 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 / pingingThe 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-workFull 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 improvementsThe blacklist support provided by core is now more flexible, to allow you, from script level, to dynamically manage the lists. AllThere are many many other changes with this release, and you can read about all of them in this detailed listing. |