The request sent out by the LB still has the Route
header. This
indicates that either:
- the load balancer does not detect the domain/IP in the Route header
as an internal one (alias=....)
- the loose_route function is not called in the LB.
Many thanks ! I did not call loose_route in the LB, I think that will solve it.
Best regards,
Florian
Florian Meister schrieb:
Hi,
I'm trying to set up a HA-OBP for both natted and non-natted users.
Atm my setup looks like that:
[UAC] <---> (NAT) <---> [LB] <---> [REG + Proxy] <---> [PSTN GW]
At the loadbalancer I use add_path and add_path_received to add a
path-header to
the request sent to the Registrar. (Of course only for
register requests). I use a few parameters for telling the registrar
module to use the path header. When looking in the mysql-db I can see
the correct value in the path-field in the location-table.
When getting an invite from the PSTN gateway for one of the UAC's the
Proxy is
adding a route-header according to the path-value in the
mysql. That seems also correct. Now to my problem:
The loadbalancer is sending out the INVITE to the private-ip, not to
the
public-nat-ip of the UAC. It seems that the received-parameter in
the Route-header is somehow ignored. I am using the use_received
parameter in the loadbalancer, but it does not work.
In the following you can find the SIP trace (made on the
loadbalancer) and the
loadbalancer config, since I think there is the
problem.
Thanks,
Florian
Here is the SIP-trace of the INVITE:
09:49:07.785294 IP [Proxy+Registrar].5060 > [Loadbalancer].5060: SIP,
length:
1101
E..i..@.?.Yb..,F..,+.....U.BINVITE
sip:435572949012@[PRIVATE IP of
UAC];user=phone SIP/2.0
Record-Route:
<sip:[Proxy+Registrar];lr;ftag=as33339e2e>
Via: SIP/2.0/UDP [Proxy+Registrar];branch=z9hG4bK3d51.bf3830b5.0
Via: SIP/2.0/UDP [PSTN
Gateway]:5060;branch=z9hG4bK521a62f5;rport=5060
Route:
<sip:[Loadbalancer];lr;received="sip:[PUBLIC NAT IP of
UAC]:64224">
Max-Forwards: 69
From: "4366480588134" <sip:4366480588134@[PSTN
Gateway]>;tag=as33339e2e
To: <sip:+435572949012@[Proxy+Registrar]>
Contact: <sip:4366480588134@[PSTN Gateway]>
Call-ID: 067ebe30188025880d0c9f6e78c1b86d@[PSTN Gateway]
CSeq: 102 INVITE
User-Agent: Asterisk PBX 1.6.1.5
Date: Fri, 25 Sep 2009 07:40:26 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY,
INFO
Supported: replaces, timer
Content-Type: application/sdp
Content-Length: 312
v=0
o=root 1940822246 1940822246 IN IP4 [PSTN Gateway]
s=Asterisk PBX 1.6.1.5
c=IN IP4 [PSTN Gateway]
t=0 0
m=audio 19178 RTP/AVP 8 3 0 101
a=rtpmap:8 PCMA/8000
a=rtpmap:3 GSM/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv
09:49:07.786459 IP [Loadbalancer].5060 > [Proxy+Registrar].5060: SIP,
length:
445
E.....@.@.Z...,+..,F........SIP/2.0 100 Giving a
try
Via: SIP/2.0/UDP
[Proxy+Registrar];branch=z9hG4bK3d51.bf3830b5.0;rport=5060;received=[Pr
oxy+Registrar]
Via: SIP/2.0/UDP [PSTN
Gateway]:5060;branch=z9hG4bK521a62f5;rport=5060
From: "4366480588134"
<sip:4366480588134@[PSTN
Gateway]>;tag=as33339e2e
To: <sip:+435572949012@[Proxy+Registrar]>
Call-ID: 067ebe30188025880d0c9f6e78c1b86d@[PSTN Gateway]
CSeq: 102 INVITE
Server: Kamailio (1.5.1-notls (i386/linux))
Content-Length: 0
09:49:07.786608 IP [Loadbalancer].5060 > [PRIVATE IP of UAC].5060:
SIP, length:
1307
E..7..@.@..@..,+.........#>.INVITE
sip:435572949012@[PRIVATE IP of
UAC];user=phone SIP/2.0
Record-Route:
<sip:[Loadbalancer];lr;ftag=as33339e2e;nat=yes>
Record-Route: <sip:[Proxy+Registrar];lr;ftag=as33339e2e>
Via: SIP/2.0/UDP [Loadbalancer];branch=z9hG4bK3d51.207ba0a5.0
Via: SIP/2.0/UDP
[Proxy+Registrar];rport=5060;received=[Proxy+Registrar];branch=z9hG4bK3
d51.bf3830b5.0
Via: SIP/2.0/UDP [PSTN
Gateway]:5060;branch=z9hG4bK521a62f5;rport=5060
Route:
<sip:[Loadbalancer];lr;received="sip:[PUBLIC NAT IP of
UAC]:64224">
> Max-Forwards: 68
From: "4366480588134"
<sip:4366480588134@[PSTN
Gateway]>;tag=as33339e2e
To: <sip:+435572949012@[Proxy+Registrar]>
Contact: <sip:4366480588134@[PSTN Gateway]>
Call-ID: 067ebe30188025880d0c9f6e78c1b86d@[PSTN Gateway]
CSeq: 102 INVITE
User-Agent: Asterisk PBX 1.6.1.5
Date: Fri, 25 Sep 2009 07:40:26 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY,
INFO
Supported: replaces, timer
Content-Type: application/sdp
Content-Length: 330
Path: <sip:[Loadbalancer];lr>
v=0
o=root 1940822246 1940822246 IN IP4 [PSTN Gateway]
s=Asterisk PBX 1.6.1.5
c=IN IP4 [Loadbalancer]
t=0 0
m=audio 35480 RTP/AVP 8 3 0 101
a=rtpmap:8 PCMA/8000
a=rtpmap:3 GSM/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv
a=nortpproxy:yes
09:49:08.258116 IP [Loadbalancer].5060 > [PRIVATE IP of UAC].5060:
SIP, length:
1307
E..7..@.@..@..,+.........#>.INVITE
sip:435572949012@[PRIVATE IP of
UAC];user=phone SIP/2.0
Record-Route:
<sip:[Loadbalancer];lr;ftag=as33339e2e;nat=yes>
Record-Route: <sip:[Proxy+Registrar];lr;ftag=as33339e2e>
Via: SIP/2.0/UDP [Loadbalancer];branch=z9hG4bK3d51.207ba0a5.0
Via: SIP/2.0/UDP
[Proxy+Registrar];rport=5060;received=[Proxy+Registrar];branch=z9hG4bK3
d51.bf3830b5.0
Via: SIP/2.0/UDP [PSTN
Gateway]:5060;branch=z9hG4bK521a62f5;rport=5060
Route:
<sip:[Loadbalancer];lr;received="sip:[PUBLIC NAT IP of
UAC]:64224">
> Max-Forwards: 68
From: "4366480588134"
<sip:4366480588134@[PSTN
Gateway]>;tag=as33339e2e
To: <sip:+435572949012@[Proxy+Registrar]>
Contact: <sip:4366480588134@[PSTN Gateway]>
Call-ID: 067ebe30188025880d0c9f6e78c1b86d@[PSTN Gateway]
CSeq: 102 INVITE
User-Agent: Asterisk PBX 1.6.1.5
Date: Fri, 25 Sep 2009 07:40:26 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY,
INFO
Supported: replaces, timer
Content-Type: application/sdp
Content-Length: 330
Path: <sip:[Loadbalancer];lr>
v=0
o=root 1940822246 1940822246 IN IP4 [PSTN Gateway]
s=Asterisk PBX 1.6.1.5
c=IN IP4 [Loadbalancer]
t=0 0
m=audio 35480 RTP/AVP 8 3 0 101
a=rtpmap:8 PCMA/8000
a=rtpmap:3 GSM/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv
a=nortpproxy:yes
09:49:09.258109 IP [Loadbalancer].5060 > [PRIVATE IP of UAC].5060:
SIP, length:
1307
E..7..@.@..@..,+.........#>.INVITE
sip:435572949012@[PRIVATE IP of
UAC];user=phone SIP/2.0
Record-Route:
<sip:[Loadbalancer];lr;ftag=as33339e2e;nat=yes>
Record-Route: <sip:[Proxy+Registrar];lr;ftag=as33339e2e>
Via: SIP/2.0/UDP [Loadbalancer];branch=z9hG4bK3d51.207ba0a5.0
Via: SIP/2.0/UDP
[Proxy+Registrar];rport=5060;received=[Proxy+Registrar];branch=z9hG4bK3
d51.bf3830b5.0
Via: SIP/2.0/UDP [PSTN
Gateway]:5060;branch=z9hG4bK521a62f5;rport=5060
Route:
<sip:[Loadbalancer];lr;received="sip:[PUBLIC NAT IP of
UAC]:64224">
> Max-Forwards: 68
From: "4366480588134"
<sip:4366480588134@[PSTN
Gateway]>;tag=as33339e2e
To: <sip:+435572949012@[Proxy+Registrar]>
Contact: <sip:4366480588134@[PSTN Gateway]>
Call-ID: 067ebe30188025880d0c9f6e78c1b86d@[PSTN Gateway]
CSeq: 102 INVITE
User-Agent: Asterisk PBX 1.6.1.5
Date: Fri, 25 Sep 2009 07:40:26 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY,
INFO
Supported: replaces, timer
Content-Type: application/sdp
Content-Length: 330
Path: <sip:[Loadbalancer];lr>
v=0
o=root 1940822246 1940822246 IN IP4 [PSTN Gateway]
s=Asterisk PBX 1.6.1.5
c=IN IP4 [Loadbalancer]
t=0 0
m=audio 35480 RTP/AVP 8 3 0 101
a=rtpmap:8 PCMA/8000
a=rtpmap:3 GSM/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv
a=nortpproxy:yes
09:49:11.258107 IP [Loadbalancer].5060 > [PRIVATE IP of UAC].5060:
SIP, length:
1307
E..7..@.@..@..,+.........#>.INVITE
sip:435572949012@[PRIVATE IP of
UAC];user=phone SIP/2.0
Record-Route:
<sip:[Loadbalancer];lr;ftag=as33339e2e;nat=yes>
Record-Route: <sip:[Proxy+Registrar];lr;ftag=as33339e2e>
Via: SIP/2.0/UDP [Loadbalancer];branch=z9hG4bK3d51.207ba0a5.0
Via: SIP/2.0/UDP
[Proxy+Registrar];rport=5060;received=[Proxy+Registrar];branch=z9hG4bK3
d51.bf3830b5.0
Via: SIP/2.0/UDP [PSTN
Gateway]:5060;branch=z9hG4bK521a62f5;rport=5060
Route:
<sip:[Loadbalancer];lr;received="sip:[PUBLIC NAT IP of
UAC]:64224">
> Max-Forwards: 68
From: "4366480588134"
<sip:4366480588134@[PSTN
Gateway]>;tag=as33339e2e
To: <sip:+435572949012@[Proxy+Registrar]>
Contact: <sip:4366480588134@[PSTN Gateway]>
Call-ID: 067ebe30188025880d0c9f6e78c1b86d@[PSTN Gateway]
CSeq: 102 INVITE
User-Agent: Asterisk PBX 1.6.1.5
Date: Fri, 25 Sep 2009 07:40:26 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY,
INFO
Supported: replaces, timer
Content-Type: application/sdp
Content-Length: 330
Path: <sip:[Loadbalancer];lr>
v=0
o=root 1940822246 1940822246 IN IP4 [PSTN Gateway]
s=Asterisk PBX 1.6.1.5
c=IN IP4 [Loadbalancer]
t=0 0
m=audio 35480 RTP/AVP 8 3 0 101
a=rtpmap:8 PCMA/8000
a=rtpmap:3 GSM/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv
a=nortpproxy:yes
09:49:15.023388 IP [Proxy+Registrar].5060 > [Loadbalancer].5060: SIP,
length:
397
E.....@.?.\"..,F..,+......a.CANCEL
sip:435572949012@[PRIVATE IP of
UAC];user=phone SIP/2.0
> Via: SIP/2.0/UDP [Proxy+Registrar];branch=z9hG4bK3d51.bf3830b5.0
From: "4366480588134"
<sip:4366480588134@[PSTN
Gateway]>;tag=as33339e2e
Call-ID: 067ebe30188025880d0c9f6e78c1b86d@[PSTN
Gateway]
To: <sip:+435572949012@[Proxy+Registrar]>
CSeq: 102 CANCEL
Max-Forwards: 70
User-Agent: OpenSER (1.3.2-notls (x86_64/linux))
Content-Length: 0
09:49:15.024138 IP [Loadbalancer].5060 > [Proxy+Registrar].5060: SIP,
length:
413
E.....@.@.[...,+..,F........SIP/2.0 200
canceling
Via: SIP/2.0/UDP
[Proxy+Registrar];branch=z9hG4bK3d51.bf3830b5.0;rport=5060;received=[Pr
oxy+Registrar]
From: "4366480588134"
<sip:4366480588134@[PSTN
Gateway]>;tag=as33339e2e
Call-ID: 067ebe30188025880d0c9f6e78c1b86d@[PSTN
Gateway]
To:
<sip:+435572949012@[Proxy+Registrar]>;tag=77b8b5897dbef36847302656cec98
25e-db87
CSeq: 102 CANCEL
Server: Kamailio (1.5.1-notls (i386/linux))
Content-Length: 0
09:49:15.024576 IP [Loadbalancer].5060 > [Proxy+Registrar].5060: SIP,
length:
493
E.. ..@.@.Z...,+..,F........SIP/2.0 487
Request Terminated
Via: SIP/2.0/UDP
[Proxy+Registrar];branch=z9hG4bK3d51.bf3830b5.0;rport=5060;received=[Pr
oxy+Registrar]
Via: SIP/2.0/UDP [PSTN
Gateway]:5060;branch=z9hG4bK521a62f5;rport=5060
From: "4366480588134"
<sip:4366480588134@[PSTN
Gateway]>;tag=as33339e2e
To:
<sip:+435572949012@[Proxy+Registrar]>;tag=77b8b5897dbef36847302656cec98
25e-db87
Call-ID: 067ebe30188025880d0c9f6e78c1b86d@[PSTN
Gateway]
CSeq: 102 INVITE
Server: Kamailio (1.5.1-notls (i386/linux))
Content-Length: 0
09:49:15.025180 IP [Proxy+Registrar].5060 > [Loadbalancer].5060: SIP,
length:
433
E.....@.?.[...,F..,+.......MACK
sip:435572949012@[PRIVATE IP of
UAC];user=phone SIP/2.0
> Via: SIP/2.0/UDP [Proxy+Registrar];branch=z9hG4bK3d51.bf3830b5.0
From: "4366480588134"
<sip:4366480588134@[PSTN
Gateway]>;tag=as33339e2e
Call-ID: 067ebe30188025880d0c9f6e78c1b86d@[PSTN
Gateway]
To:
<sip:+435572949012@[Proxy+Registrar]>;tag=77b8b5897dbef36847302656cec98
25e-db87
CSeq: 102 ACK
Max-Forwards: 70
User-Agent: OpenSER (1.3.2-notls (x86_64/linux))
Content-Length: 0
----------------This is the config of my loadbalancer----------------
----:
####### Global Parameters #########
debug=100
log_stderror=yes
log_facility=LOG_LOCAL0
fork=no
children=4
disable_tcp=yes
port=5060
listen=[Loadbalancer]
####### Modules Section ########
mpath="/usr/lib/kamailio/modules/"
loadmodule "mi_fifo.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "pv.so"
loadmodule "maxfwd.so"
loadmodule "textops.so"
loadmodule "siputils.so"
loadmodule "xlog.so"
loadmodule "nathelper.so"
loadmodule "dispatcher.so"
loadmodule "path.so"
# ----------------- setting module-specific parameters --------------
-
# ----- mi_fifo params -----
modparam("mi_fifo", "fifo_name", "/tmp/kamailio_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)
# -- nathelper
modparam("nathelper", "rtpproxy_sock",
"/var/run/rtpproxy/rtpproxy.sock")
modparam("nathelper",
"received_avp", "$avp(i:80)")
# -- dispatcher params --
modparam("dispatcher", "list_file",
"/etc/kamailio/dispatcher.list")
# -- path params --
modparam("path", "use_received", 1)
####### Routing Logic ########
# main request routing logic
route{
xlog("L_ALERT", "[$rm] from [$fu] to [$tu]\n");
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
exit;
}
# NAT detection
route(4);
if (has_totag()) {
xlog("L_ALERT", "_____HASTOTAG [$rm] from [$fu] to
[$tu]\n");
# sequential request withing a
dialog should
# take the path determined by record-routing
if (loose_route()) {
xlog("L_ALERT", "_____LOOSE_ROUTE [$rm] from
[$fu] to [$tu]\n");
t_relay();
exit;
} else {
if ( is_method("ACK") ) {
if ( t_check_trans() ) {
xlog("L_ALERT", "_____NON-
LOOSE, STATEFUL-ACK [$rm] from [$fu] to [$tu]\n");
# non
loose-route, but
stateful ACK; must be an ACK after a 487 or e.g. 404 from
upstream
server
t_relay();
exit;
} else {
xlog("L_ALERT",
"_____ACK_WITHOUT_TRANSACTION [$rm] from [$fu] to [$tu]\n");
# ACK
without matching
transaction ... ignore and discard.\n");
exit;
}
}
sl_send_reply("404","Not here");
}
exit;
}
#initial requests
# CANCEL processing
if (is_method("CANCEL"))
{
if (t_check_trans())
t_relay();
exit;
}
t_check_trans();
# record routing
if (!is_method("REGISTER|MESSAGE"))
xlog("L_ALERT", "_____RECORD_ROUTING [$rm] from [$fu]
to [$tu]\n");
record_route();
#if ($rU==NULL) {
# # request with no Username in RURI
# sl_send_reply("484","Address Incomplete");
# exit;
#}
if (check_route_param("nat=yes")) {
setbflag(6);
}
#if (isflagset(5) || isbflagset(6)) {
route(5);
#}
/* example how to enable some additional event routes */
if (is_method("INVITE")) {
t_on_reply("1");
t_on_failure("1");
}
if(!ds_is_from_list()) {
ds_select_domain("0", "0");
}
if (!t_relay()) {
sl_reply_error();
}
}
# Caller NAT detection route
route[4]{
force_rport();
if (nat_uac_test("19")) {
if (method=="REGISTER") {
add_path_received();
fix_nated_register();
} else {
fix_nated_contact();
}
setflag(5);
}
else {
add_path();
}
return;
}
# RTPProxy control
route[5] {
if (is_method("BYE")) {
unforce_rtp_proxy();
} else if (is_method("INVITE")){
force_rtp_proxy();
}
if (!has_totag()) add_rr_param(";nat=yes");
return;
}
onreply_route[1] {
xdbg("incoming reply\n");
#if ((isflagset(5) || isbflagset(6)) && status=~"(183)|(2[0-
9][0-9])") {
if
(status=~"(183)|(2[0-9][0-9])") {
force_rtp_proxy();
}
if (isbflagset(6)) {
fix_nated_contact();
}
}
failure_route[1] {
#if (is_method("INVITE") && (isbflagset(6) || isflagset(5)))
{
> if (is_method("INVITE")) {
> unforce_rtp_proxy();
> }
>
> if (t_was_cancelled()) {
> exit;
> }
> }
>
>
>
>
> _______________________________________________
> Kamailio (OpenSER) - Users mailing list
> Users(a)lists.kamailio.org
>
http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
>
http://lists.openser-project.org/cgi-bin/mailman/listinfo/users