Subject: RE: [SIP] Stateless Proxy

From: Jonathan Rosenberg <[email-masked]>
Date: Thu, 14 Sep 2000 00:41:24 -0400

> -----Original Message-----
> From: Henning Schulzrinne [mailto:[email-masked]]
> Sent: Wednesday, September 13, 2000 8:17 PM
> To: Neil Deason
> Cc: Jonathan Rosenberg; [email-masked]'
> Subject: Re: [SIP] Stateless Proxy
> 
> 
> Neil Deason wrote:
> > 
> 
> > > 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.
> > 
> > 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."
> 
> Would things be simplified if the spec just said "MUST copy from
> Contact"? I've lost the reason why the flexibility might be needed.
> 
> > 
> > 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.
> 
> 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.

Actually, I thought that outbound proxy would apply only for requests which
don't already have Route. The reason is that this gives the provider
flexibility - if they want to see every request, they record-route. If they
just need to see the first, then they don't. 

-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: "Jo Hornsby" <[email-masked]>
Date: Thu, 14 Sep 2000 10:46:47 +0100

> > Contact"? I've lost the reason why the flexibility might be needed.

Seems right to me; the only exceptions are of course if
Record-Route were present, and if there were no Contact (in
which case I guess one uses To).

> Actually, I thought that outbound proxy would apply only for 
> requests which don't already have Route. The reason is that this
> gives the provider flexibility - if they want to see every request,
> they  record-route. If they just need to see the first, then they
> don't.

It might be helpful to have some clarification here in the spec;
the current definition is:
    Outbound proxy: A proxy that is located near the originator of
    requests. It receives all outgoing requests from a particular UAC,
                          ^^^
    including those requests whose Request-URLs identify a host other
    than the outbound proxy. The outbound proxy sends these requests,
    after any local processing, to the address indicated in the
    request-URI. (All other proxy servers are simply referred as
    proxies, not inbound proxies.)

I would also note Section 11.4:
    If a UAC does not support DNS resolution or the full
    Record-Route/Route mechanism, it MAY send all requests to a
    locally configured outbound proxy. In that case, that proxy
    behaves as described above. The UAC MUST, however, perform the
    mapping of Record-Route to Route header fields and MUST include
    all Route header fields, i.e., the UAC does not remove the first
    Route header field.

Thus it's potentially a bit messy (although will work) if an
outbound proxy decides to add itself in Record-Route, since
re-INVITEs, or what have you, are likely to needlessly loop
through the outbound proxy (okay -- so the proxy could be
intelligent here).

I think Henning's observation on most UACs using an outbound
proxy for _every_ request is about right (after all, that is
what the spec says); however, as Johnathan points out, just
using it for initial request would seem to give the necessary
flexibility.

Of course, it's purely a client configuration issue, and
everything will work regardless of the interpretation (unless
an outbound proxy is doing some sort of firewall magic, and
assumes that it doesn't need to Record-Route since it expects
to always be in the path).

Thoughts?

 - Jo.

---

From: "Simon Barber" <[email-masked]>
Date: Thu, 14 Sep 2000 03:34:42 -0700

This question may be due to my lack of understanding of request routing in
SIP - if so please excuse me!

Is it possible for a registration server to reply to a registration request,
and insist that all future outbound requests be routed to a certain proxy?

For instance, I want to implement a service that logs all my outgoing calls.

To implement this service I must be able to monitor all outgoing call
requests. If I am always at home, I will be using my usual outbound proxy,
and this can implement the service. The problem occurs if I am away from
home - using a SIP client in another network. This SIP client will use it's
local outbound proxy, and hence requests will not pass through my outbound
proxy.

Simon

---

From: Henning Schulzrinne <[email-masked]>
Date: Fri, 15 Sep 2000 22:03:42 -0400

Jo Hornsby wrote:

> which case I guess one uses To).

Clarified the Section "Caller Receives Response to Initial Request" to
read, in part:

If the 200 (OK) response contained a \header{Contact} header field, it   
is copied into the \header{Request-URI} of the {\ACK} or {\BYE}
requests.  Otherwise, the \header{To} header field address is copied
into the \header{Request-URI}.

> using it for initial request would seem to give the necessary

There is a slight twist here. A minimal client does NOT have to
implement Record-Route/Route (only a firewall-friendly client does). For
firewalls to work, the "every request" rule seem safest. The only
drawback is an increase in messages for those outbound proxies that
really only want to see the first request. I don't recall seeing an
example of a practical application where this would be required. All
examples where proxies want to be in the path are for the whole call, as
for firewalls, billing, and ACDs.

One could make the distinction that minimal clients always send to the
outbound proxies and others listen to the Record-Route/Route info, but I
somehow don't see that adding yet another obscure distinction to the
spec as helpful.

Thus, since the negative consequences of sending subsequent requests to
the proxy is far greater than sending an extra ACK, BYE or re-INVITE to
a proxy server that could do without them, the simple "always" rule
seems least likely to cause surprises and debates about backward
compatibility.

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

---

From: [email-masked]
Date: 16 Sep 2000 13:23:12 -0000

I would like some further clarification on this change:

If the Contact is used as the URI for ACKs and BYEs, what happens 
when two users both behind their own firewalls are using numerically 
the same private addresses and the Contact: specified is a private
address.

I guess it all depends on how a proxy is going to use this
information. If it is going to use for routing purposes we may have 
trouble.

Shiv

as Quoting Henning Schulzrinne <[email-masked]>:

> Clarified the Section \"Caller Receives Response to Initial Request\" 
to
> read, in part:
>
> If the 200 (OK) response contained a \\header{Contact} header field, 
it
> is copied into the \\header{Request-URI} of the {\\ACK} or {\\BYE}
> requests.  Otherwise, the \\header{To} header field address is copied
> into the \\header{Request-URI}.
>
>
> >
> > Thus it\'s potentially a bit messy (although will work) if an
> > I think Henning\'s observation on most UACs using an outbound
> firewalls to work, the \"every request\" rule seem safest. The only
> really only want to see the first request. I don\'t recall seeing an
> somehow don\'t see that adding yet another obscure distinction to the
> spec as helpful.
>
> a proxy server that could do without them, the simple \"always\" rule

---

From: "Jo Hornsby" <[email-masked]>
Date: Mon, 18 Sep 2000 11:19:23 +0100

> information. If it is going to use for routing purposes we may have 

If a non-routable Contact address managed to get so far "across"
the network, then things have already gone pear-shaped.  Whether
an outbound proxy tries to route or the requesting-UA tries to
route, it's gonna fail.

 - Jo.