SIPCORE | O. Johansson |
Internet-Draft | Edvina AB |
Updates: RFC 3263 (if approved) | G. Salgueiro |
Intended status: Standards Track | Cisco Systems |
Expires: August 26, 2016 | V. Gurbani |
Bell Labs, Alcatel-Lucent | |
D. Worley, Ed. | |
Ariadne | |
February 23, 2016 |
Locating Session Initiation Protocol (SIP) Servers in a Dual-Stack IP Network
draft-ietf-sipcore-dns-dual-stack-04
RFC 3263 defines how a Session Initiation Protocol (SIP) implementation, given a SIP Uniform Resource Identifier (URI), should locate the next hop SIP server using Domain Name System (DNS) procedures. As SIP networks increasingly transition from IPv4-only to dual-stack, a quality user experience must be ensured for dual-stack SIP implementations. This document updates the DNS procedures described in RFC 3263 for dual-stack SIP implementations in preparation for forthcoming specifications for applying Happy Eyeballs to SIP.
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.
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."
This Internet-Draft will expire on August 26, 2016.
Copyright (c) 2016 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.
The Session Initiation Protocol (SIP, [RFC3261]) and the additional documents that extended it provide support for both IPv4 and IPv6. However, this support does not fully extend to the highly hybridized environments that are characteristic of the transitional migratory phase from IPv4 to IPv6 networks. During this phase, many server and client implementations run on dual-stack hosts. In such environments, a dual-stack host will likely suffer greater connection delay, and by extension an inferior user experience, than an IPv4-only host. The need to remedy this diminished performance of dual-stack hosts led to the development of the Happy Eyeballs [RFC6555] algorithm, which has since been implemented in many protocols and applications.
This document updates the DNS lookup procedures of RFC 3263[RFC3263] in preparation for the specification of the application of Happy Eyeballs to SIP to provide enhanced performance, and consequently user experience, in highly hybridized dual-stack SIP networks. The procedures described herein are such that a dual-stack client should look up both A and AAAA records in DNS and then select the best way to set up a network flow. The details of how the latter is done is considered out of scope for this document. See the Happy Eyeballs algorithm and implementation and design considerations in RFC 6555 [RFC6555] for more information about issues with setting up dual-stack network flows.
This document clarifies the interaction of [RFC3263] with [RFC6157] as described in Section 5.
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].
RFC 3261 [RFC3261] defines additional terms used in this document that are specific to the SIP domain such as "proxy"; "registrar"; "redirect server"; "user agent server" or "UAS"; "user agent client" or "UAC"; "back-to-back user agent" or "B2BUA"; "dialog"; "transaction"; "server transaction".
This document uses the term "SIP Server" that is defined to include the following SIP entities: user agent server, registrar, redirect server, a SIP proxy in the role of user agent server, and a B2BUA in the role of a user agent server.
This document also uses the following terminology to make clear distinction between SIP entities supporting only IPv4, only IPv6 or supporting both IPv4 and IPv6.
This specification introduces two normative DNS lookup procedures. These are designed to improve the performance of dual-stack clients in IPv4/IPv6 networks.
Once the transport protocol has been determined, the procedure for discovering an IP address if the TARGET is not a numeric IP address but the port is explicitly stated in the URI, is detailed in Section 4.2 of RFC 3263[RFC3263]. The piece relevant to to this discussion is:
Section 4.2 of RFC 3263 [RFC3263] also goes on to describe the procedure for discovering an IP address if the TARGET is not a numeric IP address, and no port is present in the URI. The piece relevant to to this discussion is:
Happy Eyeballs [RFC6555] documents that looking up the "A or AAAA record" is not an effective practice for dual-stack clients and that it can add significant connection delay and greatly degrade user experience. Therefore, this document makes the following normative addendum to the DNS lookup procedures of Section 4.2 of RFC 3263 [RFC3263] for IPv4/IPv6 hybrid SIP networks and recommends it as a best practice for such dual-stack networks:
The Happy Eyeballs algorithm [RFC6555] is particularly effective when dual-stack client applications have significant performance differences in their IPv4 or IPv6 network paths. In this common scenario it is often necessary for a dual-stack client to indicate a preference for either IPv4 or IPv6. A service may use DNS SRV records to indicate such a preference for an address family. This way, a server with a high-latency and/or low-capacity IPv4 tunnel may indicate a preference for being contacted using IPv6. A server that wishes to do this can use the lowest SRV priority to publish hostnames that only resolve in IPv6 and the next priority with host names that resolve in both address families.
[RFC6157] defers to the Source and Destination Address Selection algorithms defined in [RFC6724] (the successor of [RFC3484]) when allowing a client to choose a specific server (c.f. Section 5 in [RFC6157]).
This document clarifies the process: If SRV lookup is successful, the major ordering of the list of destination addresses is determined by the priority and weight fields of the SRV records as specified in [RFC2782]. The (minor) ordering among the destinations derived from the "target" field of a single SRV record is determined by [RFC6724].
This document introduces two new normative procedures to the existing DNS procedures used to locate SIP servers. While both of these procedures are optimizations designed to improve the performance of dual-stack clients, neither introduces any new security considerations.
The specific security vulnerabilities, attacks and threat models of the various protocols discussed in this document (SIP, DNS, SRV records, Happy Eyeballs requirements and algorithm, etc.) are well documented in their respective specifications.
This document does not require any actions by IANA.
The authors would like to acknowledge the support and contribution of the SIP Forum IPv6 Working Group. This document is based on a lot of tests and discussions at SIPit events, organized by the SIP Forum.
This document has benefited from the expertise and review feedback of many participants of the IETF DISPATCH and SIPCORE WG mailing lists as well as those on the SIP Forum IPv6 Task Group mailing list. The authors wish to specifically call out the efforts and express their gratitude for the detailed and thoughtful comments and corrections of Dan Wing, Brett Tate, Rifaat Shekh-Yusef, Carl Klatsky, Mary Barnes, Keith Drage, Cullen Jennings and Simon Perreault.
The authors also thank the SIPCORE WG chairs, Paul Kyzivat and Adam Roach, and assigned Area Director, Richard Barnes, for their support and thorough evaluation of this work.
[Note to RFC Editor: Please remove this entire section upon publication as an RFC.]
Changed the "updates" specification to add RFC 3263 and remove RFC 6157.
Added Simon Perreault to the acknowledgments.
Minor wording changes.
Described the relationship to RFC 3263 as "update", since the existing wording in 3263 is not what we want. Arguably, the new wording is what was intended in 3263, but the existing wording either does not say that or says it in a way that is easily misunderstood.
Described the relationship to RFC 6157 as "clarification", since the described interaction between 3263 and 6157 appears to be the only reasonable interpretation.
Revised wording, punctuation, and capitalization in various places.
Clarified that this draft does not document Happy Eyeballs for SIP, but is preparatory for it.
Attempted to use "update" for text that is definitively a change to the preexisting text and "clarify" for text that is a more clear statement of the (presumed) intention of the preexisting text.
Removed normative words from section 1, the introduction.
Copied definition of "address records" from RFC 2782 (SRV records) to allow the specifications to expand automatically to include any new address families.
Relocated the text requiring a client to ignore addresses that it discovers in address families it does not support from section 4.2 (which describes why the situation arises) to section 4.1 (which describes how clients look up RRs).
Clarified the interaction with RFC 6157 (source and destination address selection in IPv6) to specify what must have been intended: The major sort of the destinations is the ordering determined by priority/weight in the SRV records; the addresses derived from a single SRV record's target are minorly sorted based on RFC 6157.
Removed editor's name from the acknowledgments list.
[RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997. |
[RFC2782] | Gulbrandsen, A., Vixie, P. and L. Esibov, "A DNS RR for specifying the location of services (DNS SRV)", RFC 2782, DOI 10.17487/RFC2782, February 2000. |
[RFC3263] | Rosenberg, J. and H. Schulzrinne, "Session Initiation Protocol (SIP): Locating SIP Servers", RFC 3263, DOI 10.17487/RFC3263, June 2002. |
[RFC6157] | Camarillo, G., El Malki, K. and V. Gurbani, "IPv6 Transition in the Session Initiation Protocol (SIP)", RFC 6157, DOI 10.17487/RFC6157, April 2011. |
[RFC3261] | Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, DOI 10.17487/RFC3261, June 2002. |
[RFC3484] | Draves, R., "Default Address Selection for Internet Protocol version 6 (IPv6)", RFC 3484, DOI 10.17487/RFC3484, February 2003. |
[RFC4213] | Nordmark, E. and R. Gilligan, "Basic Transition Mechanisms for IPv6 Hosts and Routers", RFC 4213, DOI 10.17487/RFC4213, October 2005. |
[RFC6555] | Wing, D. and A. Yourtchenko, "Happy Eyeballs: Success with Dual-Stack Hosts", RFC 6555, DOI 10.17487/RFC6555, April 2012. |
[RFC6724] | Thaler, D., Draves, R., Matsumoto, A. and T. Chown, "Default Address Selection for Internet Protocol Version 6 (IPv6)", RFC 6724, DOI 10.17487/RFC6724, September 2012. |