1. 程式人生 > >超越RFC3550 - RTP/RTCP協議族分析

超越RFC3550 - RTP/RTCP協議族分析

一 前言

RF3550定義實時傳輸協議RTP和它的控制協議RTCP。RTP協議是Internet上針對流媒體傳輸的基礎協議,該協議詳細說明在網際網路上傳輸音視訊的標準資料包格式。RTP本身只保證實時資料的傳輸,並不能提供可靠傳輸、流量控制和擁塞控制等服務質量保證,這需要RTCP協議提供這些服務。

RTCP協議負責流媒體的傳輸質量保證,提供流量控制和擁塞控制等服務。在RTP會話期間,各參與者週期性彼此傳送RTCP報文。報文中包含各參與者資料傳送和接收等統計資訊,參與者可以據此動態控制流媒體傳輸質量。RTP和RTCP配合使用,通過有效反饋使使流媒體傳輸效率最佳化。

IETF的RFC3550定義RTP/RTCP協議的基本內容,包括報文格式、傳輸規則等。除此之外,IETF還定義一系列擴充套件協議,包括RTP檔次擴充套件,RTCP報文型別擴充套件,等等。本文對這些協議進行初步歸納總結,在分析RFC3550的基礎上,以檔次為主線分析RTP系列協議,以報文型別為主線分析RTCP系列協議。

二 RFC3550協議

RFC3550 - RTP: A Transport Protocol for Real-Time Applications (RTP)
RFC3550協議定義RTP和RTCP協議的最基本內容,包括報文格式及頭部擴充套件、傳送和接收規則、RTP Mixer和Translator、協議安全等內容。詳細內容都在協議中定義,這裡只簡述RTP和RTCP報文的基本格式。


圖1 RTP報文頭部格式

RTP報文由固定頭部、(可選)擴充套件頭部和負載三部分組成,如圖1所示。頭部中的X域標示固定頭部後面是否跟隨擴充套件頭部,PT域定義負載型別。各部分的詳細定義請參考RFC3550[1]。


圖2 RTCP報文Sender Report頭部格式

RFC3550根據RTCP報文型別定義SR、RR、SDES、BYE和APP五種報文格式。圖2顯示了SR(Sender Report)的報文格式,包括固定頭部、傳送端資訊和報告塊三部分組成:傳送端資訊攜帶NTP時間同步和資料傳送統計等內容,報告塊則包含傳送端接收到資料的統計資訊。關於RTCP報文格式的詳細資訊,請繼續參考RFC3550 [1]。

二 RTP檔次擴充套件

RFC3550關於RTP檔次的定義如下[1]:
“檔次定義了一系列負載型別和對應的負載格式,也定義了特定於具體應用的RTP擴充套件和修改。典型地,某個應用僅基於一個檔次執行。”

IETF針對RFC3550在檔次方面定義了一系列擴充套件協議,總結如下表1:


表1 RFC3550在檔次方面的擴充套件

RFC3551(RTP/AVP)在RFC3550的基礎上針對RTP檔次進行補充形成RTP/APVP檔次,被用在具有最小會話控制的音視訊會議中,是其它擴充套件檔次的基礎。該檔次在沒有引數協商和成員控制的會話中非常有用。該檔次也為音視訊定義一系列編碼和負載格式。對於具體的流媒體負載格式,IETF也定義一系列協議詳細描述,如VP8視訊負載格式[6]和H264視訊負載格式[7],等等。

RFC3711(SRTP,也即RTP/SAVP)是RTP/AVP在安全方面進行擴充套件形成的檔次,為RTP/RTCP提供資料加密、訊息認證、重放保護等功能。SRTP具有高吞吐量和低資料膨脹等特點,是異構環境下對RTP/RTCP資料的有效保護。

