summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc7332.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc7332.txt')
-rw-r--r--doc/rfc/rfc7332.txt283
1 files changed, 283 insertions, 0 deletions
diff --git a/doc/rfc/rfc7332.txt b/doc/rfc/rfc7332.txt
new file mode 100644
index 0000000..8dc4137
--- /dev/null
+++ b/doc/rfc/rfc7332.txt
@@ -0,0 +1,283 @@
+
+
+
+
+
+
+Internet Engineering Task Force (IETF) H. Kaplan
+Request for Comments: 7332 Oracle
+Category: Standards Track V. Pascual
+ISSN: 2070-1721 Quobis
+ August 2014
+
+
+ Loop Detection Mechanisms for Session Initiation Protocol (SIP)
+ Back-to-Back User Agents (B2BUAs)
+
+Abstract
+
+ SIP Back-to-Back User Agents (B2BUAs) can cause unending SIP request
+ routing loops because, as User Agent Clients, they can generate SIP
+ requests with new Max-Forwards values. This document discusses the
+ difficulties associated with loop detection for B2BUAs and the
+ requirements for them to prevent infinite loops.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 5741.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ http://www.rfc-editor.org/info/rfc7332.
+
+Copyright Notice
+
+ Copyright (c) 2014 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (http://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.
+
+
+
+
+
+Kaplan & Pascual Standards Track [Page 1]
+
+RFC 7332 Loop Detection for B2BUAs August 2014
+
+
+Table of Contents
+
+ 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
+ 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 2
+ 3. Background . . . . . . . . . . . . . . . . . . . . . . . . . 3
+ 4. B2BUA Loop-Detection Behavior . . . . . . . . . . . . . . . . 3
+ 5. B2BUA Max-Forwards Behavior . . . . . . . . . . . . . . . . . 4
+ 6. B2BUA Max-Breadth Behavior . . . . . . . . . . . . . . . . . 4
+ 7. Security Considerations . . . . . . . . . . . . . . . . . . . 4
+ 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 5
+ 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 5
+
+1. Introduction
+
+ SIP provides a means of preventing infinite request forwarding loops
+ in [RFC3261], and a means of mitigating parallel forking
+ amplification floods in [RFC5393]. Neither document normatively
+ defines specific behavior for B2BUAs, however.
+
+ Unbounded SIP request loops have actually occurred in SIP deployments
+ numerous times. The cause of loops is usually misconfiguration, but
+ the reason they have been unbounded/unending is they crossed B2BUAs
+ that reset the Max-Forwards value in the SIP requests they generated
+ on their User Agent Client (UAC) side. Although such behavior is
+ technically legal per [RFC3261] because a B2BUA is a UAC, the
+ resulting unbounded loops have caused service outages and make
+ troubleshooting difficult.
+
+ Furthermore, [RFC5393] also provides a mechanism to mitigate the
+ impact of parallel forking amplification issues, through the use of a
+ "Max-Breadth" header field. If a B2BUA does not pass this header
+ field on, parallel forking amplification is not mitigated with the
+ [RFC5393] mechanism.
+
+ This document defines normative requirements for Max-Forwards and
+ Max-Breadth header field behaviors of B2BUAs, in order to mitigate
+ the effect of loops and parallel forking amplification.
+
+2. Conventions
+
+ 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 BCP 14, RFC 2119
+ [RFC2119].
+
+ B2BUA terminology and taxonomy used in this document is based on
+ [RFC7092].
+
+
+
+
+Kaplan & Pascual Standards Track [Page 2]
+
+RFC 7332 Loop Detection for B2BUAs August 2014
+
+
+3. Background
+
+ Within the context of B2BUAs, the scope of the SIP protocol ends at
+ the User Agent Server (UAS) side of the B2BUA, and a new one begins
+ on the UAC side. A B2BUA is thus capable of choosing what it wishes
+ to do on its UAC side independently of its UAS side, and still
+ remains compliant with [RFC3261] and its extensions. For example,
+ any B2BUA type defined in [RFC7092] other than Proxy-B2BUA may create
+ the SIP request on its UAC side without copying any of the Via header
+ field values received on its UAS side. Indeed there are valid
+ reasons for it to do so; however, this prevents the Via-based loop-
+ detection mechanism defined in [RFC3261] and updated by [RFC5393]
+ from detecting SIP request loops any earlier than by reaching a Max-
+ Forwards limit.
+
+ Some attempts have been made by B2BUA vendors to detect request loops
+ in other ways: by keeping track of the number of outstanding dialog-
+ forming requests for a given caller/called URI pair; or by detecting
+ when they receive and send their own media addressing information too
+ many times in certain cases when they are a signaling/media-plane
+ B2BUA; or by encoding a request instance identifier in some field
+ they believe will pass through other nodes, and detecting when they
+ see the same value too many times.
+
+ All of these methods are brittle and prone to error, however. They
+ are brittle because it is very hard to accurately define when a value
+ has been seen "too many times". Requests can and do fork before and
+ after B2BUAs process them, and requests legitimately spiral in some
+ cases, leading to incorrect determination of loops. The mechanisms
+ are prone to error because there can be other B2BUAs in the loop's
+ path that interfere with the particular mechanism being used.
+
+ Ultimately, the last defense against loops becoming unbounded is to
+ limit how many SIP hops any request can traverse, which is the
+ purpose of the SIP Max-Forwards field value. If B2BUAs were to at
+ least copy and decrement the Max-Forwards header field value from
+ their UAS to the UAC side, loops would not continue indefinitely.
+
+4. B2BUA Loop-Detection Behavior
+
+ It is RECOMMENDED that B2BUAs implement the loop-detection mechanism
+ for the Via header field, as defined for a proxy in [RFC5393].
+
+
+
+
+
+
+
+
+
+Kaplan & Pascual Standards Track [Page 3]
+
+RFC 7332 Loop Detection for B2BUAs August 2014
+
+
+5. B2BUA Max-Forwards Behavior
+
+ This section applies for dialog-forming and out-of-dialog SIP
+ requests. B2BUAs MAY perform the same actions for in-dialog
+ requests, but doing so may cause issues with devices that set Max-
+ Forwards values based upon the number of received Via or Record-Route
+ headers.
+
+ All B2BUA types MUST copy the received Max-Forwards header field from
+ the received SIP request on their UAS side, to any request(s) they
+ generate on their UAC side, and decrement the value, as if they were
+ a proxy following the requirements described in [RFC3261].
+
+ Being a UAS, B2BUAs MUST also check the received Max-Forwards header
+ field and reject or respond to the request if the value is zero, as
+ defined in [RFC3261].
+
+ If the received request did not contain a Max-Forwards header field,
+ one MUST be created in any request generated in the UAC side, as
+ described for proxies in Section 16.6, Step 3 of [RFC3261]. As in
+ that specification, the value of the new Max-Forwards header SHOULD
+ be 70.
+
+6. B2BUA Max-Breadth Behavior
+
+ All B2BUA types MUST copy the received Max-Breadth header field from
+ the received SIP request on their UAS side, to any request(s) they
+ generate on their UAC side, as if they were a proxy following the
+ requirements described in [RFC5393].
+
+ B2BUAs of all types MUST follow the requirements imposed on Proxies
+ as described in Section 5.3.3 of [RFC5393], including generating the
+ header field if none is received, limiting its maximum value, etc.
+
+ B2BUAs that generate parallel requests on their UAC side for a single
+ incoming request on the UAS side MUST also follow the rules for Max-
+ Breadth handling in [RFC5393] as if they were a parallel forking
+ proxy.
+
+7. Security Considerations
+
+ The security implications for parallel forking amplification are
+ documented in Section 7 of [RFC5393]. This document does not
+ introduce any additional issues beyond those discussed in [RFC5393].
+
+ Some B2BUAs reset the Max-Forwards and Max-Breadth header field
+ values in order to obfuscate the number of hops a request has already
+ traversed, as a privacy or security concern. Such goals are at odds
+
+
+
+Kaplan & Pascual Standards Track [Page 4]
+
+RFC 7332 Loop Detection for B2BUAs August 2014
+
+
+ with the mechanisms in this document, and administrators can decide
+ which they consider more important: obfuscation vs. loop detection.
+ In order to comply with this RFC, manufacturers MUST comply with the
+ normative rules defined herein by default, but MAY provide user-
+ configurable overrides as they see fit.
+
+8. Acknowledgments
+
+ Thanks to Brett Tate (Broadsoft), Andrew Hutton (Unify), and Anton
+ Roman (Quobis) for their review of the document.
+
+9. References
+
+9.1. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [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.
+
+ [RFC5393] Sparks, R., Lawrence, S., Hawrylyshen, A., and B. Campen,
+ "Addressing an Amplification Vulnerability in Session
+ Initiation Protocol (SIP) Forking Proxies", RFC 5393,
+ December 2008.
+
+9.2. Informative References
+
+ [RFC7092] Kaplan, H. and V. Pascual, "A Taxonomy of Session
+ Initiation Protocol (SIP) Back-to-Back User Agents", RFC
+ 7092, December 2013.
+
+Authors' Addresses
+
+ Hadriel Kaplan
+ Oracle
+
+ EMail: hadrielk@yahoo.com
+
+
+ Victor Pascual
+ Quobis
+
+ EMail: victor.pascual@quobis.com
+
+
+
+
+
+Kaplan & Pascual Standards Track [Page 5]
+