[OpenSIPS-Users] Load Balancer Issue
Bogdan-Andrei Iancu
bogdan at opensips.org
Fri Nov 9 17:59:30 CET 2012
Hi Nilanjan,
Check in the trace if :
1) the 200 OK getting back to the caller has 2 RR headers (one from
Proxy and one from LB).
2) the ACK from caller (before LB) has 2 Route headers, one pointing to
LB, next to Proxy.
Regards,
Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com
On 11/09/2012 05:01 PM, Nilanjan Banerjee wrote:
> Hi Bogdan,
>
> Thanks a lot for your suggestion and sorry for the delay in getting
> back with this...I tried the following configuration as you have
> suggested for the Load Balancer and the Proxy:
>
> ______________
> Load Balancer:
> ______________
>
> route{
> if (!mf_process_maxfwd_header("3")) {
> sl_send_reply("483","looping");
> exit;
> }
>
> if (!has_totag()) {
> # initial request
> record_route();
> } else {
> # sequential request -> obey Route indication
> loose_route();
> t_relay();
> exit;
> }
>
> # detect resources and do load balancing
>
> load_balance("1","sc");
>
> # LB function returns negative if no suitable destination (for
> requested resources) is found,
> # or if all destinations are full
> if ($retcode<0) {
> sl_send_reply("500","Service full");
> exit;
> }
>
> xlog("Selected destination is: $du\n");
>
> # send it out
> if (!t_relay()) {
> sl_reply_error();
> }
> }
>
> ______
> Proxy
> ______
>
> route{
>
> if (!has_totag()) {
> # initial request
> record_route();
> } else {
> # sequential request -> obey Route indication
> loose_route();
> }
>
> if (!t_relay()) {
> # xlog("L_ERR","sl_reply_error\n");
> sl_reply_error();
> }
>
> }
>
> However, I am still getting the same error - basically the ACK and the
> BYE messages are skipping the Proxy and the response to the BYE is
> sent to the Proxy. Here are the sample ACK and BYE for the following
> setup I am using:
>
> X.X.X.23:5080 --> X.X.X.206:5060 --> X.X.X.8:5060 --> X.X.X.5:5070
> (sipp UAC) --> (Load Balancer) --> (Proxy) --> (sipp UAS)
>
> #
> U 2012/11/01 11:19:22.901990 X.X.X.206:5060 -> X.X.X.5:5070
> ACK sip:X.X.X.5:5070;transport=UDP SIP/2.0.
> Record-Route:
> <sip:X.X.X.206;lr;ftag=31168SIPpTag005;did=9d.087b203>,<sip:X.X.X.8;lr>.
> Via: SIP/2.0/UDP X.X.X.206;branch=z9hG4bK0112.20fe162.2.
> Via: SIP/2.0/UDP X.X.X.23:5080;branch=z9hG4bK-31168-5-5.
> From: sipp <sip:sipp at X.X.X.23:5080>;tag=31168SIPpTag005.
> To: sut <sip:service at X.X.X.5:5070>;tag=30500SIPpTag015.
> Call-ID: 5-31168 at X.X.X.23.
> CSeq: 1 ACK.
> Contact: sip:sipp at X.X.X.23:5080.
> Max-Forwards: 69.
> Subject: Performance Test.
> Content-Length: 0.
> .
>
> #
> U 2012/11/01 11:19:22.934118 X.X.X.23:5080 -> X.X.X.206:5060
> BYE sip:X.X.X.5:5070;transport=UDP SIP/2.0.
> Record-Route:
> <sip:X.X.X.206;lr;ftag=31168SIPpTag001;did=0ec.de85e9a>,<sip:X.X.X.8;lr>.
> Via: SIP/2.0/UDP X.X.X.23:5080;branch=z9hG4bK-31168-1-7.
> From: sipp <sip:sipp at X.X.X.23:5080>;tag=31168SIPpTag001.
> To: sut <sip:service at X.X.X.5:5070>;tag=30500SIPpTag011.
> Call-ID: 1-31168 at X.X.X.23.
> CSeq: 2 BYE.
> Contact: sip:sipp at X.X.X.23:5080.
> Max-Forwards: 70.
> Subject: Performance Test.
> Content-Length: 0.
> .
>
> Looks like the loose routing for the messages after the initial
> requests is not happening properly according to the Record-Route
> header. Not sure, if I am doing things right in the client side while
> introducing the Record-Route header - hence attaching the modified
> sipp uac and uas I am using.
>
> Would greatly appreciate your time and help if you could please throw
> some light into this matter.
>
> Thanks,
> Nil.
>
>
> On Thu, Oct 25, 2012 at 7:30 PM, Bogdan-Andrei Iancu
> <bogdan at opensips.org <mailto:bogdan at opensips.org>> wrote:
>
> Hi Nil,
>
> Seems the problem is in the proxy, where you do not do RR at all.
>
> Try
>
> ____________
>
> Proxy:
> ____________
>
> route{
>
> if (!has_totag()) {
> # initial request
> record_route();
> } else {
> # sequential request -> obey Route indication
> loose_route();
> }
>
> if (!t_relay()) {
> # xlog("L_ERR","sl_reply_error\n");
> sl_reply_error();
> }
> }
>
>
> Regards,
>
> Bogdan-Andrei Iancu
> OpenSIPS Founder and Developer
> http://www.opensips-solutions.com
>
>
> On 10/22/2012 02:25 PM, Nilanjan Banerjee wrote:
>> Thanks Bogdan for taking time to respond to my post. I think you
>> have guessed it right, I am using the sample routing script given
>> in the Load Balancer (LB) tutorial and that is most likely
>> sending the ACK and BYE messages directly to Client 2 bypassing
>> the Proxy. The routing code snippets I am using at the LB and the
>> Proxy are shown below. Could you please tell me what's going
>> wrong over here? I am using record route support at both the
>> clients. Alternatively if you could please tell me what should go
>> in the routing blocks of the LB and the Proxy so that all the
>> messages go through the LB and the Proxy then that will be of
>> immense help too.
>>
>> Regards,
>> Nil.
>>
>> ____________
>>
>> Load Balancer:
>> ____________
>>
>> route{
>> if (!mf_process_maxfwd_header("3")) {
>> sl_send_reply("483","looping");
>> exit;
>> }
>>
>> if (!has_totag()) {
>> # initial request
>> record_route();
>> } else {
>> # sequential request -> obey Route indication
>> loose_route();
>> t_relay();
>> exit;
>> }
>>
>> # detect resources and do balancing
>>
>> load_balance("1","sc");
>>
>>
>> # LB function returns negative if no suitable destination
>> (for requested resources) is found,
>> # or if all destinations are full
>> if ($retcode<0) {
>> sl_send_reply("500","Service full");
>> exit;
>> }
>>
>> xlog("Selected destination is: $du\n");
>>
>> # send it out
>> if (!t_relay()) {
>> sl_reply_error();
>> }
>> }
>>
>> ____________
>>
>> Proxy:
>> ____________
>>
>> route{
>> record_route();
>> if (!t_relay()) {
>> # xlog("L_ERR","sl_reply_error\n");
>> sl_reply_error();
>> }
>> }
>>
>>
>> On Sun, Oct 21, 2012 at 7:39 PM, Bogdan-Andrei Iancu
>> <bogdan at opensips.org <mailto:bogdan at opensips.org>> wrote:
>>
>> Hi Nil,
>>
>> I wild guess is you are not correctly do "loose_route" on the
>> LB, so instead of following the Route (to OpenSIPS Proxy), it
>> goes directly to end destination in RURI (Client 2).
>>
>> Of course, I assume that all parties (LB + Proxy) do
>> record_route() for the call, right ?
>>
>> Regards,
>>
>> Bogdan-Andrei Iancu
>> OpenSIPS Founder and Developer
>> http://www.opensips-solutions.com
>>
>>
>> On 10/21/2012 10:09 AM, Nilanjan Banerjee wrote:
>>> Hello,
>>>
>>> I am trying to build the following setup using OpenSIPS
>>> load balancer and the proxy functionality:
>>>
>>> Client 1 (sipp) <----> OpenSIPS Load Balancer <---->
>>> OpenSIPS Proxy <----> Client 2 (sipp)
>>>
>>> At the client ends I am using the following commands:
>>>
>>> Client 1: sipp -sn uac -rsa [Load Balancer Address] [Client
>>> 2 Address]
>>>
>>> Client 2: sipp -sn uas
>>>
>>> The Load Balancer is configured with a destination as the
>>> OpenSIPS Proxy and the Proxy is configured to simply forward
>>> the SIP messages based on IP address (using only forward();
>>> in the routing block).
>>>
>>> Now everything (INVITE, OK and ACK messages) works fine
>>> except the BYE messages that are getting forwarded by the
>>> Load Balancer directly to Client 2 unlike the INVITE, OK and
>>> ACK messages that traverse the Proxy. Client 2 however,
>>> sends the OK to the BYE to the OpenSIPS Proxy. Since the BYE
>>> messages do not traverse the Proxy, the OK to the BYE
>>> messages are getting retransmitted repeatedly by Client 2
>>> and the sessions are not getting terminated properly. How do
>>> I make the BYE messages to go through the Proxy or the OK
>>> message sent directly to the Load Balancer so that the
>>> retransmissions do not happen and the sessions get
>>> terminated properly?
>>>
>>> [NB: When the Load Balancer is taken out of the loop and the
>>> Proxy configuration is kept the same, all the SIP messages
>>> traverses the Proxy and everything works fine i.e., the BYE
>>> and the OKs to the BYEs are handled properly and sessions
>>> get terminated properly.]
>>>
>>> Would greatly appreciate any help in this matter. Thanks in
>>> advance.
>>>
>>> Nil.
>>>
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org <mailto:Users at lists.opensips.org>
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20121109/4c498d9d/attachment-0001.htm>
More information about the Users
mailing list