Troubleshooting missing ACK in SIP

We all experienced calls getting self disconnected after 5-10 seconds - usually disconnected by the callee side via a BYE request - but a BYE which was not triggered by the party behind the phone, but by the SIP stack/layer itself. This is one of the most common issues we get in SIP and one … Continue reading Troubleshooting missing ACK in SIP

RabbitMQ evolution with OpenSIPS 2.3

RabbitMQ is a powerful and widely used tool for message queuing integrations. And the usage of such a tool requires a more flexible support from OpenSIPS. Let's see what 2.3 has to offer when comes to RabbitMQ based integration. RabbitMQ is an open source message queuing/broker server, used by applications to publish messages on one side and consume them on the other … Continue reading RabbitMQ evolution with OpenSIPS 2.3

SIP-I and SIP with OpenSIPS 2.3

SIP-I considerations The SS7 interconnections are always painful. Both as cost and technical difficulty/complexity. So, as a more accessible alternative, the carriers started to offer SIP interconnection via SIP-I (SIP Infrastructure). SIP-I  or SIP Infrastructure (define by ITU) is very similar to SIP-T or SIP for Telephones (defined by IEFT). SIP-I is very powerful when … Continue reading SIP-I and SIP with OpenSIPS 2.3

Real-time billing using OpenSIPS 2.3 and CGRateS

SIP without billing is like a dinner without a good wine. While OpenSIPS does a great job for SIP, it often needs a billing partner to work with. CGRateS is an open-source rating engine used for carrier-grade, multi-tenant, real-time billing. It is able to do both postpaid and prepaid rating for multiple concurrent sessions with different balance units (eg: Monetary, … Continue reading Real-time billing using OpenSIPS 2.3 and CGRateS

Migrating registrations to OpenSIPS 2.2

Starting with OpenSIPS 2.2 the registered SIP contacts (stored the location table) have a new unique ID named contact ID. This new ID is contact specific (computed based on various contact elements) and it replaces the old opaque ID which was a simple DB auto-increment key. But why ? to increase the efficiency of the DB operations, by using a single value … Continue reading Migrating registrations to OpenSIPS 2.2

Introducing OpenSIPS 2.3

A new year has arrived, so it is the time for a new OpenSIPS major release - for OpenSIPS version 2.3 . For this version, the main focus on development is the "integration", the integration of OpenSIPS with various external entities. Why is integration so important to end up being the main tag of a major … Continue reading Introducing OpenSIPS 2.3

Understanding and dimensioning memory in OpenSIPS

Running OpenSIPS with the right memory configuration is a very important task when developing and maintaining your VoIP service, because it has a direct effect over the scale of your platform, the customers you support, as well as the services you offer. Setting the limit to a low value might make OpenSIPS run out of memory during high volume … Continue reading Understanding and dimensioning memory in OpenSIPS

Mid-registrar: scalable registration and call forking

The new mid-registrar functionality is now available with OpenSIPS 2.3 (current development branch) ! What is a mid-registrar ? The mid-registrar is a mid-component of a SIP platform, designed to work between end users and the platform's main registration component. It opens up new possibilities for leveraging existing infrastructure in order to continue to grow (as … Continue reading Mid-registrar: scalable registration and call forking

How To Proxy SIP Registrations

SIP registration is the process through which SIP user devices (desk phones, soft phones, etc.) periodically announce or refresh their network location to a SIP registrar, for an upcoming period of time. Once registered with the VoIP platform, the device is able to receive calls or messages from other devices. Proxying SIP registrations In some cases, we may want … Continue reading How To Proxy SIP Registrations

CANCEL request and Reason header

Call canceling may look like a trivial mechanism, but it plays an important role in complex scenarios like simultaneous ringing (parallel forking), call pickup, call redirect and many others. So, aside proper routing of CANCEL requests, reporting the right cancelling reason is equally important. How to properly handle CANCEL requests in OpenSIPS? According to RFC 3261, … Continue reading CANCEL request and Reason header