[Serusers] 483 - Too many hops

Jan Janak jan at iptel.org
Wed Jun 25 07:14:05 CEST 2003


Hello,

yes, that is possible because the new version of ser implements loose
routing as per RFC3261.

It is possible that:
1) Some user agents don't implement it right
2) There is a bug in the rr module.

FYI, I have fixed a bug in the rr module approximately 2-3 weeks ago
which could cause 483.

  Jan.


On 24-06 15:14, Greg Fausak wrote:
> Hi,
> 
> I'm seeing this particular message much more
> often with the CVS code than I did with the 8.10 code.
> 
> Just an observation :-)
> 
> ---greg
> 
> 
> > -----Original Message-----
> > From: serusers-bounces at lists.iptel.org 
> > [mailto:serusers-bounces at lists.iptel.org] On Behalf Of Andy Blen
> > Sent: Tuesday, June 24, 2003 3:03 PM
> > To: Chintan Thakker
> > Cc: serusers at lists.iptel.org
> > Subject: Re: [Serusers] 483 - Too many hops
> > 
> > 
> > (you forgot to CC the mailing list)
> > 
> > a possibility is that the contacts you registered cause a loop.
> > 
> > andy
> > 
> > At 06:22 PM 6/24/2003, Chintan Thakker wrote:
> > >Hi,
> > > Seems I missed something, I am sending INVITE to 
> > sip:9727610001 at 192.1.2.17 with Route: <sip:192.1.2.17;lr> to 
> > the proxy server ('ser') running on 192.1.2.17 and getting 
> > 483 - too many hops message. I modified ser.conf to add alias 
> > = "192.1.2.17" but it still gives me the same problem.
> > > What am I missing out ?. I guess an 'alias=192.1.2.17' 
> > entry should return a true to 'uri==myself' matching 
> > performed in the script and make the server process that 
> > request rather than forwarding it (to itself in this case)
> > >
> > >Thanks,
> > >Chintan
> > >
> > >-- ser.cfg --
> > >
> > >   1 #
> > >     2 # $Id: ser.cfg,v 1.20 2003/05/31 21:12:19 jiri Exp $
> > >     3 #
> > >     4 # simple quick-start config script
> > >     5 #
> > >     6
> > >     7 # ----------- global configuration parameters 
> > ------------------------
> > >     8
> > >     9 debug=3         # debug level (cmd line: -dddddddddd)
> > >    10 fork=yes
> > >    11 log_stderror=no # (cmd line: -E)
> > >    12
> > >    13 /* Uncomment these lines to enter debugging mode
> > >    14 debug=7
> > >    15 fork=no
> > >    16 log_stderror=yes
> > >    17 */
> > >    18
> > >    19 check_via=no    # (cmd. line: -v)
> > >    20 dns=no           # (cmd. line: -r)
> > >    21 rev_dns=no      # (cmd. line: -R)
> > >    22 port=5060
> > >    23 children=4
> > >    24 fifo="/tmp/ser_fifo"
> > >    25
> > >    26 # ------------------ module loading 
> > ----------------------------------
> > >    27
> > >    28 # Uncomment this if you want to use SQL database
> > >    29 #loadmodule "/usr/local/lib/ser/modules/mysql.so"
> > >    30
> > >    31 loadmodule "/usr/local/lib/ser/modules/sl.so"
> > >    32 loadmodule "/usr/local/lib/ser/modules/tm.so"
> > >    33 loadmodule "/usr/local/lib/ser/modules/rr.so"
> > >    34 loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
> > >    35 loadmodule "/usr/local/lib/ser/modules/usrloc.so"
> > >    36 loadmodule "/usr/local/lib/ser/modules/registrar.so"
> > >    37
> > >    38 # Uncomment this if you want digest authentication
> > >    39 # mysql.so must be loaded !
> > >    40 #loadmodule "/usr/local/lib/ser/modules/auth.so"
> > >    41 #loadmodule "/usr/local/lib/ser/modules/auth_db.so"
> > >    42
> > >    43 # ----------------- setting module-specific 
> > parameters ---------------
> > >    44
> > >    45 # -- usrloc params --
> > >    46
> > >    47 modparam("usrloc", "db_mode",   0)
> > >    48
> > >    49 # Uncomment this if you want to use SQL database
> > >    50 # for persistent storage and comment the previous line
> > >    51 #modparam("usrloc", "db_mode", 2)
> > >    52
> > >   53 # -- auth params --
> > >    54 # Uncomment if you are using auth module
> > >    55 #
> > >    56 #modparam("auth_db", "calculate_ha1", yes)
> > >    57 #
> > >    58 # If you set "calculate_ha1" parameter to yes (which 
> > true in this config),
> > >    59 # uncomment also the following parameter)
> > >    60 #
> > >    61 #modparam("auth_db", "password_column", "password")
> > >    62
> > >    63 # -------------------------  request routing logic 
> > -------------------
> > >    64
> > >    65 #add aliases
> > >    66 alias="192.1.2.17"
> > >    67
> > >    68 # main routing logic
> > >    69
> > >    70 route{
> > >    71
> > >    72         # initial sanity checks -- messages with
> > >    73         # max_forwards==0, or excessively long requests
> > >    74         if (!mf_process_maxfwd_header("10")) {
> > >    75                 sl_send_reply("483","Too Many Hops");
> > >    76                 break;
> > >    77         };
> > >    78         if (len_gt( max_len )) {
> > >    79                 sl_send_reply("513", "Message too big");
> > >    80                 break;
> > >    81         };
> > >    82
> > >    83         # we record-route all messages -- to make sure that
> > >    84         # subsequent messages will go through our 
> > proxy; that's
> > >    85         # particularly good if upstream and 
> > downstream entities
> > >    86         # use different transport protocol
> > >    87         record_route();
> > >    88         # loose-route processing
> > >    89         if (loose_route()) {
> > >    90                 t_relay();
> > >    91                 break;
> > >    92         };
> > >    93
> > >    94         # if the request is for other domain use UsrLoc
> > >    95         # (in case, it does not work, use the 
> > following command
> > >    96         # with proper names and addresses in it)
> > >    97         if (uri==myself) {
> > >    98
> > >    99                 if (method=="REGISTER") {
> > >   100
> > >   101 # Uncomment this if you want to use digest authentication
> > >   102 #                       if 
> > (!www_authorize("iptel.org", "subscriber")) {
> > >   103 #                               
> > www_challenge("iptel.org", "0");
> > >                                                             
> >           
> > >53,1          65%
> > >  104 #                               break;
> > >   105 #                       };
> > >   106
> > >   107                         save("location");
> > >   108                         break;
> > >   109                 };
> > >   110
> > >   111                 # native SIP destinations are handled 
> > using our USRLOC DB
> > >   112                 if (!lookup("location")) {
> > >   113                         sl_send_reply("404", "Not Found");
> > >   114                         break;
> > >   115                 };
> > >   116         };
> > >   117         #Let tje server [rpcess tje cirremt reqiest
> > >   118         #if(uri =~ "^sip:(.+@)?(192\.1\.2\.17)([:;\?].*)?$" )
> > >   119         #{
> > >   120         #       break;
> > >   121         #};
> > >   122
> > >   123         # forward to current uri now; use stateful 
> > forwarding; that
> > >   124         # works reliably even if we forward from TCP to UDP
> > >   125         if (!t_relay()) {
> > >   126                 sl_reply_error();
> > >   127         };
> > >   128
> > >   129 }
> > >   130
> > >- end ser.cfg --
> > >Andy Blen wrote:
> > >
> > >>most likely a misconfig issue on your side, feel free to 
> > read the doc, 
> > http://www.iptel.org/ser/doc/prerelease/x1026.html#AEN1032
> > >>
> > >>andy
> > >>
> > >>At 12:18 AM 6/21/2003, Chintan Thakker wrote:
> > >> 
> > >>
> > >>>Hi,
> > >>>Consider the following scenario. UA1 is trying to call UA2 
> > both registered with the same proxy. (UA1 -> 'ser' -> UA2)
> > >>>
> > >>>1.
> > >>>UA1 sends INVITE to the proxy with request uri set to UA2. 
> > It also sets the Route header in the invite to that of the proxy.
> > >>>This returns a 483 - too many hops to UA1
> > >>>
> > >>>It seems that in the above mentioned scenario, the proxy 
> > loops back the INVITE multiple times locally. This decrements 
> > the Max Forwards value every time until it becomes zero and 
> > hence sends 483 back to UA1. It seems to me this is not the 
> > correct behavior of the server. It should forward the request to UA2.
> > >>>
> > >>>Thanks in advance,
> > >>>
> > >>>Chintan
> > >>>
> > >>>-- Start trace --
> > >>>
> > >>>U 2003/06/20 15:24:42.362466 192.1.2.88:5060 -> 192.1.2.17:5060
> > >>>INVITE sip:9727610001 at 192.1.2.17 SIP/2.0.Via: SIP/2.0/UDP 
> > 192.1.2.88:5060;b
> > >>>ranch=z9hG4bK421668676.Max-Forwards: 70.From: 9727619271 
> > <sip:9727619271 at 19
> > >>>2.1.2.88>;tag=421668676.To: 9727610001 
> > <sip:9727610001 at 192.1.2.17>.Call-ID:
> > >>>421668676 at 192.1.2.88.CSeq: 1 INVITE.Contact: 
> > <sip:9727619271 at 192.1.2.88>.C
> > >>>ontent-Type: application/sdp.Content-Length: 138.Route: 
> > <sip:192.1.2.17;lr>
> > >>>..v=0.o=username 421668676 421668676 IN IP4 
> > 192.1.2.88.s=Session SDP.c=IN I
> > >>>P4 192.1.2.88.t=0 0.m=audio 54454 RTP/AVP 0.a=rtpmap:0 PCMU/8000.
> > >>>
> > >>>U 2003/06/20 15:24:42.363813 192.1.2.17:5060 -> 192.1.2.88:5060
> > >>>SIP/2.0 100 trying -- your call is important to us..Via: 
> > SIP/2.0/UDP 192.1.
> > >>>2.88:5060;branch=z9hG4bK421668676..From: 9727619271 
> > <sip:9727619271 at 192.1.2
> > >>>.88>;tag=421668676.To: 9727610001 
> > <sip:9727610001 at 192.1.2.17>.Call-ID: 4216
> > >>>68676 at 192.1.2.88.CSeq: 1 INVITE.Server: Sip EXpress router 
> > (0.8.11pre29 (i3
> > >>>86/linux))..Content-Length: 0..Warning: 392 
> > 192.1.2.17:5060 "Noisy feedback
> > >>>tells:  pid=15107 req_src_ip=192.1.2.88 req_src_port=5060 
> > in_uri=sip:97276
> > >>>10001 at 192.1.2.17 out_uri=sip:9727610001 at 192.1.2.17 via_cnt==1"....
> > >>>#
> > >>>U 2003/06/20 15:24:42.794681 192.1.2.17:5060 -> 192.1.2.88:5060
> > >>>SIP/2.0 483 Too Many Hops..Via: SIP/2.0/UDP 
> > 192.1.2.88:5060;branch=z9hG4bK4
> > >>>21668676..From: 9727619271 
> > <sip:9727619271 at 192.1.2.88>;tag=421668676.To: 97
> > >>>27610001 
> > <sip:9727610001 at 192.1.2.17>;tag=b27e1a1d33761e85846fc98f5f3a7e58.4
> > >>>632.Call-ID: 421668676 at 192.1.2.88.CSeq: 1 INVITE.Server: 
> > Sip EXpress router
> > >>>(0.8.11pre29 (i386/linux))..Content-Length: 0..Warning: 
> > 392 192.1.2.17:506
> > >>>0 "Noisy feedback tells:  pid=15107 req_src_ip=192.1.2.17 
> > req_src_port=5060
> > >>>in_uri=sip:9727610001 at 192.1.2.17 
> > out_uri=sip:9727610001 at 192.1.2.17 via_cnt
> > >>>==71"....
> > >>>
> > >>>-- End trace --
> > >>>
> > >>>ps: We checked it with loose routing(suceeding ';lr' 
> > present in URIs in Route) as well as strict routing(suceeding 
> > ';lr' not present in URIs in Route). Should the type of 
> > routing used matter ?
> > >>>
> > >>>_______________________________________________
> > >>>Serusers mailing list
> > >>>serusers at lists.iptel.org
> > >>>http://lists.iptel.org/mailman/listinfo/serusers
> > >>>   
> > >>
> > >>--
> > >>Andy Blen
> > >>iptel.org Services 
> > >> 
> > >
> > >
> > 
> > --
> > Andy Blen
> > iptel.org Services 
> > 
> > _______________________________________________
> > 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



More information about the sr-users mailing list