RTCWeb Working Group G. Mandyam Internet Draft Qualcomm Innovation Center Intended status: Informational Vijay Suryavanshi Expires: January 30, 2013 Qualcomm July 30, 2012 RTCWeb Data Stream and RTP Synchronization draft-mandyam-rtcweb-data-synch-00.txt Abstract The RTCWeb working group in the IETF is tasked with developing standards that will ensure interoperability between web browsers establishing rich communications sessions. This working group is tasked with delivering the specifications necessary to establish real-time transport sessions between browsers (e.g. those based on real-time protocol, i.e. RTP). Moreover, the group is also tasked with providing a means for application data streaming between browsers (i.e. opaque data streaming). Much like RTP synchronization sources (SSRC's) can be temporally synchronized, there are use cases that require opaque data stream synchronization with the real-time communications stream between browsers in an RTCWeb session. This document provides some options for temporally associating an opaque data stream with a voice/video stream as part of RTCWeb communications. Status of this Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. This document may not be modified, and derivative works of it may not be created, and it may not be published except as an Internet-Draft. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. 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." The list of current Internet-Drafts can be accessed at http://www.ietf.org/1id-abstracts.html. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire on January 30, 2013. Mandyam & Suryavanshi Expires January 30, 2013 [Page 1] Internet-Draft RTCWeb Data Stream and RTP Synchronization July 2012 Copyright Notice Copyright (c) 2012 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...................................................2 2. SCTP-Based Data Streaming......................................3 2.1. SCTP Multi-Channel Impacts................................4 3. Opaque Data Synchronization and In-band RTP Signaling..........5 4. Security Considerations........................................7 5. IANA Considerations............................................7 6. Conclusions....................................................7 7. References.....................................................7 7.1. Normative References......................................7 7.2. Informative References....................................8 8. Acknowledgments................................................8 1. Introduction The RTCWeb effort seeks to define the necessary interoperability specifications required for real-time peer-to-peer communications sessions between browsers. These communications sessions normally involve multimedia data transmission (audio, video, or both). However, RTCWeb will also include the ability for web applications to initiate data streaming sessions between browsers. One of the recommended transports for audio or video in RTCWeb sessions is real-time protocol (RTP) [I-D.-rtcweb-rtp-usage]. An RCTWeb session can include one or more RTP streams, each stream identified by an SSRC (synchronization source) included in the RTP frame header. There has been some concern about whether existing mechanisms in RTP standards allow an RTP session endpoint to be able to render Mandyam & Suryavanshi Expires January 30, 2013 [Page 2] Internet-Draft RTCWeb Data Stream and RTP Synchronization July 2012 multiple SSRC's in a time-synchronized manner [I-D.-draftalvestrand- rtcweb-msid]. As a result, several mechanisms have been proposed that would allow an RTCWeb endpoint to definitively determine which SSRC's are temporally synchronized and must be rendered as such. Assuming the problem of associating temporally-synchronized SSRC's will be solved by one of the proposed mechanisms, there still can be cases where an SSRC may have a temporal relationship with application-generated data that would also be streamed as part of the RTCWeb session. An example is video overlay based on web touch events during a video telephony session. In this case, a web application detects an animation over the video preview window (based on the end user drawing an image using the device touch surface), and is required to send such information to the RTCWeb endpoint so that the animation can be rendered. This document discusses three approaches to synchronization of data streams, along with associated recommendations. 2. SCTP-Based Data Streaming [I-D.-jesup-rtcweb-data-protocol] describes an approach that could be adopted in RTCWeb for data streaming, leveraging the Stream Control Transmission Protocol (SCTP), and [I-D.ietf-mmusic-sctp-sdp] provides the necessary extensions to Session Description Protocol (DSP) to describe an SCTP stream. SDP is the mechanism by which multimedia sessions are described RTCWeb, usually as part of the invite or call announce. The m-line in the SDP message (as per [I-D.ietf-mmusic-sctp-sdp]) should include sufficient information to describe the SCTP session (e.g. plain SCTP, SCTP over DTLS, etc.). For example, an SDP message from an offerer at address xxx.xx.xx.xx using port yyyyy for SCTP communication, then a possible SDP offer would include m=application yyyyy SCTP * c=IN IP4 xxx.xx.xx.xx If there is an additional RTP-based media source sent by the offerer that needs synchronization with the SCTP stream, the ideal case would be to leverage existing SDP grouping mechanisms. The mid attribute of RFC 5888 could potentially be leveraged: c=IN IP4 xxx.xx.xx.xx Mandyam & Suryavanshi Expires January 30, 2013 [Page 3] Internet-Draft RTCWeb Data Stream and RTP Synchronization July 2012 a=group:LS 1 2 m=application yyyyy SCTP * a=mid:1 m=video zzzzz RTP/AVP a=mid:2 There are some issues with this approach, as highlighted in [I-D.draft- alvestrand-rtcweb-msid] (e.g. multiple SSRC's in each RTP stream). Nevertheless, SDP grouping can provide a sufficient solution to synchronizing the SCTP stream to an RTP stream as long as there is one SSRC per RTP stream. SDP grouping should also be applicable in the case where multiple SSRC's are part of the offer and are associated with a canonical name (CNAME), using the attribute guidelines of RFC 5576 (e.g. "a=ssrc: cname:" along with "a=mid:..."). 2.1. SCTP Multi-Channel Impacts [I-D.-jesup-rtcweb-data-protocol] provides an SCTP-encapsulated control protocol for the RTCWeb data channel that takes advantage of the multistreaming capabilities of SCTP. SCTP allows for individual stream identifiers and associated sequence numbers for any given data chunk. This allows for flow control on individual streams within an SCTP session. Streams are also further identified by a label attribute as defined in [I-D.-jesup-rtcweb-data-protocol] as part of the logical channel request. Since the streams are dynamic, to associate an SCTP stream at any given instant in time with an RTP session is not straightforward. In addition, SCTP can be multihomed, i.e. endpoints can be associated with more than one IP address. Some of the current unresolved issues are: a. Should the SDP attribute describing the data channel stream be based on logical channel label or SCTP stream ID? b. What is the required receiver behavior if the data channel stream identifier provided in the SDP offer does not match with information sent in-band? Note that a comparable issue also exists for RTP streams using CNAME and SSRC. In order to address these issues in a simpler manner, the following guideline is proposed for RTCWeb: the SDP grouping mechanism should not address individual streams within an SCTP session. In other words, once a temporal relationship is established between an RTP stream and an SCTP session, that relationship will apply to all streams in the SCTP session. Mandyam & Suryavanshi Expires January 30, 2013 [Page 4] Internet-Draft RTCWeb Data Stream and RTP Synchronization July 2012 3. Opaque Data Synchronization and In-band RTP Signaling Web application generated data may have a temporal relationship with an RTP-based media stream, but if is relatively infrequent and therefore requires much less throughput than the media stream itself it could make more sense to multiplex the application-specific data into the RTP stream. Sec. 5.3.1 of RFC 3550 describes the RFC Header Extension mechanism, by which an application-specific payload can be inserted into an existing RTP stream without affecting the media flow. In the RTP header, and extension bit X can be set. This indicates the existence of an extension header. 01234567890123456789012345678901 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | defined by profile | length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | header extension | | .... | Figure 1 : RTP Extension Header Referring to Figure 1, the value of 16-bit profile field in the extension header is implementation specific. This field could be used in place of the channel label in the SCTP-based data channel. Otherwise, this field can be ignored by the receiver. The signaling of the use of an extension header as the means of opaque data transfer could be agreed upon by the two RTCWeb endpoints by means of an offer/answer protocol like SDP. The outof- band signaling channel can be used to indicate to the receiver to create a data channel based on the RTP extension header. RFC 5576 can also be leveraged in this case using a new source-specific attribute 'data': a=ssrc: data The SDP exchange is not strictly required, however. This is because the SSRC of the RTP stream has already been negotiated, and the extension header is in fact really part of the RTP media stream data. Mandyam & Suryavanshi Expires January 30, 2013 [Page 5] Internet-Draft RTCWeb Data Stream and RTP Synchronization July 2012 Ideally, a message-based Data Channel API from the WebRTC specification (see [W3C.WD-webrtc-20120530]) would be leveraged by the web application in such a way that the underlying user agent would multiplex application data onto an existing RTP stream using the RTP extension header. Borrowing from the JSEP messaging flow [ID.- rtcweb-jsep], the PeerConnection setup will proceed as normal from the offerer perspective: OffererJS->OffererUA: var pc = new PeerConnection(config, null); OffererJS->OffererUA: pc.onicecandidate = onIceCandidate; OffererJS->OffererUA: pc.addStream(stream); OffererJS->OffererUA: var offer = pc.createOffer(null); OffererJS->OffererUA: pc.setLocalDescription("offer", offer); ... Answerer creates PeerConnection and sends answer AnswererUA->OffererUA: // Send opaque data from Offerer to Answerer OffererJS->OffererUA: var chan = pc.createDataChannel(10); // Numeric label means opaque data to be sent with extension header OffererJS->OffererUA: chan.send("Some Payload"); AnswererUA->OffererUA: with extension header AnswererUA->AnswererJS: pc.ondatachannel = function({...}); // Answerer creates DataChannel listener on existing PeerConnection based upon firing of onDataChannel event OffererUA->OffererJS: datachannellistener.onmessage({}); Note that in the approach above, the creation of a data channel with a numeric label is what triggers the OffererUA to use the extension header. The numeric label can be directly sent as part of the profile field in the extension header (provided that the numeric label does not exceed 16 bits) The initial receipt of RTP data with an extension header triggers the onDataChannel event to fire from the AnswererUA. 3.1. Other Uses of the RTP Extension Header Section 5.2 of [I-D.-rtcweb-rtp-usage] clearly discusses (but does not call for requiring) additional uses of the RTP extension header. These uses include a rapid synchronization feature (which allows timing metadata to be inserted into the RTP stream), client-to-mixer audio level, and mixer-to-client audio level. The profile space Mandyam & Suryavanshi Expires January 30, 2013 [Page 6] Internet-Draft RTCWeb Data Stream and RTP Synchronization July 2012 that may be consumed by these uses of the header extension can be avoided for RTCWeb logical data channels that also use the header extension. 4. Security Considerations TBD. 5. IANA Considerations TBD. 6. Conclusions The ability to send and receive opaque data streams that are syncronized to existing RTP media sessions will greatly enhance RTCWeb. It will open up a several new possibilities for user interactions around telephony sessions (video or voice). The existing specifications in both the W3C and IETF do not address how such a feature would be implemented. This document provided two methods for achieving this feature that leveraged as much as possible the specifications currently under consideration in RTCWeb and the W3C. 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. [RFC2234] Crocker, D. and Overell, P.(Editors), "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, Internet Mail Consortium and Demon Internet Ltd., November 1997. [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session Description Protocol", RFC 4566, July 2006. [RFC5576] Lennox, J., Ott, J., and T. Schierl, "Source-Specific Media Attributes in the Session Description Protocol (SDP)", RFC 5576, June 2009. [RFC5888] Camarillo, G. and H. Schulzrinne, "The Session DescriptionProtocol (SDP) Grouping Framework", RFC 5888, June 2010. Mandyam & Suryavanshi Expires January 30, 2013 [Page 7] Internet-Draft RTCWeb Data Stream and RTP Synchronization July 2012 [RFC6222] Begen, A.,Perkins, C. and D. Wing, "Guidelines for Choosing RTP Control Protocol (RTCP) Canonical Names", RFC 6222, April 2011. [RFC5576] Lennox, J., Ott, J., and T. Schierl, "Source-Specific Media Attributes in the Session Description Protocol (SDP)", RFC 5576, June 2009. [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, "RTP: A Transport Protocol for Real Time Communications", RFC 3550, July 2003. [I-D.-rtcweb-rtp-usage] Perkins, C., Westerlund, M. and J. Ott, "Web Real-Time Communication (WebRTC): Media Transport and Use of RTP", draft-ietf-rtcweb-rtp-usage-03, June 2012. [W3C.WD-webrtc-20120530] Bergkvist, A., Burnett, D., Narayanan, A., and C. Jennings, "WebRTC 1.0: Real-time Communication Between Browsers", World Wide Web Consortium WD WD-webrtc20120209, Editor's Draft, 30 May 2012. [I-D.-rtcweb-jsep] Uberti, J. and C. Jennings, "Javascript Session Establishment Protocol", draft-ietf-rtcweb-jsep-01, June 2012. 7.2. Informative References [I-D.-jesup-rtcweb-data-protocol] Jesup, R., Loreto, S. and M. Tuexen, "WebRTC Data Channel Protocol", draft-jesuprtcweb- data-protocol-01, June 2012. [I-D.-draft-alvestrand-rtcweb-msid] Alverstand, H., "Cross Session Stream Identification in the Session Description Protocol", draft-alvestrand-rtcweb-msid-02, May 2012. [I-D.ietf-mmusic-sctp-sdp] Loreto, S. and G. Camarillo, "Stream Control Transmission Protocol (SCTP)-Based Media Transport in the Session Description Protocol (SDP)", draft-ietfmmusic- sctp-sdp-01(work in progress), March 2012. 8. Acknowledgments This document was prepared using 2-Word-v2.0.template.dot. Mandyam & Suryavanshi Expires January 30, 2013 [Page 8] Internet-Draft RTCWeb Data Stream and RTP Synchronization July 2012 Authors' Addresses Giridhar Mandyam Qualcomm Innovation Center 5775 Morehouse Drive San Diego, CA 92121 USA Email: mandyam@quicinc.com Vijay Suryavanshi Qualcomm Inc. 5775 Morehouse Drive San Diego, CA 92121 USA Email: vsuryava@qualcomm.com Mandyam & Suryavanshi Expires January 30, 2013 [Page 9]