[Users] record routing problems
Bogdan-Andrei Iancu
bogdan at voice-system.ro
Mon Jun 5 11:23:20 CEST 2006
Hi Danish,
openser sees the sip:1313263 at 192.168.1.21:5070 RURI from local as local
- as the debug info shows, the after_strict routing processing is done.
What aliases and listen do you have set in the script?
regards,
bogdan
Danish Samad wrote:
> Hi,
>
> I am trying to run the following setup.
>
>
> Xten<-->Openser<-->Asterisk
> openser ip = 192.168.1.21:5060
> asterisk ip = 192.168.1.21:5070
> xten = 192.168.1.35:5070
>
> Xten is registered with openser and calls with particular prefixes are
> forwarded to asterisk. I record route all messages passing through
> openser. The initial INVITE and 200 OK messages are exchanged
> successfully but the associated ACK messages are not processed
> properly by openser. Part of the 200 OK received by xten is shown below
>
> Via: SIP/2.0/UDP
> 192.168.1.23:5070;received=192.168.1.35;rport=5070;branch=z9hG4bK5B7D03B5696C9316CD87AB79100D0893
> Record-Route: <sip:192.168.1.21;lr=on;ftag=386046356>
> From: 1956 <sip:1956 at 192.168.1.21
> <mailto:1956 at 192.168.1.21>:5070>;tag=386046356
> To: <sip:1313263 at 192.168.1.21
> <mailto:13132630141 at 192.168.1.21>>;tag=as36bd8053
> Contact: <sip:1313263 at 192.168.1.21 <mailto:1313263 at 192.168.1.21>:5070>
>
> The ACK sent out by xten is shown below
>
> Request-Line: ACK sip:1313263 at 192.168.1.21:5070 SIP/2.0
> Message Header
> Via: SIP/2.0/UDP
> 192.168.1.23:5070;rport;branch=z9hG4bK3F391943F7AC4F861033318A443F92D7
> From: 1956 <sip:1956 at 192.168.1.21
> <mailto:1956 at 192.168.1.21>:5070>;tag=386046356
> To: <sip:1313263 at 192.168.1.21
> <mailto:13132630141 at 192.168.1.21>>;tag=as36bd8053
> Contact: <sip:1956 at 192.168.1.23 <mailto:1956 at 192.168.1.23>:5070>
> Route: <sip:192.168.1.21;lr=on;ftag=386046356>
>
>
> As can be seen, xten sets the RURI with the contact value received
> from 200 OK and Route is populated with the value from Record-Route.
> When openser receives this ACK message, instead of confirming the
> Route address as its own it resets the RURI with the Route header
> value (which happens to be the openser address) and sends it out
> causing it loop back. It should have confirmed the Route value was its
> own address and removed it from the Route list. The ACK packet is
> shown below
>
>
> Request-Line: ACK sip:192.168.1.21;lr=on;ftag=386046356 SIP/2.0
> Message Header
> Record-Route: <sip:192.168.1.21;lr=on;ftag=386046356>
> Via: SIP/2.0/UDP 192.168.1.21;branch=0
> Via: SIP/2.0/UDP
> 192.168.1.23:5070;received=192.168.1.35;rport=5070;branch=z9hG4bK3F391943F7AC4F861033318A443F92D7
> From: 1956 <sip:1956 at 192.168.1.21
> <mailto:1956 at 192.168.1.21>:5070>;tag=386046356
> To: <sip:1313263 at 192.168.1.21
> <mailto:13132630141 at 192.168.1.21>>;tag=as36bd8053
> Contact: <sip:1956 at 192.168.1.35 <mailto:1956 at 192.168.1.35>:5070>
>
> For reference, Iam attaching relevant parts of my cfg and debug
> output. Kindly guide me if I need to rewrite my cfg in a particular
> way or is there a bug in openser, since I believe xten is behaving
> correctly. I am using the latest development version of openser,
> although I tested on the previous stable release as well, with the
> same results. BTW BYE messages sent out by xten also suffer the same
> fate as ACKS.
>
> Regards,
> Danish
>
> *DEBUG OUTPUT*
> 4(17830) SIP Request:
> 4(17830) method: <ACK>
> 4(17830) uri: <sip:1313263 at 192.168.1.21
> <mailto:13132630141 at 192.168.1.21>:5070>
> 4(17830) version: <SIP/2.0>
> 4(17830) parse_headers: flags=2
> 4(17830) Found param type 235, <rport> = <n/a>; state=6
> 4(17830) Found param type 232, <branch> =
> <z9hG4bK3F391943F7AC4F861033318A443F92D7>; state=16
> 4(17830) end of header reached, state=5
> 4(17830) parse_headers: Via found, flags=2
> 4(17830) parse_headers: this is the first via
> 4(17830) After parse_msg...
> 4(17830) preparing to run routing scripts...
> 4(17830) DEBUG : sl_filter_ACK: to late to be a local ACK!
> 4(17830) parse_headers: flags=100
> 4(17830) DEBUG: add_param: tag=as36bd8053
> 4(17830) DEBUG:parse_to:end of header reached, state=29
> 4(17830) DBUG:parse_to: display={}, ruri={sip:1313263 at 192.168.1.21
> <mailto:13132630141 at 192.168.1.21>}
> 4(17830) DEBUG: get_hdr_field: <To> [47];
> uri=[sip:1313263 at 192.168.1.21 <mailto:13132630141 at 192.168.1.21>]
> 4(17830) DEBUG: to body [<sip:1313263 at 192.168.1.21
> <mailto:13132630141 at 192.168.1.21>>]
> 4(17830) get_hdr_field: cseq <CSeq>: <39751> <ACK>
> 4(17830) DEBUG:maxfwd:is_maxfwd_present: value = 70
> 4(17830) DEBUG: add_param: tag=386046356
> 4(17830) DEBUG:parse_to:end of header reached, state=29
> 4(17830) DBUG:parse_to: display={1956}, ruri={sip:1956 at 192.168.1.21
> <mailto:1956 at 192.168.1.21>:5070}
> 4(17830) parse_headers: flags=200
> 4(17830) is_preloaded: No
> 4(17830) grep_sock_info - checking if host==us: 12==12 &&
> [192.168.1.21] == [192.168.1.21]
> 4(17830) grep_sock_info - checking if port 5060 matches port 5070
> 4(17830) grep_sock_info - checking if host==us: 12==12 &&
> [192.168.1.21] == [192.168.1.21]
> 4(17830) grep_sock_info - checking if port 5060 matches port 5070
> 4(17830) after_strict: Next hop:
> 'sip:192.168.1.21;lr=on;ftag=386046356' is loose router
> 4(17830) parse_headers: flags=ffffffffffffffff
> 4(17830) DEBUG: get_hdr_body : content_length=0
> 4(17830) found end of header
> 4(17830) rewrite_uri: Rewriting Request-URI with
> 'sip:192.168.1.21;lr=on;ftag=386046356'
> 4(17830) after_strict: The last route URI:
> 'sip:192.168.1.21;lr=on;ftag=386046356'
> 4(17830) Danish: Entering loose route for method [ACK]
> 4(17830) DEBUG: has_totag: totag found
> *openser.cfg:*
>
>
> modparam("rr", "enable_full_lr", 1)
>
> route {
>
> # -----------------------------------------------------------------
> # Sanity Check Section
> # -----------------------------------------------------------------
> if (!mf_process_maxfwd_header("10")) {
> sl_send_reply("483", "Too Many Hops");
> return;
> };
>
> if (msg:len > max_len) {
> sl_send_reply("513", "Message Overflow");
> return;
> };
>
> # -----------------------------------------------------------------
> # Record Route Section
> # -----------------------------------------------------------------
> if (!method=="REGISTER") {
> record_route();
> };
>
> if (method=="BYE" || method=="CANCEL") {
> unforce_rtp_proxy();
> }
>
> # -----------------------------------------------------------------
> # Loose Route Section
> # -----------------------------------------------------------------
> if (loose_route()) {
>
>
> if (has_totag() && (method=="INVITE" || method =="ACK" ||
> method=="BYE" || method=="INFO")) {
>
> if (nat_uac_test("2")) {
>
> setflag(6);
> force_rport();
> fix_nated_contact();
> };
> if (!search("^Content-Length:[ ]*0")) {
> force_rtp_proxy();
> }
> };
> route(1);
> return;
> };
>
> route[1] {
>
> # -----------------------------------------------------------------
> # Default Message Handler
> # -----------------------------------------------------------------
>
> if (!t_relay()) {
>
> if (method=="INVITE" && isflagset(6)) {
> unforce_rtp_proxy();
> };
> sl_reply_error();
> };
> }
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Users mailing list
>Users at openser.org
>http://openser.org/cgi-bin/mailman/listinfo/users
>
>
More information about the Users
mailing list