Internet Engineering Task Force (IETF) H. Schulzrinne Request for Comments: 7826 Columbia University Obsoletes: 2326 A. Rao Category: Standards Track Cisco ISSN: 2070-1721 R. Lanphier M. Westerlund Ericsson M. Stiemerling, Ed. University of Applied Sciences Darmstadt December 2016 Real-Time Streaming Protocol Version 2.0Abstract
This memorandum defines the Real-Time Streaming Protocol (RTSP) version 2.0, which obsoletes RTSP version 1.0 defined in RFC 2326. RTSP is an application-layer protocol for the setup and control of the delivery of data with real-time properties. RTSP provides an extensible framework to enable controlled, on-demand delivery of real-time data, such as audio and video. Sources of data can include both live data feeds and stored clips. This protocol is intended to control multiple data delivery sessions; provide a means for choosing delivery channels such as UDP, multicast UDP, and TCP; and provide a means for choosing delivery mechanisms based upon RTP (RFC 3550). Status of This Memo This is an Internet Standards Track document. This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841. Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc7826.
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 the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. This document may contain material from IETF Documents or IETF Contributions published or made publicly available before November 10, 2008. The person(s) controlling the copyright in some of this material may not have granted the IETF Trust the right to allow modifications of such material outside the IETF Standards Process. Without obtaining an adequate license from the person(s) controlling the copyright in such materials, this document may not be modified outside the IETF Standards Process, and derivative works of it may not be created outside the IETF Standards Process, except to format it for publication as an RFC or to translate it into languages other than English.Table of Contents
1. Introduction ...................................................10 2. Protocol Overview ..............................................11 2.1. Presentation Description ..................................12 2.2. Session Establishment .....................................12 2.3. Media Delivery Control ....................................14 2.4. Session Parameter Manipulations ...........................15 2.5. Media Delivery ............................................16 2.5.1. Media Delivery Manipulations .......................16 2.6. Session Maintenance and Termination .......................19 2.7. Extending RTSP ............................................20 3. Document Conventions ...........................................21 3.1. Notational Conventions ....................................21 3.2. Terminology ...............................................21 4. Protocol Parameters ............................................25 4.1. RTSP Version ..............................................25 4.2. RTSP IRI and URI ..........................................25 4.3. Session Identifiers .......................................28
4.4. Media-Time Formats ........................................28
4.4.1. SMPTE-Relative Timestamps ..........................28
4.4.2. Normal Play Time ...................................29
4.4.3. Absolute Time ......................................30
4.5. Feature Tags ..............................................31
4.6. Message Body Tags .........................................32
4.7. Media Properties ..........................................32
4.7.1. Random Access and Seeking ..........................33
4.7.2. Retention ..........................................34
4.7.3. Content Modifications ..............................34
4.7.4. Supported Scale Factors ............................34
4.7.5. Mapping to the Attributes ..........................35
5. RTSP Message ...................................................35
5.1. Message Types .............................................36
5.2. Message Headers ...........................................36
5.3. Message Body ..............................................37
5.4. Message Length ............................................37
6. General-Header Fields ..........................................37
7. Request ........................................................39
7.1. Request Line ..............................................40
7.2. Request-Header Fields .....................................42
8. Response .......................................................43
8.1. Status-Line ...............................................43
8.1.1. Status Code and Reason Phrase ......................43
8.2. Response Headers ..........................................47
9. Message Body ...................................................47
9.1. Message Body Header Fields ................................48
9.2. Message Body ..............................................49
9.3. Message Body Format Negotiation ...........................49
10. Connections ...................................................50
10.1. Reliability and Acknowledgements .........................50
10.2. Using Connections ........................................51
10.3. Closing Connections ......................................54
10.4. Timing Out Connections and RTSP Messages .................56
10.5. Showing Liveness .........................................57
10.6. Use of IPv6 ..............................................58
10.7. Overload Control .........................................58
11. Capability Handling ...........................................60
11.1. Feature Tag: play.basic ..................................62
12. Pipelining Support ............................................62
13. Method Definitions ............................................63
13.1. OPTIONS ..................................................65
13.2. DESCRIBE .................................................66
13.3. SETUP ....................................................68
13.3.1. Changing Transport Parameters .....................71
13.4. PLAY .....................................................72
13.4.1. General Usage .....................................72
13.4.2. Aggregated Sessions ...............................77
13.4.3. Updating Current PLAY Requests ....................78
13.4.4. Playing On-Demand Media ...........................81
13.4.5. Playing Dynamic On-Demand Media ...................81
13.4.6. Playing Live Media ................................81
13.4.7. Playing Live with Recording .......................82
13.4.8. Playing Live with Time-Shift ......................83
13.5. PLAY_NOTIFY ..............................................83
13.5.1. End-of-Stream .....................................84
13.5.2. Media-Properties-Update ...........................86
13.5.3. Scale-Change ......................................87
13.6. PAUSE ....................................................89
13.7. TEARDOWN .................................................92
13.7.1. Client to Server ..................................92
13.7.2. Server to Client ..................................93
13.8. GET_PARAMETER ............................................94
13.9. SET_PARAMETER ............................................96
13.10. REDIRECT ................................................98
14. Embedded (Interleaved) Binary Data ...........................101
15. Proxies ......................................................103
15.1. Proxies and Protocol Extensions .........................104
15.2. Multiplexing and Demultiplexing of Messages .............105
16. Caching ......................................................106
16.1. Validation Model ........................................107
16.1.1. Last-Modified Dates ..............................108
16.1.2. Message Body Tag Cache Validators ................108
16.1.3. Weak and Strong Validators .......................108
16.1.4. Rules for When to Use Message Body Tags
and Last-Modified Dates ..........................110
16.1.5. Non-validating Conditionals ......................112
16.2. Invalidation after Updates or Deletions .................112
17. Status Code Definitions ......................................113
17.1. Informational 1xx .......................................113
17.1.1. 100 Continue .....................................113
17.2. Success 2xx .............................................113
17.2.1. 200 OK ...........................................113
17.3. Redirection 3xx .........................................113
17.3.1. 300 ..............................................114
17.3.2. 301 Moved Permanently ............................114
17.3.3. 302 Found ........................................114
17.3.4. 303 See Other ....................................115
17.3.5. 304 Not Modified .................................115
17.3.6. 305 Use Proxy ....................................115
17.4. Client Error 4xx ........................................116
17.4.1. 400 Bad Request ..................................116
17.4.2. 401 Unauthorized .................................116
17.4.3. 402 Payment Required .............................116
17.4.4. 403 Forbidden ....................................116
17.4.5. 404 Not Found ....................................116
17.4.6. 405 Method Not Allowed ...........................117
17.4.7. 406 Not Acceptable ...............................117
17.4.8. 407 Proxy Authentication Required ................117
17.4.9. 408 Request Timeout ..............................117
17.4.10. 410 Gone ........................................118
17.4.11. 412 Precondition Failed .........................118
17.4.12. 413 Request Message Body Too Large ..............118
17.4.13. 414 Request-URI Too Long ........................118
17.4.14. 415 Unsupported Media Type ......................119
17.4.15. 451 Parameter Not Understood ....................119
17.4.16. 452 Illegal Conference Identifier ...............119
17.4.17. 453 Not Enough Bandwidth ........................119
17.4.18. 454 Session Not Found ...........................119
17.4.19. 455 Method Not Valid in This State ..............119
17.4.20. 456 Header Field Not Valid for Resource .........119
17.4.21. 457 Invalid Range ...............................120
17.4.22. 458 Parameter Is Read-Only ......................120
17.4.23. 459 Aggregate Operation Not Allowed .............120
17.4.24. 460 Only Aggregate Operation Allowed ............120
17.4.25. 461 Unsupported Transport .......................120
17.4.26. 462 Destination Unreachable .....................120
17.4.27. 463 Destination Prohibited ......................120
17.4.28. 464 Data Transport Not Ready Yet ................121
17.4.29. 465 Notification Reason Unknown .................121
17.4.30. 466 Key Management Error ........................121
17.4.31. 470 Connection Authorization Required ...........121
17.4.32. 471 Connection Credentials Not Accepted .........121
17.4.33. 472 Failure to Establish Secure Connection ......121
17.5. Server Error 5xx ........................................122
17.5.1. 500 Internal Server Error ........................122
17.5.2. 501 Not Implemented ..............................122
17.5.3. 502 Bad Gateway ..................................122
17.5.4. 503 Service Unavailable ..........................122
17.5.5. 504 Gateway Timeout ..............................123
17.5.6. 505 RTSP Version Not Supported ...................123
17.5.7. 551 Option Not Supported .........................123
17.5.8. 553 Proxy Unavailable ............................123
18. Header Field Definitions .....................................124
18.1. Accept ..................................................134
18.2. Accept-Credentials ......................................135
18.3. Accept-Encoding .........................................135
18.4. Accept-Language .........................................136
18.5. Accept-Ranges ...........................................137
18.6. Allow ...................................................138
18.7. Authentication-Info .....................................138
18.8. Authorization ...........................................138
18.9. Bandwidth ...............................................139
18.10. Blocksize ..............................................140
18.11. Cache-Control ..........................................140
18.12. Connection .............................................143
18.13. Connection-Credentials .................................143
18.14. Content-Base ...........................................144
18.15. Content-Encoding .......................................145
18.16. Content-Language .......................................145
18.17. Content-Length .........................................146
18.18. Content-Location .......................................146
18.19. Content-Type ...........................................148
18.20. CSeq ...................................................148
18.21. Date ...................................................150
18.22. Expires ................................................151
18.23. From ...................................................151
18.24. If-Match ...............................................152
18.25. If-Modified-Since ......................................152
18.26. If-None-Match ..........................................153
18.27. Last-Modified ..........................................154
18.28. Location ...............................................154
18.29. Media-Properties .......................................154
18.30. Media-Range ............................................156
18.31. MTag ...................................................157
18.32. Notify-Reason ..........................................158
18.33. Pipelined-Requests .....................................158
18.34. Proxy-Authenticate .....................................159
18.35. Proxy-Authentication-Info ..............................159
18.36. Proxy-Authorization ....................................159
18.37. Proxy-Require ..........................................160
18.38. Proxy-Supported ........................................160
18.39. Public .................................................161
18.40. Range ..................................................162
18.41. Referrer ...............................................164
18.42. Request-Status .........................................164
18.43. Require ................................................165
18.44. Retry-After ............................................166
18.45. RTP-Info ...............................................167
18.46. Scale ..................................................169
18.47. Seek-Style .............................................170
18.48. Server .................................................171
18.49. Session ................................................172
18.50. Speed ..................................................173
18.51. Supported ..............................................174
18.52. Terminate-Reason .......................................175
18.53. Timestamp ..............................................175
18.54. Transport ..............................................176
18.55. Unsupported ............................................183
18.56. User-Agent .............................................184
18.57. Via ....................................................184
18.58. WWW-Authenticate .......................................185
19. Security Framework ...........................................185 19.1. RTSP and HTTP Authentication ............................185 19.1.1. Digest Authentication ............................186 19.2. RTSP over TLS ...........................................187 19.3. Security and Proxies ....................................188 19.3.1. Accept-Credentials ...............................189 19.3.2. User-Approved TLS Procedure ......................190 20. Syntax .......................................................192 20.1. Base Syntax .............................................193 20.2. RTSP Protocol Definition ................................195 20.2.1. Generic Protocol Elements ........................195 20.2.2. Message Syntax ...................................198 20.2.3. Header Syntax ....................................201 20.3. SDP Extension Syntax ....................................209 21. Security Considerations ......................................209 21.1. Signaling Protocol Threats ..............................210 21.2. Media Stream Delivery Threats ...........................213 21.2.1. Remote DoS Attack ................................215 21.2.2. RTP Security Analysis ............................216 22. IANA Considerations ..........................................217 22.1. Feature Tags ............................................218 22.1.1. Description ......................................218 22.1.2. Registering New Feature Tags with IANA ...........218 22.1.3. Registered Entries ...............................219 22.2. RTSP Methods ............................................219 22.2.1. Description ......................................219 22.2.2. Registering New Methods with IANA ................219 22.2.3. Registered Entries ...............................220 22.3. RTSP Status Codes .......................................220 22.3.1. Description ......................................220 22.3.2. Registering New Status Codes with IANA ...........220 22.3.3. Registered Entries ...............................221 22.4. RTSP Headers ............................................221 22.4.1. Description ......................................221 22.4.2. Registering New Headers with IANA ................221 22.4.3. Registered Entries ...............................222 22.5. Accept-Credentials ......................................223 22.5.1. Accept-Credentials Policies ......................223 22.5.2. Accept-Credentials Hash Algorithms ...............224 22.6. Cache-Control Cache Directive Extensions ................224 22.7. Media Properties ........................................225 22.7.1. Description ......................................225 22.7.2. Registration Rules ...............................226 22.7.3. Registered Values ................................226 22.8. Notify-Reason Values ....................................226 22.8.1. Description ......................................226 22.8.2. Registration Rules ...............................226 22.8.3. Registered Values ................................227
22.9. Range Header Formats ....................................227
22.9.1. Description ......................................227
22.9.2. Registration Rules ...............................227
22.9.3. Registered Values ................................228
22.10. Terminate-Reason Header ................................228
22.10.1. Redirect Reasons ................................228
22.10.2. Terminate-Reason Header Parameters ..............229
22.11. RTP-Info Header Parameters .............................229
22.11.1. Description .....................................229
22.11.2. Registration Rules ..............................229
22.11.3. Registered Values ...............................230
22.12. Seek-Style Policies ....................................230
22.12.1. Description .....................................230
22.12.2. Registration Rules ..............................230
22.12.3. Registered Values ...............................230
22.13. Transport Header Registries ............................231
22.13.1. Transport Protocol Identifier ...................231
22.13.2. Transport Modes .................................233
22.13.3. Transport Parameters ............................233
22.14. URI Schemes ............................................234
22.14.1. The "rtsp" URI Scheme ...........................234
22.14.2. The "rtsps" URI Scheme ..........................235
22.14.3. The "rtspu" URI Scheme ..........................237
22.15. SDP Attributes .........................................238
22.16. Media Type Registration for text/parameters ............238
23. References ...................................................240
23.1. Normative References ....................................240
23.2. Informative References ..................................245
Appendix A. Examples .............................................248
A.1. Media on Demand (Unicast) ................................248
A.2. Media on Demand Using Pipelining .........................251
A.3. Secured Media Session for On-Demand Content ..............254
A.4. Media on Demand (Unicast) ................................257
A.5. Single-Stream Container Files ............................260
A.6. Live Media Presentation Using Multicast ..................263
A.7. Capability Negotiation ...................................264
Appendix B. RTSP Protocol State Machine ..........................265
B.1. States ...................................................266
B.2. State Variables ..........................................266
B.3. Abbreviations ............................................266
B.4. State Tables .............................................267
Appendix C. Media-Transport Alternatives .........................272
C.1. RTP ......................................................272
C.1.1. AVP ..................................................272
C.1.2. AVP/UDP ..............................................273
C.1.3. AVPF/UDP .............................................274
C.1.4. SAVP/UDP .............................................275
C.1.5. SAVPF/UDP ............................................277
C.1.6. RTCP Usage with RTSP .................................278
C.2. RTP over TCP .............................................279
C.2.1. Interleaved RTP over TCP .............................280
C.2.2. RTP over Independent TCP .............................280
C.3. Handling Media-Clock Time Jumps in the RTP Media Layer ...284
C.4. Handling RTP Timestamps after PAUSE ......................287
C.5. RTSP/RTP Integration ....................................290
C.6. Scaling with RTP .........................................290
C.7. Maintaining NPT Synchronization with RTP Timestamps ......290
C.8. Continuous Audio .........................................290
C.9. Multiple Sources in an RTP Session .......................290
C.10. Usage of SSRCs and the RTCP BYE Message during an RTSP
Session .................................................290
C.11. Future Additions ........................................291
Appendix D. Use of SDP for RTSP Session Descriptions .............292
D.1. Definitions .............................................292
D.1.1. Control URI ..........................................292
D.1.2. Media Streams ........................................294
D.1.3. Payload Type(s) ......................................294
D.1.4. Format-Specific Parameters ...........................294
D.1.5. Directionality of Media Stream .......................295
D.1.6. Range of Presentation ................................295
D.1.7. Time of Availability .................................296
D.1.8. Connection Information ...............................297
D.1.9. Message Body Tag .....................................297
D.2. Aggregate Control Not Available ..........................298
D.3. Aggregate Control Available ..............................298
D.4. Grouping of Media Lines in SDP ...........................299
D.5. RTSP External SDP Delivery ...............................300
Appendix E. RTSP Use Cases .......................................300
E.1. On-Demand Playback of Stored Content .....................300
E.2. Unicast Distribution of Live Content .....................302
E.3. On-Demand Playback Using Multicast .......................303
E.4. Inviting an RTSP Server into a Conference ................303
E.5. Live Content Using Multicast .............................304
Appendix F. Text Format for Parameters ...........................305
Appendix G. Requirements for Unreliable Transport of RTSP ........305
Appendix H. Backwards-Compatibility Considerations ...............306
H.1. Play Request in Play State ...............................307
H.2. Using Persistent Connections .............................307
Appendix I. Changes ..............................................307
I.1. Brief Overview ...........................................308
I.2. Detailed List of Changes .................................309
Acknowledgements .................................................316
Contributors ....................................................317
Authors' Addresses ...............................................318
1. Introduction
This memo defines version 2.0 of the Real-Time Streaming Protocol (RTSP 2.0). RTSP 2.0 is an application-layer protocol for the setup and control over the delivery of data with real-time properties, typically streaming media. Streaming media is, for instance, video on demand or audio live streaming. Put simply, RTSP acts as a "network remote control" for multimedia servers. The protocol operates between RTSP 2.0 clients and servers, but it also supports the use of proxies placed between clients and servers. Clients can request information about streaming media from servers by asking for a description of the media or use media description provided externally. The media delivery protocol is used to establish the media streams described by the media description. Clients can then request to play out the media, pause it, or stop it completely. The requested media can consist of multiple audio and video streams that are delivered as time-synchronized streams from servers to clients. RTSP 2.0 is a replacement of RTSP 1.0 [RFC2326] and this document obsoletes that specification. This protocol is based on RTSP 1.0 but is not backwards compatible other than in the basic version negotiation mechanism. The changes between the two documents are listed in Appendix I. There are many reasons why RTSP 2.0 can't be backwards compatible with RTSP 1.0; some of the main ones are as follows: o Most headers that needed to be extensible did not define the allowed syntax, preventing safe deployment of extensions; o the changed behavior of the PLAY method when received in Play state; o the changed behavior of the extensibility model and its mechanism; and o the change of syntax for some headers. There are so many small updates that changing versions became necessary to enable clarification and consistent behavior. Anyone implementing RTSP for a new use case in which they have not installed RTSP 1.0 should only implement RTSP 2.0 to avoid having to deal with RTSP 1.0 inconsistencies. This document is structured as follows. It begins with an overview of the protocol operations and its functions in an informal way. Then, a set of definitions of terms used and document conventions is
introduced. These are followed by the actual RTSP 2.0 core protocol specification. The appendices describe and define some functionalities that are not part of the core RTSP specification, but which are still important to enable some usages. Among them, the RTP usage is defined in Appendix C, the Session Description Protocol (SDP) usage with RTSP is defined in Appendix D, and the "text/ parameters" file format Appendix F, are three normative specification appendices. Other appendices include a number of informational parts discussing the changes, use cases, different considerations or motivations.