Martyn Davies

Building Telephony Systems with OpenSER

Written by martyndavies on Jul 25, 2008 - 10:09 PM

OpenSER (and its sister project, SER), have always had the reputation of being powerful applications, but with a steep learning curve and little documentation. They implement their own mini-language, which is exposed to the administrator via a single configuration file (for anyone that’s old enough to remember, think of sendmail.cf from mailservers of yesteryear, and you'll know what I mean). Once you've got the semantics of this DSL (Domain Specific Language) down, you then need to read (and properly understand) the SIP standards, in order to know how to build the configuration file in the correct way. That’s a fair bit of prep time to get going, and its frustrated many people when they started out. If it wasn't for the fact that OpenSER/SER are best of breed applications in the open-source space, and the fact that most people using them were programmers of one type or another, they may well have found it hard to achieve popularity.

This book caters to the growing number of new users that arrive at OpenSER without an in-depth knowledge of SIP or programming. The book starts with a common use-case, namely as Registrar and SIP Proxy, with forwarding for PSTN termination. The first two chapters of the book aim to get you comfortable with SIP at a top level. They explain what OpenSER is, how it processes SIP messages, how you interact with it, and the options it gives you in managing your SIP realm in simple terms. It outlines other common nodes in a SIP network, and surrounding standards and protocols, including RTP, SDP and DTMF, and MediaProxy, Asterisk, RADIUS and the PSTN. These are definitely handy chapters to have, although are arguably books in their own right (and indeed there are several such books out there). This exemplifies another problem the newbie has when first landing on planet OpenSER; It’s almost always the star of its solar system. Every other node relies on it for routing, sending information, receiving information. So if you misconfigure the gravity, or solar radiation, or any one of the other million configurables, you've end up with a very dead galaxy. If you don't know about what all the other nodes in your network need from your OpenSER, then you will have problems.

The first chapters are enough to get the user started, and in fact we’re led through a sample Debian install to provide a platform for the experiments that follow. You might like or not like Debian, but you can always take the approach that following the step-by-step guide will get you off the ground faster, and you can always go back to basics again later with your favourite OS. You should note that it’s not really a reference guide, so other material will probably be needed as you start projects of your own.

Chapter 3 goes through installation, and file structure of the application, leading us into the main meat of the book: Chapters 4-10 which walks us through the config file several times over, implementing useable services. There are several things I like about this format. First, it chooses common recipes; the things most people want to get done. Yes, OpenSER will support a flat text database, or postgres, or AN Other Db format, but not all of these are fully supported, and the most common one, MYSQL, is used as the database store for these tutorials. This appeals to the user everywhere that just wants to get things working, and wants to see what OpenSER can do. Secondly, the book does not abandon its reference to theory. When you look to handle NAT, it tells you about the different kinds and how and why we deal with them the way we do. Actually this section is as good a summary of what NAT means as I have seen anywhere, and many would benefit from reading it. Lastly, The Lab sections offer the opportunity for the user to go and implement something straight away, and it gets them thinking about how to tweak the service for their own ends. The clear distinction means you can either read the book or sit with it next to your computer as a reference whilst working with OpenSER.

In Chapter 6, the author talks about his own GUI management interface for OpenSER, called SerMyAdmin. I have sometimes heard the criticism that OpenSER is “hard to manage” as it has only a command line interface. No single open-source tool has emerged to fill this perceived gap, so the author is offering his own, even launching it as another open source project in its own right.

The last couple of chapters deal with 3rd party software that you can use to help your efforts in working with SIP, and one of the problems of writing a book on an open source app. The 3rd party tools section should probably have come before the OpenSER specific sections, as tools like SIPp and sipsak are very useful in testing OpenSER development, as is the redoubtable Wireshark.

The last chapter “After Words” talks about what is new in 1.2.3 (already outdated, 1.3.2 is stable), and a small section on what is in 1.3. There are some fairly major changes in functionality in 1.3 compared to 1.2, but no major overhaul of the syntax is required, as was the case going from 1.X to the 2.X branch, so users should not be burned by this. It also discussed a web-based admin suite. This “After Words” chapter I found a pretty nice section, picking up some of the missed threads, for example talking about RTPproxy, and its relative advantages/disadvantages relative to MediaProxy, which got a lot more book space back in Chapter 9.

Overall this is a nice book that puts lots of related information that can be found elsewhere into one place, with examples for common recipes in working with OpenSER/SER. For the newbie, understanding the openser.cfg is important in breaking the back of the task of learning OpenSER, and this book really goes to town trying to explain this part for us. The book does what it sets out to do, which is to be a step-by-step guide for beginners with OpenSER, and it explains most of what you need to know to get the application up and running for typical use-cases.

There is, however, a stack of available functionality missing. No mention of Presence, or the 6 or so modules that deliver functionality in this exciting area in which OpenSER is making much progress. There is little or no mention of TLS, carrierroute, dispatcher, XMPP, Perl, LDAP, XCAP, IPv6 or the Management Interface modules. I don’t think we can blame the author for this though, as the book is not designed to be a definitive OpenSER manual, and a lot of that functionality is relatively new. In a comparison to O'Reilly books on similar technologies, there is normally an introductory book 'Learning X', a definitive manual 'Programming X', and a recipes book 'X cookbook'. This book is the first, and part of the last, of this series.

Building Telephony Systems with OpenSER
Flavio E. Goncalves
PACKT Publishing, £27.99 UK, $44.99 US

www.packtpub.com

Link: Available on Amazon.com
Add To Delicious Print this Thread Grab our feed
Voip User Forum Index » SIP » OpenSER
Reply to topic
Forum Rules and Guidelines | About VoIP User | Privacy Policy


All logos and trademarks in this site are property of their respective owner.
Comments and posts are property of the poster, all the rest (c) 2003-2008 VoIP User Limited.

VoIP User Limited is incorporated in England and Wales under Company Number 6694577.

No part of this site may be reproduced without our prior consent.