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

原文鏈接:https://www.jianshu.com/p/e5e21aeb219f?hmsr=toutiao.io

一 前言

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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章