Subject: [SIP] Routing of ACK

From: A Srinath <[email-masked]>
Date: Fri, 7 Jul 2000 17:33:17 +0530 (IST)

Hi,
	consider the following scenario.

		 ->B
	        |
	A -> P -
		|
		 ->C

A sends an INVITE to proxy P with (CID=x, CSEQ=1, TO=y, FROM=z)

P forks the request to B and C. with appropriate branch tags in VIA. 

Both B and C respond with 200 OK. which reach A. 

A finds out about 2 call legs using the tags in the TO field. 

A sends out 2 ACK's for both the legs with the tags in the TO. 
It sends both of them to the proxy P. 

The question is how does P find out where to route the ACK. 

	a. Does it route both the ACK's to both locations. 
	b. Does it maintain the call state to know which tag goes where. 

Please clarify. 

regards,
 Srinath A
 Silicon Automation Systems       Phone: 5276100, 5276108 extn 4220
 #1309, 10th Main, HAL III Stage   
 Bangalore 560 008, India                    

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

---

From: "Jo Hornsby" <[email-masked]>
Date: Fri, 7 Jul 2000 13:21:40 +0100

> 	b. Does it maintain the call state to know which tag goes where. 

I think the spec is silent on this issue; all it does say is that the
proxy should optimise it's routing decisions based on the previous
INVITE (I guess if still available) (end of Section 12.4).

There's no good reason (that I can think of), however, that the
proxy can't be even more optimal by noting the tags seen on branches,
and only routing ACKs to the appropriate branches.

HTH,

 - Jo.

---

From: Jonathan Rosenberg <[email-masked]>
Date: Sat, 08 Jul 2000 01:13:09 -0400

> >       b. Does it maintain the call state to know which tag goes where.

I'll note that in rfc2543bis, this should pretty much never happen. In
the bis draft, the final 200 OK response MUST contain a Contact header.
This means that either (1) the proxy record-routes, in which case the
ACKs will each contain (different) route headers which tell the proxy
where to send the request, or (2) the proxy doesn't record-route, in
which case it gets sent directly to the UAS, since there was a contact.

That aside, should it arrive anyway, the ACK should be routed just as
any other new request. Apply routing logic, which presumably causes it
to be forked to both locations. The tags will help identify for which
UAS the ACK is meant.

> and only routing ACKs to the appropriate branches.

If you are stateful, you can also do this.

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