[Kamailio-Devel] carrierroute extensions in kamailio 1.5

Henning Westerholt henning.westerholt at 1und1.de
Wed Nov 19 15:01:22 CET 2008


Hi all,

i'm happy to announce that we finished the work on the carrierroute module for 
kamailio 1.5. We implemented a bunch of new features that makes the module 
more flexible then ever, and also fixed a few annoyances in the module usage:

1. Improved routing data loading

The module supports now the partioned loading of routing data during startup 
and reloads. In the past when one want to load big route set it was necessary 
to increase the private memory pool size, as the data was stored temporarily 
there. Now this is not necessary anymore, its possible to load route sets 
with e.g. 400.000 rules in the standard (private memory) configuration.

2. Efficient matching of domains and carriers

In the old implementation a simple linear list was used, this was replaced 
with a fast binary search function. The module can now look up carrier and 
domains in most cases with O(log n), which makes it more scalable when a big 
number of carriers and/ or domains are involved. Only when a dynamic string 
is used in the config script a full list search is needed.

3. Support for non-numerical prefix matching

Carrierroute now supports also the prefix matching with non-numerical 
characters. Its possible to use the entire standard ascii charset for route 
matching. This is configurable with a module parameter, the default 
implementation is still the know digit matching method. Please keep in mind 
that memory demands will increase somewhat when the extended matching is 
used. This additonal flexibility will probably bring a small overhead with 
it, as some additional logic is involved during the routing deciscion. But i 
don't think this will be noticable on today standard servers.

4. Extensive refactoring and cleanups

We restructured and refactored the code in most areas, to make the module 
implementation and structure more understandable, maintainable and 
extensible. We replaced the usage of custom datatypes and fixup functions 
with the standard core implementation, switched to the autogenerated DB 
interface and use now standard glibc functions e.g. for the list search. We 
changed certain structures to not store the full name of carriers and domains 
in memory to save space and got finally rid of this mismatch between internal 
and external carrier ID.

More details about the new implementation can be found in the documentation 
at: http://www.kamailio.org/docs/modules/devel/carrierroute.html

Porting hints, e.g. for the new database structure are provided at:
http://www.kamailio.org/dokuwiki/doku.php/install:1.4.x-to-1.5.0

We did tests with our testsuite, but please keep in mind that there are 
probably a few bugs present. So any testing is highly appreciated, please 
report any bugs to the tracker or the development list.

With best regards,

Henning Westerholt


-- 
Henning Westerholt - Development Consumer Products / DSL Core
1&1 Internet AG, Ernst-Frey-Str. 9, 76135 Karlsruhe, Germany

Vorstände: Henning Ahlert, Ralph Dommermuth, Matthias Ehrlich, Thomas
Gottschlich, Robert Hoffmann, Markus Huhn, Hans-Henning Kettler,
Dr. Oliver Mauss, Jan Oetjen - Aufsichtsratsvorsitzender: Michael Scheeren
Amtsgericht Montabaur / HRB 6484



More information about the Devel mailing list