Hi Bogdan,
I will try the force_rport().
Meanwhile I am confused by what you wrote. Can you please clarify?
The problem is the different port in via. The
"via1_matching"
param has no effect on RFC3261 transaction matching algorithm
since this is entirely based on via :).
-----Original Message-----
From: Bogdan-Andrei Iancu [mailto:bogdan@voice-system.ro]
Sent: Wednesday, February 08, 2006 11:43 AM
To: Papadopoulos Georgios
Cc: users(a)openser.org
Subject: Re: [Users] Receiving different VIA in INVITE and CANCEL
Hi Geroge,
it looks like your device uses STUN to perform nat traversal
(the callid has a private IP). The improper nat traversal via
STUN is the reason for the different port in VIA; to fix
this, call "force_rport()"
in the beginning of your script for all requests.
now, going back to the CANCEL matching....SIPURA uses the
RFC3261 transaction matching algorithm (based on some cookie
and ids stored in branch VIA param. These are matching in
your case, but openser uses as additional checkings the via
host, port and proto (just to be sure that the originator
matches too to avoid confusion with different senders
generating the same cookie/id).
The problem is the different port in via. The "via1_matching"
param has no effect on RFC3261 transaction matching algorithm
since this is entirely based on via :).
my suggestion is to fix the nat traversal part.
regards,
bogdan
Papadopoulos Georgios wrote:
Hi Bogdan,
Thank you for your reply.
I used
modparam("tm", "via1_matching", 0)
modparam("tm", "ruri_matching", 0)
and I got the following trace. You can see that the ACK to the Proxy
Authentication Required and the CANCEL have different Via than the
INVITE. I know that this breaks the specs but I thought that
these two
modparams should take care of these broken UAs.
Also, any ideas what makes the UA switch ports? Is it a NAT
issue? Only
a very small percentage of the same UA behave this
way.
thank you for any help
George
#
U 2006/02/07 12:05:29.756686 195.167.60.21:1231 -> 213.5.43.134:5060
INVITE sip:2116872933@sip.i-call.gr SIP/2.0.
Via: SIP/2.0/UDP 195.167.60.21:1327;branch=z9hG4bK-cc55e25.
From: tester <sip:tester@sip.i-call.gr>;tag=a75dbec37247ce75o0.
To: <sip:2116872933@sip.i-call.gr>.
Call-ID: 6d30a75b-c6343ebd(a)172.22.3.25.
CSeq: 101 INVITE.
Contact: tester <sip:tester@195.167.60.21:1327>.
Remote-Party-ID: tester
<sip:tester@sip.i-call.gr>;screen=yes;party=calling.
Max-Forwards: 70.
Expires: 240.
User-Agent: Sipura/SPA3000-3.1.7(GWg).
Supported: x-sipura.
Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFER.
Content-Type: application/sdp.
Content-Length: 423 .
.
v=0.
o=- 33757 33757 IN IP4 195.167.60.21.
s=-..
c=IN IP4 195.167.60.21.
t=0 0.
m=audio 10200 RTP/AVP 18 0 2 4 8 96 97 98 100 101.
a=rtpmap:18 G729a/8000.
a=rtpmap:0 PCMU/8000.
a=rtpmap:2 G726-32/8000.
a=rtpmap:4 G723/8000.
a=rtpmap:8 PCMA/8000.
a=rtpmap:96 G726-40/8000.
a=rtpmap:97 G726-24/8000.
a=rtpmap:98 G726-16/8000.
a=rtpmap:100 NSE/8000.
a=rtpmap:101 telephone-event/8000.
a=fmtp:101 0-15.
a=ptime:30.
a=sendrecv.
#
U 2006/02/07 12:05:29.757360 213.5.43.134:5060 -> 195.167.60.21:1327
SIP/2.0 407 Proxy Authentication Required.
Via: SIP/2.0/UDP 195.167.60.21:1327;branch=z9hG4bK-cc55e25.
From: tester <sip:tester@sip.i-call.gr>;tag=a75dbec37247ce75o0.
To:
<sip:2116872933@sip.i-call.gr>;tag=97e44c910458bd56beb40ca402
8d7cc8.0f0
e
.
Call-ID: 6d30a75b-c6343ebd(a)172.22.3.25.
CSeq: 101 INVITE.
Proxy-Authenticate: Digest realm="i-call.gr",
nonce="43e87215b69f85cf82f231965df4ad938a65d43f".
Server: OpenSer (1.0.0-tls (x86_64/linux)).
Content-Length: 0.
Warning: 392 213.5.43.134:5060 "Noisy feedback tells: pid=10474
req_src_ip=195.167.60.21 req_src_port=1231
in_uri=sip:2116872933@sip.i-call.gr
out_uri=sip:2116872933@sip.i-call.gr
via_cnt==1".
.
#
U 2006/02/07 12:05:29.865886 195.167.60.21:1327 -> 213.5.43.134:5060
ACK sip:2116872933@sip.i-call.gr SIP/2.0.
Via: SIP/2.0/UDP 195.167.60.21:1328;branch=z9hG4bK-cc55e25.
From: tester <sip:tester@sip.i-call.gr>;tag=a75dbec37247ce75o0.
To:
<sip:2116872933@sip.i-call.gr>;tag=97e44c910458bd56beb40ca402
8d7cc8.0f0
e
.
Call-ID: 6d30a75b-c6343ebd(a)172.22.3.25.
CSeq: 101 ACK.
Contact: tester <sip:tester@195.167.60.21:1328>.
Max-Forwards: 70.
User-Agent: Sipura/SPA3000-3.1.7(GWg).
Content-Length: 0.
.
*************************************************************
**********
*
**************
*** The Via in the ACK is different than in the INVITE and Openser
sends it
*** to the wrong server
*************************************************************
**********
*
**************
#
U 2006/02/07 12:05:29.866660 213.5.43.134:5060 -> 213.5.xxx.xxx:5060
ACK sip:401#2116872933@213.5.xxx.xxx:5060 SIP/2.0.
Record-Route: <sip:213.5.43.134;ftag=a75dbec37247ce75o0;lr=on>.
Via: SIP/2.0/UDP 213.5.43.134;branch=0.
Via: SIP/2.0/UDP 195.167.60.21:1328;branch=z9hG4bK-cc55e25.
From: tester <sip:tester@sip.i-call.gr>;tag=a75dbec37247ce75o0.
To:
<sip:2116872933@sip.i-call.gr>;tag=97e44c910458bd56beb40ca402
8d7cc8.0f0
e
.
Call-ID: 6d30a75b-c6343ebd(a)172.22.3.25.
CSeq: 101 ACK.
Contact: tester <sip:tester@195.167.60.21:1328>.
Max-Forwards: 69.
User-Agent: Sipura/SPA3000-3.1.7(GWg).
Content-Length: 0.
.
#
U 2006/02/07 12:05:29.959041 195.167.60.21:1327 -> 213.5.43.134:5060
INVITE sip:2116872933@sip.i-call.gr SIP/2.0.
Via: SIP/2.0/UDP 195.167.60.21:1328;branch=z9hG4bK-bf20b945.
From: tester <sip:tester@sip.i-call.gr>;tag=a75dbec37247ce75o0.
To: <sip:2116872933@sip.i-call.gr>.
Call-ID: 6d30a75b-c6343ebd(a)172.22.3.25.
CSeq: 102 INVITE.
Contact: tester <sip:tester@195.167.60.21:1328>.
Proxy-Authorization: Digest username="tester", realm="i-call.gr",
nonce="43e87215b69f85cf82f231965df4ad938a65d43f",
uri="sip:2116872933@sip.i-call.gr",
response="da850791f85d3e882d384d96e4aff30e", algorithm=MD5.
Remote-Party-ID: tester
<sip:tester@sip.i-call.gr>;screen=yes;party=calling.
Max-Forwards: 70.
Expires: 240.
User-Agent: Sipura/SPA3000-3.1.7(GWg).
Supported: x-sipura.
Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFER.
Content-Type: application/sdp.
Content-Length: 423 .
.
v=0.
o=- 33757 33757 IN IP4 195.167.60.21.
s=-..
c=IN IP4 195.167.60.21.
t=0 0.
m=audio 10200 RTP/AVP 18 0 2 4 8 96 97 98 100 101.
a=rtpmap:18 G729a/8000.
a=rtpmap:0 PCMU/8000.
a=rtpmap:2 G726-32/8000.
a=rtpmap:4 G723/8000.
a=rtpmap:8 PCMA/8000.
a=rtpmap:96 G726-40/8000.
a=rtpmap:97 G726-24/8000.
a=rtpmap:98 G726-16/8000.
a=rtpmap:100 NSE/8000.
a=rtpmap:101 telephone-event/8000.
a=fmtp:101 0-15.
a=ptime:30.
a=sendrecv.
#
U 2006/02/07 12:05:29.960454 213.5.43.134:5060 -> 195.167.60.21:1328
SIP/2.0 100 trying -- your call is important to us.
Via: SIP/2.0/UDP 195.167.60.21:1328;branch=z9hG4bK-bf20b945.
From: tester <sip:tester@sip.i-call.gr>;tag=a75dbec37247ce75o0.
To: <sip:2116872933@sip.i-call.gr>.
Call-ID: 6d30a75b-c6343ebd(a)172.22.3.25.
CSeq: 102 INVITE.
Server: OpenSer (1.0.0-tls (x86_64/linux)).
Content-Length: 0.
Warning: 392 213.5.43.134:5060 "Noisy feedback tells: pid=10473
req_src_ip=195.167.60.21 req_src_port=1327
in_uri=sip:2116872933@sip.i-call.gr
out_uri=sip:400#2116872933@213.5.yyy.yyy:5060 via_cnt==1".
.
*************************************************************
**********
*
*** Openser forwards the request to PSTN gateway
*************************************************************
**********
*
#
U 2006/02/07 12:05:29.960516 213.5.43.134:5060 -> 213.5.yyy.yyy:5060
INVITE sip:400#2116872933@213.5.yyy.yyy:5060 SIP/2.0.
Record-Route: <sip:213.5.43.134;ftag=a75dbec37247ce75o0;lr=on>.
Via: SIP/2.0/UDP 213.5.43.134;branch=z9hG4bK53cd.4e18cee6.0.
Via: SIP/2.0/UDP 195.167.60.21:1328;branch=z9hG4bK-bf20b945.
From: tester <sip:tester@sip.i-call.gr>;tag=a75dbec37247ce75o0.
To: <sip:2116872933@sip.i-call.gr>.
Call-ID: 6d30a75b-c6343ebd(a)172.22.3.25.
CSeq: 102 INVITE.
Contact: tester <sip:tester@195.167.60.21:1328>.
Max-Forwards: 69.
Expires: 240.
User-Agent: Sipura/SPA3000-3.1.7(GWg).
Supported: x-sipura.
Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFER.
Content-Type: application/sdp.
Content-Length: 423 .
.
v=0.
o=- 33757 33757 IN IP4 195.167.60.21.
s=-..
c=IN IP4 195.167.60.21.
t=0 0.
m=audio 10200 RTP/AVP 18 0 2 4 8 96 97 98 100 101.
a=rtpmap:18 G729a/8000.
a=rtpmap:0 PCMU/8000.
a=rtpmap:2 G726-32/8000.
a=rtpmap:4 G723/8000.
a=rtpmap:8 PCMA/8000.
a=rtpmap:96 G726-40/8000.
a=rtpmap:97 G726-24/8000.
a=rtpmap:98 G726-16/8000.
a=rtpmap:100 NSE/8000.
a=rtpmap:101 telephone-event/8000.
a=fmtp:101 0-15.
a=ptime:30.
a=sendrecv.
#
U 2006/02/07 12:05:29.975762 213.5.yyy.yyy:57918 ->
213.5.43.134:5060
SIP/2.0 100 Trying.
Via: SIP/2.0/UDP
213.5.43.134;branch=z9hG4bK53cd.4e18cee6.0,SIP/2.0/UDP
195.167.60.21:1328;branch=z9hG4bK-bf20b945.
From: tester <sip:tester@sip.i-call.gr>;tag=a75dbec37247ce75o0.
To: <sip:2116872933@sip.i-call.gr>;tag=329C938C-7DF.
Date: Tue, 07 Feb 2006 10:06:34 GMT.
Call-ID: 6d30a75b-c6343ebd(a)172.22.3.25.
Server: Cisco-SIPGateway/IOS-12.x.
CSeq: 102 INVITE.
Allow-Events: telephone-event.
Content-Length: 0.
.
#
U 2006/02/07 12:05:30.149177 213.5.yyy.yyy:57918 ->
213.5.43.134:5060
SIP/2.0 183 Session Progress.
Via: SIP/2.0/UDP
213.5.43.134;branch=z9hG4bK53cd.4e18cee6.0,SIP/2.0/UDP
195.167.60.21:1328;branch=z9hG4bK-bf20b945.
From: tester <sip:tester@sip.i-call.gr>;tag=a75dbec37247ce75o0.
To: <sip:2116872933@sip.i-call.gr>;tag=329C938C-7DF.
Date: Tue, 07 Feb 2006 10:06:34 GMT.
Call-ID: 6d30a75b-c6343ebd(a)172.22.3.25.
Server: Cisco-SIPGateway/IOS-12.x.
CSeq: 102 INVITE.
Allow: INVITE, OPTIONS, BYE, CANCEL, ACK, PRACK, COMET, REFER,
SUBSCRIBE, NOTIFY, INFO, UPDATE, REGISTER.
Allow-Events: telephone-event.
Contact: <sip:400#2116872933@213.5.yyy.yyy:5060>.
Record-Route: <sip:213.5.43.134;ftag=a75dbec37247ce75o0;lr=on>.
Content-Disposition: session;handling=required.
Content-Type: application/sdp.
Content-Length: 288.
.
v=0.
o=CiscoSystemsSIP-GW-UserAgent 9560 6985 IN IP4 213.5.yyy.yyy.
s=SIP Call.
c=IN IP4 213.5.yyy.yyy.
t=0 0.
m=audio 17868 RTP/AVP 18 101.
c=IN IP4 213.5.yyy.yyy.
a=rtpmap:18 G729/8000.
a=fmtp:18 annexb=no.
a=rtpmap:101 telephone-event/8000.
a=fmtp:101 0-15.
a=ptime:20.
a=silenceSupp:off - - - -.
#
U 2006/02/07 12:05:30.149263 213.5.43.134:5060 -> 195.167.60.21:1328
SIP/2.0 183 Session Progress.
Via: SIP/2.0/UDP 195.167.60.21:1328;branch=z9hG4bK-bf20b945.
From: tester <sip:tester@sip.i-call.gr>;tag=a75dbec37247ce75o0.
To: <sip:2116872933@sip.i-call.gr>;tag=329C938C-7DF.
Date: Tue, 07 Feb 2006 10:06:34 GMT.
Call-ID: 6d30a75b-c6343ebd(a)172.22.3.25.
Server: Cisco-SIPGateway/IOS-12.x.
CSeq: 102 INVITE.
Allow: INVITE, OPTIONS, BYE, CANCEL, ACK, PRACK, COMET, REFER,
SUBSCRIBE, NOTIFY, INFO, UPDATE, REGISTER.
Allow-Events: telephone-event.
Contact: <sip:400#2116872933@213.5.yyy.yyy:5060>.
Record-Route: <sip:213.5.43.134;ftag=a75dbec37247ce75o0;lr=on>.
Content-Disposition: session;handling=required.
Content-Type: application/sdp.
Content-Length: 288.
.
v=0.
o=CiscoSystemsSIP-GW-UserAgent 9560 6985 IN IP4 213.5.yyy.yyy.
s=SIP Call.
c=IN IP4 213.5.yyy.yyy.
t=0 0.
m=audio 17868 RTP/AVP 18 101.
c=IN IP4 213.5.yyy.yyy.
a=rtpmap:18 G729/8000.
a=fmtp:18 annexb=no.
a=rtpmap:101 telephone-event/8000.
a=fmtp:101 0-15.
a=ptime:20.
a=silenceSupp:off - - - -.
*************************************************************
**********
*
****
*** User Agents sends CANCEL with different Via than in INVITE
*** and Openser send it to the wrong server
*************************************************************
**********
*
****
#
U 2006/02/07 12:05:37.859125 195.167.60.21:1328 -> 213.5.43.134:5060
CANCEL sip:2116872933@sip.i-call.gr SIP/2.0.
Via: SIP/2.0/UDP 195.167.60.21:1375;branch=z9hG4bK-bf20b945.
From: tester <sip:tester@sip.i-call.gr>;tag=a75dbec37247ce75o0.
To: <sip:2116872933@sip.i-call.gr>.
Call-ID: 6d30a75b-c6343ebd(a)172.22.3.25.
CSeq: 102 CANCEL.
Proxy-Authorization: Digest username="tester", realm="i-call.gr",
nonce="43e87215b69f85cf82f231965df4ad938a65d43f",
uri="sip:2116872933@sip.i-call.gr",
response="0c4bcac79619588b61993a5ea407f520", algorithm=MD5.
Max-Forwards: 70.
User-Agent: Sipura/SPA3000-3.1.7(GWg).
Content-Length: 0.
.
#
U 2006/02/07 12:05:37.859999 213.5.43.134:5060 -> 213.5.xxx.xxx:5060
CANCEL sip:401#2116872933@213.5.xxx.xxx:5060 SIP/2.0.
Record-Route: <sip:213.5.43.134;ftag=a75dbec37247ce75o0;lr=on>.
Via: SIP/2.0/UDP 213.5.43.134;branch=z9hG4bK53cd.5e18cee6.0.
Via: SIP/2.0/UDP 195.167.60.21:1375;branch=z9hG4bK-bf20b945.
From: tester <sip:tester@sip.i-call.gr>;tag=a75dbec37247ce75o0.
To: <sip:2116872933@sip.i-call.gr>.
Call-ID: 6d30a75b-c6343ebd(a)172.22.3.25.
CSeq: 102 CANCEL.
Proxy-Authorization: Digest username="tester", realm="i-call.gr",
nonce="43e87215b69f85cf82f231965df4ad938a65d43f",
uri="sip:2116872933@sip.i-call.gr",
response="0c4bcac79619588b61993a5ea407f520", algorithm=MD5.
Max-Forwards: 69.
User-Agent: Sipura/SPA3000-3.1.7(GWg).
Content-Length: 0.
.
#
U 2006/02/07 12:05:37.860901 213.5.xxx.xxx:5060 -> 213.5.43.134:5060
SIP/2.0 481 Call Leg Does Not Exist.
Via: SIP/2.0/UDP
213.5.43.134;branch=z9hG4bK53cd.5e18cee6.0;received=213.5.43.134.
Via: SIP/2.0/UDP 195.167.60.21:1375;branch=z9hG4bK-bf20b945.
From: tester <sip:tester@sip.i-call.gr>;tag=a75dbec37247ce75o0.
To: <sip:2116872933@sip.i-call.gr>;tag=as3061dfb6.
Call-ID: 6d30a75b-c6343ebd(a)172.22.3.25.
CSeq: 102 CANCEL.
User-Agent: i-Call Service.
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY.
Max-Forwards: 70.
Content-Length: 0.
.
#
U 2006/02/07 12:05:37.860998 213.5.43.134:5060 -> 195.167.60.21:1375
SIP/2.0 481 Call Leg Does Not Exist.
Via: SIP/2.0/UDP 195.167.60.21:1375;branch=z9hG4bK-bf20b945.
From: tester <sip:tester@sip.i-call.gr>;tag=a75dbec37247ce75o0.
To: <sip:2116872933@sip.i-call.gr>;tag=as3061dfb6.
Call-ID: 6d30a75b-c6343ebd(a)172.22.3.25.
CSeq: 102 CANCEL.
User-Agent: i-Call Service.
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY.
Max-Forwards: 70.
Content-Length: 0.
.
>-----Original Message-----
>From: Bogdan-Andrei Iancu [mailto:bogdan@voice-system.ro]
>Sent: Friday, February 03, 2006 10:43 PM
>To: Papadopoulos Georgios
>Cc: users(a)openser.org
>Subject: Re: [Users] Receiving different VIA in INVITE and CANCEL
>
>Hi George,
>
>different VIA in INVITE and CANCEL brakes the specs of RFC
>
>
3261. The
>"via1_matching" is a kind of a trick
to make un-compliant
>
>
clients to
>work. The trick is functional. I suspect that
maybe not
>
>
only the VIA
>is the problem. Can you please post the INVITE
and CANCEL to have a
>look on them?
>
>regards,
>bogdan
>
>Papadopoulos Georgios wrote:
>
>
>
>
>
>>Hello,
>>
>>I have an issue with some user agents, (Linksys PAP2 and
>>
>>
>>
>>
>Sipura 3000)
>
>
>
>
>>sending different Via in CANCEL than in INVITE.
>>Of course the result is that the caller hangs up and the
>>
>>
>>
>>
>callee keeps
>
>
>
>
>>ringing.
>>I tried to use
>> modparam("tm", "via1_matching", 0)
>>but it did not solve the problem.
>>
>>I have two questions:
>>1. Is the via1_matching in TM working as described or is it broken?
>>
>>2. What can be causing this behavior of the user agent?
>>
>>
Not all our
>>>users who have these user agents report this problem
>>>
>>>
>>>
>>>
>>(actually very few
>>
>>
>>
>>
>>>have the problem). In our lab we tried same user agent, same
>>>
>>>
>>>
>>>
>>firmware
>>
>>
>>
>>
>>>but could never reproduce this behavior no matter how bad we
>>>
>>>
>>>
>>>
>>tried to
>>
>>
>>
>>
>>>mess up their configuration.
>>>
>>>Any help will be greatly appreciated. Thanks.
>>>
>>>George
>>>
>>>
>>>
>>>
Disclaimer
The information in this e-mail and any attachments is confidential. It is intended solely
for the attention and use of the named addressee(s). If you are not the intended
recipient, or person responsible for delivering this information to the intended
recipient, please notify the sender immediately. Unless you are the intended recipient or
his/her representative you are not authorized to, and must not, read, copy, distribute,
use or retain this message or any part of it. E-mail transmission cannot be guaranteed to
be secure or error-free as information could be intercepted, corrupted, lost, destroyed,
arrive late or incomplete, or contain viruses.