[Serusers] CANCEL and ACK in 0.8.12 problems (noise)

Greg Fausak lgfausak at august.net
Sat Nov 22 20:16:53 CET 2003


I just loaded the 0.8.12 server on my lab linux 9.x box.
Running postgres/2 current registrations, 123456 at named.com
and 9723937976 at named.com.  My configuration allows calls
between these two no problem.  I can hangup from either
end with no problem.  I am seeing a problem with a CANCEL
message. If one end calls the other, and than CANCELs the
communication before the other end ACKs, I get several messages
CANCEL
ACK
CANCEL
ACK
...

I read the serusers list and see that Maxim and Andrea reported
the same problem.  I don't see the problem in my production
configuration on 0.8.11.  What can I do to make the CANCEL work?

Here is my configuration:
UA1 XTEN XPRO
UA2 Cisco 7960
SER 0.8.12 configuration:
-------------start---------------
route{

         # initial sanity checks -- messages with
         # max_forwards==0, or excessively long requests
         if (!mf_process_maxfwd_header("10")) {
                 sl_send_reply("483","Too Many Hops");
                 break;
         };
         if (msg:len >=  max_len ) {
                 sl_send_reply("513", "Message too big");
                 break;
         };

         # we record-route all messages -- to make sure that
         # subsequent messages will go through our proxy; that's
         # particularly good if upstream and downstream entities
         # use different transport protocol
         if (!method=="REGISTER") record_route();

         # subsequent messages withing a dialog should take the
         # path determined by record-routing
         if (loose_route()) {
                 # mark routing logic in request
                 append_hf("P-hint: rr-enforced\r\n");
                 xlog("L_WARN", "LOOSE: %Ts call-id:%ci cseq:%ci 
contact:%ct from:%fu fromtag:%ft to:%tu totag:%tt method:%rm ruri:%ru 
messageid:%mi\n");
                 setflag(1);
                 setflag(2);
                 route(1);
                 break;
         };

         if (!uri==myself) {
                 # mark routing logic in request
                 append_hf("P-hint: outbound\r\n");
                 route(1);
                 break;
         };

         # if the request is for other domain use UsrLoc
         # (in case, it does not work, use the following command
         # with proper names and addresses in it)
         if (uri==myself) {

                 if (method=="REGISTER") {

                         if (!www_authorize("named.com", "subscriber")) {
                                 www_challenge("named.com", "0");
                                 break;
                         };

                         save("location");
                         break;
                 };

                 lookup("aliases");
                 if (!uri==myself) {
                         append_hf("P-hint: outbound alias\r\n");
                         route(1);
                         break;
                 };

                 if (method=="INVITE") {

                         if (!www_authorize("named.com", "subscriber")) {
                                 www_challenge("named.com", "0");
                                 break;
                         };
                         xlog("L_WARN", "INVITE: %Ts call-id:%ci 
cseq:%ci contact:%ct from:%fu fromtag:%ft to:%tu totag:%tt method:%rm 
ruri:%ru messageid:%mi\n");
                         #
                         if (lookup("location")) {
                                 route(1);
                                 break;
                         };

                         if(uri=~"sip:[0-9]{10}@.*")
                         {
                                 xlog("L_WARN", "10DIGIT: %Ts 
call-id:%ci cseq:%ci contact:%ct from:%fu fromtag:%ft to:%tu totag:%tt 
method:%rm ruri:%ru messageid:%mi\n");
                                 route(2);
                                 break;
                         }
                         xlog("L_WARN", "UNKNOWN: %Ts call-id:%ci 
cseq:%ci contact:%ct from:%fu fromtag:%ft to:%tu totag:%tt method:%rm 
ruri:%ru messageid:%mi\n");
                         sl_send_reply("580", "Sorry");
                         break;
                 };

                 if (method=="CANCEL") {

                         xlog("L_WARN", "CANCEL: %Ts call-id:%ci 
cseq:%ci contact:%ct from:%fu fromtag:%ft to:%tu totag:%tt method:%rm 
ruri:%ru messageid:%mi\n");
                         route(2);
                         break;
                 };

                 if (method=="BYE") {

                         xlog("L_WARN", "BYE: %Ts call-id:%ci cseq:%ci 
contact:%ct from:%fu fromtag:%ft to:%tu totag:%tt method:%rm ruri:%ru 
messageid:%mi\n");
                         route(2);
                         break;
                 };

                 if (method=="ACK") {

                         xlog("L_WARN", "ACK: %Ts call-id:%ci cseq:%ci 
contact:%ct from:%fu fromtag:%ft to:%tu totag:%tt method:%rm ruri:%ru 
messageid:%mi\n");
                         break;
                 };

                 sl_send_reply("404", "Not Found");
                 break;
         };
         xlog("L_WARN", "FAILATBOTTOM: %Ts call-id:%ci cseq:%ci 
contact:%ct from:%fu fromtag:%ft to:%tu totag:%tt method:%rm ruri:%ru 
messageid:%mi\n");
         break;
}

route[1]
{
         # send it out now; use stateful forwarding as it works reliably
         # even for UDP2TCP
         if (!t_relay()) {
                 sl_reply_error();
         };
}

route[2]
{
         consume_credentials();
         rewritehostport("1.2.3.4:5060");
         if(!t_relay()) {
                 sl_reply_error();
                 break;
         };
}

--------------------
here are the ngrep packets, from invite to duplicate CANCEL packets...
#
U 2003/11/22 13:10:32.356665 66.228.44.254:5060 -> 66.228.53.218:5060
INVITE sip:9723937976 at 66.228.53.218:5060 SIP/2.0.
Max-Forwards: 10.
Record-Route: <sip:9723937976 at 66.228.44.254;ftag=320951244;lr>.
Via: SIP/2.0/UDP 66.228.44.254;branch=z9hG4bKe198.142630c1.0.
Via: SIP/2.0/UDP 66.228.53.216:5060.
From: 123456 <sip:123456 at named.com>;tag=320951244.
To: <sip:9723937976 at named.com>.
Contact: <sip:123456 at 66.228.53.216:5060>.
Call-ID: A7A5E0C3-865F-41A1-9CAD-EE1B104D7244 at 66.228.53.216.
CSeq: 19721 INVITE.
Authorization: Digest 
username="123456",realm="named.com",nonce="3fbfb5d42576afa9e9384c4f0f16427e46909d1d",response="7bf9fe190978d98811d56ddb60dded2f",uri="sip:9723937976 at named.com".
Content-Type: application/sdp.
User-Agent: X-PRO build 1050.
Content-Length: 322.
.
v=0.
o=123456 485850365 485850365 IN IP4 66.228.53.216.
s=X-PRO.
c=IN IP4 66.228.53.216.
t=0 0.
m=audio 8000 RTP/AVP 0 8 3 4 98 97 101.
a=rtpmap:0 pcmu/8000.
a=rtpmap:8 pcma/8000.
a=rtpmap:3 gsm/8000.
a=rtpmap:4 G723/8000.
a=rtpmap:98 iLBC/8000.
a=rtpmap:97 speex/8000.
a=rtpmap:101 telephone-event/8000.
a=fmtp:101 0-15.

#
U 2003/11/22 13:10:32.619424 66.228.53.218:50560 -> 66.228.44.254:5060
SIP/2.0 100 Trying.
Via: SIP/2.0/UDP 66.228.44.254;branch=z9hG4bKe198.142630c1.0,SIP/2.0/UDP 
66.228.53.216:5060.
From: 123456 <sip:123456 at named.com>;tag=320951244.
To: <sip:9723937976 at named.com>.
Call-ID: A7A5E0C3-865F-41A1-9CAD-EE1B104D7244 at 66.228.53.216.
CSeq: 19721 INVITE.
Server: CSCO/5.
Contact: <sip:9723937976 at 66.228.53.218:5060>.
Record-Route: <sip:9723937976 at 66.228.44.254;ftag=320951244;lr>.
Content-Length: 0.
.

#
U 2003/11/22 13:10:32.728062 66.228.53.218:50561 -> 66.228.44.254:5060
SIP/2.0 180 Ringing.
Via: SIP/2.0/UDP 66.228.44.254;branch=z9hG4bKe198.142630c1.0,SIP/2.0/UDP 
66.228.53.216:5060.
From: 123456 <sip:123456 at named.com>;tag=320951244.
To: <sip:9723937976 at named.com>;tag=000b5faab82400151dddd662-025452b6.
Call-ID: A7A5E0C3-865F-41A1-9CAD-EE1B104D7244 at 66.228.53.216.
CSeq: 19721 INVITE.
Server: CSCO/5.
Contact: <sip:9723937976 at 66.228.53.218:5060>.
Record-Route: <sip:9723937976 at 66.228.44.254;ftag=320951244;lr>.
Content-Length: 0.
.

#
U 2003/11/22 13:10:32.728480 66.228.44.254:5060 -> 66.228.53.216:5060
SIP/2.0 180 Ringing.
Via: SIP/2.0/UDP 66.228.53.216:5060.
From: 123456 <sip:123456 at named.com>;tag=320951244.
To: <sip:9723937976 at named.com>;tag=000b5faab82400151dddd662-025452b6.
Call-ID: A7A5E0C3-865F-41A1-9CAD-EE1B104D7244 at 66.228.53.216.
CSeq: 19721 INVITE.
Server: CSCO/5.
Contact: <sip:9723937976 at 66.228.53.218:5060>.
Record-Route: <sip:9723937976 at 66.228.44.254;ftag=320951244;lr>.
Content-Length: 0.
.

#
U 2003/11/22 13:10:34.846506 66.228.53.216:5060 -> 66.228.44.254:5060
CANCEL sip:9723937976 at named.com SIP/2.0.
Via: SIP/2.0/UDP 66.228.53.216:5060.
From: 123456 <sip:123456 at named.com>;tag=320951244.
To: <sip:9723937976 at named.com>.
Contact: <sip:123456 at 66.228.53.216:5060>.
Call-ID: A7A5E0C3-865F-41A1-9CAD-EE1B104D7244 at 66.228.53.216.
CSeq: 19721 CANCEL.
User-Agent: X-PRO build 1050.
Content-Length: 0.
.

#
U 2003/11/22 13:10:34.847662 66.228.44.254:5060 -> 66.228.53.218:5060
CANCEL sip:9723937976 at 66.228.53.218:5060 SIP/2.0.
Max-Forwards: 10.
Record-Route: <sip:9723937976 at 66.228.44.254;ftag=320951244;lr>.
Via: SIP/2.0/UDP 66.228.44.254;branch=z9hG4bKe198.142630c1.0.
Via: SIP/2.0/UDP 66.228.53.216:5060.
From: 123456 <sip:123456 at named.com>;tag=320951244.
To: <sip:9723937976 at named.com>.
Contact: <sip:123456 at 66.228.53.216:5060>.
Call-ID: A7A5E0C3-865F-41A1-9CAD-EE1B104D7244 at 66.228.53.216.
CSeq: 19721 CANCEL.
User-Agent: X-PRO build 1050.
Content-Length: 0.
.

#
U 2003/11/22 13:10:34.847761 66.228.44.254:5060 -> 66.228.53.216:5060
SIP/2.0 200 cancelling.
Via: SIP/2.0/UDP 66.228.53.216:5060.
From: 123456 <sip:123456 at named.com>;tag=320951244.
To: <sip:9723937976 at named.com>;tag=a6a1c5f60faecf035a1ae5b6e96e979a-6763.
Call-ID: A7A5E0C3-865F-41A1-9CAD-EE1B104D7244 at 66.228.53.216.
CSeq: 19721 CANCEL.
Server: Sip EXpress router (0.8.12 (i386/linux)).
Content-Length: 0.
Warning: 392 66.228.44.254:5060 "Noisy feedback tells:  pid=10695 
req_src_ip=66.228.53.216 req_src_port=5060 
in_uri=sip:9723937976 at named.com 
out_uri=sip:9723937976 at 65.77.154.243:5060 via_cnt==1".
.


#
U 2003/11/22 13:10:34.847806 66.228.44.254:5060 -> 66.228.53.216:5060
SIP/2.0 487 Request cancelled.
Via: SIP/2.0/UDP 66.228.53.216:5060.
From: 123456 <sip:123456 at named.com>;tag=320951244.
To: <sip:9723937976 at named.com>;tag=a6a1c5f60faecf035a1ae5b6e96e979a-6763.
Call-ID: A7A5E0C3-865F-41A1-9CAD-EE1B104D7244 at 66.228.53.216.
CSeq: 19721 INVITE.
Server: Sip EXpress router (0.8.12 (i386/linux)).
Content-Length: 0.
Warning: 392 66.228.44.254:5060 "Noisy feedback tells:  pid=10695 
req_src_ip=66.228.53.216 req_src_port=5060 
in_uri=sip:9723937976 at named.com 
out_uri=sip:9723937976 at 66.228.53.218:5060 via_cnt==1".
.

#
U 2003/11/22 13:10:34.875833 66.228.53.216:5060 -> 66.228.44.254:5060
ACK sip:9723937976 at named.com SIP/2.0.
Via: SIP/2.0/UDP 66.228.53.216:5060.
From: 123456 <sip:123456 at named.com>;tag=320951244.
To: <sip:9723937976 at named.com>;tag=a6a1c5f60faecf035a1ae5b6e96e979a-6763.
Contact: <sip:123456 at 66.228.53.216:5060>.
Call-ID: A7A5E0C3-865F-41A1-9CAD-EE1B104D7244 at 66.228.53.216.
CSeq: 19721 ACK.
Max-Forwards: 70.
Content-Length: 0.
.

#
U 2003/11/22 13:10:34.906960 66.228.53.218:50562 -> 66.228.44.254:5060
SIP/2.0 200 OK.
Via: SIP/2.0/UDP 66.228.44.254;branch=z9hG4bKe198.142630c1.0,SIP/2.0/UDP 
66.228.53.216:5060.
From: 123456 <sip:123456 at named.com>;tag=320951244.
To: <sip:9723937976 at named.com>;tag=000b5faab82400151dddd662-025452b6.
Call-ID: A7A5E0C3-865F-41A1-9CAD-EE1B104D7244 at 66.228.53.216.
CSeq: 19721 CANCEL.
Server: CSCO/5.
Content-Length: 0.
.

#
U 2003/11/22 13:10:34.942865 66.228.53.218:50563 -> 66.228.44.254:5060
SIP/2.0 487 Request Cancelled.
Via: SIP/2.0/UDP 66.228.44.254;branch=z9hG4bKe198.142630c1.0,SIP/2.0/UDP 
66.228.53.216:5060.
From: 123456 <sip:123456 at named.com>;tag=320951244.
To: <sip:9723937976 at named.com>;tag=000b5faab82400151dddd662-025452b6.
Call-ID: A7A5E0C3-865F-41A1-9CAD-EE1B104D7244 at 66.228.53.216.
CSeq: 19721 INVITE.
Server: CSCO/5.
Contact: <sip:9723937976 at 66.228.53.218:5060>.
Record-Route: <sip:9723937976 at 66.228.44.254;ftag=320951244;lr>.
Content-Length: 0.
.

#
U 2003/11/22 13:10:34.943103 66.228.44.254:5060 -> 66.228.53.218:5060
ACK sip:9723937976 at 66.228.53.218:5060 SIP/2.0.
Via: SIP/2.0/UDP 66.228.44.254;branch=z9hG4bKe198.142630c1.0.
From: 123456 <sip:123456 at named.com>;tag=320951244.
Call-ID: A7A5E0C3-865F-41A1-9CAD-EE1B104D7244 at 66.228.53.216.
To: <sip:9723937976 at named.com>;tag=000b5faab82400151dddd662-025452b6.
CSeq: 19721 ACK.
User-Agent: Sip EXpress router(0.8.12 (i386/linux)).
Content-Length: 0.
.

#
U 2003/11/22 13:10:35.649964 66.228.44.254:5060 -> 66.228.53.216:5060
SIP/2.0 487 Request cancelled.
Via: SIP/2.0/UDP 66.228.53.216:5060.
From: 123456 <sip:123456 at named.com>;tag=320951244.
To: <sip:9723937976 at named.com>;tag=a6a1c5f60faecf035a1ae5b6e96e979a-6763.
Call-ID: A7A5E0C3-865F-41A1-9CAD-EE1B104D7244 at 66.228.53.216.
CSeq: 19721 INVITE.
Server: Sip EXpress router (0.8.12 (i386/linux)).
Content-Length: 0.
Warning: 392 66.228.44.254:5060 "Noisy feedback tells:  pid=10695 
req_src_ip=66.228.53.216 req_src_port=5060 
in_uri=sip:9723937976 at named.com 
out_uri=sip:9723937976 at 66.228.53.218:5060 via_cnt==1".
.

#
U 2003/11/22 13:10:35.671936 66.228.53.216:5060 -> 66.228.44.254:5060
ACK sip:9723937976 at named.com SIP/2.0.
Via: SIP/2.0/UDP 66.228.53.216:5060.
From: 123456 <sip:123456 at named.com>;tag=320951244.
To: <sip:9723937976 at named.com>;tag=a6a1c5f60faecf035a1ae5b6e96e979a-6763.
Contact: <sip:123456 at 66.228.53.216:5060>.
Call-ID: A7A5E0C3-865F-41A1-9CAD-EE1B104D7244 at 66.228.53.216.
CSeq: 19721 ACK.
Max-Forwards: 70.
Content-Length: 0.
.


The 487CANCEL/ACK/CANCEL/ACK/CANCEL/ACK goes on and on until
something eventually times out.  Anybody have any ideas?  The CANCEL
works, but the excess chatter isn't wanted.

Thanks,
---greg









More information about the sr-users mailing list