OLSR coming to Serval project - and your phone

Decentralizing GSM to Wi-Fi mesh phone calls.
by Alexander Chemeris

Integrating OpenBTS and Serval consists of two core components:

1) Routing systems inter-operation.
2) Numbering systems inter-operation.

Each are explained below.

1. Routing inter-operation was achieved during the Code Sprint hosted at the New
America Foundation in Washington, DC in early June, 2011. By using the OLSR
protocol on both Serval mobiles and on an OpenBTS test node, participants were
able to route IP packets in a flexible way in a mobile ad-hoc network without
any need for manual configuration. The OpenBTS part of the OLSR setup was pretty
smooth, taking roughly half an hour to get everything up, configured and
running. The Serval component was more difficult since OLSR had to be ported to
Android and Serval's DNA had to be modified to use a routing table instead of
BATMAN's peers-file. However, after a day of hard hacking Jeremy Lakeman from
the Serval Project successfully integrated both components. This work is
available in the Distributed Numbering Architecture git master branch [2].

2. For numbering systems inter-operation we chose to integrate Serval's DNA [1]
with OpenBTS. While we were unable to finish this during the Code Sprint, the
first step was completed. I ported DNA Asterisk plugin to Asterisk 1.6 so that
it could be used with OpenBTS. This work is available from DNA's git
asterisk_1.6 branch [3].

Around 1am on the 10th of June we were able to create a network of a Ubuntu
10.04 laptop with OpenBTS and a couple of Android phones with Serval and do a
couple of test calls from OpenBTS to Serval phones using true mesh routing and
DNA number lookups from OpenBTS to Serval.

The next steps to complete integration of Serval with OpenBTS include:

1) IP address auto-provisioning. Currently, all nodes in the network configure
their IP addresses manually. While in many cases this is not a problem and
devices could be shipped with unique pre-configured IP addresses, in some cases
this may cause usability problems for non-technical users. IP address
auto-provisioning would help support zero-conf ad-hoc networking.

2) DNA should be better integrated into Asterisk dialplan for OpenBTS. For test
purposes we called a pre-defined set of numbers from OpenBTS, which were
manually added to the dialplan. Clearly, this is not scalable for larger
real-world implementations. Luckily, it should be relatively simple to add this
fix for anyone familiar with Asterisk configuration.

3) The harder part is to provide a tighter integration of DNA with OpenBTS's HLR
(roughly speaking, HLR is database which stores information about mobile numbers
in a GSM network). This would allow an OpenBTS node to announce the mobile phone
numbers it serves to DNA users, so that Serval phones will be able to call
OpenBTS users.

I believe that this work is important for OpenBTS as well -- not only will it
facilitate interoperability with Serval, but it is a critical next step to the
development of decentralized, zero-configuration GSM networking. Since a core
aim of the OpenBTS project is to provide infrastructure for developing regions,
"turn on and forget" installation is a critical part of this goal.

1. http://code.google.com/p/serval-dna/
2. https://github.com/servalproject/serval-dna/commits/master
3. https://github.com/servalproject/serval-dna/tree/asterisk_1.6