- Real-time Transport Protocol
The Real-time Transport Protocol (or RTP) defines a standardized packet format for delivering audio and video over the Internet. It was developed by the Audio-Video Transport Working Group of the
IETFand first published in 1996 as RFC 1889 which was made obsolete in 2003 by RFC 3550. Real time transport protocol can also be used in conjunction with RTSP protocol which enhances the field of multimedia applications.
RTP does not have a standard TCP or UDP port on which it communicates. The only standard that it obeys is that UDP communications are done via an even port and the next higher odd port is used for RTP Control Protocol (RTCP) communications. Although there are no standards assigned, RTP is generally configured to use ports 16384-32767. RTP can carry any data with real-time characteristics, such as interactive audio and video. Call setup and tear-down for VoIP applications is usually performed by either SIP or
H.323protocols. The fact that RTP uses a dynamic port range makes it difficult for it to traverse firewalls. In order to get around this problem, it is often necessary to set up a STUNserver.
It was originally designed as a
multicastprotocol, but has since been applied in many unicastapplications. It is frequently used in streaming mediasystems (in conjunction with RTSP) as well as videoconferencing and push to talksystems (in conjunction with H.323or SIP), making it the technical foundation of the Voice over IPindustry.It goes along with the RTCP and is built on top of the User Datagram Protocol (UDP). Applications using RTP are less sensitive to packet loss, but typically very sensitive to delays, so UDP is a better choice than TCP for such applications.
According to RFC 1889, the services provided by RTP include:
* Payload-type identification - Indication of what kind of content is being carried
* Sequence numbering - PDU sequence number
* Time stamping - allow synchronization and jitter calculations
* Delivery monitoring
The protocols themselves do not provide mechanisms to ensure timely delivery. They also do not give any
Quality of Service(QoS) guarantees. These things have to be provided by some other mechanism.
Also, out of order delivery is still possible, and flow and
congestion controlare not supported directly. However, the protocols do deliver the necessary data to the application to make sure it can put the received packets in the correct order. Also, RTCP provides information about reception quality which the application can use to make local adjustments. For example if a congestion is forming, the application could decide to lower the data rate.
RTP was also published by the
ITU-Tas H.225.0, but later removed once the IETF had a stable standards-track RFC published. It exists as an InternetStandard (STD 64) defined in RFC 3550 (which obsoletes RFC 1889). RFC 3551 (STD 65) (which obsoletes RFC 1890) defines a specific profile for Audio and Video Conferences with Minimal Control. RFC 3711 defines the Secure Real-time Transport Protocol(SRTP) profile (actually an extension to RTP Profile for Audio and Video Conferences) which can be used (optionally) to provide confidentiality, message authentication, and replay protection for audio and video streams being delivered.
The RTP header size is minimum 12 bytes.; Ver.: (2 bits) Indicates the version of the protocol. Current version is 2. ; P : (1 bit) Used to indicate if there are extra padding bytes at the end of the RTP packet.; X : (1 bit) Indicates presence of an "Extension header" between standard header and payload data. ; CC : (4 bits) Contains the number of CSRC identifiers that follow the fixed header. ; M : (1 bit) Used at the application level and is defined by a profile. If it is set, it means that the current data has some special relevance for the application. ; PT : (7 bits) Indicates the format of the payload and determines its interpretation by the application.; Sequence Number : (16 bits) The sequence number increments by one for each RTP data packet sent, and may be used by the receiver to detect packet loss and to restore packet sequence.; Timestamp : (32 bits) The timestamp reflects the sampling instant of the first data in the RTP data packet. The sampling instant MUST be derived from a clock that increments monotonically and linearly in time to allow synchronization and jitter calculations. The resolution of the clock MUST be sufficient for the desired synchronization accuracy and for measuring packet arrival jitter (one tick per video frame is typically not sufficient). The clock frequency is dependent on the format of data carried as payload and is specified statically in the profile or payload format specification that defines the format, or MAY be specified dynamically for payload formats defined through non-RTP means. If RTP packets are generated periodically, the nominal sampling instant as determined from the sampling clock is to be used, not a reading of the system clock. ; SSRC : Synchronization source identifier uniquely identifies the source of a stream.; CSRC : Contributing source IDs enumerate contributing sources to a stream which has been generated from multiple sources.; Extension header : The first 32-bit word contains a profile specific identifier (16 bits) and a length specifier (16 bits) that indicates the length of the extension (EHL=extension header length) in 32-bit units, excluding the 32 bits of the extension header.
Potential further development of RTP & RTCP
Real-time Transport Protocol(RTP) and the Real-time Transport Control Protocol(RTCP) are commonly used together. RTP is used to transmit data (e.g. audio and video) and RTCP is used to monitor QoS.
To reduce the size of the IP, UDP and RTP headers,
Compressed RTP(CRTP) was developed and specified in RFC 2509. It is primarily used for reliable and fast point-to-point links, but it can be problematic in other applications. Therefore, Enhanced CRTP(ECRTP) was defined.
Especially in VoIP over wireless applications, headers are significantly larger than the payload. The
Robust Header Compression(ROHC) specified in RFC 3095 seems to be an increasingly deployed method for better efficiency. There are currently two ROHC profiles defined for the compression of IP/UDP/RTP traffic. The original definition in RFC 3095, and a recently published RFC 5225.
The equations for RTCP protocol are explained in section I. and II.A in the [http://adela.utko.feec.vutbr.cz/projects/publications/#2 Optimization of Large-Scale RTCP Feedback Reporting in Fixed and Mobile Networks] paper.
Structure of RTP/RTCP applications
RTP/RTCP protocols are commonly used to transport audio or audio/video data. Separate sessions are used for each media content (e.g. audio and video). The main advantage of this separation is to make it possible to receive only one part of the transmission, commonly audio data, which lowers the total bandwidth.
Real time control protocol
Real Time Streaming Protocol(RTSP)
Secure Real-time Transport Protocol
Stream Control Transmission Protocol
User Datagram Protocol
* Henning Schulzrinne and Stephen Casner. " [http://citeseer.ist.psu.edu/183712.html RTP: A Transport Protocol for Real-Time Applications] ". (1993) Internet Engineering Task Force, Internet Draft, October 20, 1993. The memo originating RTP; only an early draft, does not describe the current standard.
* Perkins, Colin (2003). " [http://csperkins.org/rtp-book.html RTP: Audio and Video for the Internet] " (1st ed.) Addison-Wesley. ISBN 0-672-32249-8
* [http://xenion.antifork.org/?page_id=7 rtpbreak - detect, reconstruct and analyze any RTP session]
* [http://www.linphone.org/index.php/eng/code_review/ortp oRTP, RTP library from Linphone written in C]
* [http://www.cs.columbia.edu/~hgs/rtp Henning Schulzrinne's RTP page]
* [http://www.gnu.org/software/ccrtp/ GNU ccRTP]
* [http://research.edm.uhasselt.be/~jori/page/index.php?n=CS.Jrtplib JRTPLIB, a C++ RTP library]
* [http://www.streamcoders.com/products/rtpnet.html Streamcoders RTP.NET RTP stack for Microsoft .NET (free)]
* RFC 3984, RTP Payload Format for H.264 Video
* RFC 3640, RTP Payload Format for Transport of MPEG-4 Elementary Streams
* RFC 3016, RTP Payload Format for MPEG-4 Audio/Visual Streams
* RFC 3551, Standard 65, RTP Profile for Audio and Video Conferences with Minimal Control
* RFC 3550, Standard 64, RTP : A Transport Protocol for Real-Time Applications
* RFC 1890, Obsolete, RTP Profile for Audio and Video Conferences with Minimal Control
* RFC 1889, Obsolete, RTP : A Transport Protocol for Real-Time Applications
* RFC 2250, Proposed Standard, RTP Payload Format for MPEG1/MPEG2 Video
Wikimedia Foundation. 2010.