[Serusers] SER fails to match ACK to previous INVITE

Srinivas Kotamarti srinivas_kotamarti at livewiremobile.com
Thu Jan 3 19:41:30 CET 2008


Hi,
I have recently downloaded SER & SEMS and configured them for early_announce application as described in the early_announce module documentation. I am using SIPp to generate an incoming call to test the setup. Upon receiving ACK for some reason SER fails to match it  to the previous INVITE and tries to forward it to the destination statelessly and picks it up again and forwards it. It continues to do this until the max forward limit is reached.

I cannot figure out what is wrong. Any help is really appreciated.


Here is the Route section from ser-sems.cfg file that I am using


# -------------------------  request routing logic -------------------
# main routing logic
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
        record_route();
        # loose-route processing
        if (loose_route()) {
                t_relay();
                break;
        };

        if (uri==myself) {
            # filter unsupported requests
           if (!(method=="REGISTER" || method=="ACK" || method=="INVITE" ||
                        method=="BYE" || method=="CANCEL" )) {
                  sl_send_reply("501", "method not understood here");
                  break;
           }

           if (method=="REGISTER") {
                        # make UAs which want to register unhappy
                        sl_send_reply("501","registration couldn't be accepted");
                        break;
           };

                  if (!t_newtran()){
                  sl_send_reply("500","could not create transaction");
                  break;
                  };

           if (method == "INVITE") {

                  avp_write("Final-Reply-Code=405;Final-Reply-Reason=Prohiboted",
                                  "$sess_params");

                        if(!t_write_unix("/tmp/sems_sock","early_announce/early_headers")){
                        log("could not contact early_announce\n");
                        t_reply("404","not found");
                        };
                        break;

              }  else if (method=="BYE" || method=="CANCEL") {
                  if(!t_write_unix("/tmp/sems_sock","bye")) {
                              t_reply("500","error contacting sems");
                  };
                  break;
           } else if (method=="ACK"){
                        # absorb ACKs
                        t_relay();
                        break;
           };
           break;
        }

        if (!t_relay()) {
                sl_reply_error();
        };
}


Debug logs from SER

0(27347) SIP Request:
 0(27347)  method:  <ACK>
 0(27347)  uri:     <sip:service at 10.107.2.246>
 0(27347)  version: <SIP/2.0>
 0(27347) parse_headers: flags=1
 0(27347) Found param type 232, <branch> = <0>; state=16
 0(27347) end of header reached, state=5
 0(27347) parse_headers: Via found, flags=1
 0(27347) parse_headers: this is the first via
 0(27347) After parse_msg...
 0(27347) preparing to run routing scripts...
 0(27347) DEBUG : sl_filter_ACK: to late to be a local ACK!
 0(27347) parse_headers: flags=128
 0(27347) Found param type 232, <branch> = <0>; state=16
 0(27347) end of header reached, state=5
 0(27347) parse_headers: Via found, flags=128
 0(27347) parse_headers: this is the second via
 0(27347) Found param type 232, <branch> = <z9hG4bK-27351-1-3>; state=16
 0(27347) end of header reached, state=5
 0(27347) parse_headers: Via found, flags=128
 0(27347) DEBUG: add_param: tag=79EBE47B-477CE4230002578E-B7F6D6C0
 0(27347) end of header reached, state=29
 0(27347) DEBUG: get_hdr_field: <To> [76]; uri=[sip:service at 10.107.2.246:5060]<mailto:[sip:service at 10.107.2.246:5060]>
 0(27347) DEBUG: to body [sut <sip:service at 10.107.2.246:5060>]
 0(27347) get_hdr_field: cseq <CSeq>: <1> <ACK>
 0(27347) DEBUG:maxfwd:is_maxfwd_present: value = 15
 0(27347) DEBUG: add_param: tag=27351SIPpTag001
 0(27347) end of header reached, state=29
 0(27347) parse_headers: flags=256
 0(27347) DEBUG: get_hdr_body : content_length=0
 0(27347) found end of header
 0(27347) find_first_route: No Route headers found
 0(27347) loose_route: There is no Route HF
 0(27347) grep_sock_info - checking if host==us: 12==12 &&  [10.107.2.246] == [10.107.2.246]
 0(27347) grep_sock_info - checking if port 5060 matches port 5060
 0(27347) DEBUG: t_newtran: msg id=4 , global msg id=3 , T on entrance=(nil)
 0(27347) parse_headers: flags=-1
 0(27347) parse_headers: flags=60
 0(27347) t_lookup_request: start searching: hash=30348, isACK=1
 0(27347) DEBUG: proceeding to pre-RFC3261 transaction matching
 0(27347) DEBUG: t_lookup_request: no transaction found
 0(27347) DEBUG: t_newtran: msg id=4 , global msg id=4 , T on entrance=(nil)
 0(27347) parse_headers: flags=-1
 0(27347) parse_headers: flags=60
 0(27347) t_lookup_request: start searching: hash=30348, isACK=1
 0(27347) DEBUG: proceeding to pre-RFC3261 transaction matching
 0(27347) DEBUG: t_lookup_request: no transaction found
 0(27347) SER: forwarding ACK  statelessly
 0(27347) DEBUG: mk_proxy: doing DNS lookup...
 0(27347) check_via_address(10.107.2.246, 10.107.2.246, 0)
 0(27347) Sending:
ACK sip:service at 10.107.2.246 SIP/2.0

Record-Route: <sip:10.107.2.246;ftag=27351SIPpTag001;lr=on>

Record-Route: <sip:10.107.2.246;ftag=27351SIPpTag001;lr=on>

Record-Route: <sip:10.107.2.246;ftag=27351SIPpTag001;lr=on>

Via: SIP/2.0/UDP 10.107.2.246;branch=0

Via: SIP/2.0/UDP 10.107.2.246;branch=0

Via: SIP/2.0/UDP 10.107.2.246;branch=0

Via: SIP/2.0/UDP 10.107.2.246:5061;branch=z9hG4bK-27351-1-3

From: sipp <sip:sipp at 10.107.2.246:5061>;tag=27351SIPpTag001

To: sut <sip:service at 10.107.2.246:5060>;tag=79EBE47B-477CE4230002578E-B7F6D6C0

Call-ID: 1-27351 at 10.107.2.246<mailto:1-27351 at 10.107.2.246>

CSeq: 1 ACK

Contact: sip:sipp at 10.107.2.246:5061

Max-Forwards: 14

Subject: Performance Test

Content-Length: 0




--Srinivas Kotamarti
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20080103/15c9e469/attachment.htm>


More information about the sr-users mailing list