[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Sipping] New I-D: A solution for the HERFP caused by forked SIP INVITE requests



Hi Cuda,
 
Thank you for your extensive comments. Let me try to respond to them, please see inline below
 
Best regards,
 
Jeroen
Hi, Jeroen and all,
I think that option (1) won't work because according to RFC3261:12.2.2 the UAS most
probably will respond 481. Personally, I don't like neither option (2): it
adds an artificial delay, it is not safe (T4 is actually >= 5s), and may
not work with many implementations (I'm thinking of challenge-response
transactions, many UAS may expect the CSeq to increase when receiving the
authenticated request). I'm not saying it contraddicts some RFC, but it
behaves "strange" from the UAS' perspective.
The other options I see are:
+ Issuing a re-INVITE, using the Record-Route headers learned in the FIX
  request. This looks like Rohan's solution, and probably ihnerits the
  best from the two;
 
The reason why things got complicated, is that I originally felt that the modified INVITE should have the same CSeq number such that any proxies in the path between the UAC and the HERFP proxy (and the UAC itself) would not see strange responses with wrong CSeq headers. However, I now think that perhaps it isn't such a big deal if that happens, since CSeq in responses is rarely touched (perhaps used to match response to its request, but the transaction also does that and if the UAC knows what's happening it can accomodate). In that case simply incrementing the CSeq for the modified INVITE would solve this issue.
 
Regarding sending a FIX with an INVITE as body versus sending a new INVITE: It seemed appropriate to me to send something else than an INVITE, since it's not a new call attempt but a tweak to an existing one. However, that can also be said e.g. for an INVITE after a challenge. Another reason why INVITE could be more convenient, is in case of a proxy that is performing identity services. A modified INVITE could be passed to the same proxy as the original INVITE, a FIX with an INVITE body would complicate the identity service at the proxy (as it must then understand FIX and pick it from the body first). Downside of INVITE would be a spurious ACK from the UAC to the proxy, but since it would only be needed in case user interaction is used (or identity service is required) this could be acceptable.
 

+ Making the proxy change the From-Tag and behave as a B2BUA.
 
Downside of that would be that it would have to stay in the loop and tweak each request that comes by

Apart from that, I've some other comments on the draft:
+ I think the UAS too should be able to indicate whether an error code
  is reparaible or not, by using some header (e.g. HERFP-Disposition):
     - It is useful for error codes the proxy is not aware of (the UAS
       is the one that knows its meaning for sure);
     - It may contain some policy the UAS would like to apply;
     - It is needed in case two HERFP-aware proxies are in the signalling
       path: the downstream proxy needs to ask the upstream proxy not
       to treat the error response it is sending as a repairable error;
     - It can be used by UAS HERFP-aware to tell the proxy they don't mind
       receiving two requests that look like they are merged, so the
       proxy does not need to apply the workaround for the issue you
       outlined;
 
Interesting idea, but if the UAS would apply this it would be aware of this HERFP solution, right? So it could issue a FIX itself rather than hope that a proxy along the path understands its policy and the HERFP-Disposition header. Regarding the 3rd point, the current intention is to never let the HERFP proxy send a repairable error, to avoid duplicate FIXes. I'll make this explicit in the text

+ I'd prefer the proxy generated FIX method to have a different name
  from the one generated by the UAS: it is a possible source of confusion
  for intermediate elements, endpoints (in case they behave as UAS and
  proxies) and human beings;
 
I would say that since semantically it does the same thing (notify the UAC of a repairable response), a different name would be confusing. I thought about some other means to make the distinction (perhaps some header, or UAS always with to-tag and proxy not) but then again: who needs to know?
 
A FIX sent by the UAC is slightly different (notify the proxy/UAS of a modification to the original INVITE), so perhaps that should be called differently (or be replaced with an INVITE, see above). On the other hand, we already have so many SIP method names...
 
Other people have an opinion on this?

+ It is not clear how the best response selection algorithm will be
  affected: from paragraph 4.1 it looks like an HERFP proxy always
  responds 408. This might break service logics on upstream proxies:
  I think the best reponse sent should be the best response received
  excluding those that were accepted by the UAC. Note also that
  when sending that response back, the HERFP-Disposition header
  should be set accordingly;
 
The intention was to always send 408 instead of the repairable response that was received, if there is no better alternative. So the proxy does not always respond with a 408. This avoids the proxy sending back a repairable response, hence (at least for this issue) the disposition is not nescessary. Perhaps some other code would be better, to distinguish a "repairable response that was not fixed" from a real timeout. It would still need to be declared "not repairable"; how about "410 Unfixed Response" (maybe even with all content of the response that was received, and a Reason with the original code) ? 

