idnits 2.17.1 draft-ietf-avtext-rid-09.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. 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 06, 2016) is 2752 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) == Outdated reference: A later version (-54) exists of draft-ietf-mmusic-sdp-bundle-negotiation-32 ** Obsolete normative reference: RFC 5285 (Obsoleted by RFC 8285) ** Downref: Normative reference to an Informational RFC: RFC 7656 == Outdated reference: A later version (-17) exists of draft-ietf-mmusic-msid-15 Summary: 2 errors (**), 0 flaws (~~), 3 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group A. Roach 3 Internet-Draft Mozilla 4 Intended status: Standards Track S. Nandakumar 5 Expires: April 9, 2017 Cisco Systems 6 P. Thatcher 7 Google 8 October 06, 2016 10 RTP Stream Identifier Source Description (SDES) 11 draft-ietf-avtext-rid-09 13 Abstract 15 This document defines and registers two new RTCP Stream Identifier 16 Source Description (SDES) items. One, named RtpStreamId, is used for 17 unique identification of RTP streams. The other, 18 RepairedRtpStreamId, can be used to identify which stream a 19 redundancy RTP stream is to be used to repair. 21 Status of This Memo 23 This Internet-Draft is submitted in full conformance with the 24 provisions of BCP 78 and BCP 79. 26 Internet-Drafts are working documents of the Internet Engineering 27 Task Force (IETF). Note that other groups may also distribute 28 working documents as Internet-Drafts. The list of current Internet- 29 Drafts is at http://datatracker.ietf.org/drafts/current/. 31 Internet-Drafts are draft documents valid for a maximum of six months 32 and may be updated, replaced, or obsoleted by other documents at any 33 time. It is inappropriate to use Internet-Drafts as reference 34 material or to cite them other than as "work in progress." 36 This Internet-Draft will expire on April 9, 2017. 38 Copyright Notice 40 Copyright (c) 2016 IETF Trust and the persons identified as the 41 document authors. All rights reserved. 43 This document is subject to BCP 78 and the IETF Trust's Legal 44 Provisions Relating to IETF Documents 45 (http://trustee.ietf.org/license-info) in effect on the date of 46 publication of this document. Please review these documents 47 carefully, as they describe your rights and restrictions with respect 48 to this document. Code Components extracted from this document must 49 include Simplified BSD License text as described in Section 4.e of 50 the Trust Legal Provisions and are provided without warranty as 51 described in the Simplified BSD License. 53 Table of Contents 55 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 56 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 57 3. Usage of RtpStreamId and RepairedRtpStreamId in RTP and RTCP 3 58 3.1. RTCP 'RtpStreamId' SDES Extension . . . . . . . . . . . . 5 59 3.2. RTCP 'RepairedRtpStreamId' SDES Extension . . . . . . . . 5 60 3.3. RTP 'RtpStreamId' and 'RepairedRtpStreamId' Header 61 Extensions . . . . . . . . . . . . . . . . . . . . . . . 5 62 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 63 4.1. New RtpStreamId SDES item . . . . . . . . . . . . . . . . 6 64 4.2. New RepairRtpStreamId SDES item . . . . . . . . . . . . . 6 65 4.3. New RtpStreamId Header Extension URI . . . . . . . . . . 7 66 4.4. New RepairRtpStreamId Header Extension URI . . . . . . . 7 67 5. Security Considerations . . . . . . . . . . . . . . . . . . . 7 68 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 8 69 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 70 7.1. Normative References . . . . . . . . . . . . . . . . . . 8 71 7.2. Informative References . . . . . . . . . . . . . . . . . 9 72 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 74 1. Introduction 76 RTP sessions frequently consist of multiple streams, each of which is 77 identified at any given time by its SSRC; however, the SSRC 78 associated with a stream is not guaranteed to be stable over its 79 lifetime. Within a session, these streams can be tagged with a 80 number of identifiers, including CNAMEs and MSIDs 81 [I-D.ietf-mmusic-msid]. Unfortunately, none of these have the proper 82 ordinality to refer to an individual stream; all such identifiers can 83 appear in more than one stream at a time. While approaches that use 84 unique Payload Types (PTs) per stream have been used in some 85 applications, this is a semantic overloading of that field, and one 86 for which its size is inadequate: in moderately complex systems that 87 use PT to uniquely identify every potential combination of codec 88 configuration and unique stream, it is possible to simply run out of 89 values. 91 To address this situation, we define a new RTCP Stream Identifier 92 Source Description (SDES) identifier, RtpStreamId, that uniquely 93 identifies a single RTP stream. A key motivator for defining this 94 identifier is the ability to differentiate among different encodings 95 of a single Source Stream that are sent simultaneously (i.e., 96 simulcast). This need for unique identification extends to dependent 97 streams (e.g., where layers used by a layered codec are transmitted 98 on separate streams). 100 At the same time, when redundancy RTP streams are in use, we also 101 need an identifier that connects such streams to the RTP stream for 102 which they are providing redundancy. For this purpose, we define an 103 additional SDES identifier, RepairedRtpStreamId. This identifier can 104 appear only in packets associated with a redundancy RTP stream. They 105 carry the same value as the RtpStreamId of the RTP stream that the 106 redundant RTP stream is correcting. 108 2. Terminology 110 In this document, the terms "source stream", "RTP stream", "source 111 RTP stream", "dependent stream", "received RTP stream", and 112 "redundancy RTP stream" are used as defined in [RFC7656]. 114 The following acronyms are also used: 116 o CNAME: Canonical End-Point Identifier, defined in [RFC3550] 118 o MID: Media Identification, defined in 119 [I-D.ietf-mmusic-sdp-bundle-negotiation] 121 o MSID: Media Stream Identifier, defined in [I-D.ietf-mmusic-msid] 123 o RTCP: Real-time Transport Control Protocol, defined in [RFC3550] 125 o RTP: Real-time Transport Protocol, defined in [RFC3550] 127 o SDES: Source Description, defined in [RFC3550] 129 o SSRC: Synchronization Source, defined in [RFC3550] 131 3. Usage of RtpStreamId and RepairedRtpStreamId in RTP and RTCP 133 The RTP fixed header includes the payload type number and the SSRC 134 values of the RTP stream. RTP defines how you de-multiplex streams 135 within an RTP session; however, in some use cases, applications need 136 further identifiers in order to effectively map the individual RTP 137 Streams to their equivalent payload configurations in the SDP. 139 This specification defines two new RTCP SDES items [RFC3550]. The 140 first item is 'RtpStreamId', which is used to carry RTP stream 141 identifiers within RTCP SDES packets. This makes it possible for a 142 receiver to associate received RTP packets (identifying the RTP 143 stream) with a media description having the format constraint 144 specified. The second is 'RepairedRtpStreamId', which can be used in 145 redundancy RTP streams to indicate the RTP stream repaired by a 146 redundancy RTP stream. 148 To be clear: the value carried in a RepairedRtpStreamId will always 149 match the RtpStreamId value from another RTP stream in the same 150 session. For example, if a source RTP stream is identified by 151 RtpStreamId "A", then any redundancy RTP stream that repairs that 152 source RTP stream will contain a RepairedRtpStreamId of "A" (if this 153 mechanism is being used to perform such correlation). These 154 redundant RTP streams may also contain their own unique RtpStreamId. 156 This specification also uses the RTP header extension for RTCP SDES 157 items [I-D.ietf-avtext-sdes-hdr-ext] to allow carrying RtpStreamId 158 and RepairedRtpStreamId values in RTP packets. This allows 159 correlation at stream startup, or after stream changes where the use 160 of RTCP may not be sufficiently responsive. This speed of response 161 is necessary since, in many cases, the stream cannot be properly 162 processed until it can be identified. 164 RtpStreamId and RepairedRtpStreamId values are scoped by source 165 identifier (e.g., CNAME) and by media session. When the media is 166 multiplexed using the BUNDLE extension 167 [I-D.ietf-mmusic-sdp-bundle-negotiation], these values are further 168 scoped by their associated MID values. For example: an RtpStreamId 169 of "1" may be present in the stream identified with a CNAME of 170 "1234@example.com", and may also be present in a stream with a CNAME 171 of "5678@example.org", and these would refer to different streams. 172 Similarly, an RtpStreamId of "1" may be present with an MID of "A", 173 and again with a MID of "B", and also refer to two different streams. 175 Note that the RepairedRtpStreamId mechanism is limited to indicating 176 one repaired stream per redundancy stream. If systems require 177 correlation for schemes in which a redundancy stream contains 178 information used to repair more than one stream, they will have to 179 use a more complex mechanism than the one defined in this 180 specification. 182 As with all SDES items, RtpStreamId and RepairedRtpStreamId are 183 limited to a total of 255 octets in length. RtpStreamId and 184 RepairedStreamId are constrained to contain only alphanumeric 185 characters. For avoidance of doubt, the only allowed byte values for 186 these IDs are decimal 48 through 57, 65 through 90, and 97 through 187 122. 189 3.1. RTCP 'RtpStreamId' SDES Extension 191 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 192 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 193 |RtpStreamId=TBD| length | RtpStreamId ... 194 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 196 The RtpStreamId payload is ASCII encoded and is not null-terminated. 198 RFC EDITOR NOTE: Please replace TBD with the assigned SDES 199 identifier value. 201 3.2. RTCP 'RepairedRtpStreamId' SDES Extension 203 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 204 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 205 |Repaired...=TBD| length | RepairRtpStreamId ... 206 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 208 The RepairedRtpStreamId payload is ASCII encoded and is not null- 209 terminated. 211 RFC EDITOR NOTE: Please replace TBD with the assigned SDES 212 identifier value. 214 3.3. RTP 'RtpStreamId' and 'RepairedRtpStreamId' Header Extensions 216 Because recipients of RTP packets will typically need to know which 217 streams they correspond to immediately upon receipt, this 218 specification also defines a means of carrying RtpStreamId and 219 RepairedRtpStreamId identifiers in RTP extension headers, using the 220 technique described in [I-D.ietf-avtext-sdes-hdr-ext]. 222 As described in that document, the header extension element can be 223 encoded using either the one-byte or two-byte header, and the 224 identification-tag payload is ASCII-encoded. 226 As the identifier is included in an RTP header extension, there 227 should be some consideration given to the packet expansion caused by 228 the identifier. To avoid Maximum Transmission Unit (MTU) issues for 229 the RTP packets, the header extension's size needs to be taken into 230 account when encoding media. Note that the set of header extensions 231 included in the packet needs to be padded to the next 32-bit boundary 232 [RFC5285]. 234 In many cases, a one-byte identifier will be sufficient to 235 distinguish streams in a session; implementations are strongly 236 encouraged to use the shortest identifier that fits their purposes. 237 Implementors are warned, in particular, not to include any 238 information in the identifier that is derived from potentially user- 239 identifying information, such as user ID or IP address. To avoid 240 identification of specific implementations based on their pattern of 241 tag generation, implementations are encouraged to use a simple scheme 242 that starts with the ASCII digit "1", and increments by one for each 243 subsequent identifier. 245 4. IANA Considerations 247 4.1. New RtpStreamId SDES item 249 RFC EDITOR NOTE: Please replace RFCXXXX with the RFC number of 250 this document. 252 RFC EDITOR NOTE: Please replace TBD with the assigned SDES 253 identifier value. 255 This document adds the RtpStreamId SDES item to the IANA "RTP SDES 256 item types" registry as follows: 258 Value: TBD 259 Abbrev.: RtpStreamId 260 Name: RTP Stream Identifier 261 Reference: RFCXXXX 263 4.2. New RepairRtpStreamId SDES item 265 RFC EDITOR NOTE: Please replace RFCXXXX with the RFC number of 266 this document. 268 RFC EDITOR NOTE: Please replace TBD with the assigned SDES 269 identifier value. 271 This document adds the RepairedRtpStreamId SDES item to the IANA "RTP 272 SDES item types" registry as follows: 274 Value: TBD 275 Abbrev.: RepairedRtpStreamId 276 Name: Repaired RTP Stream Identifier 277 Reference: RFCXXXX 279 4.3. New RtpStreamId Header Extension URI 281 RFC EDITOR NOTE: Please replace RFCXXXX with the RFC number of 282 this document. 284 This document defines a new extension URI in the RTP SDES Compact 285 Header Extensions sub-registry of the RTP Compact Header Extensions 286 registry sub-registry, as follows 288 Extension URI: urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id 289 Description: RTP Stream Identifier Contact: adam@nostrum.com 290 Reference: RFCXXXX 292 4.4. New RepairRtpStreamId Header Extension URI 294 RFC EDITOR NOTE: Please replace RFCXXXX with the RFC number of 295 this document. 297 This document defines a new extension URI in the RTP SDES Compact 298 Header Extensions sub-registry of the RTP Compact Header Extensions 299 registry sub-registry, as follows 301 Extension URI: urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-sream-id 302 Description: RTP Repaired Stream Identifier Contact: adam@nostrum.com 303 Reference: RFCXXXX 305 5. Security Considerations 307 Although the identifiers defined in this document are limited to be 308 strictly alphanumeric, SDES items have the potential to carry any 309 string. As a consequence, there exists a risk that it might carry 310 privacy-sensitive information. Implementations need to take care 311 when generating identifiers so that they do not contain information 312 that can identify the user or allow for long term tracking of the 313 device. Following the generation recommendations in Section 3.3 will 314 result in non-instance-specific labels, with only minor 315 fingerprinting possibilities in the total number of used RtpStreamIds 316 and RepairedRtpStreamIds. 318 Even if the SDES items are generated to convey as little information 319 as possible, implementors are strongly encouraged to encrypt SDES 320 items - both in RTCP and RTP header extensions - so as to preserve 321 privacy against third parties. 323 As the SDES items are used for identification of the RTP streams for 324 different application purposes, it is important that the intended 325 values are received. An attacker, either a third party or malicious 326 RTP middlebox, that removes, or changes the values for these SDES 327 items, can severely impact the application. The impact can include 328 failure to decode or display the media content of the RTP stream. It 329 can also result in incorrectly attributing media content to 330 identifiers of the media source, such as incorrectly identifying the 331 speaker. To prevent this from occurring due to third party attacks, 332 integrity and source authentication is needed. 334 Options for Securing RTP Sessions [RFC7201] discusses options for how 335 encryption, integrity and source authentication can be accomplished. 337 6. Acknowledgements 339 Many thanks for review and input from Cullen Jennings, Magnus 340 Westerlund, Colin Perkins, Jonathan Lennox, and Paul Kyzivat. Magnus 341 Westerlund provided substantially all of the Security Considerations 342 section. 344 7. References 346 7.1. Normative References 348 [I-D.ietf-avtext-sdes-hdr-ext] 349 Westerlund, M., Burman, B., Even, R., and M. Zanaty, "RTP 350 Header Extension for RTCP Source Description Items", 351 draft-ietf-avtext-sdes-hdr-ext-07 (work in progress), June 352 2016. 354 [I-D.ietf-mmusic-sdp-bundle-negotiation] 355 Holmberg, C., Alvestrand, H., and C. Jennings, 356 "Negotiating Media Multiplexing Using the Session 357 Description Protocol (SDP)", draft-ietf-mmusic-sdp-bundle- 358 negotiation-32 (work in progress), August 2016. 360 [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. 361 Jacobson, "RTP: A Transport Protocol for Real-Time 362 Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, 363 July 2003, . 365 [RFC5285] Singer, D. and H. Desineni, "A General Mechanism for RTP 366 Header Extensions", RFC 5285, DOI 10.17487/RFC5285, July 367 2008, . 369 [RFC7656] Lennox, J., Gross, K., Nandakumar, S., Salgueiro, G., and 370 B. Burman, Ed., "A Taxonomy of Semantics and Mechanisms 371 for Real-Time Transport Protocol (RTP) Sources", RFC 7656, 372 DOI 10.17487/RFC7656, November 2015, 373 . 375 7.2. Informative References 377 [I-D.ietf-mmusic-msid] 378 Alvestrand, H., "WebRTC MediaStream Identification in the 379 Session Description Protocol", draft-ietf-mmusic-msid-15 380 (work in progress), July 2016. 382 [RFC7201] Westerlund, M. and C. Perkins, "Options for Securing RTP 383 Sessions", RFC 7201, DOI 10.17487/RFC7201, April 2014, 384 . 386 Authors' Addresses 388 Adam Roach 389 Mozilla 391 Email: adam@nostrum.com 393 Suhas Nandakumar 394 Cisco Systems 396 Email: snandaku@cisco.com 398 Peter Thatcher 399 Google 401 Email: pthatcher@google.com