Subject: RE: Deprecate loop detection, was: Re: [Sip] bis draft: Pre-existing Route headers

From: "Chiou, Mark" <[email-masked]>
Date: Tue, 8 Jan 2002 12:04:09 -0600

Please see comments inline. Thanks, Mark Chiou

-----Original Message-----
From: Jonathan Rosenberg [mailto:[email-masked]]
Sent: Tuesday, January 08, 2002 11:17 AM
To: Drage, Keith (Keith)
Cc: [email-masked]
Subject: Deprecate loop detection, was: Re: [Sip] bis draft:
Pre-existing Route headers

Drage, Keith (Keith) wrote:

> Section 8.1.1.7 of the bis draft (lines 948 through 952) appears to be
the
> text that allows pre-existing Route headers to be used in the initial
> transaction of a dialogue, or in a stand-alone transaction.
> 
> 	"8.1.1.7 Request-URI The initial Request-URI of the message
SHOULD
> be set to the value of the URI in the To field. One notable exception
is the
> REGISTER method; behavior for setting the Request-URI of register is
given
> in Section 10. Another exception is the case of pre-existing Route
headers;
> in that case, the procedures of Section 12.2.1.1 as they pertain to
the
> Request- URI are followed, even though there is no dialog." 

Right. We'll add a bit more text to explain what a "pre-existing route"
is.

> 
> A set of Route headers created using the Record-Route mechanism
carries the
> mechanism to ensure that when the route traverses a spiral, all the
URLs in
> the Record-Route headers are unique, and therefore that the set of
Route
> headers is also unique.

Actually, I am not sure thats really needed anymore for routed requests.

Here's why. Remember, the point of loop detection is to reject a request

when you know that its processing will cause you do to the same thing to

it you did last time. Proxy processing is not based just on the URI; in 
the case of Route headers, the overall processing is the same only if 
the Route set through the loop has not changed.

**************
No, we do need the route header for Proxy Servers. The record-route and
route are used by the Proxy Server such that the Proxy server knows when
the call is answered and disconnected in order to do billing
************** Mark Chiou
 
One of the things we have now in bis is that a proxy computes, as part 
of the via branch ID, a hash of those things in the request that affect 
its processing. Effectively, if this includes a hash of the route set, 
there is no need to ensure that the URI in the route set are not 
identical. Realistically I expect they almost always would be anyway, 
though.

I am beginning to wonder, however, whether or not this whole business of

loop detection is worth the trouble. The Max-Forwards mechanism provides

a sufficient way to ensure that they don't persist forever. The loop 
detection mecahnism is more efficient, but given the probability of 
occurence in a well-engineered network, I'm not sure its worth all the 
pain it causes, and it does cause pain. A proxy has to hash over a bunch

of headers that it otherwise might be able to ignore...

Anyone for deprecating loop detection? A proxy that doesn't do it would 
have to insert max-forwards if not already present, that is the penalty.

  We also need a minimum value for Max-Forwards, something like 20 is 
more than sufficient, I think.

**************
Do I miss something, I thought the MAX-Forwards is used when a call is
forwarded. In PSTN world, the default number allowing a call to be
forwarded is 5. This means a call can only be forwarded (regarding any
combination of forwarding flavor: CFU, CFB, CFNA, etc) up to 5 times.
The Proxy Server shall check the max-Forward count before forwarding the
call and increment max-Forward by one in the message toward the next
Server.
The loop detection is used when a call is ended up forwarded to itself.
For example, A calls B and B CFU to C and C CFNA to A.
************** Mark Chiou

This is has the nice side effect of making the branch ID just a pure 
transaction identifier, as it should be.

Comments?

-Jonathan R.

-- 
Jonathan D. Rosenberg, Ph.D.            72 Eagle Rock Avenue
Chief Scientist                         First Floor
dynamicsoft                             East Hanover, NJ 07936
[email-masked]                 FAX: (973) 952-5050
http://www.jdrosen.net                  PH:  (973) 952-5000
http://www.dynamicsoft.com

_______________________________________________
Sip mailing list  http://www1.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [email-masked] for questions on current sip
Use [email-masked] for new developments on the application of sip

_______________________________________________
Sip mailing list  http://www1.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [email-masked] for questions on current sip
Use [email-masked] for new developments on the application of sip

---

From: Christer Holmberg <[email-masked]>
Date: Tue, 08 Jan 2002 20:28:40 +0200

Hi,

Maybe I don't get the point, but why do you need the Route and
Record-Route headers to know when a call is answered and disconnected?

In SIP the MAX-Forwards value is DECREASED by one by proxies. When it
reaches zero, an error response is then sent back to the sender.

>************** Mark Chiou

Yes, but what we are discussing here is if the loop detection mechanism
used by proxies is needed or not. 

If a client (in your case A) initiates the call, and it is routed back
to that client, that mechanism is not needed to detect the loop.

Regards,

Christer Holmberg
Ericsson Finland

---

From: Jonathan Rosenberg <[email-masked]>
Date: Tue, 08 Jan 2002 14:15:09 -0500

> the Route set through the loop has not changed.

The proposal was not to deprecate route or record-route, just loop 
detection.

Oh, and, as an unrelated side note, good luck billing for calls based on 
duration in a proxy. THere are so many fraud attacks I could write a 
book on just that subject. I'd make a fortune! If you tell me which 
customers are using this, I would like to know so I can make lots of 
free phone calls. [ps, if you want to respond to this, please do so in a 
separate thread or privately so we do not detract from the point here]

Max-Forwards counts the number of proxy hops. Each hop may or may not 
forward a call to a separate subscriber in the PSTN sense. It needs to 
be large enough to span a large SIP network. In 3g, i think a mobile to 
mobile call would be like ten or so, possibly more...

-Jonathan R.