摘 要: 為了解決流媒體傳輸擁塞控制機制的不足,提出了一種基于鏈路延遲抖動趨勢的TFRC改進算法。對傳統的TFRC擁塞控制算法以及鏈路延遲抖動變化趨勢進行了分析,采用對鏈路擁塞狀況進行預測的策略,引入抖動因子來修正TFRC的吞吐量公式,由鏈路延遲抖動的趨勢自適應地調整發送速率。仿真實驗結果表明,改進算法在保持TCP友好性的前提下,有效提高了流媒體數據傳輸的平滑性和穩定性。
關鍵詞: 擁塞控制;流媒體;TFRC;TCP友好性
對流媒體數據傳輸的擁塞控制研究具有重要意義,在提高流媒體傳輸QoS中起關鍵性作用。隨著信息化、網絡化和多媒體技術的發展,網絡傳輸的文件變得越來越大,早期將文件下載到本地再播放的方式已成為網絡發展的一個障礙。在這種情形下對流媒體技術的研究成為多媒體技術領域的一個熱點。流媒體業務對速率抖動和延遲的敏感特性決定了傳統的TCP擁塞控制機制對它并不適用;而通常作為流媒體音視頻傳輸層協議的UDP只能保證盡力傳輸,缺乏相應的擁塞控制機制,一旦發生網絡擁塞,UDP與TCP競爭的不公平性可能導致TCP流的“饑餓”甚至擁塞崩潰的發生。
針對上述問題,人們通過引入類似TCP速率控制機制的TCP友好性(TCP Friendly)機制來實現流媒體數據流與TCP流共同分享可用帶寬。TFRC(TCP-Friendly Rate Control)便是其中最具代表性的一種TCP友好協議。從HANDLEY M等提出TFRC尤其是2003年IETF發布文檔RFC3448以來[1],眾多學者以此為參考對流媒體擁塞控制算法進行了研究和改進。參考文獻[2]指出TFRC在網絡狀況好的情況下表現得過于保守,導致帶寬利用率不高,提出利用模糊邏輯擁塞控制策略(FLC)來調整視頻發送速率,并用遺傳算法優化模糊控制規則,以提高擁塞控制性能;但模糊化的不確定性和模糊控制規則的選取都會很大程度地對控制效果產生很大的影響。參考文獻[3]提出一種基于概率偏差計算超時重傳時間(RTO)的算法,以實際丟包事件概率與最優丟包事件概率之間的偏差為依據,對實時的RTO值進行放大或縮小,使其更接近當前TCP流的RTO來實現更好的TCP友好性。參考文獻[4]提出對TFRC計算公式中丟包率的不同冪級引入權重系數,根據網絡的擁塞程度在網絡擁塞嚴重時加大發送速率,在擁塞較輕時減少發送速率,以保證流媒體數據傳輸的穩定,增加了對不同網絡環境下如何來確保吞吐率穩定性的考慮。
本文在對TFRC擁塞控制機制分析研究的基礎上,提出一種基于鏈路延遲抖動趨勢的TFRC改進算法TFRC-DJT(TFRC-Delay Jitter Trend),通過對抖動延遲的計算分析,并引入抖動因子對吞吐率估值進行調整,對鏈路中的擁塞狀況作早期的預測以提高傳輸的平穩度和TCP友好性。
1 TFRC擁塞控制算法
現網中數據大部分都為TCP或者UDP的流,由于受Internet異構性的影響,早期的TCP協議在網絡擁塞控制方面存在許多不足。為此,對TCP協議擁塞控制的研究從20世紀80年代初開始就未停止過,從最初的RFC793(TCP-Tahoe)提到擁塞避免算法以來,TCP協議歷經TCP-Reno、TCP-Vegas、FAST-TCP和TCP-New-Reno等版本,擁塞控制算法被不斷改進和完善。尤其是慢啟動和擁塞避免的提出,以及后來快速重傳和快速恢復的引入使得TCP協議的可靠傳輸成為可能[5]。但與此同時,可靠傳輸是以犧牲時延作為代價的,較大的傳輸延時使其無法直接應用于許多像流媒體這樣的實時性業務中。
1.1 流媒體的擁塞控制機制
傳統的流媒體傳輸方式是基于UDP的,并不具有TCP友好性。UDP流在瓶頸鏈路上容易造成嚴重的資源不公平占用,甚至出現嚴重的擁塞,導致數據交付延遲、吞吐量下降以及丟棄概率增加等現象的發生。在TCP流大約占90%通信量的Internet,流媒體應用必須具備一定的擁塞控制機制來達到TCP友好性[6]。此外,流媒體數據的傳輸會隨著網絡狀態的變化而改變,導致其傳輸狀態在擁塞的起始狀態和穩定狀態之間不斷變化,較好的擁塞控制方案還必須考慮應對網絡變化時數據傳輸的收斂特性及傳輸的平穩性,以避免大幅波動。
現行的大多數流媒體應用的傳輸都是基于C/S和P2P這兩種方式,其中,P2P的通信按端點的傳輸方式又可以分為單播和組播兩種。組播是一種有效的單點到多點的數據傳輸方式,但由于缺乏合適的擁塞控制機制,而無法得到ISP(Internet Service Provisor)的廣泛應用[7]。單播的擁塞控制一般都是基于源端的,可分為基于模型和基于探測兩種類型。基于探測的方案通過模仿TCP的AIMD行為實現擁塞控制,發送端不斷探測網絡的可用帶寬,將丟包率與某一閾值比較來調節發送速率;但該方法容易導致速率在短期內出現與TCP類似的鋸齒形波動變化。基于模型的方案根據TCP流量模型進行擁塞控制,其目的是在對擁塞有響應的前提下,保持平滑的速率變化,因此較適合流媒體的傳輸。
1.2 TFRC算法
TFRC是一種基于模型、通過控制發送速率的端到端單播TCP友好協議。TFRC的目標是使流媒體數據與TCP共同競爭的網絡傳輸流(如實時流媒體數據流)具有適度的公平性。在同等條件下,TFRC在網絡中的發送速率和TCP的發送速率應基本相同;并且,通過接收端丟包率的反饋調整使TFRC具有相對比TCP更好的平滑性,更適合流媒體對發送速率平滑性有較高要求的應用[8]。TFRC一般具有固定的數據包大小,只需調整發送速率來響應當前擁塞情況。
TFRC保持對TCP友好性是通過使用Reno-TCP協議的吞吐量計算公式來實現的,即:
(1)由式(3)計算最新的延遲抖動值ΔDk,并對前一次計算的平均延遲抖動值J(k-1)進行保存操作。
(2)由式(4)計算本次的平均抖動延遲J(k)。
(3)將本次平均抖動延遲J(k)與延遲門限值threshold進行比較,如果J(k)≥threshold,則按式(5)計算吞吐量估值,即Tk=(1-α)Tx;如果J(k)<threshold,則Tk=βTx(k)+(1-β)Tx(k-1)(β取0.875)。
(4)根據計算的吞吐量估值Tk,調整發送速率。
(5)接收下一個包,并重復上述步驟,直至流媒體分組發送完成。
3 實驗仿真與分析
在網絡仿真軟件NS-2.34下分別對TCP、TFRC和TFRC-DJT進行仿真實驗,以驗證改進效果。在NS2目錄下添加TFRC-DJT協議(需添加5個文件:tfrc_djt.h、tfrc_djt.cc、tfrc_djt_packet.h、tfrc_djt_rtable.h和tfrc_djt_rtable.cc),修改makefile文件,并用make重新編譯NS2。仿真實驗采用啞鈴型的網絡拓撲結構,如圖1所示。
由表1可知,TFRC算法的TFRC流與共存的TCP流的吞吐率比值為2.15,TFRC-DJT算法的TFRC流與共存的TCP流的吞吐率比值為2.13,表明TFRC-DJT算法較好地保持了對TCP業務流的友好性;TFRC算法的帶寬占用率為68.3%,TFRC-DJT算法的帶寬占用率為68.1%,兩者具有相似的帶寬占用率;但TFRC-DJT算法的單向傳輸延遲抖動均值比TFRC算法下降了13.97%。
從圖2可以看出,TFRC-DJT算法的TFRC流吞吐率及其平滑性均優于TFRC算法。
本文針對TFRC存在的不足提出了一種基于鏈路延遲抖動趨勢的TFRC改進算法,算法對鏈路中的擁塞狀況進行預測,引入抖動因子對TFRC吞吐量公式進行修正,利用鏈路延遲抖動趨勢來調整發送速率,并使用類似TCP的加權平均方案來提高其平穩性,在保持TCP友好性的同時提高了流媒體數據傳輸的平滑性,使改進的TFRC算法更適合于實時流媒體業務傳輸的要求。
參考文獻
[1] HANDLEY M, FLOYD S, PADHYE J, et al. RFC 3448, TCP friendly rete control(TFRC):protocol specification[S].2003.
[2] 李紅,沈未名.基于模糊邏輯的Internet視頻流擁塞控制[J].計算機應用研究,2009,26(5):1871-1874.
[3] 羅作民,王竟佳,李兵.基于概率偏差的TFRC-RTO算法[J].計算機工程,2010,36(21):92-94.
[4] 姜明,吳春明,張旻,等.TFRC協議友好性與平穩性改進算法研究[J].電子學報,2009,37(8):1723-1727.
[5] 陶洋,杜軍恒,武俊.一種自適應比例系數的TCP擁塞控制策略[J].微型機與應用,2011,30(12):58-62.
[6] 肖甫,王汝傳,孫力娟,等.基于TCP友好的無線網絡擁塞控制機制研究[J].計算機科學,2010,37(7):50-53.
[7] 楊云,周堅,陸璐,等.一種TCP-Friendly主動分層組播擁塞控制機制[J].小型微型計算機系統,2007,28(10):1774-1778.
[8] 甘泉,薛質.控制端到端傳輸延遲抖動的改進TFRC算法[J].計算機工程,2008,34(10):105-107.
[9] 張冰.流媒體業務的寬帶接入與擁塞控制技術研究[D].西安:西安電子科技大學,2008.