[Serusers] SER has problems matching ACKs to replies

Jan Janak jan at iptel.org
Wed Apr 9 21:05:09 CEST 2003


Jiri will reply this tomorrow (he is travelling now).

  Jan.

On 09-04 22:00, Maxim Sobolev wrote:
> Any comments on this?
> 
> -Maxim
> 
> On Tue, Apr 08, 2003 at 07:41:55PM +0300, Maxim Sobolev wrote:
> > Yet another obstacle on the way of proper INVITE-ACK matching for
> > negative replies: some UA might pick up Via parameters from
> > provisional responses and then copy them into ACK. For example
> > ATA-186 does this with received/rport parameters, so that
> > they don't match with ones from INVITE:
> > 
> > (gdb) print t_msg->via1->name
> > $18 = {
> >   s = 0x282ed926 "SIP/2.0/UDP 192.168.1.20:5060\r\nFrom: <sip:380442466396 at 64.180.102.72;user=phone>
> > ;tag=3473403119\r\nTo: <sip:122 at 64.180.102.72;user=phone>\r\nCall-ID: 3487919719 at 192.168.1.20\r\nCSe
> > q: 2 INVITE\r\nContact: <sip"..., len = 3}
> > (gdb) print p_msg->orig
> > $19 = 0x80d51f8 "ACK sip:122 at 64.180.102.72;user=phone SIP/2.0\r\nVia: SIP/2.0/UDP 192.168.1.20:5060;
> > rport=5060;received=193.111.9.226\r\nFrom: <sip:380442466396 at 64.180.102.72;user=phone>;tag=347340311
> > 9\r\nTo: <sip:122 at 64.18"...
> > 
> > As you can see, in the INVITE we had 1st Via:
> > 
> > SIP/2.0/UDP 192.168.1.20:5060
> > 
> > While in the ACK:
> > 
> > SIP/2.0/UDP 192.168.1.20:5060;rport=5060;received=193.111.9.226
> > 
> > Needs to be corrected as well.
> > 
> > -Maxim
> > 
> > On Tue, Apr 08, 2003 at 07:26:54PM +0300, Maxim Sobolev wrote:
> > > Not only that, but there is also a bug which causes match failure
> > > due to extra space in the ACK, see the gdb session below:
> > > 
> > > 0x2a17b904 in t_lookup_request (p_msg=0x80d4c88, leave_new_locked=1) at t_lookup.c:268
> > > 268                                     {int b=1; while (b);}
> > > (gdb) s b=0
> > > (gdb) n
> > > 270                             if (!EQ_LEN(callid)) continue;
> > > (gdb) print t_msg->callid->body
> > > $8 = {
> > >   s = 0x282ed9b8 "3650497277 at 192.168.1.20\r\nCSeq: 2 INVITE\r\nContact: <sip:380442466396 at 192.168.1.
> > > 20:5060;user=phone;transport=udp>\r\nUser-Agent: Cisco ATA 186  v2.15 ata18x (030401b)\r\nAuthorizat
> > > ion: Digest username=\"3804"..., len = 23}
> > > (gdb) print p_msg->callid->body
> > > $9 = {s = 0x80bdf73 " 3650497277 at 192.168.1.20\r", len = 24}
> > > 
> > > As you can see, the callid is the same, but EQ_LEN(callid) will be
> > > false, due to the fact that p_msg->callid->body.len != t_msg->callid->body.len.
> > > 
> > > -Maxim
> > > 
> > > On Tue, Apr 08, 2003 at 05:56:17PM +0300, Maxim Sobolev wrote:
> > > > Sorry, further investigation shown that this particular problem was
> > > > caused by the typo in our fix for hashing function (one found in 0.8.10
> > > > didn't bother to strip insignificant chars from call-id and cseq number).
> > > > I've fixed that and the problem gone.
> > > > 
> > > > However, we have another problem with ACK matching. The problem is that
> > > > we are using propiertary module which queries billing engine via Radius
> > > > and uses its replies to rewrite URI. Since it isn't practical to run
> > > > that query on each request received, we are only performing it on
> > > > INVITEs, which is fine as long as the next hop is always B2BUA that
> > > > only cares about method URI in INVITE requests and ignores it in any
> > > > subsequent requests. The typical sequence looks like the following:
> > > > 
> > > > 1. ATA->SER:
> > > > 
> > > > INVITE xyz at foo.bar
> > > > 
> > > > 2. SER->BILLING
> > > > 
> > > > please expand xyz
> > > > 
> > > > 3. BILLING->SER
> > > > 
> > > > xyz expands to 123456
> > > > 
> > > > 4. SER->B2BUA (t_relay_to())
> > > > 
> > > > INVITE 123456 at foo.bar
> > > > 
> > > > Everything is fine when INVITE transaction ends with a 200 OK, in this
> > > > case ATA generates ACK to acknowelege 200 OK using information from
> > > > that 200 OK, i.e. `ACK 123456 at foo.bar', not `ACK xyz at foo.bar'. The problem
> > > > happens if transaction ends with 4xx error, or is cancelled by the
> > > > originating party, in this case ATA acknoweleges receipt of final negative
> > > > response with `ACK xyz at foo.bar' so that tm module is unable to match ACK
> > > > to original INVITE.
> > > > 
> > > > Do you have any ideas how to properly solve this problem without
> > > > introducing steps (2) and (3) above for every ACK request as well?
> > > > It would be inacceptable for us since each BILLING query means
> > > > extra database access, therefore is puting extra load on the system
> > > > and degrading its performance (normal call involves 2 ACKs, so that
> > > > there would be 3 db accesses instead of 1).
> > > > 
> > > > I think that it should be possible to resolve the problem by modifying
> > > > tm module to match ACKs for non-200 replies to original uri in INVITE
> > > > instead to rewriten one. What do you think? Is there any potential
> > > > problems with this approach?
> > > > 
> > > > -Maxim
> > > > 
> > > > On Mon, Apr 07, 2003 at 10:41:31PM +0200, Jiri Kuthan wrote:
> > > > > Maxim,
> > > > > 
> > > > > neither did I find a reason why the ACK is not matched. I might be
> > > > > wrong but my guess is that it is a config issue -- are you sure it
> > > > > enters t_relay in your script?
> > > > > 
> > > > > -Jiri
> > > > > 
> > > > > At 09:19 PM 4/7/2003, Maxim Sobolev wrote:
> > > > > >Folks,
> > > > > >
> > > > > >I found that in the stateful mode, SER is having troubles matching
> > > > > >ACKs to negative replies when Vovida B2BUA (1.5.0) is used as one
> > > > > >UA, while Cisco ATA 186 as another one. Following is a dump of the
> > > > > >session illustrating the problem. As you can see, SER keeps
> > > > > >retransmiting 480, despite receiving properly formed ACKs. Does
> > > > > >anybody have any ideas what the problem might be?
> > > > > >
> > > > > >-Maxim
> > > > > >P.S. I am also seeing in the logs the following warnings:
> > > > > >
> > > > > >Apr  7 12:05:28 demo ser[86090]: WARNING: sip_msg_cloner: header body ignored: 4096
> > > > > >
> > > > > >
> > > > > >B2BUA->SER
> > > > > >
> > > > > >INVITE sip:16045215277 at demo.portaone.com:5060;transport=udp;user=phone SIP/2.0
> > > > > >Via: SIP/2.0/UDP 64.180.102.72:5061
> > > > > >To: <sip:121 at 64.180.102.72;user=phone>
> > > > > >From: <sip:380442466396 at 64.180.102.72:5061;user=phone>;tag=4505a91c4165b3ffb1b4df0ff79c2904
> > > > > >Call-ID: 3135130751 at 192.168.1.20
> > > > > >cisco-GUID: 200546447-2237180178-1764455078-2518034476
> > > > > >CSeq: 2 INVITE
> > > > > >Max-Forwards: 10
> > > > > >Expires: 300
> > > > > >Contact: <sip:380442466396 at 64.180.102.72:5061;user=phone>
> > > > > >User-Agent: PortaSIP (030401b)
> > > > > >Content-Type: application/sdp
> > > > > >Content-Length: 309
> > > > > >o=380442466396 20916528 20916528 IN IP4 192.168.1.20
> > > > > >s=ATA186 Call
> > > > > >c=IN IP4 193.111.9.226
> > > > > >t=0 0
> > > > > >m=audio 14000 RTP/AVP 4 8 0 101
> > > > > >a=rtpmap:4 G723/8000/1
> > > > > >a=rtpmap:8 PCMA/8000/1
> > > > > >a=rtpmap:0 PCMU/8000/1
> > > > > >a=rtpmap:101 telephone-event/8000
> > > > > >a=fmtp:101 0-15
> > > > > >a=direction:active
> > > > > >a=oldmediaip:192.168.1.20
> > > > > >
> > > > > >SER->B2BUA
> > > > > >
> > > > > >SIP/2.0 100 trying -- your call is important to us
> > > > > >Via: SIP/2.0/UDP 64.180.102.72:5061
> > > > > >To: <sip:121 at 64.180.102.72;user=phone>
> > > > > >From: <sip:380442466396 at 64.180.102.72:5061;user=phone>;tag=4505a91c4165b3ffb1b4df0ff79c2904
> > > > > >Call-ID: 3135130751 at 192.168.1.20
> > > > > >CSeq: 2 INVITE
> > > > > >Server: Sip EXpress router (0.8.10 (i386/freebsd))
> > > > > >Content-Length: 0
> > > > > >
> > > > > >SER->ATA
> > > > > >
> > > > > >INVITE sip:16045215277 at 172.17.1.127:5060;user=phone;transport=udp SIP/2.0
> > > > > >Record-Route: <sip:16045215277 at 64.180.102.72;branch=0>
> > > > > >Via: SIP/2.0/UDP 64.180.102.72;branch=z9hG4bK56f9.3c3c97acad0bdb329284be13e26ccc54.0
> > > > > >Via: SIP/2.0/UDP 64.180.102.72:5061
> > > > > >To: <sip:121 at 64.180.102.72;user=phone>
> > > > > >From: <sip:380442466396 at 64.180.102.72:5061;user=phone>;tag=4505a91c4165b3ffb1b4df0ff79c2904
> > > > > >Call-ID: 3135130751 at 192.168.1.20
> > > > > >cisco-GUID: 200546447-2237180178-1764455078-2518034476
> > > > > >CSeq: 2 INVITE
> > > > > >Max-Forwards: 9
> > > > > >Expires: 300
> > > > > >Contact: <sip:380442466396 at 64.180.102.72:5061;user=phone>
> > > > > >User-Agent: PortaSIP (030401b)
> > > > > >Content-Type: application/sdp
> > > > > >Content-Length: 309
> > > > > >o=380442466396 20916528 20916528 IN IP4 192.168.1.20
> > > > > >s=ATA186 Call
> > > > > >c=IN IP4 193.111.9.226
> > > > > >t=0 0
> > > > > >m=audio 14000 RTP/AVP 4 8 0 101
> > > > > >a=rtpmap:4 G723/8000/1
> > > > > >a=rtpmap:8 PCMA/8000/1
> > > > > >a=rtpmap:0 PCMU/8000/1
> > > > > >a=rtpmap:101 telephone-event/8000
> > > > > >a=fmtp:101 0-15
> > > > > >a=direction:active
> > > > > >a=oldmediaip:192.168.1.20
> > > > > >
> > > > > >ATA->SER
> > > > > >
> > > > > >SIP/2.0 100 Trying
> > > > > >Via: SIP/2.0/UDP 64.180.102.72;branch=z9hG4bK56f9.3c3c97acad0bdb329284be13e26ccc54.0
> > > > > >Via: SIP/2.0/UDP 64.180.102.72:5061
> > > > > >From: <sip:380442466396 at 64.180.102.72:5061;user=phone>;tag=4505a91c4165b3ffb1b4df0ff79c2904
> > > > > >To: <sip:121 at 64.180.102.72;user=phone>;tag=2698540533
> > > > > >Call-ID: 3135130751 at 192.168.1.20
> > > > > >CSeq: 2 INVITE
> > > > > >Server: Cisco ATA 186  v2.15 ata18x (030401b)
> > > > > >Content-Length: 0
> > > > > >
> > > > > >ATA->SER
> > > > > >
> > > > > >SIP/2.0 183 Session Progress
> > > > > >Via: SIP/2.0/UDP 64.180.102.72;branch=z9hG4bK56f9.3c3c97acad0bdb329284be13e26ccc54.0
> > > > > >Via: SIP/2.0/UDP 64.180.102.72:5061
> > > > > >From: <sip:380442466396 at 64.180.102.72:5061;user=phone>;tag=4505a91c4165b3ffb1b4df0ff79c2904
> > > > > >To: <sip:121 at 64.180.102.72;user=phone>;tag=2698540533
> > > > > >Call-ID: 3135130751 at 192.168.1.20
> > > > > >CSeq: 2 INVITE
> > > > > >Server: Cisco ATA 186  v2.15 ata18x (030401b)
> > > > > >Content-Length: 201
> > > > > >Content-Type: application/sdp
> > > > > >o=16045215277 1110 1110 IN IP4 172.17.1.127
> > > > > >s=ATA186 Call
> > > > > >c=IN IP4 64.180.102.72
> > > > > >t=0 0
> > > > > >m=audio 10000 RTP/AVP 4 101
> > > > > >a=rtpmap:4 G723/8000/1
> > > > > >a=rtpmap:101 telephone-event/8000
> > > > > >a=fmtp:101 0-15
> > > > > >
> > > > > >SER->B2BUA
> > > > > >
> > > > > >SIP/2.0 183 Session Progress
> > > > > >Via: SIP/2.0/UDP 64.180.102.72:5061
> > > > > >From: <sip:380442466396 at 64.180.102.72:5061;user=phone>;tag=4505a91c4165b3ffb1b4df0ff79c2904
> > > > > >To: <sip:121 at 64.180.102.72;user=phone>;tag=2698540533
> > > > > >Call-ID: 3135130751 at 192.168.1.20
> > > > > >CSeq: 2 INVITE
> > > > > >Server: Cisco ATA 186  v2.15 ata18x (030401b)
> > > > > >Content-Length: 221
> > > > > >Content-Type: application/sdp
> > > > > >o=16045215277 1110 1110 IN IP4 172.17.1.127
> > > > > >s=ATA186 Call
> > > > > >c=IN IP4 64.180.102.72
> > > > > >t=0 0
> > > > > >m=audio 10000 RTP/AVP 4 101
> > > > > >a=rtpmap:4 G723/8000/1
> > > > > >a=rtpmap:101 telephone-event/8000
> > > > > >a=fmtp:101 0-15
> > > > > >a=direction:active
> > > > > >
> > > > > >ATA->SER
> > > > > >
> > > > > >SIP/2.0 480 Temporarily Not Available
> > > > > >Via: SIP/2.0/UDP 64.180.102.72;branch=z9hG4bK56f9.3c3c97acad0bdb329284be13e26ccc54.0
> > > > > >Via: SIP/2.0/UDP 64.180.102.72:5061
> > > > > >From: <sip:380442466396 at 64.180.102.72:5061;user=phone>;tag=4505a91c4165b3ffb1b4df0ff79c2904
> > > > > >To: <sip:121 at 64.180.102.72;user=phone>;tag=2698540533
> > > > > >Call-ID: 3135130751 at 192.168.1.20
> > > > > >CSeq: 2 INVITE
> > > > > >Server: Cisco ATA 186  v2.15 ata18x (030401b)
> > > > > >Content-Length: 0
> > > > > >
> > > > > >SER->B2BUA
> > > > > >
> > > > > >SIP/2.0 480 Temporarily Not Available
> > > > > >Via: SIP/2.0/UDP 64.180.102.72:5061
> > > > > >From: <sip:380442466396 at 64.180.102.72:5061;user=phone>;tag=4505a91c4165b3ffb1b4df0ff79c2904
> > > > > >To: <sip:121 at 64.180.102.72;user=phone>;tag=2698540533
> > > > > >Call-ID: 3135130751 at 192.168.1.20
> > > > > >CSeq: 2 INVITE
> > > > > >Server: Cisco ATA 186  v2.15 ata18x (030401b)
> > > > > >Content-Length: 0
> > > > > >
> > > > > >B2BUA->SER
> > > > > >
> > > > > >ACK sip:16045215277 at demo.portaone.com:5060;transport=udp;user=phone SIP/2.0
> > > > > >Via: SIP/2.0/UDP 64.180.102.72:5061
> > > > > >To: <sip:121 at 64.180.102.72;user=phone>;tag=2698540533
> > > > > >From: <sip:380442466396 at 64.180.102.72:5061;user=phone>;tag=4505a91c4165b3ffb1b4df0ff79c2904
> > > > > >Call-ID: 3135130751 at 192.168.1.20
> > > > > >CSeq: 2 ACK
> > > > > >Max-Forwards: 70
> > > > > >Content-Length: 0
> > > > > >
> > > > > >SER->ATA
> > > > > >
> > > > > >ACK sip:16045215277 at 172.17.1.127:5060;user=phone;transport=udp SIP/2.0
> > > > > >Via: SIP/2.0/UDP 64.180.102.72;branch=z9hG4bKbc52.5db2fe1211adfdd0d5db3db6e2295344.0
> > > > > >Via: SIP/2.0/UDP 64.180.102.72:5061
> > > > > >To: <sip:121 at 64.180.102.72;user=phone>;tag=2698540533
> > > > > >From: <sip:380442466396 at 64.180.102.72:5061;user=phone>;tag=4505a91c4165b3ffb1b4df0ff79c2904
> > > > > >Call-ID: 3135130751 at 192.168.1.20
> > > > > >CSeq: 2 ACK
> > > > > >Max-Forwards: 69
> > > > > >Content-Length: 0
> > > > > >
> > > > > >SER->B2BUA
> > > > > >
> > > > > >SIP/2.0 480 Temporarily Not Available
> > > > > >Via: SIP/2.0/UDP 64.180.102.72:5061
> > > > > >From: <sip:380442466396 at 64.180.102.72:5061;user=phone>;tag=4505a91c4165b3ffb1b4df0ff79c2904
> > > > > >To: <sip:121 at 64.180.102.72;user=phone>;tag=2698540533
> > > > > >Call-ID: 3135130751 at 192.168.1.20
> > > > > >CSeq: 2 INVITE
> > > > > >Server: Cisco ATA 186  v2.15 ata18x (030401b)
> > > > > >Content-Length: 0
> > > > > >
> > > > > >B2BUA->SER
> > > > > >
> > > > > >ACK sip:16045215277 at demo.portaone.com:5060;transport=udp;user=phone SIP/2.0
> > > > > >Via: SIP/2.0/UDP 64.180.102.72:5061
> > > > > >To: <sip:121 at 64.180.102.72;user=phone>;tag=2698540533
> > > > > >From: <sip:380442466396 at 64.180.102.72:5061;user=phone>;tag=4505a91c4165b3ffb1b4df0ff79c2904
> > > > > >Call-ID: 3135130751 at 192.168.1.20
> > > > > >CSeq: 2 ACK
> > > > > >Max-Forwards: 70
> > > > > >Content-Length: 0
> > > > > >
> > > > > >SER->ATA
> > > > > >
> > > > > >ACK sip:16045215277 at 172.17.1.127:5060;user=phone;transport=udp SIP/2.0
> > > > > >Via: SIP/2.0/UDP 64.180.102.72;branch=z9hG4bKbc52.5db2fe1211adfdd0d5db3db6e2295344.0
> > > > > >Via: SIP/2.0/UDP 64.180.102.72:5061
> > > > > >To: <sip:121 at 64.180.102.72;user=phone>;tag=2698540533
> > > > > >From: <sip:380442466396 at 64.180.102.72:5061;user=phone>;tag=4505a91c4165b3ffb1b4df0ff79c2904
> > > > > >Call-ID: 3135130751 at 192.168.1.20
> > > > > >CSeq: 2 ACK
> > > > > >Max-Forwards: 69
> > > > > >Content-Length: 0
> > > > > >
> > > > > >SER->B2BUA
> > > > > >
> > > > > >SIP/2.0 480 Temporarily Not Available
> > > > > >Via: SIP/2.0/UDP 64.180.102.72:5061
> > > > > >From: <sip:380442466396 at 64.180.102.72:5061;user=phone>;tag=4505a91c4165b3ffb1b4df0ff79c2904
> > > > > >To: <sip:121 at 64.180.102.72;user=phone>;tag=2698540533
> > > > > >Call-ID: 3135130751 at 192.168.1.20
> > > > > >CSeq: 2 INVITE
> > > > > >Server: Cisco ATA 186  v2.15 ata18x (030401b)
> > > > > >Content-Length: 0
> > > > > >
> > > > > >B2BUA->SER
> > > > > >
> > > > > >ACK sip:16045215277 at demo.portaone.com:5060;transport=udp;user=phone SIP/2.0
> > > > > >Via: SIP/2.0/UDP 64.180.102.72:5061
> > > > > >To: <sip:121 at 64.180.102.72;user=phone>;tag=2698540533
> > > > > >From: <sip:380442466396 at 64.180.102.72:5061;user=phone>;tag=4505a91c4165b3ffb1b4df0ff79c2904
> > > > > >Call-ID: 3135130751 at 192.168.1.20
> > > > > >CSeq: 2 ACK
> > > > > >Max-Forwards: 70
> > > > > >Content-Length: 0
> > > > > >
> > > > > >SER->ATA
> > > > > >
> > > > > >ACK sip:16045215277 at 172.17.1.127:5060;user=phone;transport=udp SIP/2.0
> > > > > >Via: SIP/2.0/UDP 64.180.102.72;branch=z9hG4bKbc52.5db2fe1211adfdd0d5db3db6e2295344.0
> > > > > >Via: SIP/2.0/UDP 64.180.102.72:5061
> > > > > >To: <sip:121 at 64.180.102.72;user=phone>;tag=2698540533
> > > > > >From: <sip:380442466396 at 64.180.102.72:5061;user=phone>;tag=4505a91c4165b3ffb1b4df0ff79c2904
> > > > > >Call-ID: 3135130751 at 192.168.1.20
> > > > > >CSeq: 2 ACK
> > > > > >Max-Forwards: 69
> > > > > >Content-Length: 0
> > > > > >
> > > > > >[the last 3 repeat until timeout hits]
> > > > > >_______________________________________________
> > > > > >Serusers mailing list
> > > > > >serusers at lists.iptel.org
> > > > > >http://lists.iptel.org/mailman/listinfo/serusers 
> > > > > 
> > > > > --
> > > > > Jiri Kuthan            http://iptel.org/~jiri/ 
> > > > _______________________________________________
> > > > Serusers mailing list
> > > > serusers at lists.iptel.org
> > > > http://lists.iptel.org/mailman/listinfo/serusers
> > > _______________________________________________
> > > Serusers mailing list
> > > serusers at lists.iptel.org
> > > http://lists.iptel.org/mailman/listinfo/serusers
> > _______________________________________________
> > Serusers mailing list
> > serusers at lists.iptel.org
> > http://lists.iptel.org/mailman/listinfo/serusers
> _______________________________________________
> Serusers mailing list
> serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20030409/f103d983/attachment.pgp>


More information about the sr-users mailing list