[SR-Users] LCR Modules Comparison

Daniel-Constantin Mierla miconda at gmail.com
Fri Aug 19 13:01:14 CEST 2011


Hello,

some comments inline...

On 8/18/11 12:59 PM, Henning Westerholt wrote:
> On Wednesday 17 August 2011, Spencer Thomason wrote:
>> Can anyone shed some light into the differences between the available LCR
>> modules?  We have migrated our config from OpenSIPS where we used the
>> drouting module to Kamailio where we are using the lcr module.  Our
>> ruleset is not crazy huge, about 100k entries.  Are there compelling
>> reasons to choose one module over the other?  Is there one that has the
>> most active development behind it and is a "standard" for the platform or
>> is there one that will be deprecated in the foreseeable future?
> Hi Spencer,
>
> the carrierroute module is also actively maintained, mtree as well. The
> drouting is available but probably the one with the least usage here. Its
> initial import has been done from Raul Alexis and I guess they use it in
> production, but don't know details. There were also some patches from other
> people in the last year, but recently it has seen not that much activity.
>
> The modules differ mostly in their provided configuration interface, their
> capabilities and the internal used datastructures IMHO.
>
> lcr
> * introduced in 0.9.x times, reworked several times
> * provided initially support for a limited number of routes, today it supports
> large route sets as well
> * provides easy failover functionaly to try sequentially several gateways
> * uses internally a hash table
>
> cr
> * introduced in 1.3, reworked for 1.5
> * support larger route sets
> * provides flexible failure routing capabilities with a dedicated table, but
> is more complicated to setup and use
> * uses a trie (tree) internally
>
> mtree
> * introduced in 3.1
> * support larger route sets
> * provides generic tree matching functionality, but without that much
> additional functionality
> * uses a tree internally
mtree is indeed more like a generic tool to store some data in memory, 
indexed in a tree, based on prefix-like keys. The you have to do your 
logic in config file. For example, this module together with dispatcher 
are used extensively by us to build all kinds of least cost routing systems.

> drouting
> * ported from opensips for 3.0
> * support larger route sets
> * provides failover capabilities and some special matching as time or date
> * uses a trie (tree) internally
This modules was actually around since 2005 (see history remarks in 
modules_k/drouting/drouting.c) and I am very familiar with its code. I'm 
not using it lately, but if someone reports issues they are going to be 
fixed. I know many people using it, therefore I guess it just works fine.
Cheers,
Daniel

-- 
Daniel-Constantin Mierla -- http://www.asipto.com
Kamailio Advanced Training, Oct 10-13, Berlin: http://asipto.com/u/kat
http://linkedin.com/in/miconda -- http://twitter.com/miconda




More information about the sr-users mailing list