[SR-Users] Difficulties with with loose_route() when trying to handle non-compliant ACK

Richard Brady rnbrady at gmail.com
Fri Nov 23 03:24:40 CET 2012


Hi guys

I have a multihomed Kamailio proxy sitting between two B2BUAs on
separate networks and record-routing all dialogs.

The problem I have is that when one of these devices receives a 200
OK, it does not populate the RURI of the ACK correctly. Instead of
taking it from the Contact header on the 200 OK, it uses the user part
from the Contact header and sets the domain to the proxy IP. It then
also populates the Route headers.

The ACKs are below and the IPs are:

10.152.1.92:5060: UAC on outside
10.200.70.100:5060: proxy outside interface
192.168.242.100: proxy inside interface
192.168.242.102: UAS on inside

This the ACK message going into and coming out of the proxy.

# U 10.152.1.92:5060 -> 10.200.70.100:5060
ACK sip:natted_ua*9197**192.168.242.102*5080*udp at 10.200.70.100 SIP/2.0.
Via: SIP/2.0/UDP 127.0.1.1:5060;branch=z9hG4bK-2280-1-5.
Route:  <sip:10.200.70.100;r2=on;lr=on;nat=yes>,<sip:192.168.242.100;r2=on;lr=on;nat=yes>.
From: sipp <sip:sipp at 127.0.1.1:5060>;tag=2280SIPpTag001.
To: sut <sip:9197 at 10.200.70.100:5060>;tag=p0FaeQ1QUS9ae.
Call-ID: 1-2280 at 127.0.1.1.
CSeq: 1 ACK.
Contact: sip:sipp at 127.0.1.1:5060.
Max-Forwards: 70.
Subject: Performance Test.
Content-Length: 0.
.

# U 10.200.70.100:5060 -> 192.168.242.100:5060
ACK sip:192.168.242.100;r2=on;lr=on;nat=yes SIP/2.0.
Via: SIP/2.0/UDP 10.200.70.100;branch=z9hG4bKcydzigwkX.
Via: SIP/2.0/UDP
127.0.1.1:5060;rport=5060;received=10.152.1.92;branch=z9hG4bK-2280-1-5.
Route:  .
From: sipp <sip:sipp at 127.0.1.1:5060>;tag=2280SIPpTag001.
To: sut <sip:9197 at 10.200.70.100:5060>;tag=p0FaeQ1QUS9ae.
Call-ID: 1-2280 at 127.0.1.1.
CSeq: 1 ACK.
Contact: <sip:sipp at 127.0.1.1:5060;alias=10.152.1.92~5060~1>.
Max-Forwards: 69.
Subject: Performance Test.
Content-Length: 0.

So I am trying to understand why it is trying to relay to itself (I
have mhomed=1) and why it is rewriting the RURI as if it is a strict
router.

Currently decode_contact() is disabled but enabling doesn't seem to
help. Unless there is a very specific place where it belongs.

Any advice would be hugely appreciated. I can always paste logs /
configs / traces.

Richard

--
Richard Brady
M: +44 (0)7771 623 348
T:  +44 (0)20 8144 8160
E: rnbrady at gmail.com



More information about the sr-users mailing list