Hello all, 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?
Thanks, Spencer
Spencer Thomason writes:
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?
i cannot comment on drouting module, but as author of sip-router lcr module, i can tell that it is actively maintained. on this mailing list someone mentioned that he has been successfully using lcr module with 50k rules.
-- juha
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
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
Best regards,
Henning
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