Description
The Real-time Transport Control Protocol (RTCP) operates in conjunction with the Real-time Transport Protocol (RTP) to manage the delivery of real-time data like audio and video over IP networks. While RTP handles the actual media payload transmission, RTCP uses separate, periodic control packets sent to all participants in a session. These packets carry sender and receiver reports that contain vital statistics such as packet count, octet count, jitter, round-trip time, and packet loss fraction. This feedback allows applications to monitor the quality of service (QoS) and network congestion, enabling adaptive mechanisms like codec switching or bitrate adjustment. RTCP also carries source description items (SDES), including the canonical name (CNAME) for participant identification, which is crucial for synchronizing multiple media streams (e.g., audio and video from the same source) across different RTP sessions. Furthermore, RTCP can convey bye packets for session termination and application-defined packets for extended control. The protocol is designed to scale by dynamically adjusting the reporting interval based on the number of session participants to prevent control traffic from overwhelming the network; typically, RTCP traffic is limited to 5% of the total session bandwidth. In 3GPP architectures, especially for IMS-based services like VoLTE, RTCP reports are used by the UE and network elements to assess bearer quality and may trigger radio layer adjustments or codec mode requests. The protocol is defined by the IETF in RFC 3550, and 3GPP profiles its use, specifying mandatory support for certain report types and the Secure RTCP (SRTCP) extension for confidentiality and message authentication in media planes.
Purpose & Motivation
RTCP was created to address the lack of feedback and control mechanisms in real-time data delivery using RTP. Pure RTP provides no inherent way for senders to know if receivers are getting the stream, or for receivers to report on network conditions like loss and delay. This made it difficult to implement adaptive streaming, diagnose problems, or manage multi-party sessions. RTCP solves these problems by providing a standardized, low-overhead control channel. Its primary purposes are QoS monitoring, allowing endpoints to adapt to network conditions; media synchronization, using the CNAME identifier; and minimal session management. In the context of 3GPP, the adoption of RTCP was motivated by the need for carrier-grade telephony over IP (VoIP), where monitoring call quality is essential for service assurance and user experience. It provides the technical means for the network and devices to implement quality reporting features mandated by regulatory or service-level requirements.
Key Features
- Transports sender (SR) and receiver reports (RR) for QoS metrics like packet loss and jitter
- Carries the canonical identifier (CNAME) for cross-media stream synchronization
- Uses a scalable algorithm to control reporting traffic (typically capped at 5% of session bandwidth)
- Supports extended reports (RTCP XR) for detailed VoIP metrics like burst loss
- Defines BYE packets for graceful participant departure
- Can be secured using SRTCP for authentication and encryption as per 3GPP security profiles
Evolution Across Releases
Initially adopted RTCP as defined in IETF RFC 3550 for use in the IMS-based Packet-switched Streaming Service (PSS) and conversational services. The architecture mandated its use for reporting RTP stream statistics and participant identification within early multimedia sessions.
Defining Specifications
| Specification | Title |
|---|---|
| TS 23.333 | 3GPP TS 23.333 |
| TS 23.334 | 3GPP TS 23.334 |
| TS 24.229 | 3GPP TS 24.229 |
| TS 24.380 | 3GPP TS 24.380 |
| TS 24.581 | 3GPP TS 24.581 |
| TS 25.410 | 3GPP TS 25.410 |
| TS 25.414 | 3GPP TS 25.414 |
| TS 25.993 | 3GPP TS 25.993 |
| TS 26.114 | 3GPP TS 26.114 |
| TS 26.234 | 3GPP TS 26.234 |
| TS 26.235 | 3GPP TS 26.235 |
| TS 26.281 | 3GPP TS 26.281 |
| TS 26.348 | 3GPP TS 26.348 |
| TS 26.522 | 3GPP TS 26.522 |
| TS 26.804 | 3GPP TS 26.804 |
| TS 26.822 | 3GPP TS 26.822 |
| TS 26.880 | 3GPP TS 26.880 |
| TS 26.902 | 3GPP TS 26.902 |
| TS 26.910 | 3GPP TS 26.910 |
| TS 26.923 | 3GPP TS 26.923 |
| TS 26.924 | 3GPP TS 26.924 |
| TS 26.926 | 3GPP TS 26.926 |
| TS 26.935 | 3GPP TS 26.935 |
| TS 26.937 | 3GPP TS 26.937 |
| TS 26.962 | 3GPP TS 26.962 |
| TS 29.162 | 3GPP TS 29.162 |
| TS 29.163 | 3GPP TS 29.163 |
| TS 29.238 | 3GPP TS 29.238 |
| TS 29.292 | 3GPP TS 29.292 |
| TS 29.332 | 3GPP TS 29.332 |
| TS 29.334 | 3GPP TS 29.334 |
| TS 29.380 | 3GPP TS 29.380 |
| TS 29.414 | 3GPP TS 29.414 |
| TS 29.424 | 3GPP TS 29.424 |
| TS 29.514 | 3GPP TS 29.514 |
| TS 29.582 | 3GPP TS 29.582 |
| TS 29.866 | 3GPP TS 29.866 |
| TS 33.303 | 3GPP TR 33.303 |
| TS 33.879 | 3GPP TR 33.879 |
| TS 34.229 | 3GPP TR 34.229 |
| TS 36.750 | 3GPP TR 36.750 |
| TS 37.579 | 3GPP TR 37.579 |
| TS 43.318 | 3GPP TR 43.318 |
| TS 43.901 | 3GPP TR 43.901 |
| TS 43.902 | 3GPP TR 43.902 |
| TS 44.318 | 3GPP TR 44.318 |
| TS 48.103 | 3GPP TR 48.103 |