[OpenSIPS-Users] Load Balancer Issue

Bogdan-Andrei Iancu bogdan at opensips.org
Thu Oct 25 16:00:47 CEST 2012


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/20121025/cfe47130/attachment-0001.htm>


More information about the Users mailing list