SIPCORE O. Johansson
Internet-Draft Edvina AB
Intended status: Standards Track G. Salgueiro
Expires: April 24, 2017 Cisco Systems
D. Worley
Ariadne
October 21, 2016

Setting up a SIP (Session Initiation Protocol) connection in a dual stack network using connection oriented transports
draft-johansson-sip-he-connection-01

Abstract

The Session Initiation Protocol (SIP) supports multiple transports running both over IPv4 and IPv6 protocols. In more and more cases, a SIP user agent (UA) is connected to multiple network interfaces. In these cases setting up a connection from a dual stack client to a dual stack server may suffer from the issues described in RFC 6555 [RFC6555] - Happy Eyeballs - significant delays in the process of setting up a working flow to a server. This negatively affects user experience.

This document builds on RFC 6555 and explains how a RFC3261 [RFC3261] compliant SIP implementation can quickly set up working flows to a given hostname (located by using DNS NAPTR and SRV lookups) in a dual stack network using connection oriented transport protocols. A solution for connectionless transport protocols is discussed in a separate document.

Status of This Memo

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 April 24, 2017.

Copyright Notice

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.


Table of Contents

1. Introduction

The core SIP [RFC3261] RFCs were written with support for both IPv4 and IPv6 in mind, but they were not fully equipped to handle highly hybridized environments during this transitional phase of migration from IPv4 to IPv6 networks, where 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, that has since been implemented in many applications.

This document updates RFC 3261[RFC3261] procedures so that a dual-stack client using connection oriented transport SHOULD set up multiple connections in parallell, based on the result of DNS queries. This document starts at the point where a SIP implementation has a hostname that resolves in A and AAAA records. This can either be part of a SIP URI including a port number or the result of a lookup using DNS NAPTR and SRV records as described in RFC 3263[RFC3261], updated by RFC 7984[RFC7984]

Procedures for connectionless transport protocols for SIP will be described in a separate document.

While this document use the term "dual-stack" based on RFC 6555 and earlier terminology, the authors acknowledge that the same solution can be applied to multi-interface environments as well as future versions of IP alongside with the current ones.

2. Terminology and Conventions Used in This Document

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.

IPv4-only UA/UAC/UAS:
An IPv4-only UA/UAC/UAS supports SIP signaling and media only on the IPv4 network. It does not understand IPv6 addresses.
IPv6-only UA/UAC/UAS:
An IPv6-only UA/UAC/UAS supports SIP signaling and media only on the IPv6 network. It does not understand IPv4 addresses.
IPv4/IPv6 UA/UAC/UAS:
A UA/UAC/UAS that supports SIP signaling and media on both IPv4 and IPv6 networks; such a UA/UAC/UAS is known (and will be referred to in this document) as a "dual-stack" [RFC4213] UA/UAC/UAS.

Discussion: Do we need special handling of websocket transport?

3. Background: DNS Procedures in a Dual-Stack Network

SIP used DNS to find a server based on a SIP URI. This process is described in RFC 3263[RFC3263] and updated in draft-ietf-sipcore-dns-dual-stack. Using these procedures, a host name is selected and DNS lookups of address records for all address families will generate a list of IP addresses to connect to. This list will be used as input for setting up a connection.

4. Setting up the connection

The Happy Eyeballs RFC [RFC6555] does not specify the algorithm used, but requirements on algorithms used for quickly setting up a working connection for the user. The reader is encouraged to read the available documentation as well as study Open Source implementations in order to learn from experience since the publishing of RFC 6555 in 2012.

In short, the SIP client is expected to set up two connections, with some head start for one address family (which possibly should be configurable) and then select the first working connection and close the other one. The SIP message is sent on the selected connection only.

The reason behind this is to avoid the timeout on one connection before another address will be tested - which in the case of SIP with default timers is 32 seconds. Waiting for timeout before trying with a secondary address will lead to a very poor user experience.

5. Security Considerations

This document makes two normative changes to the existing procedures in the SIP protocol. The specific security vulnerabilities, attacks and threat models of the various protocols discussed in this document (SIP, DNS, SRV records, etc.) are well documented in their respective specifications.

6. IANA Considerations

This document does not require any actions by IANA.

7. Acknowledgements

The author 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.

Acknowledgements for reviews and input: Your name can be here!

8. References

8.1. Normative References

[RFC6555] Wing, D. and A. Yourtchenko, "Happy Eyeballs: Success with Dual-Stack Hosts", RFC 6555, DOI 10.17487/RFC6555, April 2012.

8.2. Informative References

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, 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, DOI 10.17487/RFC3261, June 2002.
[RFC3263] Rosenberg, J. and H. Schulzrinne, "Session Initiation Protocol (SIP): Locating SIP Servers", RFC 3263, DOI 10.17487/RFC3263, June 2002.
[RFC4213] Nordmark, E. and R. Gilligan, "Basic Transition Mechanisms for IPv6 Hosts and Routers", RFC 4213, DOI 10.17487/RFC4213, October 2005.
[RFC7984] Johansson, O., Salgueiro, G., Gurbani, V. and D. Worley, "Locating Session Initiation Protocol (SIP) Servers in a Dual-Stack IP Network", RFC 7984, DOI 10.17487/RFC7984, September 2016.

Authors' Addresses

Olle E. Johansson Edvina AB Runbovägen 10 Sollentuna, SE-192 48 SE EMail: oej@edvina.net
Gonzalo Salgueiro Cisco Systems 7200-12 Kit Creek Road Research Triangle Park, NC 27709 US EMail: gsalguei@cisco.com
Dale R. Worley Ariadne Internet Services 738 Main St. Waltham, MA 02451 US EMail: worley@ariadne.com