[Users] record routing problems
Danish Samad
danish.samad at vocalseeds.com
Tue Jun 6 12:48:48 CEST 2006
Hi bogdan,
Thanks for your reply. I was surfing through some old mails and found
out that record routing is dependent on the alias and listen values.
After I added port values to these parameters the problem was solved.
Regards,
Danish
On Mon, 2006-06-05 at 12:23 +0300, Bogdan-Andrei Iancu wrote:
> 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