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