RTCP - Real-Time Control Protocol ==================================== .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **What is RTCP?** RTCP (Real-Time Control Protocol) is a companion protocol to RTP (Real-Time Transport Protocol). It is used to monitor transmission statistics, provide quality of service (QoS) feedback, and synchronize multimedia streams during real-time communication. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Why is RTCP useful?** * Provides feedback on the quality of media delivery (e.g., packet loss, jitter, delay). * Helps synchronize audio and video streams. * Enables source identification and control messages. * Facilitates adaptive bitrate and congestion control in streaming applications. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **How it works?** * RTCP packets are sent periodically by each participant in an RTP session. * It uses control messages like Sender Report (SR), Receiver Report (RR), Source Description (SDES), and BYE. * These reports help monitor performance and manage stream timing and synchronization. * It operates alongside RTP but on a separate port. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Where is RTCP used?** * VoIP (Voice over IP) applications. * Video conferencing tools (e.g., WebRTC, Zoom). * Streaming media systems using RTP. * Any real-time audio/video transmission systems. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Which OSI layer does this protocol belong to?** * RTCP operates at the **Application Layer (Layer 7)** of the OSI model. * It relies on transport protocols like UDP for delivery. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **IS RTCP Windows specific?** * No, RTCP is not Windows-specific. * It is supported across all major platforms including Windows, Linux, macOS, and embedded systems. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **IS RTCP Linux Specific?** * No, RTCP is not Linux-specific. * It is widely used in cross-platform communication systems and devices. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Which Transport Protocol is used by RTCP?** * RTCP typically uses **UDP** for transport. * It operates on a separate UDP port, often the next **odd-numbered port** after the RTP stream. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Which Port is used by RTCP?** * RTCP typically uses the **odd-numbered UDP port** immediately following the even-numbered port used by RTP. * Example: If RTP uses port 5004, RTCP uses port 5005. * There is no fixed port; ports are dynamically assigned. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Is RTCP using Client server model?** * No, RTCP does **not strictly follow** the client-server model. * It operates in a **peer-to-peer or session-based model** where each participant sends control messages. * Common in symmetric communication systems like video calls and conferences. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow Topics in this section, * :ref:`Learnings in this section ` * :ref:`Terminology ` * :ref:`Version Info ` * :ref:`RTCP Version&RFC Details ` * :ref:`RTCP Basic Setup on Ubuntu using IPv4 ` * :ref:`RTCP Basic Setup on Ubuntu using IPv6 ` * :ref:`RTCP Protocol Packet Details ` * :ref:`RTCP Usecases ` * :ref:`RTCP Basic Features ` * :ref:`RTCP Feature : Quality Feedback ` * :ref:`RTCP Feature : Synchronization Support ` * :ref:`RTCP Feature : Sender and Receiver Reports ` * :ref:`RTCP Feature : Source Description ` * :ref:`RTCP Feature : Session Control ` * :ref:`RTCP Feature : Scalability ` * :ref:`RTCP Feature : Low Overhead ` * :ref:`RTCP Feature : Congestion Control ` * :ref:`RTCP Feature : Extensibility ` * :ref:`RTCP Feature : Security Support ` * :ref:`RTCP Feature : Interoperability ` * :ref:`RTCP Feature : Multicast and Unicast Support ` * :ref:`RTCP Feature : Periodic Reporting ` * :ref:`RTCP Feature : Codec and Media Adaptation ` * :ref:`RTCP Feature : Application-Level Integration ` * :ref:`Reference links ` .. _RTCP_step1: .. tab-set:: .. tab-item:: Learnings in this section * In this section, you are going to learn .. _RTCP_step2: .. tab-set:: .. tab-item:: Terminology * Terminology .. _RTCP_step3: .. tab-set:: .. tab-item:: Version Info * Version Info .. _RTCP_step5: .. tab-set:: .. tab-item:: RTCP Version&RFC Details .. csv-table:: :file: ./RTCP/RTCP_RFC_Details.csv :widths: 10,10,10,30,40 :header-rows: 1 .. _RTCP_step24: .. tab-set:: .. tab-item:: RTCP Basic Setup on Ubuntu using IPv4 * Setup .. _RTCP_step25: .. tab-set:: .. tab-item:: RTCP Basic Setup on Ubuntu using IPv6 * Setup .. _RTCP_step6: .. tab-set:: .. tab-item:: RTCP Protocol Packet Details **Sender Report Packet** .. csv-table:: :file: ./RTCP/RTCP_Protocol_Packet_1.csv :widths: 10,20,30,10 :header-rows: 1 **Receiver Report Packet** .. csv-table:: :file: ./RTCP/RTCP_Protocol_Packet_2.csv :widths: 10,20,30,10 :header-rows: 1 **Source Description Packet** .. csv-table:: :file: ./RTCP/RTCP_Protocol_Packet_3.csv :widths: 10,20,30,10 :header-rows: 1 **Goodbye Packet** .. csv-table:: :file: ./RTCP/RTCP_Protocol_Packet_4.csv :widths: 10,20,30,10 :header-rows: 1 **Application-Defined Packet** .. csv-table:: :file: ./RTCP/RTCP_Protocol_Packet_5.csv :widths: 10,20,30,10 :header-rows: 1 .. _RTCP_step7: .. tab-set:: .. tab-item:: RTCP Usecases .. csv-table:: :file: ./RTCP/RTCP_Usecases.csv :widths: 10,20,30 :header-rows: 1 .. _RTCP_step8: .. tab-set:: .. tab-item:: RTCP Basic Features .. csv-table:: :file: ./RTCP/RTCP_Features.csv :widths: 10,10,30 :header-rows: 1 .. _RTCP_step9: .. tab-set:: .. tab-item:: RTCP Feature : Quality Feedback **Quality Feedback - Testcases** .. csv-table:: :file: ./RTCP/RTCP_Feature-1_Quality_Feedback_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _RTCP_step10: .. tab-set:: .. tab-item:: RTCP Feature : Synchronization Support **Synchronization Support - Testcases** .. csv-table:: :file: ./RTCP/RTCP_Feature-2_Synchronization_Support_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _RTCP_step11: .. tab-set:: .. tab-item:: RTCP Feature : Sender and Receiver Reports **Sender and Receiver Reports - Testcases** .. csv-table:: :file: ./RTCP/RTCP_Feature-3_Sender_And_Receiver_Reports_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _RTCP_step12: .. tab-set:: .. tab-item:: RTCP Feature : Source Description **Source Description - Testcases** .. csv-table:: :file: ./RTCP/RTCP_Feature-4_Source_Description_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _RTCP_step13: .. tab-set:: .. tab-item:: RTCP Feature : Session Control **Session Control - Testcases** .. csv-table:: :file: ./RTCP/RTCP_Feature-5_Session_Control_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _RTCP_step14: .. tab-set:: .. tab-item:: RTCP Feature : Scalability **Scalability - Testcases** .. csv-table:: :file: ./RTCP/RTCP_Feature-6_Scalability_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _RTCP_step15: .. tab-set:: .. tab-item:: RTCP Feature : Low Overhead **Low Overhead - Testcases** .. csv-table:: :file: ./RTCP/RTCP_Feature-7_Low_Overhead_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _RTCP_step16: .. tab-set:: .. tab-item:: RTCP Feature : Congestion Control **Congestion Control - Testcases** .. csv-table:: :file: ./RTCP/RTCP_Feature-8_Congestion_Control_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _RTCP_step17: .. tab-set:: .. tab-item:: RTCP Feature : Extensibility **Extensibility - Testcases** .. csv-table:: :file: ./RTCP/RTCP_Feature-9_Extensibility_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _RTCP_step18: .. tab-set:: .. tab-item:: RTCP Feature : Security Support **Security Support - Testcases** .. csv-table:: :file: ./RTCP/RTCP_Feature-10_Security_Support_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _RTCP_step19: .. tab-set:: .. tab-item:: RTCP Feature : Interoperability **Interoperability - Testcases** .. csv-table:: :file: ./RTCP/RTCP_Feature-11_Interoperability_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _RTCP_step20: .. tab-set:: .. tab-item:: RTCP Feature : Multicast and Unicast Support **Multicast and Unicast Support - Testcases** .. csv-table:: :file: ./RTCP/RTCP_Feature-12_Multicast_and_Unicast_Support_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _RTCP_step21: .. tab-set:: .. tab-item:: RTCP Feature : Periodic Reporting **Periodic Reporting - Testcases** .. csv-table:: :file: ./RTCP/RTCP_Feature-13_Periodic_Reporting_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _RTCP_step22: .. tab-set:: .. tab-item:: RTCP Feature : Codec and Media Adaptation **Codec and Media Adaptation - Testcases** .. csv-table:: :file: ./RTCP/RTCP_Feature-14_Codec_And_Media_Adaptation_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _RTCP_step23: .. tab-set:: .. tab-item:: RTCP Feature : Application-Level Integration **Application-Level Integration - Testcases** .. csv-table:: :file: ./RTCP/RTCP_Feature-15_Application-Level_Integration_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _RTCP_step26: .. tab-set:: .. tab-item:: Reference links * Reference links