Subject: transport parameter in Contact SIP header

From: Vipul Patel <[email-masked]>
Date: Fri, 13 Aug 1999 15:45:32 -0400

I have a question on the transport parameter in the Contact SIP header.
Let's take the following example:

Client A send an INVITE to Client B through proxy P via UDP. If B
inserts Contact header in 200 OK with transport=TCP. Should A send the
ACK to B via TCP? If yes, then let's say P is a firewall proxy and
inserted Record-Route header. In this case should the ACK from A to P go
via UDP and through P to B via TCP or TCP throughout.

Another doubt I have is, since the Route and Record-Route headers
contain globally reachable Request-URIs (section 6.29 of rfc 2543), and
according to section 2 of rfc 2543, transport parameter cannot be used
in Request-URI, should we ommit the transport parameter from the Contact
header (if present), before attaching the Contact URL at the end of the
Route element list?

Thank you,
Vipul.

--

Vipul J. Patel
dynamicsoft
200 Executive Drive
West Orange, NJ 07052
mailto:[email-masked]

Office:         + 1 732.741.7244
FAX:            + 1 732.741.4778
www:            http://www.dynamicsoft.com

---

From: Jonathan Rosenberg <[email-masked]>
Date: Sat, 14 Aug 1999 17:17:02 -0400

Vipul Patel wrote:
> 
> 
> I have a question on the transport parameter in the Contact SIP
> header. Let's take the following example:
> 
> ACK to B via TCP?

Yes.

 If yes, then let's say P is a firewall proxy and
> inserted Record-Route header. In this case should the ACK from A to P
> go via UDP and through P to B via TCP or TCP throughout.

If the Record Route from P says nothing about transport, its the
default, which is UDP. In this case, A sends the packet to P using UDP,
and P sends the packet to B using TCP. Treat the contact as just another
route entry; only the hop before it uses the URI.

> contain globally reachable Request-URIs (section 6.29 of rfc 2543),
> and according to section 2 of rfc 2543, transport parameter cannot be
> used in Request-URI, should we ommit the transport parameter from the
> Contact header (if present), before attaching the Contact URL at the
> end of the Route element list?

No. Include the transport parameter in the Route entry. If its not
there, the previous hop won't know to use TCP. Lets take your case
above. When P gets the request, it looks at the Route header, which has
a transport=tcp parameter in it. As this is TCP, it opens a TCP
connection. Now, the question is, what goes in the request URI? As has
been mentioned before on the list (I believe), the request URI should
allow any parameters. The question is: when do you need them, and when
do you not? If the host you are sending the request to is the one
identified in the URI, the transport, maddr, ttl and other parameters
are NOT needed. So, in the case above, if you send the request to B
using TCP, there is no need to include the transport=tcp parameter in
the request URI. If, however, you are sending the request to some other
proxy (which will, in turn, send it to the address in the request URI),
then you need to include the transport parameters. 

-Jonathan R.
-- 
Jonathan D. Rosenberg                       Lucent Technologies
Member of Technical Staff                   101 Crawfords Corner Rd.
High Speed Networks Research                Holmdel, NJ 07733
FAX: (732) 834-5379                         Rm. 4C-526
EMAIL: [email-masked]
URL: http://www.cs.columbia.edu/~jdrosen