On 03/12/2012 11:00 AM, Sasa Vilic wrote:
Hello,

I have read here about load balancing between multiple gateways by using carrierroute module, but there is one particular question for which I found no answer.

Let's say I have two asterisk servers (X und Y), that are my gateways to PSTN. Let we do it simple. Let's say that each gateway supports only one outgoing call at the time and there is no incoming calls from PSTN. Now:

Bob calls one number and Kamailio uses X gateway.
Alice calls other number and Kamailio uses Y gateway.
Alice terminates the call.
Alice place a new call, but Bob's call is still in progress.
If we were used round robin algorithm, Kamailio would then use X gateway, but X gateway is currently occupied. What shell happen now?
And what if Alice didn't tear down call ordinary? What if it her SIP client simply crashed? (Then kamailio would think that there is now free gateway)

So the main question is: can kamailio know/detect, how much calls are going over one particular gateway and what can be done when limit for this gateway is reached?


Hello,

Carrierroute module support load balancing based on weights(so it can be non-uniform distribution).Keep in mind that this works on large numbers of calls, so on the long run we will have 50-50% load on the servers (given enough calls). For small number of calls (like your example) the carrierroute module has no way of determining to route on the other gateway.

As others suggested, you can use failure_route to route between gateways. Carrierroute module supports this over the failure route table.

Cheers,
Marius
Thank you in advance.

Kind Regards,
Sasa Vilic


-- 
Zbihlei Marius

Head of
Linux Development Services Romania

1&1 Internet Development srl    Tel KA: 754-9152
Str Mircea Eliade 18            Tel RO: +40-31-223-9152
Sect 1, Bucuresti               mailto: marius.zbihlei@1and1.ro
71295, Romania