From openSIPS

Development: IdeasList

Development -> Ideas List

This page has been visited 7721 times.

Table of Content (hide)

  1. 1. Introduction
  2. 2. Projects List
    1. 2.1 Diameter Support
    2. 2.2 SMPP to SIP bridge/gateway
    3. 2.3 RabbitMQ consumer
    4. 2.4 Presence server extensions: Device Feature Key Synchronization, Call Completion
    5. 2.5 Data tracing & capturing extension in OpenSIPS
    6. 2.6 New transport backends for traced data
    7. 2.7 Console / Control tool for OpenSIPS management
    8. 2.8 SIP System Testing Platform
  3. 3. GSoC 2018
    1. 3.1 Important Notice
    2. 3.2 Prerequisites
    3. 3.3 Student Application

1.  Introduction


This page contains ideas of projects that can be implemented. It has been created for the GSoC 2018 program, but we encourage you to maintain this page throughout the entire year.

This page is globally editable (create a wiki account and start hacking), and you are free to add your own project ideas. They will be actively analyzed by the OpenSIPS core team, and all the projects accepted will be promoted on our mailing list.

2.  Projects List


2.1  Diameter Support

Tags: Diameter, Radius, AAA, protocols

Skills: C/C++ programming, network communication protocols

Description: This project aims to provide OpenSIPS the ability to do authentication and accounting for VoIP calls using Diameter, a network protocol (very similar to Radius) used to do AAA (Authentication, Authorization and Accounting) using a Diameter server. In order to do that, one needs to develop a new module in OpenSIPS that acts on one side as a Diameter client that communicates with the Diameter server (most likely you will use a library for this), and on the other side implements the OpenSIPS internal AAA API. Moreover, the new module will also need to be integrated with the current accounting interface, to be able to generate CDRs (Call Detail Records) to a Diameter server.

Result: A new OpenSIPS module that is able to communicate with a Diameter server to do AAA(Authentication, Authorization and Accounting) for calls.

Rating: medium-hard

Mentors: Răzvan Crainea (razvanc on IRC), Bogdan Iancu (bogdan_vs on IRC)

2.2  SMPP to SIP bridge/gateway

Tags: SMPP, SIP, gateway

Skills: C/C++ programming, network communication protocols, Operating Systems IPC

Description: The Short Message Peer-to-Peer (SMPP) protocol is used in telecommunications to interface transfer data (such as mobile SMSes) between different Message Center entities. This project aims to add in OpenSIPS an SMPP stack that is able to receive SMPP packets (PDUs) and convert them to SIP MESSAGEs that are then forwarded to SIP clients, and back - convert SIP MESSAGEs to SMPP packets that are sent further to SMSc (SMS centers). This gateway will be 'packed' as a new transport protocol module for OpenSIPS, that, besides the protocol conversion, will provide means to provision different SMSc connections using a database back-end.

Result: A new OpenSIPS module that is able to act as a SIP-SMPP gateway.

Rating: medium-hard

Mentors: Răzvan Crainea (razvanc on IRC)

2.3  RabbitMQ consumer

Tags: RabbitMQ, protocols, AMQP, message queuing

Skills: C/C++ programming, network communication protocols, Operating Systems IPC

Description: RabbitMQ is a message broker used to transfer data in a reliable way using complex routing mechanisms. It is built on top of the AMQP protocol and acts as a server that collects messages from publishers and dispatches them to consumers. OpenSIPS already has support to publish data to a RabbitMQ message broker, but it cannot yet act as a consumer - fetch data from a RabbitMQ server. This project aims to build a RabbitMQ consumer in OpenSIPS that is able to receive messages from a RabbitMQ broker and expose them as OpenSIPS events in the configuration script.

Result: A new OpenSIPS module that receives RabbitMQ messages and exposes them to the OpenSIPS script.

Rating: medium-hard

Mentors: Răzvan Crainea (razvanc on IRC)

2.4  Presence server extensions: Device Feature Key Synchronization, Call Completion

Tags: SIP, SIP Presence, XML, RFC 3265, user status, RFC 6910

Skills: C, SIP, SIP Presence, OpenSIPS scripting, UDP/IP, XML

