SIP                                                         J. Rosenberg
Internet-Draft                                                     Cisco
Intended status: Standards Track                       November 10, 2007
Expires: May 13, 2008


   A Session Initiation Protocol (SIP) Response Code for Interactive
               Connectivity Establishment (ICE) Failures
                 draft-rosenberg-sip-ice-error-code-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 May 13, 2008.

Copyright Notice

   Copyright (C) The IETF Trust (2007).

Abstract

   Interactive Connectivity Establishment (ICE) defines an extension to
   the offer/answer model used by the Session Initiation Protocol (SIP).
   This extension allows endpoints to traverse firewalls and NATs.
   However, in cases where highly restrictive firewalls exist, or where
   network failures have occurred, ICE may not be able to successfully
   find a media path.  This document provides an error response code
   that can be used with SIP in these cases.



Rosenberg                 Expires May 13, 2008                  [Page 1]

Internet-Draft               ICE Error Code                November 2007


Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . . . 3
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . 4
   3.  UAC Behavior  . . . . . . . . . . . . . . . . . . . . . . . . . 4
   4.  UAS Behavior  . . . . . . . . . . . . . . . . . . . . . . . . . 4
   5.  Proxy Behavior  . . . . . . . . . . . . . . . . . . . . . . . . 5
   6.  562 (Connectivity Checks Failed) Response Code  . . . . . . . . 5
   7.  Security Considerations . . . . . . . . . . . . . . . . . . . . 5
     7.1.  Outside Attacks . . . . . . . . . . . . . . . . . . . . . . 5
     7.2.  Insider Attacks . . . . . . . . . . . . . . . . . . . . . . 5
   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 6
   9.  References  . . . . . . . . . . . . . . . . . . . . . . . . . . 6
     9.1.  Normative References  . . . . . . . . . . . . . . . . . . . 6
     9.2.  Informative References  . . . . . . . . . . . . . . . . . . 7
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . . . 7
   Intellectual Property and Copyright Statements  . . . . . . . . . . 8


































Rosenberg                 Expires May 13, 2008                  [Page 2]

Internet-Draft               ICE Error Code                November 2007


1.  Introduction

   Interactive Connectivity Establishment (ICE) [I-D.ietf-mmusic-ice]
   defines an extension to the offer/answer model [RFC3264] used by the
   Session Initiation Protocol (SIP) [RFC3261].  This extension allows
   endpoints to traverse firewalls and NATs.  ICE functions by having
   each endpoint include a set of candidate IP addresses and ports in
   their Session Description Protocol (SDP) [RFC4566] messages.  Once
   the candidates have been exchanged in the offer/answer procedures,
   each endpoint begins a set of connectivity checks.  These
   connectivity checks are end-to-end "pings" utilizing the Session
   Traversal Utilities for NAT (STUN) Protocol
   [I-D.ietf-behave-rfc3489bis].

   Once connectivity checks succeed, the associated candidates can be
   used for the exchange of media.  Very frequently, a particular
   connectivity check will fail (usually through timeout).  This happens
   when the candidate is not reachable by the peer (as is the case with
   private addresses), or a NAT or firewall prevents the peer from
   reaching the candidate.  In such cases, lower priority connectivity
   checks, typically through a relay server, will succeed, allowing
   media to flow.

   However, in even more severe environments, none of the connectivity
   checks will succeed.  Some of the cases where this can happen
   include:

   o  One of the users is behind a firewall that blocks all UDP traffic,
      and the users are not utilizing the ICE extensions for TCP
      [I-D.ietf-mmusic-ice-tcp] which would allow the RTP traffic to
      flow over TCP.

   o  There is a firewall that is allowing UDP, but only to specific IP
      addresses or ports (such as DNS), and the media ports are not
      open.  In addition, ICE-tcp is not being utilized.

   o  There has been a network failure, such that each party can reach
      the SIP server, but there is no IP path directly between the
      endpoints.

   o  There is severe network congestion, resulting in high packet loss
      through the duration of the connectivity checks.  Consequently,
      all of the STUN requests or responses were dropped, and all checks
      timed out.

   In such cases, ICE recommends that the controlling agent terminates
   the session.  This can be done by sending a BYE, CANCELing the
   session, or rejecting it with any error response code.



Rosenberg                 Expires May 13, 2008                  [Page 3]

Internet-Draft               ICE Error Code                November 2007


   However, it is extremely useful for diagnostic purposes to be able to
   know that the reason for the termination of the session was that ICE
   failed.  SIP providers could use this information to track overall
   ICE effectiveness, and to perform off-line diagnostics for those
   cases to determine why ICE did not succeed.  Endpoints could use this
   information to inform the user that the call failed due to network
   error conditions, which would allow the user to retry later, open a
   customer support case, or other appropriate action.

   To meet this need, this specification defines a new SIP error
   response code, 562 (Connectivity Checks Failed).  This can be used in
   SIP responses or within the Reason header field [RFC3326] of CANCEL
   or BYE requests, depending on when in the dialog the ICE checks fail.


2.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].


3.  UAC Behavior

   If the User Agent Client (UAC) is acting as the controlling agent in
   an ICE session, and according to the rules in Section 8.1.2 of
   [I-D.ietf-mmusic-ice], the state of all check lists is Failed, the
   agent is supposed to terminate the session.  If the state of the SIP
   dialog is early, the agent SHOULD send a CANCEL request, and it
   SHOULD include a Reason header field with the protocol of "SIP" and a
   cause of 562.  If the state of the SIP dialog is confirmed, the UAC
   SHOULD send a BYE request, and it SHOULD include a Reason header
   field with the protocol of "SIP" and a cause of 562.

   If the UAC receives a response to its initial INVITE with a response
   code of 562 (Connectivity Checks Failed), it MAY inform the user that
   the session has failed due to IP network connectivity problems.
   Beyond that, the 562 response code is treated like a 500 response.
   The UAC can retry its request at a later time.


