DISPATCH M. Procter
Internet-Draft VoIP.co.uk
Intended status: Informational November 14, 2014
Expires: May 18, 2015

Automatic discovery of RFC 5626 Edge Proxies
draft-procter-dispatch-outbound-discovery-02

Abstract

[RFC5626] (commonly known as 'SIP outbound') defines mechanisms that permit SIP (Session Initiation Protocol) UAs (User Agents) to maintain multiple connections to a registrar or proxy via multiple Edge Proxies, known as the outbound-proxy-set. Discovering the URIs that make up the outbound-proxy-set is left to configuration or future discovery mechanisms. This draft defines a simple discovery mechanism that enables UAs to discover the URIs of all the Edge Proxies in the outbound-proxy-set without requiring additional configuration on the UA.

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 May 18, 2015.

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.


Table of Contents

1. Introduction

Reliably maintaining connectivity between a SIP UA and a registrar across the Internet, in the presence of NATs, routing changes, and maintenance of intervening equipment is made more straightforward by [RFC5626]. The mechanisms in that specification allow multiple connections over diverse routes, equipment, and data centres, which permit a more robust SIP service to be created.

However, one of the hurdles that is preventing wide-spread use of these mechanisms is discovering the outbound-proxy-set, the list of suitable edge proxies that a UA may use for multiple connections. Some UAs permit this set to be configured, but the large number of options available on many UAs means that configuration for robustness is often overlooked once basic operation is possible.

This draft describes a simple mechanism by which a UA supporting [RFC5626] may determine the outbound-proxy-set from the DNS.

2. User Agent Behaviour

2.1. Obtaining candidates for the outbound-proxy-set

The UA, preparing to register with a domain, gathers all the edge proxies identified in SRV records associated with that domain. For registrations to SIP URIs, the UA uses the service identifer "_sip-outbound", but for registrations to SIPS URIs, the UA uses the service identifier "_sips-outbound". This is combined with the relevant protocol identifier and domain to form the complete SRV query.

For example, when registering against 'sip:example.com', the UA might issue an SRV query for '_sip-outbound._udp.example.com'. result in the responses:

    SRV 0 5 5060 edge-01.example.net.
    SRV 0 5 5060 edge-02.example.net.
    SRV 5 0 5060 edge-fallback.example.net.

If no results are obtained from this SRV query, then as a fallback, the UA may perform a similar query using the service identifier "_sip" or "_sips" when attempting to register against SIP and SIPS URIs respectively.

2.2. Creating the outbound-proxy-set from SRV RRs

Once a set of SRV resource records have been retrieved, the UA translates them into SIP URIs so that they can be used as as the outbound-proxy-set.

The DNS SRV lookup will result in a set of targets and ports, along with weights and priorities. For the purpose of determining the outbound-proxy-set, the weights and priorities are discarded. The targets and ports are transformed into URIs by combining them with the scheme and protocol used in the the SRV query.

TODO: We could use the SRV weights and priorities to map to q-values on the registered contacts, but I'm not convinced mapping inbound and outbound preferences together like this is necessarily helpful.

For example, a DNS SRV query for '_sip-outbound._tcp.example.net' might result in the responses:

    SRV 0 5 5060 edge-01.example.net.
    SRV 0 5 5060 edge-02.example.net.
    SRV 5 0 5060 edge-fallback.example.net.

These should be mapped to the following URIs, which will now form the outbound-proxy-set:

    sip:edge-01.example.net:5060;transport=tcp
    sip:edge-02.example.net:5060;transport=tcp
    sip:edge-fallback.example.net:5060;transport=tcp

TODO: omit port if it is default for transport? Need to specify at least one of port and transport to prevent another round of NAPTR lookups when the o-p-s is used for loose routing to the Edge Proxy.

Following the construction of the outbound-proxy-set, the procedures in [RFC5626] section 4.2 may be followed to generate the initial registration via one of the proxies in the outbound-proxy-set.

Provided the initial registration is successful, and the registrar supports [RFC5626] (as indicated by the presence of the outbound option-tag in the Require header field of a successful registration response), the UA can then create additional registrations to as many of the remaining proxies in the outbound-proxy-set as are supported.

If the initial registration is successful, but the registrar does not support [RFC5626], then the UA cannot establish subsequent registrations.

If the initial registration is unsuccessful for reasons of edge proxy failure or transaction timeout, then the UA may repeat the initial registration but with a different outbound proxy selected from the outbound-proxy-set.

2.3. Maintaining the outbound-proxy-set

Since the outbound-proxy-set is now determined dynamically, rather than through static configuration, care should be taken to respect the relevant DNS TTL values and ensure that when the DNS records change, the configuration of the outbound-proxy-set and the number and destinations of registrations are updated accordingly.

If the outbound-proxy-set is refreshed and no changes are found, then the UA continues to use the flows it has already established. If it has a flow to a proxy that is no longer present in the outbound-proxy-set, it should take steps to remove that flow. Similarly, if additional proxies are now available, the UA may choose to establish flows to these proxies.

3. Registrar considerations

There are no changes needed for the correct operation of Registrars.

If the system uses SRV-based load-balancing, and has a low-priority SRV record pointing to an edge proxy that is normally only used under fault conditions (sometimes known as a 'canary' proxy), then a UA using the approach described in this document might maintain registrations via this canary proxy which might be considered unexpected. Such a system should not treat registration traffic via the canary proxy as indicative of a fault condition.

4. Edge Proxy considerations

There are no changes needed for the correct operation of Edge Proxies.

5. Security Considerations

TODO

6. IANA Considerations

TODO

7. Acknowledgements

The author thanks Dale Worley, Paul Kyzivat, Jon Peterson, Simon Perreault, Cullen Jennings, and Olle Johansson for their thoughtful comments and feedback.

8. Normative References

[RFC5626] Jennings, C., Mahy, R. and F. Audet, "Managing Client-Initiated Connections in the Session Initiation Protocol (SIP)", RFC 5626, October 2009.

Author's Address

Michael Procter VoIP.co.uk St Edburg's Hall Priory Road Bicester, Oxfordshire OX26 6BL UK EMail: michael@voip.co.uk URI: http://www.voip.co.uk