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@X.X.X.23:5080>;tag=31168SIPpTag005.
To: sut <sip:service@X.X.X.5:5070>;tag=30500SIPpTag015.
Call-ID: 5-31168@X.X.X.23.
CSeq: 1 ACK.
Contact: sip:sipp@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@X.X.X.23:5080>;tag=31168SIPpTag001.
To: sut <sip:service@X.X.X.5:5070>;tag=30500SIPpTag011.
Call-ID: 1-31168@X.X.X.23.
CSeq: 2 BYE.
Contact: sip:sipp@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
<bog...@opensips.org <mailto:bog...@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
<bog...@opensips.org <mailto:bog...@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@lists.opensips.org <mailto:Users@lists.opensips.org>
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users