[OpenSIPS-Users] Problem with load balancer module

Bogdan-Andrei Iancu bogdan at voice-system.ro
Wed Jan 12 13:14:39 CET 2011


Hi Diego,

The bug seams to be in your callee device. Take a look at the 200 OK it 
sends:

U 192.168.2.165:5061 -> 192.168.2.165:5060
SIP/2.0 200 OK..From: "Your Long 
Name"<sip:Username at 192.168.2.150:5060>;tag=A46E9878A6B36612423768382DD6C758..To: 
<sip:50257609195 at 192.168.2.165>;tag=843e7f0-a502a8c0-13c5-50022-1110-60a48c56-1110..Call-ID: 
D059E3F6F50CACFB33B4526B0A1CA112 at 192.168.2
.150..CSeq: 1 INVITE..Via: SIP/2.0/UDP 
192.168.2.165;branch=z9hG4bK7bcf.2d3c8236.0..Via: SIP/2.0/UDP 
192.168.2.150:5060;received=192.168.2.150;rport=5060;branch=z9hG4bKC115ED4230E704ED2956D13FC3999153..Record-Route: 
<sip:192.168.2.165;lr;ftag=A46E98
78A6B36612423768382DD6C758;did=08c.697623b5>..Contact: 
<sip:50257609195 at 192.168.2.165>..Allow: INVITE, CANCEL, ACK, BYE, 
OPTIONS, INFO..Content-Type: application/sdp..Content-Length: 
210....v=0..o=RBTAlerting 2844730 0 IN IP4 192.168.2.165..s=INTEL_
SIP_CCLIB..i=session information..c=IN IP4 192.168.2.165..t=0 0..m=audio 
49152 RTP/AVP 8 101..a=rtpmap:8 PCMA/8000..a=rtpmap:101 
telephone-event/8000..
#

The 200 OK is sent from 192.168.2.165:5061, but in contact it places 
sip:50257609195 at 192.168.2.165 -> the port is missing, so the sequential 
requests are going to the wrong destination (to 
sip:50257609195 at 192.168.2.165 which is actually the LB ,not the callee)

Regards,
Bogdan

