idnits 2.17.1 draft-cbran-rtcweb-nat-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- -- The document has an IETF Trust Provisions (28 Dec 2009) Section 6.c(ii) Publication Limitation clause. If this document is intended for submission to the IESG for publication, this constitutes an error. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (October 29, 2011) is 4556 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) ** Obsolete normative reference: RFC 1631 (Obsoleted by RFC 3022) ** Obsolete normative reference: RFC 3489 (Obsoleted by RFC 5389) ** Obsolete normative reference: RFC 5245 (Obsoleted by RFC 8445, RFC 8839) ** Obsolete normative reference: RFC 5766 (Obsoleted by RFC 8656) Summary: 4 errors (**), 0 flaws (~~), 1 warning (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group C. Bran 3 Internet-Draft Plantrontics 4 Intended status: Standards Track M. Kaufman 5 Expires: May 1, 2012 Skype 6 C. Jennings 7 Cisco 8 J. Rosenberg 9 Skype 10 October 29, 2011 12 WebRTC Network Address Translation 13 draft-cbran-rtcweb-nat-02 15 Abstract 17 This document outlines the network address translation (NAT) 18 traversal requirements and for WebRTC client applications. 20 Status of this Memo 22 This Internet-Draft is submitted in full conformance with the 23 provisions of BCP 78 and BCP 79. This document may not be modified, 24 and derivative works of it may not be created, and it may not be 25 published except as an Internet-Draft. 27 Internet-Drafts are working documents of the Internet Engineering 28 Task Force (IETF). Note that other groups may also distribute 29 working documents as Internet-Drafts. The list of current Internet- 30 Drafts is at http://datatracker.ietf.org/drafts/current/. 32 Internet-Drafts are draft documents valid for a maximum of six months 33 and may be updated, replaced, or obsoleted by other documents at any 34 time. It is inappropriate to use Internet-Drafts as reference 35 material or to cite them other than as "work in progress." 37 This Internet-Draft will expire on May 1, 2012. 39 Copyright Notice 41 Copyright (c) 2011 IETF Trust and the persons identified as the 42 document authors. All rights reserved. 44 This document is subject to BCP 78 and the IETF Trust's Legal 45 Provisions Relating to IETF Documents 46 (http://trustee.ietf.org/license-info) in effect on the date of 47 publication of this document. Please review these documents 48 carefully, as they describe your rights and restrictions with respect 49 to this document. Code Components extracted from this document must 50 include Simplified BSD License text as described in Section 4.e of 51 the Trust Legal Provisions and are provided without warranty as 52 described in the Simplified BSD License. 54 Table of Contents 56 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 57 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . 3 58 3. Connection Management Requirements . . . . . . . . . . . . . . 3 59 3.1. NAT Traversal Requirements . . . . . . . . . . . . . . . . 3 60 3.2. Data Transmission Requirements . . . . . . . . . . . . . . 3 61 3.3. IPv4 to IPv6 Transition Requirements . . . . . . . . . . . 4 62 3.4. Legacy Phone System Interoperability Requirements . . . . . 4 63 4. Connection Management Mechanism . . . . . . . . . . . . . . . . 4 64 4.1. ICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 65 4.1.1. ICE as a Consent Mechanism . . . . . . . . . . . . . . 4 66 4.2. Web Browsers and ICE . . . . . . . . . . . . . . . . . . . 5 67 4.2.1. Native ICE Support . . . . . . . . . . . . . . . . . . 5 68 4.2.2. STUN Configuration . . . . . . . . . . . . . . . . . . 5 69 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 6 70 6. Security Considerations . . . . . . . . . . . . . . . . . . . . 6 71 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 6 72 8. Normative References . . . . . . . . . . . . . . . . . . . . . 6 73 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 7 75 1. Introduction 77 An integral part of the of the Web Real Time Communications (WebRTC) 78 will be the ability for client application implementations to have 79 native, secure Network Address Translation (NAT) [RFC1631] traversal 80 capabilities. This document provides requirements and implementation 81 specifications WebRTC client NAT traversal. 83 2. Terminology 85 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 86 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 87 document are to be interpreted as described in RFC 2119 [RFC2119]. 89 3. Connection Management Requirements 91 This section identifies the requirements for RTC-Web client 92 applications to connection requirements. 94 3.1. NAT Traversal Requirements 96 A majority of WebRTC clients will be web browsers and used behind a 97 NAT and or firewall. WebRTC clients will use a UDP-based data 98 transmission scheme for multimedia sessions [Open Issue: what draft 99 should be cited for this requirement?]. UDP has well know NAT 100 traversal problems and without native capabilities to traverse a NAT, 101 WebRTC clients will be extremely limited in their functionality. 102 Fortunately NAT traversal for UDP is a solved problem, but solutions 103 require that clients transmitting media between each other need to 104 use the same NAT traversal algorithms. Without a consistent, well 105 specified NAT traversal mechanism WebRTC client implementations would 106 likely be inoperable with each other. To address the identified 107 problems WebRTC clients are REQUIRED to implement the NAT traversal 108 mechanism as defined in Section 4. 110 3.2. Data Transmission Requirements 112 Whenever a calling WebRTC client attempts to establish a connection, 113 the receiving WebRTC client MUST provide consent before the calling 114 client can transmit data to the receiver. Providing consent on the 115 receiving end before data transmission commence is needed to help to 116 prevent malicious attacks by the calling client. All WebRTC clients 117 are REQUIRED to implement connection management that provides a 118 consent mechanism for media transmission. Furthermore it is REQUIRED 119 that consent be given by the recipient before an WebRTC client can 120 transmit media. 122 As a note providing consent to open a media connection does not 123 involve user-level consent, rather it is the responsibility of the 124 WebRTC client application (e.g. web browser) to enforce this 125 requirement. 127 3.3. IPv4 to IPv6 Transition Requirements 129 RTC-Web clients MUST support IPv4 to IPv6 transition. 131 3.4. Legacy Phone System Interoperability Requirements 133 There is no way to meet all the connection management requirements 134 and maintain compatibility with all legacy phone systems. It is 135 highly desirable that the WebRTC connection management mechanism be 136 interoperable with legacy phone systems such as a VOIP endpoints, 137 PSTN gateways and SIP trunks. 139 4. Connection Management Mechanism 141 This section specifies the connection management system that will 142 address the identified requirements. 144 4.1. ICE 146 To address the NAT traversal, data transmission, and interoperability 147 requirements all WebRTC client applications are REQUIRED to implement 148 ICE [RFC5245]. Implicit to ICE, and listed here for clarity, WebRTC 149 client implementations will are also REQUIRED to implement STUN 150 [RFC3489] and TURN [RFC5766]. 152 Additional ICE requirements: 154 o Support of ICE's Aggressive Nomination is REQUIRED 156 o Support of ICE's Regular Nomination is OPTIONAL 158 o WebRTC media gateways MAY implement ICE-Lite instead of full ICE 160 4.1.1. ICE as a Consent Mechanism 162 Of the connection management requirements listed above, the least 163 obvious is how ICE will satisfy being a consent mechanism for data 164 transmission Section 3.2. The reason ICE can satisfy this 165 requirement is due to its reliance on STUN transactions to succeed in 166 order to establish a connection. The success of a STUN transaction 167 can be viewed as semantically the same thing as a recipient providing 168 consent to transmit data. Conversely the failure of the STUN 169 transaction would semantically map to the recipient rejecting the 170 request to transmit data. 172 4.2. Web Browsers and ICE 174 This section specifies the web browser implementation requirements 175 for WebRTC client connection management. 177 4.2.1. Native ICE Support 179 To meet the WebRTC connectivity requirements, web browser vendors 180 MUST natively support ICE [RFC5245]. Access to the web browser's ICE 181 implementation will be defined in the W3C WebRTC-API 182 specification[I.D.w3c-webrtc]. 184 Alternate proposals have been made that advocate for natively 185 exposing STUN[RFC3489] APIs in the web browser. The ICE 186 implementation would be realized via a JavaScript library that uses 187 the browser's native STUN API. After reviewing the alternate 188 proposals the solution several issues were identified. 190 1. JavaScript running within "real world" web applications cannot 191 reliably handle the ICE timing and pacing requirements. An 192 example of this is long running JavaScript code from embedded 193 advertisers. A big JavaScript file can take a significant amount 194 of time to execute and can prevent web application timers from 195 firing in correctly. Given the pacing requirements for ICE are 196 in the 20ms range, it is highly likely that ICE will break if it 197 is implemented in a JavaScript library. 199 2. Multiple implementations of a JavaScript ICE library is a 200 logistical nightmare. Coordinating updates, bug fixes, 201 enhancements and a testing matrix for interoperability at 202 Internet scale will simply be impossible. 204 4.2.2. STUN Configuration 206 Web browsers MUST provide a mechanism to configure access to a STUN 207 server. 209 Below are some proposed mechanisms by which the STUN server could be 210 configured: 212 o A preference page, similar to the what web browser's use for 213 configuring web proxy settings 215 o Exposed as a JavaScript API and added to the W3C WebRTC-API 216 specification 218 Regardless of the mechanism adopted by the web browser vendor, the 219 following configuration data is REQUIRED to be exposed and settable 220 through the web browsers configuration mechanism: 222 o STUN Server Address - the IPv4 or IPv6 address of the STUN server 224 o STUN Server Port 226 o Credentials to access the STUN server (these are not STUN 227 generated credentials) 229 5. IANA Considerations 231 This document makes no request of IANA. 233 Note to RFC Editor: this section may be removed on publication as an 234 RFC. 236 6. Security Considerations 238 To guard against spoofing RTC-Web client applications are REQUIRED 239 to: 241 o Internally encapsulate the generation of STUN transaction IDs 243 o Block read/write access to the generated STUN transaction IDs 245 7. Acknowledgements 247 This draft incorporates ideas and text from the IETF mailing list. 248 In particularly we would like to acknowledge, and say thanks for, 249 work we incorporated from Timothy Terriberry and Christopher 250 Blizzard. 252 8. Normative References 254 [I.D.w3c-webrtc] 255 Bergkvist, A., Burnett, D., Jennings, C., and A. 256 Narayanan, "WebRTC 1.0: Real-time Communication Between 257 Browsers", October 2011. 259 [RFC1631] Egevang, K. and P. Francis, "The IP Network Address 260 Translator (NAT)", RFC 1631, May 1994. 262 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 263 Requirement Levels", BCP 14, RFC 2119, March 1997. 265 [RFC3489] Rosenberg, J., Weinberger, J., Huitema, C., and R. Mahy, 266 "STUN - Simple Traversal of User Datagram Protocol (UDP) 267 Through Network Address Translators (NATs)", RFC 3489, 268 March 2003. 270 [RFC5245] Rosenberg, J., "Interactive Connectivity Establishment 271 (ICE): A Protocol for Network Address Translator (NAT) 272 Traversal for Offer/Answer Protocols", RFC 5245, 273 April 2010. 275 [RFC5766] Mahy, R., Matthews, P., and J. Rosenberg, "Traversal Using 276 Relays around NAT (TURN): Relay Extensions to Session 277 Traversal Utilities for NAT (STUN)", RFC 5766, April 2010. 279 Authors' Addresses 281 Cary Bran 282 Plantrontics 283 345 Encinal Street 284 Santa Cruz, CA 95060 285 USA 287 Phone: +1 206 661-2398 288 Email: cary.bran@plantronics.com 290 Matthew Kaufman 291 Skype 292 3210 Porter Drive 293 Palo Alto, California 94304 294 US 296 Phone: +1 831 440 8771 297 Email: matthew.kaufman@skype.net 298 Cullen Jennings 299 Cisco 300 170 West Tasman Drive 301 San Jose, CA 95134 302 USA 304 Phone: +1 408 421-9990 305 Email: fluffy@cisco.com 307 Jonathan Rosenberg 308 Skype 309 3210 Porter Drive 310 Palo Alto, California 94304 311 US 313 Email: jdrosen@skype.net