Christer Holmberg wrote:

Hi,

Based on the discussions in Dublin, it was agreed to move forward with 199 based on the following assumptions:

- We will not define an option-tag for 199 support.

- We will remove any text talking about adding a sipfrag body into the 199 response (potential future usage of 199 e.g. to solve HERFP would define such procedures)

- A UAS IS allowed to send 199 (see more in the remaining open issues section further down).


Please let me know if you have strong objections to any of these.



OPEN ISSUES, which we need to solve are:

1) Is a proxy allowed to send 199 in the first place, or are only UASes allowed to do it?

2) Assuming proxies are allowed to send 199 (see issue 1), are proxies allowed to send 199 reliably? It would mean that they need to terminate the associated PRACK, which is claimed to not be normal proxy behavior.

3) Assuming proxies are allowed to send 199 (see issue 1), are proxies allowed to send 199 unreliably, even if 100rel is required?

Claims for:

- Since 199 is only an indciation, it can be seen as something similar to 100 Trying, which is never sent reliably - Proxies are not affected by the Require header, so even if the request contains 'Require: 100rel' it does not affect proxies

Claims against:

- It is not normal proxy behvior to trigger and send a non-100 response in the first place.

4) Is it a MAY/RECOMMENDATION/SHOULD/MUST for UAS to send 199?

IMO it is generally undesirable for the UAS to send the 199.

The whole point of the 199 is to serve as an optimization. In the absence of forking it is typically redundant, and will increase the amount of signaling in common cases, and so is counter productive. (My guess is that some large fraction, maybe more than half, of all calls are not answered by the intended target.)

It is typically a proxy, or another middle box such as a B2BUA, that is aware that forking is going on, and thus that there is state the UAC might want to know that won't otherwise be available to it. So I think the box that knows this should be the one to send the response.

I don't want to *ban* the UAS from sending the response, because it might be a middle box, and because even if it is the ultimate endpoint it *might* know the outcome of the call before it can finally send it.


Regarding *reliable* 199:

*If* the 199 is to be sent by a middle box, rather than by the UAS whose final response is being anticipated by the 199, then the main issue is what to-tag is to be used for the 199. The current proposal requires that the to-tag match that of the final response from the UAS. Things get very messy if the 199 is sent reliably under those conditions:

- the resulting PRACK will be sent in-dialog and thus will consume
  a CSeq value.

- the PRACK will need to be intercepted and handled by the middle box,
  rather than being allowed to follow its normal routing. (The UAS
  doesn't know the 199 was sent, and so won't expect a PRACK for it.)

- Potentially the middle box won't even be on the routing path for the
  PRACK, and so won't see it.

The bottom line for the above is that sending the 199 reliably using the to-tag of the UAS is a *terrible* ideal. A slightly less bad alternative would be to send the 199 with a to-tag belonging to the middle box sending it. But this just complicates things further:

- this new to-tag will create yet another early dialog.

- The 199 response will thus have to terminate both this new one,
  and the original one.

- There will have to be some new header to indicate which early dialog
  is to be terminated. (In addition to the one created by the to-tag
  of the 199 itself.)

So that seems like a bad idea too.

In any case, the 199 is just an optimization. The world will not end if it is not received. So an unreliable 199 seems to fit the bill just fine. So, I think the 199 should normally be sent unreliably. It could be sent reliably in those cases where it is being sent by the UAS possessing the to-tag of the dialog it pertains to. (Even when it *can* be sent reliably it is probably a bad idea to do so. It increases the required signaling, perhaps outweighing the value of this optimization.)

This does mean that some rules need to be relaxed so that it is permissible to send this unreliably even when Require:100rel has been specified by the UAC. (Perhaps what we ought to do in this regard is say that that reliable provisionals are only required when there is something essential in the message, such as an offer, answer, or target change.)

Perhaps instead of 199, this should be the 101 response, so that it appears closer to the 100 response that already gets special treatment.

        Thanks,
        Paul

Please give your opinions :)

Regards,

Christer







-



------------------------------------------------------------------------

_______________________________________________
Sip mailing list  https://www.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [EMAIL PROTECTED] for questions on current sip
Use [EMAIL PROTECTED] for new developments on the application of sip
_______________________________________________
Sip mailing list  https://www.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [EMAIL PROTECTED] for questions on current sip
Use [EMAIL PROTECTED] for new developments on the application of sip

Reply via email to