RFC4585(RTP/AVPF)是RTP/AVP在及時反饋方面進行擴充套件形成的檔次,使得接收端能夠向傳送端提供及時反饋,實現短時調整和基於反饋的修復機制。該協議定義早期RTCP報文以實現及時反饋,並定義一系列通用RTCP反饋報文和特定於應用的反饋報文,如NACK、PLI、SLI、RPSI等。

RTC5124(RTP/SAVPF)則是RTP/SAVP和RTP/AVPF的綜合。SAVP和AVPF在使用時,需要參與者藉助於SDP協議[8]就檔次和引數資訊達成一致。但是對一個RTP會話來說,這兩種檔次不能同時被協商。而實際應用中,我們有同時使用這兩種檔次的需要。因此,RTP/SAVPF檔次應運而生,它能夠使得RTP會話同時具有安全和及時反饋兩方面的特性。

本節對RFC3550在檔次方面擴充套件形成的一系列協議進行初步分析。可以看到,RFC3550只定義最基本的內容,在實際應用中會對其在安全性、及時反饋等方面進行擴充套件。

三 RTCP報文型別擴充套件

RFC 3550定義五種RTCP報文,型別在報文頭部的PT域定義。表2對它們作簡單描述。


表2 RFC3550定義的五種RTCP報文

SR報文用於傳送端報告本端的資料傳送統計資訊和資料接收統計資訊,RR報文用於報告本端的資料接收統計資訊,SDES報文用於報告本端的描述性資訊,BYE在本端離開會話時傳送,而APP則是特定於應用的資料。

IETF根據實際需求對RTCP的報文型別進行擴充套件,定義了一系列協議。對這類RTCP報文總結如表3所示:


表3 RTCP其它報文及所在RFC

下面對這些RFC做進一步分析:
RFC5450 - Transmission Time Offsets in RTP Streams
該協議在定義一種更精細地描述傳輸時間的方法的基礎上,定義一種改進的Jitter報告報文,負載型別為195。

RFC5104 - Codec Control Messages in the RTP Audio-Visual Profile with Feedback (AVPF)
該協議對RFC4585 AVPF檔次進一步補充,定義一系列傳輸層和特定於負載的RTCP報文格式。該系列報文對SR/RR報文的RC域重定義為FMT域,用以區分報文的子型別。綜合RFC4585所定義的報文,如下表4所示:


表4 RTPFB和PSFB及其子型別

RFC3611 - RTP Control Protocol Extended Reports (RTCP XR)
該協議定義RTCP擴充套件報告塊,負載型別為207。RTCP擴充套件報告塊在SR/RR報告塊的基礎上傳輸更多的資訊。RFC3661定義了7種子報告塊,總結如表5:


表5 RFC3611擴充套件報告塊

本節以報文型別為主線,歸納總結RTCP報文及其擴充套件報文,內容比較多也比較繁瑣。這些報文為RTP提供更豐富的控制資訊和統計資料。

四 總結

本文在分析RTP/RTCP基礎協議RFC3550的基礎上,以檔次為主線分析RTP系列擴充套件協議,以報文型別為主線分析RTCP系列擴充套件協議。通過以上工作,得到一個較為清晰的框架和流程,為進一步學習RTP/RTCP協議打下良好基礎。

參考文獻

[1] RFC3550 - RTP: A Transport Protocol for Real-Time Applications
[2] RFC3551 - RTP Profile for Audio and Video Conferences with Minimal Control
[3] RFC3711 - The Secure Real-time Transport Protocol (SRTP)
[4] RFC4585 - Extended RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/AVPF)
[5] RFC5124 - Extended Secure RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/SAVPF)
[6] RFC7741 - RTP Payload Format for VP8 Video
[7] RFC6184 - RTP Payload Format for H.264 Video
[8] RFC4566 - SDP: Session Description Protocol
[9] RFC 5450 - Transmission Time Offsets in RTP Streams
[10] RFC 5104 - Codec Control Messages in the RTP Audio-Visual Profile with Feedback (AVPF)
[11] RFC3611 - RTP Control Protocol Extended Reports (RTCP XR)