MMUSIC WG R. Even Internet-Draft Huawei Technologies Intended status: Informational J. Lennox Expires: October 13, 2014 Vidyo Q. Wu Huawei Technologies April 11, 2014 The Session Description Protocol (SDP) Application Token Attribute draft-even-mmusic-application-token-03.txt Abstract The RTP fixed header includes the payload type number and the SSRC values of the RTP stream. RTP defines how to de-multiplex streams within an RTP session, but in some use cases applications need further identifiers in order to identify the signaling descriptions associated with particular RTP media streams. This document defines a mechanism to provide the mapping between the SSRCs of RTP streams and the SDP m-line description by defining extensions to RTP and RTCP messages. 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 October 13, 2014. 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 Even, et al. Expires October 13, 2014 [Page 1] Internet-Draft SDP application token April 2014 (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 . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 3. Proposal for Application ID . . . . . . . . . . . . . . . . . 4 3.1. appId token . . . . . . . . . . . . . . . . . . . . . . . 5 3.1.1. RTCP SDES message . . . . . . . . . . . . . . . . . . 7 3.1.2. RTP Header Extension . . . . . . . . . . . . . . . . . 8 3.1.3. recv-appId . . . . . . . . . . . . . . . . . . . . . . 8 4. Using Application ID token in Offer / Answer . . . . . . . . . 9 5. Other Considerations . . . . . . . . . . . . . . . . . . . . . 10 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 12 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 8. Security Considerations . . . . . . . . . . . . . . . . . . . 12 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 12 9.1. Normative References . . . . . . . . . . . . . . . . . . . 12 9.2. Informative References . . . . . . . . . . . . . . . . . . 13 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 14 Even, et al. Expires October 13, 2014 [Page 2] Internet-Draft SDP application token April 2014 1. Introduction The RTP [RFC3550] header includes the payload type number and the SSRC values of the RTP stream. RTP defines how to de-multiplex streams within an RTP session, but in some use cases, applications need further identifiers in order to map an RTP media stream to its SDP m-line description. SDP [RFC4566] can be used to describe multiple RTP media streams in one or more m-lines that define a single SSRC multiplexed RTP session (as specified in [RFC3550]). This addresses the WebRTC architecture [I-D.ietf-rtcweb-overview]. A Unified Plan for Using SDP with Large Numbers of Media Flows [I-D.roach-mmusic-unified-plan] proposes that each m-line will represent a media source [I-D.ietf-avtext-rtp-grouping-taxonomy]. In the simple case a media source will be one video or audio RTP stream. Media source description becomes more complicated when, for robust applications, techniques like retransmission (RTX) and Forward Error Correction (FEC) are used to protect media, or simulcast or layered coding can be used to provide support to heterogeneous receivers. In these cases a media source may send more than one RTP stream: for example, a scalable video stream base layer, an enhancement layer and a FEC stream. Multiple SDP m-lines can be multiplexed to a single RTP session using [I-D.ietf-mmusic-sdp-bundle-negotiation]. The same payload type number can be used in multiple bundled m-lines. An [RFC3264] offerer may receive an RTP media stream before the SDP answer, and if the same payload type number is used in multiple bundled m-lines, the offerer will not be able to associate incoming media using that pt number to a specific m-line. Some applications may require more information about the usage of the RTP streams: for example, RTP streams from different cameras that need to be identified by the application in order to render them correctly, or a source that can send multiple versions of the same stream in different resolutions (i.e. simulcast [I-D.westerlund-avtcore-rtp-simulcast]). A selective forwarding middlebox as described in RTP topologies section 3.7 [topologies] may project the RTP stream from the source to the destination and forward new SSRCs without any signaling. A three camera telepresence system may send two video media stream of the two recent active speakers to a system with two monitors. In this case it may send first the video from the left and center camera (this will cause the video from the center camera to be displayed on Even, et al. Expires October 13, 2014 [Page 3] Internet-Draft SDP application token April 2014 the right) and later the video from the center and right camera (this will cause the video from the center camera to be displayed on the left). The SSRC of the video stream from the center camera will remain the same but the mapping to the stream description will change. As discussed in [I-D.roach-mmusic-unified-plan] during call establishment, circumstances may arise under which an endpoint can send an offer to receive a new stream, and begin receiving media for that media stream prior to receiving the SDP that correlates its SSRC to the m-line. For such cases, the endpoint will not know how to handle the media, and will most probably be forced to discard it. 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[RFC2119] and indicate requirement levels for compliant RTP implementations. 3. Proposal for Application ID As we saw in the introduction, the SSRC of the RTP stream which should be created by the RTP layer is used by the SDP in the offer to map an RTP stream description to the SDP description. There are cases where the SSRCs of the RTP streams may not be available or do not provide all the required information. There is a need to have a token that will allow the mapping between a single RTP stream configuration in an m-line to the actual RTP media stream. For example, stream1 is the RTP stream from the left camera and stream2 is the RTP stream from the right camera and stream3 is the FEC stream that protects both streams. There is also a need for a token that will allow the offerer to correlate a received RTP stream to an SDP m-line before receiving the answer from the remote side. In order to address these requirements this document defines an SDP token attribute appId that provides a level of indirection for the binding. The actual binding is done in RTP by associating the appId with an SSRC using a new RTCP SDES message and a new RTP header extension that define the mapping from appId to a specific SSRC. Having the binding in RTP/RTCP allows the RTP layer to change the SSRC of a media stream by sending a new binding message (SDES an RTP header extension) without a need to have an SDP level offer/answer Even, et al. Expires October 13, 2014 [Page 4] Internet-Draft SDP application token April 2014 exchange. For the case when the offerer receives an RTP stream before the SDP answer, we define a new optional attribute recv-appId to be used for correlating this received RTP stream. Note: the name appId does not represent the token functionality very well. We are looking for a better name (SSID source stream ID was proposed on the mailing list but is also well know for wifi networks) 3.1. appId token AppId is a general-purpose token associated with an RTP stream, allowing the binding of the SDP representation to an SSRC. The token is chosen by the sender, and represents the RTP stream that will be sent to the receiver. The proposed token can be sent using SDP, RTCP SDES messages [RFC3550], or an RTP header extension [RFC5285] The SSRC mapping may be available to the receiver when receiving the RTP stream through the RTP header extension, but may also be available ahead of time via an RTCP SDES message conveyed before the source starts sending, even if the receiver has not seen any RTP packets from this source (as in a multipoint conference). The receiver can receive new sources that may be of two kinds. o A new RTP stream replacing an existing RTP stream, in which case the AppId of the replaced RTP stream will be assigned to the new SSRC. o A new RTP stream requiring a different AppId, for example, when adding a presentation stream to an existing call with two video cameras from a room. The solution supports an RTP session as described using SDP. The RTP session may use Bundle [I-D.ietf-mmusic-sdp-bundle-negotiation] with more than one m-line. In this case, if the SSRCs of all RTP streams are not known in advance, the AppIds associated with each m-line need to be available to the media receiver in order to map each SSRC to a specific m-line configuration. The appIds MUST be unique in an SDP session. Editor Note (is this required?): It is preferable that they will be unique in an RTP session which is not a problem in a point to point call or in a multipoint conference with a central signaling point. Even, et al. Expires October 13, 2014 [Page 5] Internet-Draft SDP application token April 2014 The document defines a new SDP media level attribute a=appId that can be used to list all the appIds that an application may use. The appId syntax provides a token identifier. Each value of the AppId maps to one SSRC at a time. When a new SSRC is mapped to an existing AppId using an RTP header extension or SDES message, it replaces the previous RTP stream for this application usage. The definition is a=appId:token a=appId:token a=appId:token : The formal representation of the appId token is: appId-attribute = "appId:" token *[WSP attribute] attribute =/ appId-attr ; The base definition of "attribute" is in [RFC4566]. ; (It is the content of "a=" lines.) ; WSP and DIGIT defined in [RFC5234] ; token defined in [RFC4566] AppId attributes are not defined in this specification but are provided for future extensibility. (TODO: define an IANA registry for them.) Examples: The SDP offer specifies an appId that will be used for mapping to specific SSRCs. The example shows two RTP streams having different content [RFC4796] with the same payload type number. The appId can be used to identify the content of the RTP stream. a=group:BUNDLE m1 m2 m=video 49200 RTP/AVP 99 a=rtpmap:99 H264/90000 a=mid:m1 a=content:main a=appId:2 m=video 49200 RTP/AVP 99 a=rtpmap:99 H264/90000 a=mid:m2 a=content:alt a=appId:3 The second example is when the application usage of the RTP stream is Even, et al. Expires October 13, 2014 [Page 6] Internet-Draft SDP application token April 2014 specified using SDP to specify different content [RFC4796] , and each RTP stream has a Retransmission stream. The media receiver can map the received SSRC of the RTP stream or the retransmission to the specific content based on the appId. a=group:BUNDLE m1 m2 m=video 49200 RTP/AVP 97,98 a=rtpmap:98 H264/90000 a=mid:m1 a=content:main a=rtpmap:97 rtx/90000 a=fmtp:97 apt=98;rtx-time=3000 a=appId:2 a=appId:3 m=video 49200 RTP/AVP 97,98 a=rtpmap:98 H264/90000 a=mid:m2 a=content:alt a=rtpmap:97 rtx/90000 a=fmtp:97 apt=98;rtx-time=3000 a=appId:4 a=appId:5 In this example, the SDP signaling does not provide enough information to establish which appId value will be used for the H.264 encoded stream, and which will be used for the RTX retransmission stream. However, it does establish the relationships among the streams identified by appId values, allowing the receiver to properly associate the related streams once it receives them. 3.1.1. RTCP SDES message This document specifies a new RTCP SDES message 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AppId = XXX | length |AppId token +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | .... This AppId is the same token as defined in the new SDP attribute and is also used in the RTP header extension. This SDES message MAY be sent in a compound RTCP packet based on the application need. Editor Note: Need guidance on how often the SDES message should be Even, et al. Expires October 13, 2014 [Page 7] Internet-Draft SDP application token April 2014 sent. 3.1.2. RTP Header Extension The Application ID is carried within the RTP header extension field, using [RFC5285] two bytes header extension. Support is negotiated within the SDP, i.e. a=extmap:1 urn:ietf:params:rtp-hdrext:AppId Packets tagged by the sender with the AppId then contain a header extension as shown below 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ID=1 | Len-1 | AppId +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | AppID .............. | +-+-+-+-+-+-+-+-+ To add or modify the AppId by an intermediary can be an expensive operation, particularly if SRTP is used to authenticate the packet. Modification to the contents of the RTP header requires a re- authentication of the complete packet, and this could prove to be a limiting factor in the throughput of a multipoint device. There is no need to send the AppId header extension with all RTP packets. Senders MAY choose to send it only when a new SSRC is sent, or when an SSRC changes its association to an AppId. If such a mode is being used, the header extension SHOULD be sent in the first few RTP packets to reduce the risk of losing it due to packet loss. For codecs with decoder refresh points (such as I-Frames in video codecs), senders also SHOULD send the AppId header extension along with the packets carrying the decoder refresh. 3.1.3. recv-appId An offer may include a recv-appId attribute allowing the offerer to request from the answerer to use this token for the RTP stream sent from the answerer for a sendrecv or recvonly RTP stream. This is important in order to support early media from the answerer that may be received by the offerer before the answer SDP arrives. The answerer should use the recv-appId as the token in the RTCP SDES and RTP header extension for the RTP stream sent to the offerer. Even, et al. Expires October 13, 2014 [Page 8] Internet-Draft SDP application token April 2014 The formal representation of the appId token is: appId-attribute = "recv-appId:" token ; The base definition of "attribute" is in [RFC4566]. ; (It is the content of "a=" lines.) An example of an offer using bundle with two video streams using the same payload type number: a=group:BUNDLE m1 m2 m=video 49200 RTP/AVP 99 a=rtpmap:99 H264/90000 a=mid:m1 a=content:main a=appId:2 a=recv-appId:4 m=video 49200 RTP/AVP 99 a=rtpmap:99 H264/90000 a=mid:m2 a=content:alt a=appId:3 a=recv-appId:5 4. Using Application ID token in Offer / Answer The appId may be used in offer answer. Some use cases are provided. They only show part of the SDP that can demonstrate the usage. A simple case is when each SDP m-line describes one RTP stream and the m-lines are bundled . The recv-appId is offered so when the offerer sees an RTP stream with appId token value 10 it knows it is the main video. The offer is: a=group:BUNDLE m1 m2 m=video 49200 RTP/AVP 98 a=rtpmap:98 H264/90000 a=mid:m1 a=content:main a=appId:2 a=recv-appId:10 m=video 49200 RTP/AVP 99 a=rtpmap:99 H264/90000 a=mid:m2 a=content:alt a=appId:3 Even, et al. Expires October 13, 2014 [Page 9] Internet-Draft SDP application token April 2014 a=recv-appId:20 An offerer sending a BUNDLE group MUST indicate at least one recv- appId for every RTP m=line in the group on which it could receive media (i.e., for every m-line which is marked a=sendrecv (possibly implicitly) or a=recvonly. On m-lines whose configuration is such that multiple packet streams are expected to be sent simultaneously (e.g., one with rtx or fec payload types configured), the offerer MUST specify as many recv-appId values as the number of simultaneous packet streams. Additionally, an offerer sending a BUNDLE group MUST indicate at least one appId for every m= line on which it expects to send media (i.e., every a=sendrecv or a=sendonly m= line), and MUST send multiple appIds for m= lines on which it expects to send multiple packet streams simultaneously. An answerer, receiving an offer containing appId or recv-appId attributes, MUST respond with mirrored recv-appId and appId values for the subset of m= lines and packet streams indicated in the answer, maintaining the same recv-appId and appId values. In subsequent offers, appId and recv-appId values SHOULD be maintained per m=line unless the offer is recycling the m=line for a fundamentally new purpose, in which case new appId and recv-appId values SHOULD be used. AppId and recv-appId values MUST NOT be reused, in the same session, for a different m= line than the one to which they were originally assigned, unless at least two times the maximum segment lifetime (MSL) has passed since the previous offer/ answer exchange in which the values were used. 5. Other Considerations During the work on the document we identified that there are two different problems that we were trying to address. One has to do with mapping the RTP stream to an m-line addressed in the current version of the document. The other problem is to provide semantics to an RTP stream description in the SDP description for the cases where the SSRC of the RTP stream is not known to the SDP signaling layer and we also identified issues not addressed by the SSRC attribute [RFC5576]. A single RTP media stream can be identified in SDP by using the SSRC attribute [RFC5576]. Relations between RTP streams in the same session can be specified using the ssrc-group attribute [RFC5576]. Using the SSRC to identify RTP streams in an SDP session assumes that this information is available to the SDP signaling layer. The SSRC Even, et al. Expires October 13, 2014 [Page 10] Internet-Draft SDP application token April 2014 is RTP layer information and may change in the RTP layer during a session. Support of FEC, SVC and simulcast brings more requirements as explained using the following examples. The following example is of a unified plan [I-D.roach-mmusic-unified-plan] offer of one audio source and one video source. The video source includes two SVC RTP streams a base layer and an enhancement layer. There are also two FEC options: Base layer S1 is protected by FEC repair stream R1 Base Layer S1 and Enhancement layer S2 are protected by FEC repair stream R2. This enables the answer to select the base layer with R1 or the Base + enhancement layers both protected by R2. This example uses the SSRC and SSRC-GROUP attributes which requires the pre-knowledge of the SSRCs that are RTP layer values. SDP Offer: v=0 o=- 20518 0 IN IP4 198.51.100.1 s=FEC Grouping Semantics for SSRC Multiplexing t=0 0 c=IN IP4 203.0.113.1 a=group:BUNDLE m1 m2 m=audio 56600 RTP/SAVPF 0 109 a=msid:ma ta a=mid:m1 a=ssrc:53280 a=rtpmap:0 PCMU/8000 a=rtpmap:109 opus/48000 m=video 56602 RTP/AVPF 100 101 110 111 - Main camera a=msid:ma tb a=mid:m2 a=rtpmap:100 H264/90000 - Base layer a=rtpmap:101 H264-SVC/90000 - Enhancement layer. a=depend:101 lay L1:100 - dependencies a=rtpmap:110 1d-interleaved-parityfec/90000 a=fmtp:110 L=5; D=10; repair-window=200000 a=rtpmap:111 1d-interleaved-parityfec/90000 a=fmtp:111 L=10; D=10; repair-window=400000 a=ssrc:1000 cname:MSTFEC@example.com Even, et al. Expires October 13, 2014 [Page 11] Internet-Draft SDP application token April 2014 a=ssrc:1010 cname:MSTFEC@example.com a=ssrc:2110 cname:MSTFEC@example.com a=ssrc:2120 cname:MSTFEC@example.com a=ssrc-group:FEC-FR 1000 2110 a=ssrc-group:FEC-FR 1000 1010 2120 a=ssrc-group:DDP 1000 1010 In this case all video streams are from the same source and can be described using a single m-line. The grouping relations are specified using the SSRCs values that need to be available in the offer. It is also not clear based on the offer which rtpmap line corresponds to each of the a=ssrc lines, e.g. which rtpmap line will be sent using ssrc = 2110. The answerer can deduce the information based on analyzing the ssrc-group information but there can be case that it will not be possible.. Note: These issues will be addressed in a separate document based on the feedback from the working group that even though these are real issues they should have a separate solution in order to differentiate between the token and the semantics needed. 6. Acknowledgements Place Holder 7. IANA Considerations TBD 8. Security Considerations TBD. 9. References 9.1. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", STD 64, RFC 3550, July 2003. Even, et al. Expires October 13, 2014 [Page 12] Internet-Draft SDP application token April 2014 [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008. [RFC5285] Singer, D. and H. Desineni, "A General Mechanism for RTP Header Extensions", RFC 5285, July 2008. 9.2. Informative References [I-D.ietf-avtext-rtp-grouping-taxonomy] Lennox, J., Gross, K., Nandakumar, S., and G. Salgueiro, "A Taxonomy of Grouping Semantics and Mechanisms for Real- Time Transport Protocol (RTP) Sources", draft-ietf-avtext-rtp-grouping-taxonomy-01 (work in progress), February 2014. [I-D.ietf-mmusic-sdp-bundle-negotiation] Holmberg, C., Alvestrand, H., and C. Jennings, "Multiplexing Negotiation Using Session Description Protocol (SDP) Port Numbers", draft-ietf-mmusic-sdp-bundle-negotiation-06 (work in progress), April 2014. [I-D.ietf-rtcweb-overview] Alvestrand, H., "Overview: Real Time Protocols for Brower- based Applications", draft-ietf-rtcweb-overview-09 (work in progress), February 2014. [I-D.roach-mmusic-unified-plan] Roach, A., Uberti, J., and M. Thomson, "A Unified Plan for Using SDP with Large Numbers of Media Flows", draft-roach-mmusic-unified-plan-00 (work in progress), July 2013. [I-D.westerlund-avtcore-rtp-simulcast] Westerlund, M., Lindqvist, M., and F. Jansson, "Using Simulcast in RTP Sessions", draft-westerlund-avtcore-rtp-simulcast-03 (work in progress), October 2013. [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with Session Description Protocol (SDP)", RFC 3264, June 2002. [RFC3388] Camarillo, G., Eriksson, G., Holler, J., and H. Schulzrinne, "Grouping of Media Lines in the Session Description Protocol (SDP)", RFC 3388, December 2002. [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session Even, et al. Expires October 13, 2014 [Page 13] Internet-Draft SDP application token April 2014 Description Protocol", RFC 4566, July 2006. [RFC4756] Li, A., "Forward Error Correction Grouping Semantics in Session Description Protocol", RFC 4756, November 2006. [RFC4796] Hautakorpi, J. and G. Camarillo, "The Session Description Protocol (SDP) Content Attribute", RFC 4796, February 2007. [RFC5576] Lennox, J., Ott, J., and T. Schierl, "Source-Specific Media Attributes in the Session Description Protocol (SDP)", RFC 5576, June 2009. Authors' Addresses Roni Even Huawei Technologies Tel Aviv, Israel Email: roni.even@mail01.huawei.com Jonathan Lennox Vidyo, Inc. 433 Hackensack Avenue Seventh Floor Hackensack, NJ 07601 US Email: jonathan@vidyo.com Qin Wu Huawei Technologies Email: bill.wu@huawei.com Even, et al. Expires October 13, 2014 [Page 14]