Internet DRAFT - draft-procter-dispatch-outbound-discovery
draft-procter-dispatch-outbound-discovery
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
Procter Expires May 18, 2015 [Page 1]
Internet-Draft Discovering outbound proxies November 2014
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 . . . . . . . . . . . . . . . . . . . . . . . . 2
2. User Agent Behaviour . . . . . . . . . . . . . . . . . . . . 2
2.1. Obtaining candidates for the outbound-proxy-set . . . . . 2
2.2. Creating the outbound-proxy-set from SRV RRs . . . . . . 3
2.3. Maintaining the outbound-proxy-set . . . . . . . . . . . 4
3. Registrar considerations . . . . . . . . . . . . . . . . . . 4
4. Edge Proxy considerations . . . . . . . . . . . . . . . . . . 5
5. Security Considerations . . . . . . . . . . . . . . . . . . . 5
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 5
8. Normative References . . . . . . . . . . . . . . . . . . . . 5
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 5
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
Procter Expires May 18, 2015 [Page 2]
Internet-Draft Discovering outbound proxies November 2014
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
Procter Expires May 18, 2015 [Page 3]
Internet-Draft Discovering outbound proxies November 2014
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
Procter Expires May 18, 2015 [Page 4]
Internet-Draft Discovering outbound proxies November 2014
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
Procter Expires May 18, 2015 [Page 5]