Subject: [SIP] Record-Roue & Contact Headers

From: "rafi" <[email-masked]>
Date: Thu, 27 Jul 2000 17:58:31 +0530

Hi,

   Consider the following scenario using
Record-Route and Contact header field.

A              Proxy-1      Contact Server       B

   INVITE
 ---------------->
                    INVITE(Record-Route:Proxy-1)
                    -------------------------------->

                       200 OK ( Record-Route  :Prxoy-1,
                                     Contact : Contact-Server )
                    <---------------------------------
  
  200 OK( Record-Route  :Prxoy-1
               Contact : Contact-Server)
  <------------

ACK (Route :Contact-Server)
 ---------------------->

                             ACK
                       ------------------>

                              ACK
                       <------------------- (Loop here)

                       482 (Loop Detected)
                       ------------------>

   ???
<--------------------

   In the above scenario, Contact server uses proxy-1 in order to send
request. Thus when A uses Record-Route together with Contact URL
in order to construct Route Header field there may be potential chance 
that  loop may be created. Thus, when proxy detects this how can it 
inform A (UAC) about this condition ?. I have given a bad example but
 imagine this case when call passes through many proxy and contact
 server uses one of the proxy in the call leg to send further request. It is
 however true that Contact server itself can detect loop  but it is not
clear how UAC knows about these fact and avoid it in future.

Regards
Rafi Assadi H.M

---

From: Jonathan Rosenberg <[email-masked]>
Date: Thu, 27 Jul 2000 10:26:28 -0400

This call flow makes no sense. B appears to be a UAS. Why would it
randomly generate an ACK upon receiving
an ACK? Also, ACKs are NEVER responded to.

-Jonathan R.

> rafi wrote:

-- 
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: (732) 741-7244
http://www.dynamicsoft.com

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

---

From: "rafi" <[email-masked]>
Date: Thu, 27 Jul 2000 20:20:17 +0530

Hi,

  Pardon me, there was a small mistake in call flow,
please have a look at new call flow.

  To clarify thing further when A  wants to send
ACK message it construct the route using Record-Route
and Contact header fileds, thus Route is via proxy-1 and 
Contact server. When proxy-1 sends ACK to Contact server
then Contact server forwards it again to proxy-1 
due to some configuration at Contact server.

Thanks
Rafi Assadi H.M.

A              Proxy-1      Contact Server              B
INVITE
---------------->
INVITE(Record-Route:Proxy-1)
                    ------------------------------------>
 
                        200 OK ( Record-Route  :Prxoy-1,
                                      Contact : Contact-Server )
                     <-----------------------------------

 
                              ACK
                        ---------------> 
                              ACK
                        <------------- (Loop here)
 
                        482 (Loop Detected)
                        ---------------->
 
   ???
 <----------------

---

From: Dvir Oren <[email-masked]>
Date: Thu, 27 Jul 2000 17:58:37 +0300 (IDT)

>                              ACK

Actually, I think the loop would be detected before the looped ACK is
sent, since each proxy has to verify that it is not sending a request
to a UA in the Via, though the proxy, in the above example, is
allready in the Via, thus the loop is detected earlier.

Also, I don't think that you should send any response after getting an 
ACK.  Responses are for INVITEs and BYEs (well, actually, anything but 
ACKs).  What the UA detecting the loop should probably do is initiate
a hangup at this point.

More to your point, though, I wouldn't suggest putting a Contact of a
proxy.  I know the RFC says something about allowing to put a Contact
of a proxy, but this seems unneeded.  If the proxy wants to be in the
route, it should add itself in the Record-Route.  It is true that if
the UAC adds a Contact of some proxy already in the middle, it will
cause a loop.

-- 
Dvir Oren               <[email-masked]>
Lucid VON Ltd.     <http://www.lucidvon.com>
9 Saloniki St.,        Tel-Aviv       Israel
Tel:  +972 3 644 3038  Fax:  +972 3 644 3039

---

From: Jonathan Rosenberg <[email-masked]>
Date: Thu, 27 Jul 2000 11:28:36 -0400

> due to some configuration at Contact server.

Why would it do that? It responded to the INVITE to begin with, so
why would it now forward the ACK? 

-Jonathan R.

---

From: "rafi" <[email-masked]>
Date: Thu, 27 Jul 2000 21:01:10 +0530

Hi,

   May be the example I have taken is 
too primitive. What I want to convey is
something like this 

Route = Record-Route + Contact Header

Now,  if  the server mentioned in the Contact Header
uses one of the proxy in the Record-Route Header
then it will cause loop. Please note that when 
client  includes contact Address in response 
it MAY not know how Contact Server delivers 
the  SIP message.

Thank You
Rafi Assadi H.M.

---

From: Jonathan Rosenberg <[email-masked]>
Date: Fri, 28 Jul 2000 01:45:37 -0400

rafi wrote:
> then it will cause loop.

This still makes no sense. The UAS listed in the Contact header
is a UAS. When it receives a request, it doesn't proxy it.
If it did, it would be a proxy.

-Jonathan R.