+ It is not clear how the authentication described in paragraph 5 should
  work: it is very unlikely the proxy and the UAC know each other;
 
You're right, it should be done only in case they do know each other (or at least the proxy knows the UAC)

+ I find rather confusing the construction of the two FIX requests:
  they are not in session nor out of session. In particular, if the
  FIX request sent by the UAC is in session, a provisional response
  should be sent be the proxy beforehand. The FIX request sent
  by the proxy should probably be described by splitting the proxy
  into a [proxy] and an [UA]. The [proxy] does not record-route and
  send the request to the [UA], which constructs the request using
  the procedures described un RFC3261 and its possible updates;
 
 
I agree that it's confusing, things occur before a session has been setup so "not in session nor out of session" is correct. I would say "the requests are in the context of a call attempt".
A FIX sent by a UAC would only be in session (have a to-tag) when the repairable response contained one. This would happen when the UAS sent a provisional response with a to-tag, before sending a repairable response. The text now says that the UAS should generate a to-tag if not already existing, but that may not be a good idea.
 
The proxy sending the FIX is acting as a UAC. The route-set construction is actually copied from RFC3261 section 12.2.1.1, replacing "UAC" with "UAC/UAS/proxy", it's like a dialog is being constructed for one-time usage.

+ You should point out which headers MUST be present in the sipfrag
  body sent in the FIX request sent by the proxy. I think all the
  headers describing options supported by the UAS must be present
  (I mean Allow, Allow-Events, Supported and the like). This allows
  to repair in alternative ways (for instance 486 with Allow-Events
  set to dialog can be repaired by subscribing to the UAS).
 
 
The draft currently says "everything minus the Via headers, but with the one the UAC added (so it can match the response with an INVITE client transaction)"; I think that would allow your scenario of alternative repair?
 
Perhaps the MIME type should be message/sip instead of message/sipfrag, what do you think?

     Cheers.
        Alberto.
 
         

________________________________

From: sipping-bounces at ietf.org on behalf of Jeroen van Bemmel
Sent: Fri 9/2/2005 8:14 PM
To: sipping
Subject: Re: [Sipping] New I-D: A solution for the HERFP caused by forkedSIPINVITE requests


To start off:
 
For an unreliable transport the INVITE server transaction at the UAS remains in the CONFIRMED state for T4 (default : 5sec) after receiving an ACK. If the modified INVITE arrives within that time, according to section 8.2.2.2 the UAS will see it as a looping request (since it will have the same CSeq, from-tag and Call-ID)
 
What would be the least painful workaround?
1. Have the UAC or proxy select a to-tag, such that 8.2.2.2 processing is skipped
2. Have the proxy delay if less than 5sec has passed since the ACK was sent
3. Other options?
 
(all only in case an unreliable transport is used)
 
Regards,
 
Jeroen

----- Original Message -----
From: Jeroen van Bemmel <mailto:jbemmel at zonnet.nl
To: sipping <mailto:sipping at ietf.org
Sent: Friday, September 02, 2005 7:36 PM
Subject: [Sipping] New I-D: A solution for the HERFP caused by forked SIPINVITE requests

All,

I have submitted a new Internet Draft regarding HERFP to the IETF. While it is being processed, a copy of the document can be found here to start discussions: http://home.versatel.nl/jbemmel/draft-jbemmel-herfp-solution-00.txt

Best regards,

Jeroen van Bemmel


________________________________




_______________________________________________
Sipping mailing list  https://www1.ietf.org/mailman/listinfo/sipping
This list is for NEW development of the application of SIP
Use sip-implementors at cs.columbia.edu for questions on current sip
Use sip at ietf.org for new developments of core SIP



Gruppo Telecom Italia - Direzione e coordinamento di Telecom Italia S.p.A.

====================================================================
CONFIDENTIALITY NOTICE
This message and its attachments are addressed solely to the persons
above and may contain confidential information. If you have received
the message in error, be informed that any use of the content hereof
is prohibited. Please return it immediately to the sender and delete
the message. Should you have any questions, please send an e_mail to
MailAdmin at tilab.com. Thank you
====================================================================
_______________________________________________
Sipping mailing list  https://www1.ietf.org/mailman/listinfo/sipping
This list is for NEW development of the application of SIP
Use sip-implementors at cs.columbia.edu for questions on current sip
Use sip at ietf.org for new developments of core SIP