Development |
Development -> Ideas ListThis page has been visited 8461 times. Table of Content (hide)
1. IntroductionThis 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 List2.1 Diameter SupportTags: 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/gatewayTags: 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 consumerTags: 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 CompletionTags: 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). 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 OpenSIPSTags: 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 dataTags: 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 managementTags: 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 PlatformTags: 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 20183.1 Important Notice
3.2 PrerequisitesGet yourself comfortable with what OpenSIPS is and what it does.
3.3 Student ApplicationSubmit your application. After you have gone through all the details above, you can send your application for a review using this
Good luck! |