Description: The first part of the project consists of implementing support for Broadsoft's "Device Feature Key Synchronization" (DFKS) draft in OpenSIPS. The DFKS specification presents a series of SIP Presence message exchanges between the end-user device (phone) and the application server (OpenSIPS, in this case) with the sole purpose of keeping both entities synchronized with regards to the current user status (DND, forward calls always / on busy / on no-answer).
The second part of the project involves adding support for the Presence call completion draft (RFC 6910), allowing the caller of a failed call to be notified when the callee becomes available to receive a call.

Result: A set of modules that publish and handle new presence extensions.

Rating: medium-hard

Mentors: Liviu Chircu (liviuc on IRC)

2.5 Data tracing & capturing extension in OpenSIPS

Tags: extension, tracing, capture, HEP, correlation, big data

Skills: C/C++ programming, network communication protocols

Description: OpenSIPS implements a complex support for tracing and capturing various internal data to an external data analyzer system - SIPCapture. Data can be SIP (the actual SIP packets) or non-SIP (HTTP queries, script logs, network layer and more) and all these data types are correlated/linked by IDs - see https://blog.opensips.org/2017/03/22/capturing-beyond-sip/. The required work consists in extending the existing OpenSIPS's capturing capabilities by adding new types of data and new correlations. We are looking to be able to trace the SQL and noSQL queries involved in the processing of a SIP message (and to correlate them with the message), to trace interactions with external media servers like RTPProxy or RTPEngine, to trace statistics from network/TCP level or to provide extra call correlation for the SIP back-2-back module (to be able to link all calls belonging to the the same B2B instance).

Result: New tracing capabilities (based on the internal API) for existing modules and OpenSIPS core.

Rating: medium

Mentors: Bogdan Iancu (bogdan_vs on IRC)

2.6  New transport backends for traced data

Tags: tracing, data, backend

Skills: C/C++ programming, network communication protocols

Description: The data traced by OpenSIPS is now transported to the capturing node (Homer) via the HEP protocol. We are looking for the ability to support multiple transporting backends for the traced data, like AMQP or HTTP. The work will start with refactoring the existing tracing and capturing modules in order to define a new API in front of the existing HEP transport protocol. The second step will consist of adding new transport backends on top of this new API.

Result: New OpenSIPS module to allow the transport of traced data via new communication protocols/models.

Rating: medium

Mentors: Bogdan Iancu (bogdan_vs on IRC)

2.7 Console / Control tool for OpenSIPS management

Tags: New Feature, console, provisioning, management

Skills: Shell, Python, SQL, ncurses

Description: OpenSIPS currently offers two external provisioning tools, the "opensipsctl" and "osipsconsole". These tools need to be replaced with a new and more powerful tool that has to address the existing problems/limitations: use a high-level programming language (such as Python) to overcome the lack of libraries (Shell language is now used); use a generic SQL interface to support multiple DB types (mysql, postgres, sqlite, oracle and more); use a JSON-RPC connection with OpenSIPS (versus the existing text-oriented one); give the end-user a console-like experience, with help, history, tab-completion, etc.

Result: New console-oriented provisioning tool for OpenSIPS, for DB and management operations.

Rating: medium

Mentors: Bogdan Iancu (bogdan_vs on IRC), Răzvan Crainea (razvanc on IRC)

2.8  SIP System Testing Platform

Tags: SIP, RFC 3261, scripting, testing, infrastructure, automation

Skills: C/Python/bash, UDP/IP, TCP/IP, SIP, VoIP, sipp, opensips

Description: Design and implement an open-source, extensible testing platform for RFC 3261 SIP proxy servers. The goals of the platform are: greatly simplify the process of defining complex SIP signaling testing scenarios; validate input/output SIP message structure and sequencing (RFC behavior, as well as OpenSIPS-specific signaling features); provide statistics and reporting with regards to each SIP message (send/recv timestamps, processing time).

Result: A new industry-shaping project that can help validate any SIP signaling server implementation.

Rating: hard

Mentors: Liviu Chircu (liviuc on IRC)

3.  GSoC 2018

3.1 Important Notice


3.2 Prerequisites

Get yourself comfortable with what OpenSIPS is and what it does.

3.3 Student Application

Submit your application.

After you have gone through all the details above, you can send your application for a review using this

Good luck!

Retrieved from https://www.opensips.org/Development/IdeasList
Page last modified on February 13, 2018, at 01:25 PM