Network Working Group A. Roach Internet-Draft Mozilla Intended status: Standards Track S. Nandakumar Expires: November 3, 2016 Cisco Systems P. Thatcher Google May 02, 2016 RTP Stream Identifier Source Description (SDES) draft-ietf-avtext-rid-02 Abstract This document defines and registers two new RTCP SDES items. One, named RtpStreamId, is used for unique identification of RTP streams. The other, RepairedRtpStreamId, can be used to identify which stream a redundancy RTP stream is to be used to repair. 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 November 3, 2016. Copyright Notice Copyright (c) 2016 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 Roach, et al. Expires November 3, 2016 [Page 1] Internet-Draft RtpStreamId SDES May 2016 the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. Usage of RtpStreamId and RepairedRtpStreamId in RTP and RTCP 3 3.1. RTCP 'RtpStreamId' SDES Extension . . . . . . . . . . . . 4 3.2. RTCP 'RepairedRtpStreamId' SDES Extension . . . . . . . . 4 3.3. RTP 'RtpStreamId' and 'RepairedRtpStreamId' Header Extensions . . . . . . . . . . . . . . . . . . . . . . . 4 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5 4.1. New RtpStreamId SDES item . . . . . . . . . . . . . . . . 5 4.2. New RepairRtpStreamId SDES item . . . . . . . . . . . . . 5 5. Security Considerations . . . . . . . . . . . . . . . . . . . 5 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 6 7.1. Normative References . . . . . . . . . . . . . . . . . . 6 7.2. Informative References . . . . . . . . . . . . . . . . . 6 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 6 1. Introduction RTP sessions frequently consist of multiple streams, each of which is identified at any given time by its SSRC; however, the SSRC associated with a stream is not guaranteed to be stable over its lifetime. Within a session, these streams can be tagged with a number of identifiers, including CNAMEs and MSIDs [I-D.ietf-mmusic-msid]. Unfortunately, none of these have the proper ordinality to refer to an individual stream; all such identifiers can appear in more than one stream at a time. While approaches that use unique Payload Types (PTs) per stream have been used in some applications, this is a semantic overloading of that field, and one for which its size is inadequate: in moderately complex systems that use PT to uniquely identify every potential combination of codec configuration and unique stream, it is possible to simply run out of values. To address this situation, we define a new RTCP SDES identifier, RtpStreamId, that uniquely identifies a single RTP stream. A key motivator for defining this identifier is the ability to differentiate among different encodings of a single Source Stream that are sent simultaneously (i.e., simulcast). This need for unique identification extends to dependent streams (i.e., layers used by a layered codec). Roach, et al. Expires November 3, 2016 [Page 2] Internet-Draft RtpStreamId SDES May 2016 At the same time, when redundancy RTP streams are in use, we also need an identifier that connects such streams to the RTP stream for which they are providing redundancy. For this purpose, we define an additional SDES identifier, RepairedRtpStreamId. This identifier can appear only in packets associated with a redundancy RTP stream. They carry the same value as the RtpStreamId of the RTP stream that the redundant RTP stream is correcting. 2. Terminology In this document, the terms "source stream", "encoded stream," "RTP stream", "source RTP stream", "dependent stream", "received RTP stream", and "redundancy RTP stream" are used as defined in [RFC7656]. 3. Usage of RtpStreamId and RepairedRtpStreamId in RTP and RTCP The RTP fixed header includes the payload type number and the SSRC values of the RTP stream. RTP defines how you de-multiplex streams within an RTP session; however, in some use cases, applications need further identifiers in order to effectively map the individual RTP Streams to their equivalent payload configurations in the SDP. This specification defines two new RTCP SDES items [RFC3550]. The first item is 'RtpStreamId', which is used to carry RTP stream identifiers within RTCP SDES packets. This makes it possible for a receiver to associate received RTP packets (identifying the RTP stream) with a media description having the format constraint specified. The second is 'RepairedRtpStreamId', which can be used in redundancy RTP streams to indicate the RTP stream repaired by a redundancy RTP stream. To be clear: the value carried in a RepairedRtpStreamId will always match the RtpStreamId value from another RTP stream in the same session. For example, if a source RTP stream is identified by RtpStreamId "A", then any redundancy RTP stream that repairs that source RTP stream will contain a RepairedRtpStreamId of "A" (if this mechanism is being used to perform such correlation). These redundant RTP streams may also contain their own unique RtpStreamId. This specification also uses the RTP header extension for RTCP SDES items [I-D.ietf-avtext-sdes-hdr-ext] to allow carrying RtpStreamId and RepairedRtpStreamId values in RTP packets. This allows correlation at stream startup, or after stream changes where the use of RTCP may not be sufficiently responsive. Roach, et al. Expires November 3, 2016 [Page 3] Internet-Draft RtpStreamId SDES May 2016 3.1. RTCP 'RtpStreamId' SDES Extension 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |RtpStreamId=TBD| length | RtpStreamId ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The RtpStreamId payload is UTF-8 encoded and is not null-terminated. RFC EDITOR NOTE: Please replace TBD with the assigned SDES identifier value. 3.2. RTCP 'RepairedRtpStreamId' SDES Extension 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Repaired...=TBD| length | RepairRtpStreamId ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The RepairedRtpStreamId payload is UTF-8 encoded and is not null- terminated. RFC EDITOR NOTE: Please replace TBD with the assigned SDES identifier value. 3.3. RTP 'RtpStreamId' and 'RepairedRtpStreamId' Header Extensions Because recipients of RTP packets will typically need to know which streams they correspond to immediately upon receipt, this specification also defines a means of carrying RtpStreamId and RepairedRtpStreamId identifiers in RTP extension headers, using the technique described in [I-D.ietf-avtext-sdes-hdr-ext]. As described in that document, the header extension element can be encoded using either the one-byte or two-byte header, and the identification-tag payload is UTF-8 encoded, as in SDP. As the identifier is included in an RTP header extension, there should be some consideration given to the packet expansion caused by the identifier. To avoid Maximum Transmission Unit (MTU) issues for the RTP packets, the header extension's size needs to be taken into account when the encoding media. Note that set of header extensions included in the packet needs to be padded to the next 32-bit boundary [RFC5285]. Roach, et al. Expires November 3, 2016 [Page 4] Internet-Draft RtpStreamId SDES May 2016 In many cases, a one-byte identifier will be sufficient to distinguish streams in a session; implementations are strongly encouraged to use the shortest identifier that fits their purposes. 4. IANA Considerations 4.1. New RtpStreamId SDES item RFC EDITOR NOTE: Please replace RFCXXXX with the RFC number of this document. RFC EDITOR NOTE: Please replace TBD with the assigned SDES identifier value. This document adds the RtpStreamId SDES item to the IANA "RTCP SDES item types" registry as follows: Value: TBD Abbrev.: RtpStreamId Name: RTP Stream Identifier Reference: RFCXXXX 4.2. New RepairRtpStreamId SDES item RFC EDITOR NOTE: Please replace RFCXXXX with the RFC number of this document. RFC EDITOR NOTE: Please replace TBD with the assigned SDES identifier value. This document adds the MID SDES item to the IANA "RTCP SDES item types" registry as follows: Value: TBD Abbrev.: RepairedRtpStreamId Name: Repaired RTP Stream Identifier Reference: RFCXXXX 5. Security Considerations The actual identifiers used for RtpStreamIds (and therefore RepairedRtpStreamIds) are expected to be opaque. As such, they are not expected to contain information that would be sensitive, were it observed by third-parties. Roach, et al. Expires November 3, 2016 [Page 5] Internet-Draft RtpStreamId SDES May 2016 6. Acknowledgements Many thanks for review and input from Cullen Jennings, Magnus Westerlund, Colin Perkins, Peter Thatcher, Jonathan Lennox, and Paul Kyzivat. 7. References 7.1. Normative References [I-D.ietf-avtext-sdes-hdr-ext] Westerlund, M., Burman, B., Even, R., and M. Zanaty, "RTP Header Extension for RTCP Source Description Items", draft-ietf-avtext-sdes-hdr-ext-06 (work in progress), April 2016. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ RFC2119, March 1997, . [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, July 2003, . [RFC5285] Singer, D. and H. Desineni, "A General Mechanism for RTP Header Extensions", RFC 5285, DOI 10.17487/RFC5285, July 2008, . [RFC7656] Lennox, J., Gross, K., Nandakumar, S., Salgueiro, G., and B. Burman, Ed., "A Taxonomy of Semantics and Mechanisms for Real-Time Transport Protocol (RTP) Sources", RFC 7656, DOI 10.17487/RFC7656, November 2015, . 7.2. Informative References [I-D.ietf-mmusic-msid] Alvestrand, H., "WebRTC MediaStream Identification in the Session Description Protocol", draft-ietf-mmusic-msid-13 (work in progress), April 2016. Authors' Addresses Roach, et al. Expires November 3, 2016 [Page 6] Internet-Draft RtpStreamId SDES May 2016 Adam Roach Mozilla Email: adam@nostrum.com Suhas Nandakumar Cisco Systems Email: snandaku@cisco.com Peter Thatcher Google Email: pthatcher@google.com Roach, et al. Expires November 3, 2016 [Page 7]