TRAM P. Patil
Internet-Draft T. Reddy
Intended status: Standards Track G. Salgueiro
Expires: March 20, 2015 Cisco
M. Petit-Huguenin
Impedance Mismatch
September 16, 2014

Application Layer Protocol Negotiation (ALPN) labels for Session Traversal Utilities for NAT (STUN) and its Usages


Application Layer Protocol Negotiation (ALPN) labels for Session Traversal Utilities for NAT (STUN) and its usages, such as Traversal Using Relays around NAT (TURN) and NAT discovery, are defined in this document to allow an application layer negotiate STUN and its usages within the Transport Layer Security (TLS) connection. ALPN protocol identifiers defined in this document apply to both TLS and Datagram Transport Layer Security (DTLS).

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

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 March 20, 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 ( 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

STUN can be securely transported using TLS-over-TCP (referred to as TLS [RFC5246]), as specified in [RFC5389], or TLS-over-UDP (referred to as DTLS [RFC6347]), as specified in [RFC7350].

ALPN [RFC7301] enables an endpoint to positively identify an application protocol in TLS/DTLS and distinguish it from other TLS/DTLS protocols. With ALPN, the client sends the list of supported application protocols as part of the TLS/DTLS ClientHello message. The server chooses a protocol and sends the selected protocol as part of the TLS/DTLS ServerHello message. Application protocol negotiation can thus be accomplished within the TLS/DTLS handshake, without adding network round-trips.

A STUN protocol identifier and its associated usages, such as TURN, can be used to identify the purpose of a flow without initiating a session. This capability is useful and adds efficiency, as shown in the following scenarios.

  1. Consider an Enterprise network that deploys a TURN server in a DeMilitarized Zone (DMZ) to audit all media sessions from inside the Enterprise premises to any external peer. In this deployment, an Enterprise firewall could use the TURN ALPN identifier to detect the use of a TURN server that is outside the Enterprise domain (i.e., a TURN server provided by an application server, access network, etc).
  2. If a firewall is configured to block all outgoing traffic except for TCP traffic to specific ports (e.g., 443 for HTTPS), a TURN server listening on its default ports (3478 for TCP/UDP, 5349 for TLS) would not be reachable. However, despite the restrictions imposed by the firewall, a TURN server can still be reached on the allowed HTTPS port if the TURN ALPN identifier is used to establish usage of TURN as part of the TLS handshake.

This document defines entries in the "Application Layer Protocol Negotiation (ALPN) Protocol IDs" registry established by [RFC7301] to identify the STUN protocol and its usages.

2. Terminology

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 [RFC2119].

3. ALPN Labels

The document proposes the following ALPN labels to identify the STUN protocol and its associated usages.

Generic label to identify STUN over (D)TLS. This label identifies the STUN protocol or any of currently defined usages (e.g., "stun.turn", "stun.nat-discovery") as well as any future usages that may be defined at a later date (e.g., any labels starting with "stun.").
Label to identify the specific use of STUN over (D)TLS for TURN.
Label to identify the specific use of STUN over (D)TLS for NAT discovery.

This document does not explicitly assign ALPN labels for other usages of STUN, such as NAT Behavior Discovery using STUN ([RFC5780]). All such usages that do not have a dedicated label are implicitly identified by the generic "stun" ALPN label.

4. IANA Considerations

The following entries are to be added to the "Application Layer Protocol Negotiation (ALPN) Protocol IDs" registry established by [RFC7301].

The "stun" label identifies STUN over (D)TLS:

The "stun.turn" label identifies TURN usage over (D)TLS:

The "stun.nat-discovery" label identifies usage of STUN for the purposes of NAT/behavior discovery over (D)TLS:

5. Security Considerations

The ALPN STUN protocol identifier does not introduce any specific security considerations beyond those detailed in the TLS ALPN Extension specification [RFC7301]. It also does not impact security of TLS/DTLS session establishment nor application data exchange.

6. Acknowledgements

This work benefited from the discussions and invaluable input by the various members of the TRAM working group. These include Simon Perrault, Paul Kyzivat, Brandon Williams and Andrew Hutton. Special thanks to Martin Thomson and Oleg Moskalenko for their constructive comments, suggestions, and early reviews that were critical to the formulation and refinement of this document.

7. References

7.1. Normative References

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, August 2008.
[RFC5389] Rosenberg, J., Mahy, R., Matthews, P. and D. Wing, "Session Traversal Utilities for NAT (STUN)", RFC 5389, October 2008.
[RFC5780] MacDonald, D. and B. Lowekamp, "NAT Behavior Discovery Using Session Traversal Utilities for NAT (STUN)", RFC 5780, May 2010.
[RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer Security Version 1.2", RFC 6347, January 2012.
[RFC7301] Friedl, S., Popov, A., Langley, A. and E. Stephan, "Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension", RFC 7301, July 2014.
[RFC7350] Petit-Huguenin, M. and G. Salgueiro, "Datagram Transport Layer Security (DTLS) as Transport for Session Traversal Utilities for NAT (STUN)", RFC 7350, August 2014.

7.2. Informative References

[RFC5766] Mahy, R., Matthews, P. and J. Rosenberg, "Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)", RFC 5766, April 2010.

Authors' Addresses

Prashanth Patil Cisco Systems, Inc. Bangalore, India EMail:
Tirumaleswar Reddy Cisco Systems, Inc. Cessna Business Park, Varthur Hobli Sarjapur Marathalli Outer Ring Road Bangalore, Karnataka 560103 India EMail:
Gonzalo Salgueiro Cisco Systems, Inc. 7200-12 Kit Creek Road Research Triangle Park, NC 27709 US EMail:
Marc Petit-Huguenin Impedance Mismatch USA EMail: