Subject: [SIP] multiple responses ??

From: Bertil Engelholm <[email-masked]>
Date: Mon, 23 Oct 2000 18:19:39 +0200

Hi,

I have some questions regarding the possibility to forward
best vs. forward all responses. 

First of all I wonder if this is not a function that should
be decided by the UA e.g. by setting a special header ? 
It's the UA (the User) that knows if he like to get all 
responses and choose himself or let the network choose the 
best response. Why should each server take this decision ?

Secondly I have a question regarding the proxy behaviour in
the following case.

            ------      ------
            |    |----->| P2 |---->????
------      |    |      ------
| Ca |----->| P1 |
------      |    |      ------
            |    |----->| P3 |---->????
            ------      ------

If Ca calls someone at P1 which forks the call to P2 and P3 how
should P1 behave in the following cases if it has the policy to 
fork the best response.

If P2 (or someone behind P2) have the policy to fork all responses 
it means that P1 can get several final responses. Which of these
reponses should be used in the best choice by P1 ? 
Only the first one that happens to arrive ?
Everyone that arrives before you get a response from P3 ?

What should be done with the rest of the responses that might drop
in after you have sent your best response back ? 

You could actually have received an ACK back from Ca when another 
response drops in from P2. What to do in this case ?

Is it allowed for P1 to terminate "extra" responses that drops
in instead of forwarding them ?

I becomes quite complicated in P1 if it e.g. controls a firewall.
Suddenly a response arrives for a new CALL-LEG (the TO tag differs)
which has no corresponding Request (the original request belongs 
to another CALL-LEG). This new response have to set up a path in 
the firewall so that Ca gets RTP addresses for this specific 
response. It can probably be done but you have to be careful so 
you don't open up holes in the firewall when you shouldn't.
If would be much simplier if P1 could terminate any extra 
responses that might drop in.

-- 
Bertil Engelholm
AXE Research and Development        voice : +46 8 727 3499
SIP Security                        Fax   : +46 8 647 8276
S-126 25 Stockholm Sweden           E-mail:
[email-masked]

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

---

From: Jonathan Rosenberg <[email-masked]>
Date: Mon, 23 Oct 2000 13:43:21 -0400

> -----Original Message-----
> From: Bertil Engelholm [mailto:[email-masked]]
> Sent: Monday, October 23, 2000 12:20 PM
> To: [email-masked]
> Subject: [SIP] multiple responses ??
> 
> 
> Hi,
> 

Forward all simply does not work.

A proxy can forward one or more 200 responses (and indeed, really must
forward all of them), since those are ACKed end to end. Non-200s are ACKed
hop by hop. A proxy or client receiving multiple non-200 responses to the
same request will have no way to distinguish them, and the state machines
currently defined would not work.

> be decided by the UA e.g. by setting a special header ? 

Caller preferences addresses some simple cases where a UAC can request
specific service from proxies. But, since forward-all-responses doesn't
work, having a caller prefs value for it doesn't seem that useful.

> best response. Why should each server take this decision ?

We did it this way (forwarding only the best response) so that it would
scale and work in a reasonable fashion.  

> it means that P1 can get several final responses. 

Only multiple 200.

> Which of these

Beyond 200s, picking which is the best of the non-200 responses is defined
by the spec (600, then 300, then 400, then 500 in that order). However, a
proxy could choose an alternate definition of best amongst the non-200 final
responses it gets, since there are no interoperability issues which choosing
an alternate algorithm.

> in after you have sent your best response back ? 

There should only ever be 200s, which are forwarded upstream. Anything else
would be an error.

> response drops in from P2. What to do in this case ?

Won't happen under correct operating conditions.

-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