Diego Barberio wrote:
> Hi Bogdan,
>
> Have you been able to take a look at the traces I sent?
>
> Thanks
> Diego
>
> -----Original Message-----
> From: users-bounces at lists.opensips.org
> [mailto:users-bounces at lists.opensips.org] On Behalf Of Diego Barberio
> Sent: lunes, 10 de enero de 2011 12:51 p.m.
> To: users at lists.opensips.org
> Subject: [OpenSIPS-Users] Problem with load balancer module
>
> Hi Bogdan,
>
> Thank you for your prompt response. I'm sorry I couldn't send the trace
> before but I had some problems with my network.
> Also I've change the IP Address schema.
> The call is originated from 192.168.2.150 to 192.168.2.165:5060 which is the
> opensips address. Currently, the load balancer is configured to redirect the
> calls to 192.168.2.165:5061 or 192.168.2.165:5062. In the call I'm sending
> the INVITE was redirected to 5061.
>
> The you will see that the ACK is not redirected to the destination.
>
> Thanks
> Diego
>
> -----Original Message-----
> From: users-bounces at lists.opensips.org
> [mailto:users-bounces at lists.opensips.org] On Behalf Of Bogdan-Andrei Iancu
> Sent: viernes, 07 de enero de 2011 01:19 p.m.
> To: OpenSIPS users mailling list
> Subject: Re: [OpenSIPS-Users] Problem with load balancer module
>
> Hi Diego,
>
> Could you post a SIP capture of a complete call (starting with INVITE) from
> the opensips LB machine ?
>
> Regards,
> Bogdan
>
> Diego Barberio wrote:
>   
>> Diego Sebastián Barberio
>>
>> www.redmondsoftware.com
>> +54 11 48153511 (Ext 143)
>>
>>
>> -----Original Message-----
>> From: Diego Barberio [mailto:diego.barberio at redmondsoftware.com]
>> Sent: jueves, 06 de enero de 2011 03:50 p.m.
>> To: 'users at lists.opensips.org'
>> Subject: Problem with load balancer module
>>
>> Hello,
>>
>> I’m testing the Load Balancing module and I have a problem I can’t fix 
>> by myself. The INVITE message is routed correctly to one of the
>>     
> destinations.
>   
>> However the subsequent ACK and the BYE messages are not sent to the 
>> destinations.
>>
>> I set up opensips to run only in the udp 5060 port. Then I have two 
>> identical applications: one running on port 5061 and the other on port 
>> 5062, the 3 components are running in the same server which has a 
>> single IP
>> address: 192.168.1.195.
>> The application is very simple:
>> 	1. Receives the INVITE, starts streaming the RTP, and sends the OK
>> 	2. When the ACK is received injects some music in the streaming
>> 	3. Waits until de BYE is received. Then stops the streaming and
>>     
> sends 
>   
>> the OK.
>>
>> This is the configuration of the load_balancer table:
>>
>> mysql> select * from load_balancer;
>> +----+----------+------------------------+-----------+------------+---
>> +----+----------+------------------------+-----------+------------+---
>> +----+----------+------------------------+-----------+------------+---
>> ----+
>> | id | group_id | dst_uri                | resources | probe_mode |
>> description |
>> +----+----------+------------------------+-----------+------------+---
>> +----+----------+------------------------+-----------+------------+---
>> +----+----------+------------------------+-----------+------------+---
>> ----+
>> |  1 |        0 | sip:192.168.1.195:5061 | pstn=1    |          0 |
>> |
>> |  2 |        0 | sip:192.168.1.195:5062 | pstn=1    |          0 |
>> |
>> +----+----------+------------------------+-----------+------------+---
>> +----+----------+------------------------+-----------+------------+---
>> +----+----------+------------------------+-----------+------------+---
>> ----+
>> I've configured only one resource in each application because I'm just 
>> testing.
>>
>> Finally, this is the configuration script, which is the one from the 
>> tutorial on the website:
>>
>> debug=3
>> log_facility=LOG_LOCAL6
>>
>> fork=yes
>> children=4
>>
>> /* uncomment the following lines to enable debugging */
>> debug=6
>> fork=no
>> #log_stderror=yes
>>
>> /* uncomment the next line to disable TCP (default on) */ 
>> disable_tcp=yes
>>
>> port=5060
>>
>> /* uncomment and configure the following line if you want opensips to 
>>    bind on a specific interface/port/proto (default bind on all
>> available) */ listen=udp:192.168.1.195:5060
>>
>> ####### Modules Section ########
>>
>> #set module path
>> mpath="/usr/local/lib/opensips/modules/"
>>
>> loadmodule "maxfwd.so"
>> loadmodule "sl.so"
>> loadmodule "db_mysql.so"
>> loadmodule "tm.so"
>> loadmodule "uri.so"
>> loadmodule "rr.so"
>> loadmodule "dialog.so"
>> loadmodule "mi_fifo.so"
>> loadmodule "signaling.so"
>> loadmodule "textops.so"
>> loadmodule "load_balancer.so"
>>
>> # ----------------- setting module-specific parameters --------------- 
>> # ----- mi_fifo params ----- modparam("mi_fifo", "fifo_name",
>> "/tmp/opensips_fifo")
>>
>>
>> # ----- rr params -----
>> # add value to ;lr param to cope with most of the UAs #modparam("rr", 
>> "enable_full_lr", 1) # do not append from tag to the RR (no need for 
>> this script) #modparam("rr", "append_fromtag", 0)
>> modparam("rr","enable_double_rr",1)
>> modparam("rr","append_fromtag",1)
>>
>>
>> # ----- uri params -----
>> modparam("uri", "use_uri_table", 0)
>>
>> modparam("dialog", "dlg_flag", 13)
>> modparam("dialog", "db_mode", 1)
>> modparam("dialog", "db_url",
>> "mysql://root:Viamonte1621@localhost/opensips")
>>
>>
>> modparam("load_balancer",
>> "db_url","mysql://root:Viamonte1621@localhost/opensips")
>>
>> ####### Routing Logic ########
>>
>>
>> # main request routing logic
>> route{
>> 	if (!mf_process_maxfwd_header("3")) {
>> 		sl_send_reply("483","looping");
>> 		exit;
>> 	}
>>
>>
>> 	if (!has_totag()) {
>> 		xlog("[Redmond] Hast'n to tag\n");
>>                 # initial request
>> 		record_route();
>> 	} else {
>> 		# sequential request -> obey Route indication
>> 		xlog("[Redmond] Has to tag\n");
>> 		loose_route();
>>                 t_relay();
>>                 exit;
>>         }
>>
>>         # handle cancel and re-transmissions
>> 	if ( is_method("CANCEL") ) {
>> 		if ( t_check_trans() )
>> 			t_relay();
>> 		exit;
>> 	}
>>
>>
>>         # from now on we have only the initial requests
>>         if (!is_method("INVITE")) {
>> 		xlog("[Redmond] Not invite\n");
>> 		if ( t_check_trans() )
>> 			t_relay();
>> 		exit;
>>                 #send_reply("405","Method Not Allowed");
>>                 #exit;
>>         }
>>
>> 	load_balance("0","pstn");
>>
>>         # LB function returns negative if no suitable destination (for 
>> requested resources) is found,
>>         # or if all destinations are full
>>         if ($retcode<0) {
>> 		xlog("[Redmond] Service full\n");
>> 		sl_send_reply("500","Service full");
>> 		exit;
>>         }
>>
>> 	xlog("[Redmond] Selected destination is: $du\n");
>>
>>         # send it out
>> 	if (!t_relay()) {
>> 		sl_reply_error();
>> 	}
>> }
>>
>>
>>
>>
>>
>> It seems that the route is not saved, because the To tag is sent in 
>> the ACK and BYE messages, also the logs I've added are written as 
>> expected for each message. If necesarry I can send a new email with 
>> the
>>     
> log attached.
>   
>> Please, can you help me to find what's wrong?
>>
>> Thanks
>> Diego
>>
>>
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>   
>>     
>
>
> --
> Bogdan-Andrei Iancu
> OpenSIPS Event - expo, conf, social, bootcamp
> 2 - 4 February 2011, ITExpo, Miami,  USA www.voice-system.ro
>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>   


-- 
Bogdan-Andrei Iancu
OpenSIPS Event - expo, conf, social, bootcamp
2 - 4 February 2011, ITExpo, Miami,  USA
www.voice-system.ro




More information about the Users mailing list