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.