Login | Register

Development

Development -> Ideas List

This page has been visited 8492 times.


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


  • Remember the deadline for student applications: March 27 16:00 UTC
  • Get in touch with us on IRC. You can reach us in channel #opensips on the Freenode IRC network (irc.freenode.net). Talk to one of these guys: bogdan_vs, razvanc or liviuc. You can also find us on Slack (https://opensips.slack.com/).
  • You should also enroll yourself in the Users and Devel mailing lists. More info in the Contact page.
  • Communication is important. Students which actively communicate with us are more likely to be selected for a given project (there are exceptions that prove the rule, of course). For the quick and witty developers among you, here is a list of interesting things you could do while learning (pun intended):
    • You could jump in the developer courses and learn more about our codebase
    • You could skim over our tracker and try to handle some of the tasks. The easy ones have been tagged with help wanted and good first issue tags.

3.2 Prerequisites

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

  • read and learn about OpenSIPS as much as you can. Here are some quick, basic (and fun) things you could do:
    • do some reading on OpenSIPS, VoIP, SIP, SIP call flows
    • create a SIP account on voip.opensips.org VoIP service.
    • understand what OpenSIPS is, install a softphone on your favorite Linux distribution, register it to opensips.org, and call razvan@opensips.org :D
    • now that you've acquainted yourself with the proxy as a user, download the source code and start digging and learning as a developer
    • now is a good time to read the project proposals, and pick the one which suits you best
    • if you don't understand anything, it's perfectly normal! go back to bullet 1 or talk to us on IRC/Slack
  • you understand the goal of the project, you have some minimal overview on the project codebase and some ideas are starting to take shape! That's great! Congrats!

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!


Page last modified on February 13, 2018, at 01:25 PM