摘要:在介紹RTP/RTCP協議的基礎上,詳細研究了四種常用的流量控制算法:常數乘增長和常數乘減少,常數加增長和常數乘減少,變常數增長和常數減少,變常數增長和變常數減少。
關鍵詞:RTP/RTCP;流量控制
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2009)25-7075-02
Flow Control Algorithm for RTP/RTCP
LIANG Hong-bo
(Anhui Communications Technology Institute,Hefei 230051,China)
Abstract:On the base of research on RTP/RTCP, four flow control algorithm are proposed consisting: constant multiplicative increase and constant multiplicative decrease, constant additive increase and constant multiplicative decrease, variable increase and constant decrease, and variable increase and variable decrease.
Key words:RTP/RTCP; flow control
目前,視頻會議、在線視頻、VOIP(Voice on IP)、實時監控、實時報警等網絡實時業務非常廣泛,這些環境需要數據在網絡上進行實時傳輸。隨著用戶的增加,帶寬資源顯得非常有限和十分緊張,網絡擁塞時常出現。對每個用戶而言,因特網是一個公平的,不限制數據發送的網絡。但如果用戶向因特網中發送大量的數據,而不考慮網絡傳輸能力的話,就會導致網絡擁塞,因而對用戶數據流進行控制是必須的。
目前,考慮到網絡實時業務的廣播特性和實時的特性,一般用UDP協議作為其傳輸層協議。由于UDP協議缺少擁塞控制機制,當大量的實時業務進入網絡時,網絡可能產生嚴重的擁塞,給UDP增加流量控制成為當務之急[1-3]。而RTP/RTCP(Real-time Transport Protocol/ Real-time Transport Control Protocol)協議為網絡實時業務提供了一種解決的方法[4-5]。
由于RTP流的速度和編碼方式可以反映媒體流的質量。用戶一般不希望媒體流速度變化較快,所以要合理調節發送速度,減少流的抖動,提高平穩性。
1 RTP/RTCP協議
RTP/RTCP協議是用于Internet上針對多媒體數據流的一種傳輸協議。RTP/RTCP協議被定義為在一對一或一對多的傳輸情況下工作其目的是提供時間信息和實現流同步。RTP/RTCP協議通常使用UDP來傳送數據,但RTP/RTCP協議也可以在TCP或其他協議之上工作。
RTP/RTCP協議本身包括兩部分:RTP數據傳輸協議和RTCP傳輸控制協議。為了可靠、高效地傳送實時數據,RTP和RTCP必須配合使用。通常RTCP傳輸控制協議包的數量占所有傳輸量的5%。
RTCP傳輸控制協議主要用于周期的傳送RTCP包,監視RTP傳輸的服務質量(Qos)。
1.1 RTP協議
RTP實時傳輸協議主要用于負載多媒體數據并通過包頭時間參數的配置使其具有實時的特征。RTP協議的數據包格式[4]如圖1所示。
RTP報文格式中包括固定的RTP報文頭,可選用的作用標識(CSRC項)和負載數據。如果RTP所依賴的底層協議對RTP報文的格式有所要求, RTP報文的格式必須進行修改或重新定義。RTP報文中參數的意義如下:
1) extension (X,1 bit,擴展位):若設置擴展位,在固定頭部后將有一個頭部擴展位,這在RFC1889有詳細的定義。
2) CSRC count (CC,4 bits,CSRC數):包含CSRC標示符的個數。
3) marker (M,1 bit,標記位):在數據流中標記一些重大的事情,比如幀邊界。也可以定義其他的標記位。如果無標記位,可以通過改變payload type位的數目來設定標記位。
4) payload type (PT,7 bits,負載類型):定義了RTP負載的格式,由應用程序決定其含義。最初為視頻和音頻定義的映射集合在Internet-Draft draft-ietf-avt-profile中,后又被the Assigned Numbers RFC的后來版本中進行了擴展。RTP發送者可以在任何時候發送一個單獨的RTP負載類型,PT不是專為合成單獨媒體流而設置的。
5) sequence number(16 bits,序列號):每個發出數據包都有一個序列號,且是按1遞增的。有時也被接受者用來檢查包的丟失和修復包的順序。序列號的初始值是隨機的(不可預測的),這使得對加密的純文本的攻擊變得更加困難(即使沒有加密的文本),因為數據包是通過翻譯器進行傳輸的。
6) timestamp(32 bits,時間戳):時間戳反映了RTP包第一個字節的直接抽樣。時間戳為同步不同的媒體流提供采樣時間用于重新建立原始音頻或視頻的時序。另外它還可以幫助接收方確定數據到達時間的同步或抖動。
7) SSRC(32 bits,同步資源):幫助接收方利用發送方生成的唯一的數值來區分多個同時的數據流。必須是一個嚴格的隨機數。在同一個RTP報文中,沒有兩個同步資源具有相同的SSRC標識。
8) CSRC (作用標識):CC給出了標識符的個數。如果有多于15個的貢獻資源,只有15個可被標識。CSRC的標識是利用貢獻資源的SSRC標識,由混頻器嵌入的。
就整個RTP所提供的應用類中,就一般情況所需要的功能來說,現有的RTP數據包頭是完善的。但是,為了與ALF設計協議一致,報文頭部還可以通過改變、增加參數實現優化或適應特殊應用。
1.2 RTCP協議
RTCP是建立在在一個會議中需要周期地向每個參會者傳輸控制包,運用的是數據包的分發機制。RTCP主要支持以下四種功能[4]:
1) 提供數據傳輸的質量反饋。是作為RTP傳輸協議的一部分,與其他傳輸協議的流和阻塞控制有關。反饋對自適應編碼控制直接起作用,但IP組播經驗表明,從發送者收到反饋對診斷發送錯誤是致關重要的。給所有參加者發送接收反饋報告允許問題觀察者估計那些問題是局部的,還是全局的。反饋功能由RTCP發送者和接收者報告執行。
2) RTCP帶有稱作規范名字(CNAME)的RTP源持久傳輸層標識。如發現沖突,或程序重新啟動,既然SSRC標識可改變,接收者需要CNAME跟蹤參加者。接收者也需要CNAME 與相關RTP連接中給定的幾個數據流聯系
3) 用于控制RTCP包數量的數量用語。前兩種功能要求所有參加者發送包,因此,為了RTP擴展到大規模數量,速率必須受到控制。讓每個參加者給其它參加者發送控制包,就大獨立觀察參加者數量。該數量用語計算包發送的速率。
4) 傳送最小連接控制信息,如參加者辨識。最可能用在\"松散控制\"連接,那里參加者自由進入或離開,沒有成員控制或參數協調,RTCP充當通往所有參加者的方便通道,但不必支持應用的所有控制通訊要求。
在IP組播場合應用RTP時,前3個功能是必須的,推薦用于所有情形。類似于RTP數據包,每個RTCP包以固定部分開始,緊接著的是可變長結構元素,但以一個32位邊界結束。包含安排要求和固定部分中長度段,使RTCP包可堆疊,不需要插入任何分隔符將多個RTCP包連接起來形成一個RTCP組合包,以低層協議用單一包發送出去。RTCP包主要包含五種類型[4]:
1) SR:發送報告,當前活動發送者發送、接收統計。
2) RR:接收報告,非活動發送者接收統計。
3) SDES:源描述項,包括CNAME
4) BYE:表示結束。
5) APP:應用特定函數。
其中最主要的報文是SR和RR。通常SR報文占總RTCP包數量的25%,RR報文占75%。
由于RTCP包含了含有已發送數據包的數量、丟失數據包的數量、傳輸間隔等統計資料。因此,我們可以利用這些信息動態地改變傳輸速率,實現流量控制或擁塞控制。
2 RTP/RTCP流量控制算法
本文介紹四種常用的流量控制算法:常數乘增長和常數乘減少,常數加增長和常數乘減少,變常數增長和常數減少,變常數增長和變常數減少。
2.1 常數乘增長和常數乘減少
文獻[6]采用了乘增長和乘減少的方法進行流量控制,如公式(1)。
(1)
其中,currentRate為當前的發送速率;packetLoss為丟包率,可有RTCP報文得出;threshold為閾值,可以取值為[0,0.5, 1, 1.5, 2, 2.5, 3]%;alpha為乘減少因子,一般小于1,文獻[6]設alpha=0.9;beat為乘增加因子,文獻[6]設beta=1.2。
該算法在一定程度上可以減少報文的擁塞,但是,當丟報率較小時,發送速度的快速增加會導致網絡的擁塞,以致發送速度的快速減少,容易導致流的較大抖動,不能保證流的平穩性。
2.2 常數加增長和常數乘減少
為了保證每個流的公平性,自適應算法應該采用加增長和乘減少的策略,如公式(2)。
(2)
aI為常數加增長因子,bD為乘減少因子,一般小于1。
常數加增長和常數乘減少控制算法可以保證每個流的公平性,但是,如果常數aI和bD設定得太大,RTP流的抖動會很大,也會加劇網絡的擁塞;如果設定得太小,RTP流的速度增加就會太慢或減小的太快,不利于網絡帶寬利用率的提高。
2.3 變常數增長和常數減少
一種平穩的、變常數增長的自適應算法,如公式(3)。
(3)
其中aI不再為常數,而是按如下的邏輯變換:
(1) 如果網絡中未曾發生過擁塞,即RTP流第一次進入網絡,則
aI=radd(4)
這時,RTP流按常量增長。
(2) 如果網絡中發生過擁塞,則
(5)
其中R發送端到接收端之間可以利用的最大帶寬,它可以是發送端的先驗知識得出;Xcong為上次發生擁塞的速度。
變常數增長和常數減少的控制方法在一定程度上可以保證流的平穩性,但由于其增長函數設置不合理,使傳輸的帶寬限制在前一次擁塞發生時的擁塞帶寬之下,不能適合網絡帶寬動態變化的特點,不利于提高網絡帶寬的利用率。
2.4 變常數增長和變常數減少
一種自適應流量控制算法,如公式(6)。
(6)
其中v0為初始的發送速度,r為綜合預測量,如公式(7)。
(7)
J可以直接從RTCP報文中獲取,J=jitter [4],而L的計算方法如(8)式所示
(8)
其中:cumu_lostn表示從會話開始到第n個傳輸間隔內所丟失的RTP 包總數;highest_mum_receiven表示從會話開始到第n個傳輸間隔內所接收到的RTP包的最大序列號[4]。
變常數增長和變常數減少的方法綜合考慮長期的網絡背景和當前的網絡狀態,采用變常數增長和變常數減少的方法對發送速度進行自適應調整,避免網絡的擁塞,在一定程度上保證了流的平穩性。
3 結論
流量控制算法在實時業務中的具有非常重要的地位,在介紹RTP/RTCP協議的基礎上,詳細研究了四種常用的流量控制算法,這些控制方法在一定程度上解決了RTP/RTCP中的流量控制問題,曾用于視頻會議、在線視頻、VOIP(Voice on IP)、實時監控、實時報警等網絡實時業務。
參考文獻:
[1] Kim M S,Won Y J, Hong W J. Characteristic Analysis of Internet Traffic from the Perspective of Flows [J].Computer Communications, 2006,29(10):1639-1652.
[2] Bas turk E, BirmanA. Design and Implement of a QoS Capable Switch-router. Computer Networks and ISDN Systems,1999,31(1/2):19-32.
[3] Floyd S, Jacobson V. Random Early Detection Gateways for Congestion Avoidance. IEEE/ACM Transactions on Networking,1993,1(4):397-413.
[4] Schulzrinne H,Casner S,Fredeirck R et a1.RTP:A Transport Protocol for Real-Time Applications[S].RFC 1889,1996.
[5] H.Sehulzrine.RTP Profile for Audio and Video Conferences with Minimal Control.RFC1890,IETF,1996.2-10.
[6] Marakby R, Hutchison D. Towards managed real-time communications in the Internet environment. High-performance Communication Systems, 1997. (HPCS’ 97) The Fourth IEEE Workshop on, 1997: 21-29