SIP                                                            D. Worley
Internet-Draft                                                   Pingtel
Expires: August 27, 2007                               February 23, 2007


    6xx-Class Responses Considered Harmful in the Session Initiation
                             Protocol (SIP)
                 draft-worley-6xx-considered-harmful-00

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on August 27, 2007.

Copyright Notice

   Copyright (C) The IETF Trust (2007).














Worley                   Expires August 27, 2007                [Page 1]


Internet-Draft           6xx Considered Harmful            February 2007


Abstract

   The specification of the Session Initiation Protocol (SIP) permits a
   user agent (UA) that receives a call to generate a response in the
   "6xx class" that not only rejects the call but also requires the
   termination of all attempts to route the call to alternative
   destinations.  As the call may have reached the UA through multiple
   forwardings whose meanings cannot be known by the UA, the global
   termination of alternative routing can only rarely be correctly
   requested by the UA.  Because such responses are almost never
   appropriate, ability of a UA to generate such responses is harmful,
   and all 6xx class responses should be replaced with 4xx class
   responses with similar meanings.  However, there is no 4xx class
   response similar to "603 Decline", and so one needs to be created.


Table of Contents

   1.  Statement of the Problem . . . . . . . . . . . . . . . . . . .  3
   2.  Typical Failure Cases  . . . . . . . . . . . . . . . . . . . .  5
     2.1.  Call Rejection . . . . . . . . . . . . . . . . . . . . . .  5
     2.2.  Do Not Disturb . . . . . . . . . . . . . . . . . . . . . .  5
     2.3.  Ringing Groups . . . . . . . . . . . . . . . . . . . . . .  5
   3.  Steps to Be Taken  . . . . . . . . . . . . . . . . . . . . . .  6
   4.  Possible Useful Semantics for 6xx Class Responses  . . . . . .  7
   5.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . .  8
   6.  Security Considerations  . . . . . . . . . . . . . . . . . . .  9
   7.  Normative References . . . . . . . . . . . . . . . . . . . . . 10
   Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 11
   Intellectual Property and Copyright Statements . . . . . . . . . . 12





















Worley                   Expires August 27, 2007                [Page 2]


Internet-Draft           6xx Considered Harmful            February 2007


1.  Statement of the Problem

   The specification of the Session Initiation Protocol (SIP) [1]
   permits a user agent (UA) that receives a call (that is, receives an
   out-of-dialog INVITE) to generate a response in the "6xx class".  A
   response of this type not only only rejects the call but also
   requires the termination of all attempts to route the call to
   alternative destinations, due to the rules of section 16.7 items 5
   and 6 of [1]: When a proxy receives a 6xx class response, it must
   cancel all other forks of the transaction and forward the 6xx class
   response upstream.  As the 6xx class response proceeds back to the
   UAC, all other forks of the call are canceled.

   (Note that the consequences of a 6xx class response are rigidly
   defined by section 16.7, and do not always match the description of
   secton 21.6 of [1]:

      21.6 Global Failures 6xx

      6xx responses indicate that a server has definitive information
      about a particular user, not just the particular instance
      indicated in the Request-URI.

   6xx responses give definitive instructions regarding all destinations
   of a call, not just those pertaining to a particular user.)

   However, the call may have reached the UA through multiple
   forwardings whose meanings cannot be known by the UA, and can only
   sometimes be known by the user (if the user recognizes the "To"
   header URI and has positive knowledge of all forks of its routing).
   Nonetheless, the 6xx class response from one destination UA prevents
   the SIP network from attempting to deliver the call to any other UA.
   As a result, there is a serious risk that the specified effect of the
   6xx class response is an incorrect implementation of the desires of
   the users involved, as the caller may be willing to accept
   communication with the user at an alternative fork, and the callee
   who gave the 6xx class response may not wish to prevent contact with
   the alternative user (or may not have authority to forbid it).

   The best immediate solution of this problem is for UAs to not
   generate 6xx class responses under any circumstances, but instead
   generate 4xx class responses with similar meanings. 4xx class
   responses only cause termination of the fork of the request which
   reached the UA and permit alternative forks to proceed, thus
   eliminating this problem.

   There are four defined 6xx class responses, of which three have
   reasonable 4xx class equivalents:



Worley                   Expires August 27, 2007                [Page 3]


Internet-Draft           6xx Considered Harmful            February 2007


      600 Busy Everywhere - can be replaced by 486 Busy Here

      603 Decline - no 4xx class equivalent

      604 Does Not Exist Anywhere - 410 Gone has a very similar
      definition (these responses are part of the morass of overlapping
      "cannot reach resource" responses)

      606 Not Acceptable - can be replaced by 488 Not Acceptable Here

   Thus, to fully alleviate this problem requires defining a new 4xx
   class response meaning "Decline Here" (with the tentative proposed
   response code 441):

      441 Decline

      The callee's machine was successfully contacted but the user
      explicitly does not wish to or cannot participate.  The response
      MAY indicate a better time to call in the Retry-After header
      field.































Worley                   Expires August 27, 2007                [Page 4]


Internet-Draft           6xx Considered Harmful            February 2007


2.  Typical Failure Cases

2.1.  Call Rejection

   SIP-based PBX systems often provide voicemail for users.  This is
   usually implemented by having each address-of-record (AOR) forward to
   two contact URIs: with higher priority, the URI of the user's phone,
   and with lower priority, a voicemail service.  An incoming call will
   be routed by the domain's proxy first to the user's phone, and if
   that fork does not result in a successful call, it will then route
   the call to the voicemail system to allow the caller to record a
   message.

   A popular make of SIP hardware telephone provides a "Reject" function
   which defeats such routing to a voicemail system.  When a call
   arrives and the phone alerts the user, the user can press the
   "Reject" button to not answer the call and stop the alerting.
   Unfortunately, this function generates a 603 Decline response, which
   prevents the proxy from forwarding the call to the voicemail system.

   The ideal solution in this circumstance would be to generate a 441
   Decline Here response.

2.2.  Do Not Disturb

   The same phone as described in the previous section has a "Do Not
   Disturb" mode.  When the phone is in "Do Not Disturb" mode, incoming
   requests do not cause alerting of the user.  Instead, the call is
   immediately rejected.  Unfortunately, the call is rejected with a 603
   Decline response, which again has the problem that the call will not
   be routed to the user's voicemail service (if one is configured).

2.3.  Ringing Groups

   In many circumstances, it is convenient to configure SIP AORs that
   parallel fork to multiple UAs to allow more than one user the
   opportunity to answer the call.  In such cases, having one UA
   generate a 6xx class response to a call that was made to a group AOR
   is undesirable, as the user of the UA rarely has complete knowledge
   of what UAs have been contacted or the status of their users.











Worley                   Expires August 27, 2007                [Page 5]


Internet-Draft           6xx Considered Harmful            February 2007


3.  Steps to Be Taken

   1.  Define response code meaning "Decline Here" to be used as a
       replacement for "603 Decline (Everywhere)".

   2.  Deprecate 6xx class responses, and change proxy requirements to
       permit proxies to handle them similarly to 4xx class responses.

   3.  Convince user agent implementors to use 4xx class responses in
       preference to 6xx class responses.









































Worley                   Expires August 27, 2007                [Page 6]


Internet-Draft           6xx Considered Harmful            February 2007


4.  Possible Useful Semantics for 6xx Class Responses

   However, with suitable redefinition, 6xx class responses might be
   useful in some circumstances.  The circumstance is to use 6xx to
   signal that the call should not contact any other UA within some
   particular defined forking context containing the UA that generated
   the 6xx response.  The forking context would contain only UAs which
   the user has authority over.  This redefinition could bring the
   behavior of 6xx class responses into line with the meaning of section
   21.6 of [1].

   One possible example is the case described above, with the forking
   context being the user's phone and his voicemail server.  In such a
   case, the user has the authority to reject a call in a way that
   instructs the proxy to not attempt to forward the call to the
   voicemail server either.  (Although it is unlikely that this should
   be the default or standard way to reject a call.)

   Another example is within a defined ringing group, where any user
   within the ringing group has the authority to reject an incoming call
   on behalf of all members of the ringing group.  (Again, it is
   unlikely that this will be a common operation.)

   In any such case, the proxy whose forking defines the forking context
   would process a 6xx class response by: (1) canceling any other forks
   of the call that it has generated, (2) not generating any other forks
   for the call, but (3) forwarding a 4xx class response back toward the
   UAC.

   The difficulty with configuring a SIP network to provide this
   behavior is in ensuring that mis-configuration doesn't cause a 6xx
   class response to "escape", to be taken as authoritative over forks
   over which the user does not have authority.  It appears that the way
   to avoid this is to have all proxies by default treat 6xx class
   responses as 4xx responses, including translating them into 4xx
   responses for forwarding upstream.  But it would also be possible to
   configure a proxy treat a 6xx class response as it is currently
   defined (if the fork target is authoritative for the request-URI that
   is being expanded) and to forward the 6xx class response upstream (if
   the proxy believes that the fork target is authoritative for a larger
   enclosing context).










Worley                   Expires August 27, 2007                [Page 7]


Internet-Draft           6xx Considered Harmful            February 2007


5.  IANA Considerations

   This document proposes to register a new response code, namely 441
   (Decline Here).  The response code would be defined by the following
   information:

      Response Code Number: 441
      Default Reason Phrase: Decline Here











































Worley                   Expires August 27, 2007                [Page 8]


Internet-Draft           6xx Considered Harmful            February 2007


6.  Security Considerations

   Adoption of this change would improve the security of SIP.
   Currently, the UA or user at any one fork of a call can cause the
   termination of the call to all other forks, even if the user giving
   the 6xx class response has no authority over the other UAs or over
   the SIP URI whose routing forked to the other UAs.












































Worley                   Expires August 27, 2007                [Page 9]


Internet-Draft           6xx Considered Harmful            February 2007


7.  Normative References

   [1]  Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,
        Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP:
        Session Initiation Protocol", RFC 3261, June 2002.














































Worley                   Expires August 27, 2007               [Page 10]


Internet-Draft           6xx Considered Harmful            February 2007


Author's Address

   Dale R. Worley
   Pingtel Corp.
   400 West Cummings Park, Suite 2200
   Woburn, MA  01801
   US

   Phone: +1 781 938 5306 x173
   Email: dworley@pingtel.com
   URI:   http://www.pingtel.com








































Worley                   Expires August 27, 2007               [Page 11]


Internet-Draft           6xx Considered Harmful            February 2007


Full Copyright Statement

   Copyright (C) The IETF Trust (2007).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
   THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
   OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.


Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.


Acknowledgment

   Funding for the RFC Editor function is provided by the IETF
   Administrative Support Activity (IASA).





Worley                   Expires August 27, 2007               [Page 12]