Diploma thesis

Dynamic datapaths in OpenSER as an application of End User Development

In the time from 2006-09-27 through 2007-03-27, I have been working on my diploma thesis "Dynamic datapaths in OpenSER as an application of End User Development". The initial concept required to create an abstraction layer in the SIP server OpenSER that would let different server modules access arbitrary databases (with a special focus on LDAP) instead of the originally used mysql/postgres backends.

A full abstract (in German and English) can be found below.

Back to home.


Abstract

OpenSER is a powerful open source solution that provides almost all server functionalities defined in the SIP protocol. The SIP Express Router SER or its fork OpenSER are in action in many large SIP environments.

The internal interfaces of the software that transmit data from databases are structurally dependent on a relational model; existing back-ends are restricted to MySQL, PostgreSQL and the ODBC interfaces. On the other hand, in many real world environments equivalent data are stored in other forms, particularly in LDAP directories.

The task of this thesis was the development of a database interface that makes it possible for existing OpenSER code to access arbitrary, configurable data back-ends. However, to accomplish this, not only a structural transformation, but in most cases also a transformation of content is necessary.

Due to this, OpenSER was equipped with a Perl interface. A fundamental infrastructure layer that may also be used in multiple ways independent of database requests becomes a transmission route for data through the separately developed "Perl virtual database" (Perl VDB); adaptors transform the relational "insert", "update", "delete" and "query" operations into Perl function calls.

A digression to the topic of End User Development abstracts the process of embedding a programming language. In this thesis, mainly technical aspects of End User Development are discussed. The answers found are then transferred to the particular situation in OpenSER.

The theme was examined with the usual steps of software engineering. In the analysis phase, use cases and other techniques were applied to evaluate and categorize the incurring data. During the design, necessary interfaces were established and a class hierarchy was developed. In the present work, the implementation of the developed solutions as well as the arising problems are documented.


Zusammenfassung (Abstract auf Deutsch)

OpenSER ist eine leistungsfähige Open-Source-Lösung, die praktisch sämtliche im SIP-Protokoll definierte serverseitige Funktionalitäten abdeckt. In vielen großen SIP-Umgebungen sind der SIP Express Router SER oder dessen Abkömmling OpenSER im Einsatz.

Die internen Schnittstellen der Software, über die Daten aus Datenbanken bezogen werden, sind strukturell auf ein relationales Modell ausgerichtet; existierende Anbindungen beschränken sich auf MySQL, PostgreSQL sowie die ODBC-Schnittstelle. In vielen Umgebungen stehen äquivalente Daten jedoch in anderer Form, vor allem in LDAP-Verzeichnissen, zur Verfügung.

Aufgabe der Arbeit war, eine Datenbankschnittstelle zu entwickeln, die es dem existierenden OpenSER-Code ermöglicht, auf beliebig konfigurierbare Daten-Backends zurückzugreifen. Dazu ist jedoch nicht nur eine strukturelle, sondern in den meisten Fällen auch eine inhaltliche Transformation von Daten notwendig.

Aus diesem Grunde wurde OpenSER mit einer Perl-Schnittstelle ausgestattet. Eine fundamentale Infrastrukturschicht, die auch losgelöst von den Datenbank-Aufgaben vielfältig genutzt werden kann, wird über die entwickelte "Perl virtual database" (PerlVDB) zum Übertragungsweg für die Daten; Adaptoren verwandeln relationale "insert"-, "update"-, "delete"- und "query" -Anfragen in Funktionsaufrufe für Perl.

Ein Exkurs in das Thema End User Development abstrahiert den Vorgang der Einbettung von Programmiersprachen. In dieser Arbeit werden vor allem technische Aspekte des End User Development diskutiert und die gefundenen Antworten auf die konkrete Situation im OpenSER übertragen.

Die Thematik wurde in den üblichen Schritten der Softwaretechnik bearbeitet. In der Analyse-Phase wurden u.A. mittels Anwendungsfällen die anfallenden Daten untersucht und anschließend kategorisiert. Während des Designs wurden die notwendigen Schnittstellen etabliert und eine Klassenhierarchie entwickelt. In der vorliegenden Arbeit werden auch die Implementierung der entwickelten Lösung sowie die dabei auftretenden Probleme dokumentiert.