STRAW | Ram. Ravindranath |
Internet-Draft | T. Reddy |
Intended status: Standards Track | G. Salgueiro |
Expires: November 15, 2015 | Cisco |
May 14, 2015 |
Session Traversal Utilities for NAT (STUN) Message Handling for Session Initiation Protocol (SIP) Back-to-Back User Agents (B2BUAs)
draft-ietf-straw-b2bua-stun-06
Session Initiation Protocol (SIP) Back-to-Back User Agents (B2BUAs) are often designed to be on the media path, rather than just intercepting signaling. This means that B2BUAs often act on the media path leading to separate media legs that the B2BUA correlates and bridges together. When acting on the media path, B2BUAs are likely to receive Session Traversal Utilities for NAT (STUN) packets as part of Interactive Connectivity Establishment (ICE) processing.
This document defines behavior for a B2BUA performing ICE processing. The goal of this draft is to ensure that B2BUAs properly handles SIP messages that carry ICE semantics in Session Description Protocol(SDP) and STUN messages received as part of the ICE procedures for NAT and Firewall traversal of multimedia sessions.
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 November 15, 2015.
Copyright (c) 2015 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.
In many Session Initiation Protocol (SIP) deployments, SIP entities exist in the SIP signaling and media path between the originating and final terminating endpoints, which go beyond the definition of a traditional SIP proxy. These SIP entities, commonly known as Back-to-Back User Agents (B2BUAs), are described in [RFC7092] and often perform functions not defined in Standards Track RFCs.
SIP [RFC3261], and other session control protocols that try to use direct path for media, are typically difficult to use across Network Address Translators (NATs). These protocols use IP addresses and transport port numbers encoded in the signaling, such as the Session Description Protocol (SDP) [RFC4566] and, in the case of SIP, various header fields. Such addresses and ports are unreachable if any peers are separated by NATs.
Mechanisms such as Session Traversal Utilities for NAT (STUN) [RFC5389], Traversal Using Relays around NAT (TURN) [RFC5766], and Interactive Connectivity Establishment (ICE) [RFC5245] did not exist when protocols like SIP began being deployed. Some mechanisms, such as the early versions of STUN, started appearing but they were unreliable and suffered a number of issues typical for UNilateral Self-Address Fixing (UNSAF) and described in [RFC3424]. For these reasons, B2BUAs are being used by SIP domains for SIP and media-related purposes. These B2BUAs use proprietary mechanisms to enable SIP devices behind NATs to communicate across the NAT.
[RFC7362] describes how B2BUAs can perform Hosted NAT Traversal (HNT) in certain deployments. Section 5 of [RFC7362] describes some of the issues with SBCs implementing HNT and offers some mitigation strategies. The most commonly used approach to solve these issues is restricted-latching defined in section 5 of [RFC7362], whereby the B2BUA will not latch to any packets from a source public IP address other than the one the SIP UA uses for SIP signalling. However, this is susceptible to attacks, where an attacker who is able to see the source IP address of the SIP UA may generate packets using the same IP address. There are other threats described in Section 5 of [RFC7362] for which Secure Real-time Transport Protocol (SRTP) [RFC3711] can be used as a solution. However, this would require the B2BUAs to terminate and re-originate SRTP, which is not always desirable.
This document describes proper behavior of B2BUAs performing ICE processing. This includes defining consistent handling of SIP messages carrying ICE semantics in SDP and STUN messages received as part of the ICE procedures performed on the media path for NAT and Firewall traversal of multimedia sessions.
A B2BUA can use ICE [RFC5245], which provides authentication tokens (conveyed in the ice-ufrag and ice-pwd attributes) that allow the identity of a peer to be confirmed before engaging in media exchange. This can solve some of the security concerns with HNT solution. Further, ICE has other benefits like selecting an address when more than one address is available (e.g., dual-stack environment where host can have both IPv4 and IPv6 addresses), verifying that a path works before connecting the call etc. For these reasons endpoints often use ICE to pick a candidate pair for media traffic between two agents.
B2BUAs often operate on the media path and have the ability to modify SIP headers and SDP bodies as part of their normal operation. Such entities, when present on the media path, are likely to take an active role in the session signaling depending on their level of activity on the media path. For example, some B2BUAs modify portions of the SDP body (e.g., IP address, port) and subsequently modify the media packet headers as well. Section 18.6 of ICE [RFC5245] explains two different behaviors when B2BUAs are present. Some B2BUAs are likely to remove all the SDP ICE attributes before sending the SDP across to the other side. Consequently, the call will appear to both endpoints as though the other side doesn't support ICE. There are other types of B2BUAs that pass the ICE attributes without modification, yet modify the default destination for media contained in the m= and c= lines and rtcp attribute (defined in [RFC3605]). This will be detected as an ICE mismatch and ICE processing will be aborted for the session. The session may continue if the endpoints are able to reach each other over the default candidate (sent in m= and c= lines).
Section 3.1.3 of [RFC7092] defines a SDP-Modifying Signaling-only B2BUA that operates in the signaling plane only and is not in the media path, but it does modify SDP bodies and is thus aware of and understands SDP syntax and semantics. Such B2BUA MUST follow the behavior mentioned in Section 3.
Section 3.2 of [RFC7092] describes three different categories of B2BUAs that operates on both signaling(SIP and SDP) and media plane according to the level of involvement and active participation in the media plane:
When B2BUAs that operate on media plane (media relay, media-aware or media-termination) is involved in a session between two endpoints performing ICE, then it MUST follow the behavior described in Section 4.
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].
All of the pertinent B2BUA terminology and taxonomy used in this document is defined in [RFC7092].
Network Address Translators (NATs) are widely used in the Internet by consumers and organizations. Although specific NAT behaviors vary, this document uses the term "NAT", which maps to NAT and NAPT terms from [RFC3022], for devices that map any IPv4 or IPv6 address and transport port number to another IPv4 or IPv6 address and transport port number. This includes consumer NATs, Firewall-NATs, IPv4-IPv6 NATs, Carrier-Grade NATs (CGNs) [RFC6888], etc.
An SDP-Modifying Signaling-only B2BUA is one that operates in the signaling plane only and is not in the media path, but it modifies SDP bodies as described in section 3.1.3 of [RFC7092]. Such B2BUAs MUST NOT change IP address in c= line, port in m= line and ICE semantics of SDP as doing so can cause ICE-mismatch.
When one or both of the endpoints are behind a NAT, and there is a B2BUA between the endpoints, the B2BUAs MUST support ICE or at a minimum support ICE LITE functionality as described in [RFC5245]. Such B2BUAs MUST use the mechanism described in Section 2.2 of [RFC5245] to demultiplex STUN packets that arrive on the Real-time Transport Protocol(RTP)/RTP Control Protocol (RTCP) port.
The subsequent sections describe the behavior B2BUAs MUST follow for handling ICE messages. A B2BUA can terminate ICE and thus have two ICE contexts with either endpoint. The reason for ICE termination could be due to the need for B2BUA to be in the media path ( e.g., address hiding for privacy, interworking between ICE to no-ICE, etc.). A B2BUA can also be in optional ICE termination mode and passes across the candidate list and STUN short-term credentials (ice-ufrag and ice-pwd attributes) from one endpoint to the other side after adding its own candidates. A B2BUA may be in optional ICE termination mode when it does not have a need to be on the media path. The below sections describes the behaviors for these two cases.
A B2BUA that wishes to always be in the media path follows the below steps:
+-------+ +------------------+ +-----+ | Alice | | Mediaplane B2BUA | | Bob | +-------+ +------------------+ +-----+ |(1) INVITE | (3)INVITE | | a=ice-ufrag1 | a=ice-ufrag2 | | a=ice-pwd1 | a=ice-pwd2 | | (Alice's IP, port) | (B2BUAs IP, port) | |(Alice's candidate list )| (B2BUAs candidate list) | |------------------------>|-------------------------->| | | | | (2) 100 trying | | |<------------------------| | | | (4) 100 trying | | |<--------------------------| | | (5)200 OK | | | a=ice-ufrag3 | | | a=ice-pwd3 | | | (Bob's IP, port) | | | (Bob's candidate list) | | |<--------------------------| | (6) 200 OK | | | a=ice-ufrag4 |-----------ACK------------>| | a=ice-pwd4 | (7) | | B2BUAs IP,port | | | (B2BUAs cand list1) | | |<------------------------| | |--------ACK------------->| | | (8) | | | | | |<----ICE Connectivity 1->| | | checks+conclusion |<-----ICE Connectivity 2-->| | (9) | checks +conclusion | | | (10) | |<-------Media packets -->|<----Media packets-------->| | (13) | (14) | | | | |<---ICE keepalives 1---->| | | (15) |<----ICE keep alives 2---->| (16)
Figure 1: INVITE with SDP having ICE and with a Media Plane B2BUA terminating ICE
The above figure shows an example call flow with two endpoints Alice and Bob doing ICE and a B2BUA handing STUN messages from both the endpoints. For the sake of brevity the entire ICE SDP attributes are not shown. Also the STUN messages exchanged as part of ICE connectivity checks are not shown. Key steps to note from the call flow are:
Since there are two independent ICE contexts on either side of the B2BUA it is possible that ICE checks will conclude on one side before concluding on the other side. This could result in an ongoing media session for one end, while the other is still being set up. Any such media received by the B2BUA would continue to be sent to the other side on the default candidate address (that was sent in c= line).
A B2BUA willing to be in the media path only for NAT traversal, but does not otherwise require to be in the media path can do the following steps mentioned in this section.
+-------+ +------------------+ +-----+ | Alice | | Mediaplane B2BUA | | Bob | +-------+ +------------------+ +-----+ |(1) INVITE | (3)INVITE | | a=ice-ufrag1 | a=ice-ufrag1 | | a=ice-pwd1 | a=ice-pwd1 | | (Alice's IP, port) | (Alices's IP, port) | |(Alice's candidate list )| (Alice's Candidate list + | | | B2BUAs candidate list1) | |------------------------>|-------------------------->| | | | | (2) 100 trying | | |<------------------------| | | | (4) 100 trying | | |<--------------------------| | | (5)200 OK | | | a=ice-ufrag2 | | | a=ice-pwd2 | | | (Bob's IP, port) | | | (Bob's candidate list) | | |<--------------------------| | (6) 200 OK | | | a=ice-ufrag2 |-----------ACK------------>| | a=ice-pwd2 | (7) | | (Bobs's IP,port) | | | (B2BUAs cand list2 + | | | Bob's Candidate list) | | |<------------------------| | |----------ACK----------->| | | (8) | | | | | |<----ICE Connectivity 1 (9)------------------------->| | | | |<----ICE Connectivity 2->| | | checks+conclusion |<-----ICE Connectivity 2-->| | (10) | checks +conclusion | | | (11) | |<-------------------Media packets------------------->| | (12) | | | | |<------------------ICE keepalives------------------->| (13)
Figure 2: INVITE with SDP having ICE and with a Media Plane B2BUA in optional ICE termination mode
The above figure shows a sample call flow with two endpoints Alice and Bob doing ICE and a B2BUA handing STUN messages from both the endpoints. For the sake of brevity the entire ICE SDP attributes are not shown. Also the STUN messages exchanged as part of ICE connectivity checks are not shown. Key steps to note from the call flow are:
Because of forking, a B2BUA may receive multiple answers for a single outbound INVITE. When this occurs the B2BUA should follow section 3.2 or 3.3 for all of those received answers.
ICE as described in Section 2.5 of [RFC5245] uses STUN short-term credential mechanism for authentication and message integrity. STUN connectivity checks include MESSAGE-INTEGRITY attribute that contains HMAC-SHA1 of the STUN message and the HMAC is computed using the key exchanged in the signaling channel. The signaling channel between the endpoints and B2BUA MUST be encrypted so that the key is not visible to eavesdropper otherwise the security benefits of short-term authentication would be lost.
This document makes no request of IANA.
Special thanks to Dan Wing, Pal Martinsen, Charles Eckel, Marc Petit-Huguenin, Simon Perreault, Lorenzo Miniero, Ari Keranen and Parthasarathi R for their constructive comments, suggestions, and early reviews that were critical to the formulation and refinement of this document.
Thanks to Ben Campbell, Barry Leiba, Nevil Brownlee, Spencer Dawkins, Sam Hartman, Stephen Farrell and Kathleen Moriarty for their thoughtful review comments.
[RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. |
[RFC3711] | Baugher, M., McGrew, D., Naslund, M., Carrara, E. and K. Norrman, "The Secure Real-time Transport Protocol (SRTP)", RFC 3711, March 2004. |
[RFC5245] | Rosenberg, J., "Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols", RFC 5245, April 2010. |
[RFC5389] | Rosenberg, J., Mahy, R., Matthews, P. and D. Wing, "Session Traversal Utilities for NAT (STUN)", RFC 5389, October 2008. |
[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. |
[RFC7092] | Kaplan, H. and V. Pascual, "A Taxonomy of Session Initiation Protocol (SIP) Back-to-Back User Agents", RFC 7092, December 2013. |