4.  UAS Behavior

   If the User Agent Server (UAS) is acting as the controlling agent in
   an ICE session, and according to the rules in Section 8.1.2 of
   [I-D.ietf-mmusic-ice], the state of all check lists is Failed, the
   agent is supposed to terminate the session.  If the state of the SIP
   dialog is early, the agent SHOULD send a 562 (Connectivity Checks



Rosenberg                 Expires May 13, 2008                  [Page 4]

Internet-Draft               ICE Error Code                November 2007


   Failed) response to the outstanding INVITE request that initiated the
   session.  It SHOULD NOT include a Retry-After header field in the
   response.  There is not normally any way for a UAS to know when a
   future attempt might succeed.


5.  Proxy Behavior

   A proxy receiving a 562 (Connectivity Checks Failed) response code to
   an initial INVITE request MAY retry the request on an alternate
   destination.  However, it is RECOMMENDED that it do this only if it
   has knowledge or reason to believe that the alternate destination is
   more likely to successfully complete a connectivity check with the
   UAC.  Deployers should also keep in mind that the 562 will only be
   sent after all of the checks have failed, and thus will arrive some
   time after the original INVITE.  There will seldom be time to try
   several or even one additional alternate destinations before the
   originating caller gives up.

   It is RECOMMENDED that proxies which support logging and diagnostic
   facilities make note of the 562 code in responses and in the Reason
   header field of CANCEL and BYE requests, and log them for purposes of
   debugging and tracking the results of ICE deployments.


6.  562 (Connectivity Checks Failed) Response Code

   This response indicates that the INVITE request could not be
   completed because connectivity checks utilizing ICE failed for the
   session.  Its default reason phrase is (Connectivity Checks Failed).


7.  Security Considerations

7.1.  Outside Attacks

   A Man-in-the-middle could send this response code to prematurely
   terminate a session before checks complete.  However, a new response
   code is not required for that; an attacker could use an existing
   response code.  Since, functionally, this response code results in
   the same behavior in a UAC, UAS and proxy as any other 5xx response
   code, the 562 response code does not introduce any new considerations
   for outsider attacks.

7.2.  Insider Attacks

   A malicious user controlling a UA could send 562 error responses
   prematurely, before ICE actually completes.  This would cause the



Rosenberg                 Expires May 13, 2008                  [Page 5]

Internet-Draft               ICE Error Code                November 2007


   session to fail, but that would affect only the attacker.  However,
   if the SIP provider is utilizing the 562 error code to track
   deployments of ICE, an attacker could skew the results of the log
   analysis.  In a large scale deployment, the attacker would need to
   compromise a large number of endpoints in order to be able to skew
   statistics.  However, if the provider initiates diagnostic procedures
   (such as investigation by IT personnel) when logs show a 562, the
   attacker would cause the provider to expend human resources tracking
   down non-existent problems.  This is similar to a human sending
   emails to tech support reporting non-existing bugs.

   These attacks cannot be prevented by any cryptographic means.
   Rather, providers should track the relative frequency of 562 codes
   from specific users of the system, and consider them as part of the
   fraud systems typically in place within provider networks.  Unusually
   high occurrence of 562 codes, especially when investigations
   indicated no reason for the ICE failures, should be considered
   suspect.  However, frequency of 562 responses alone is not sufficient
   cause for fraud; a user may be behind a highly restrictive NAT and
   therefore all or most of their calls may actually be failing.


8.  IANA Considerations

   This section registers a new SIP response code according to the
   procedures of RFC 3261.

   RFC Number:  RFC XXXX [[NOTE TO IANA: Please replace XXXX with the
      RFC number of this specification]]

   Response Code Number:  562

   Default Reason Phrase:  Connectivity Checks Failed


9.  References

9.1.  Normative References

   [RFC3261]  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.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [I-D.ietf-mmusic-ice]



Rosenberg                 Expires May 13, 2008                  [Page 6]

Internet-Draft               ICE Error Code                November 2007


              Rosenberg, J., "Interactive Connectivity Establishment
              (ICE): A Protocol for Network Address  Translator (NAT)
              Traversal for Offer/Answer Protocols",
              draft-ietf-mmusic-ice-17 (work in progress), July 2007.

   [RFC3264]  Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
              with Session Description Protocol (SDP)", RFC 3264,
              June 2002.

   [RFC4566]  Handley, M., Jacobson, V., and C. Perkins, "SDP: Session
              Description Protocol", RFC 4566, July 2006.

   [I-D.ietf-behave-rfc3489bis]
              Rosenberg, J., Huitema, C., Mahy, R., Matthews, P., and D.
              Wing, "Session Traversal Utilities for (NAT) (STUN)",
              draft-ietf-behave-rfc3489bis-08 (work in progress),
              July 2007.

   [RFC3326]  Schulzrinne, H., Oran, D., and G. Camarillo, "The Reason
              Header Field for the Session Initiation Protocol (SIP)",
              RFC 3326, December 2002.

9.2.  Informative References

   [I-D.ietf-mmusic-ice-tcp]
              Rosenberg, J., "TCP Candidates with Interactive
              Connectivity Establishment (ICE",
              draft-ietf-mmusic-ice-tcp-04 (work in progress),
              July 2007.


Author's Address

   Jonathan Rosenberg
   Cisco
   Edison, NJ
   US

   Phone: +1 973 952-5000
   Email: jdrosen@cisco.com
   URI:   http://www.jdrosen.net










Rosenberg                 Expires May 13, 2008                  [Page 7]

Internet-Draft               ICE Error Code                November 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).





Rosenberg                 Expires May 13, 2008                  [Page 8]