Subject: RE: [SIP] Stateless Proxy

From: Jonathan Rosenberg <[email-masked]>
Date: Tue, 12 Sep 2000 23:54:39 -0400

Neil wrote:
> Shail Bhatnagar wrote:
> > 
> > I tend to think that the new bis version almost implies that :
> > 
> > 1) An ACK without Route header is for the proxy and should 
> be dropped.
> > (Stop response retx timer in stateful mode)
> 
> What changes are you thinking of? I thought that a UAS MUST
> add a Contact to a 2xx reponse for INVITE but it is only a 
> MAY as to whether the UAC sends the ACK directly there.
> Therefore an ACK without a Route may still need to be 
> sent on by a proxy.

Thats not my understanding, nor my reading of the bis draft. Section 6.13
says:

>INVITE and OPTIONS 2xx responses: A user agent server sending a definitive,
positive
>response (2xx) MUST insert a Contact response header field indicating the
SIP address under
>which it is reachable most directly for future SIP requests, such as ACK,
within the same 
>Call-ID.TheContact header field contains the address of the server itself
or that of a 
> proxy, e.g., if the host is behind a firewall.The value of this Contact
header is copied 
> into the Request-URI of subsequent requests for this call if the response
did not also 
> contain a Record-Route header. If the response also contains a
Record-Route
>header field, the address in the Contact header field is added as the last
item in the 
> Route header field. See Section 6.34 for details.

and then later, section 6.34.2 says:

> Once a proxy P inserts a Record-Route header in a request from UA A to UA
B , all 
> subsequent requests from A to B and from B to A visit P .

Thus, although no explicit strength is assigned, it was my understanding
that text of the form "the proxy inserts X" or "the UA copies A to B" was
effectively MUST.

Hisham wrote:
>The question here is what would a stateless proxy do when it recieves a
request
>with the host part of the request-uri indicating its domain?  Forwarding
the
>request will cause loops. 

No. Lets not forget that routing is one of the primary jobs of a proxy, and
that said routing can be accomplished in many ways. Consider, for example, a
very large enterprise network, example.com. All calls for example.com get
routed to a proxy server farm. This farm has a bunch of servers that look at
the incoming request URI; assuming it matches their domain (example.com),
they look up the R-URI in a corporate database, and determine the department
handling that user. They then forward the request there. These proxies are
ideal candidates for stateless. Note, however, that they DO operate in a
mode where their domain matches the domain in the request URI.

I also see no reason why if a registration results in a single contact, the
proxy cannot then assume a stateless role when it proxies. Remember - these
roles are LOGICAL, and the decision on which to be can be made at a late
point in the processing of the transaction. As such, a proxy could decide to
be stateful only if the registration returns multiple contacts, stateless
otherwise.

-Jonathan R.

---
Jonathan D. Rosenberg                       72 Eagle Rock Ave.
Chief Scientist                             First Floor
dynamicsoft                                 East Hanover, NJ 07936
[email-masked]                     FAX:   (973) 952-5050
http://www.cs.columbia.edu/~jdrosen         PHONE: (973) 952-5000
http://www.dynamicsoft.com 

_______________________________________________
SIP mailing list
[email-masked]
http://lists.bell-labs.com/mailman/listinfo/sip

---

From: Neil Deason <[email-masked]>
Date: Wed, 13 Sep 2000 09:39:10 +0100

> that text of the form "the proxy inserts X" or "the UA copies A to B" was

If this is the intention the text in 11.3 needs 
to be updated  ...

"The Request-URI of the ACK or BYE request MAY be set to 
whatever address was found in the Contact header field in 
the 200 (OK) response, if present. Alternately, a UAC may 
copy the address from the To header field into the 
Request-URI."

I would still question the assertion that an ACK
without a Route never needs to be routed on by
a Proxy. For example when a UA is configured to
always use a Proxy for every outbound request.

Cheers,
Neil.
-- 
Ubiquity Software Corporation, UK        http://www.ubiquity.net

---

From: Shail Bhatnagar <[email-masked]>
Date: Wed, 13 Sep 2000 12:19:24 -0400

> always use a Proxy for every outbound request.

Neil, I am hazy about this aspect and I don't think spec is very
clear on this. The unanswered questions in my mind are (when
the user agent uses a local proxy for every outbound request) :

(a) If 200 response to INVITE did not have a Record-Route, can
the user agent send ACK directly to the other user agent ( Contact
ofcourse is mandatory) or should it send it to its proxy and put
a Route header containing the Contact of the other user agent ??

(b) 200 response to INVITE does have Record-Route and the user
agent uses the algorithm outlined in the spec to formulate an ACK.
Should it still send it unconditionally to its local proxy ?

---

From: Henning Schulzrinne <[email-masked]>
Date: Wed, 13 Sep 2000 20:17:07 -0400

Neil Deason wrote:

> copy the address from the To header field into the

Would things be simplified if the spec just said "MUST copy from
Contact"? I've lost the reason why the flexibility might be needed.

> always use a Proxy for every outbound request.

There are two interpretations of the outbound proxy concept:

(1) It's clearly needed to force routing for the first request in a
transaction or call, since Record-Route isn't available.

(2) It could be implied for each request, regardless of Record-Route.
Isn't strictly necessary, since Route can do the job, but it seems
easier to have outbound proxy mean "always use, even if it doesn't
record-route". My impression is that most implementation always use it
if configured.

-- 
Henning Schulzrinne   http://www.cs.columbia.edu/~hgs

---

From: "Jo Hornsby" <[email-masked]>
Date: Thu, 14 Sep 2000 10:50:43 +0100

> a Route header containing the Contact of the other user agent ??

No -- I don't think it should create a Route header containing
the Contact address in; placing the Contact in the Request-URI
should suffice.

> Should it still send it unconditionally to its local proxy ?

That's the million dollar question. &:)  But basically, it's not
going to matter.  [See my previous post.]

Cheers,

 - Jo.