JR Richardson wrote:
Hi All,
I'm testing carrierroute module on version: kamailio 1.5.4-notls (i386/linux).
I'm distributing calls to a group of Asterisk servers, all in the same
carrier and domain, wanted to load balance the calls and I'm curious
how this works. I see the 'probability' parameter in the carrierroute
table and set it to equal value across all servers, I have 4 servers
I'm sending calls to, so I set each prob value to '0.25'. I'm testing
with sipp and hashing over call_id so this is the same for every
call. I send 40 calls and the distribution of calls to the asterisk
servers are 11, 12, 6, 11, pretty close to even but not 100%
How does the distribution algorithm work for carrieroute? Does it
statefully track all active calls and load balance across each server
in destination group? Is there another algorithm that can offer that
can get closer to a round robin effect?
Hello JR,
The distribution algorithm works by doing a CRC32 on the Call_id(I
suppose you use cr_route not cr_prime_route), and dividing than number
so it reflects the probability you gave . Your data sample is too small
to show the correct distribution; if you can test with a 2000 calls
scenario, and the Call-Id is randomized as it should, then the
distribution will be uniform. The carrierroute module does not keep
track of balanced calls.
Another question is do I need to include the
record_route() and the
t_check_trans() functions prior to calling the carrierroute functions?
I see in the debug "DBG:core:forward_reply: found module tm, passing
reply to it" and dialogs seem to process fine, so does the
carrierroute module handle those requirements for stateful processing?
Thanks.
AFAIK, the decision to call record_route() is orthogonal with the
carrierroute module. The same for stateful / stateless processing (you
can use carrierroute module both stateless or statefull depending on
what you want)
JR
Cheers
Marius