Subject: RE: [Sip] proxy routing of a request

From: Jonathan Rosenberg <[email-masked]>
Date: Wed, 1 Aug 2001 03:38:07 -0400

Comments inline.

> -----Original Message-----
> From: Juha Heinanen [mailto:[email-masked]]
> Sent: Monday, July 30, 2001 5:03 AM
> To: [email-masked]
> Subject: [Sip] proxy routing of a request
> 
> 
> ther first paragraph of chapter 16 of bis-03 says:
> 
> Record routing is the process whereby a proxy server can request to
> receive all messages between two UAs for a particular call leg. The
> proxy accomplishes this by inserting a header, called 
> Record-Route into
> the initial request that begins the call leg. The user agents 
> use these
> headers to construct a set of Route headers, that gets inserted into
> subsequent requests in the call leg. The Route headers 
> contain a set of
> proxies that the request must visit on its way from one UA to
> another. Proxies use these to forward the requests, much like 
> strict IP
> source routing.
> 
> the above is not true, since if an invite arrives at the uas with only
> one proxy listed in the record-route, according to 16.2 the route-set
> contains
> 
> uri-from-the-record-route
> uri-from-the-contact
> 
> when the uas then sends a bye, according to 16.4 the request-uri will
> contain the uri of the proxy that inserted the record-route and the
> route header will contain the uri of the contact:
> 
> The request is constructed as specified in Section 15.4. The UA then
> takes the list of URI in the route set. The top URI is 
> inserted into the
> request URI of the request, including all parameters. Any URI 
> parameters
> not allowed in the request URI MUST then be stripped. Each of the
> remaining URIs (if any) from the route set, including all URI
> parameters, are placed into a Route header into the request, in order.
> 
> as the result, the route header of the bye will not contain uri of the
> the record-routing proxy as the first paragraph claims.
> 
> one could say that the first paragraph just gives an overall idea of
> what happens and is not intended as an accurate description.

You are correct that the first paragraph is not technically correct.
Although it is just meant to give an overall idea of operation, it should be
right. I will fix it.

  the
> problem, however, seems to be more than editorial, since if the uas is
> using another proxy to route its requests, this other proxy will route
> the bye according to 16.5 as follows:
> 
> When a proxy receives a request, it MUST check for the existence of a
> Route header. If one exists, it MUST pop that Route header, 
> and place it
> (including all URI parameters) into the Request-URI.
> 
> in this case the request-uri contains the uri of the proxy, but since
> there is also a route header containing the contact uri, this other
> proxy will forget the request-uri and route the bye directly 
> to the uac
> that originally sent the invite.  as the result, the very idea of the
> record-routing proxy wanting to be on the path of subsequent requests
> gets lost.
> 
> section 16.4.1 talks about UAs and outbound proxies, but i don't see
> that the text would change what i described above, since the main rule
> still is:
> 
> A UA which uses a local outbound proxy, and attempts to send 
> a subequent
> request in a call leg with a route set, SHOULD use the procedures in
> Section 16.4.
> 
> the rest of the section seems to apply only to dns uncapable UAs.
> 
> what is the point that i'm missing here?

The bit about dns-uncapable UAs would apply. Basically, the rule is that if
you don't send the request to the top element in the route set, don't pop
it. dns-less UA is one case where this will happen, but not the only one.
I'll clarify that.

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

_______________________________________________
Sip mailing list  http://www.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: "Neil Deason" <[email-masked]>
Date: Thu, 2 Aug 2001 14:07:07 +0100

> From: [email-masked] [mailto:[email-masked]]On Behalf Of
> Jonathan Rosenberg
>
[snip]
> it. dns-less UA is one case where this will happen, but not 

To me this breaks the notion that pre-loaded routes 
are equivalent to strict source routing in IP. There 
are other things I don't like about the comparison, like 
the fact Route entries are urls, so could we lose the 
text making this comparison in 16.6?

I am also interested in discussing more about what the
other cases may be. I feel that a proxy might want 
to do this too.

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

---

From: Juha Heinanen <[email-masked]>
Date: Thu, 2 Aug 2001 21:09:33 +0300 (EEST)

it seems to me that most of the section 16.4.1 about local outbound
proxies is bogus.  if local outbound proxy has been configured for a ua,
then the ua should send ALL requests with or without route headers or
with or without dns capability via that proxy.  a very common reason why
local outbound proxy has been configured for a ua is that the site has a
firewall that denies 5060 traffic directly to/from the ua.  

if the text doesn't clearly mandate the use of configure outbound proxy,
then some ua's would work and some others would not or we would include
yet another parameter to the ua configuration, which is a very bad idea.

also, the text doesn't tell what the ua should place in the request-uri
when the ua didn't send the initial request.

-- juha