《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 一種改進(jìn)的流媒體TFRC擁塞控制算法
一種改進(jìn)的流媒體TFRC擁塞控制算法
來源:微型機(jī)與應(yīng)用2014年第7期
賴文君
(江西理工大學(xué) 信息工程學(xué)院,江西 贛州 341000)
摘要: 為了解決流媒體傳輸擁塞控制機(jī)制的不足,提出了一種基于鏈路延遲抖動(dòng)趨勢的TFRC改進(jìn)算法。對傳統(tǒng)的TFRC擁塞控制算法以及鏈路延遲抖動(dòng)變化趨勢進(jìn)行了分析,采用對鏈路擁塞狀況進(jìn)行預(yù)測的策略,引入抖動(dòng)因子來修正TFRC的吞吐量公式,由鏈路延遲抖動(dòng)的趨勢自適應(yīng)地調(diào)整發(fā)送速率。仿真實(shí)驗(yàn)結(jié)果表明,改進(jìn)算法在保持TCP友好性的前提下,有效提高了流媒體數(shù)據(jù)傳輸?shù)钠交院头€(wěn)定性。
Abstract:
Key words :

摘  要: 為了解決流媒體傳輸擁塞控制機(jī)制的不足,提出了一種基于鏈路延遲抖動(dòng)趨勢的TFRC改進(jìn)算法。對傳統(tǒng)的TFRC擁塞控制算法以及鏈路延遲抖動(dòng)變化趨勢進(jìn)行了分析,采用對鏈路擁塞狀況進(jìn)行預(yù)測的策略,引入抖動(dòng)因子來修正TFRC的吞吐量公式,由鏈路延遲抖動(dòng)的趨勢自適應(yīng)地調(diào)整發(fā)送速率。仿真實(shí)驗(yàn)結(jié)果表明,改進(jìn)算法在保持TCP友好性的前提下,有效提高了流媒體數(shù)據(jù)傳輸?shù)钠交院头€(wěn)定性。
關(guān)鍵詞: 擁塞控制;流媒體;TFRC;TCP友好性

 對流媒體數(shù)據(jù)傳輸?shù)膿砣刂蒲芯烤哂兄匾饬x,在提高流媒體傳輸QoS中起關(guān)鍵性作用。隨著信息化、網(wǎng)絡(luò)化和多媒體技術(shù)的發(fā)展,網(wǎng)絡(luò)傳輸?shù)奈募兊迷絹碓酱?,早期將文件下載到本地再播放的方式已成為網(wǎng)絡(luò)發(fā)展的一個(gè)障礙。在這種情形下對流媒體技術(shù)的研究成為多媒體技術(shù)領(lǐng)域的一個(gè)熱點(diǎn)。流媒體業(yè)務(wù)對速率抖動(dòng)和延遲的敏感特性決定了傳統(tǒng)的TCP擁塞控制機(jī)制對它并不適用;而通常作為流媒體音視頻傳輸層協(xié)議的UDP只能保證盡力傳輸,缺乏相應(yīng)的擁塞控制機(jī)制,一旦發(fā)生網(wǎng)絡(luò)擁塞,UDP與TCP競爭的不公平性可能導(dǎo)致TCP流的“饑餓”甚至擁塞崩潰的發(fā)生。
 針對上述問題,人們通過引入類似TCP速率控制機(jī)制的TCP友好性(TCP Friendly)機(jī)制來實(shí)現(xiàn)流媒體數(shù)據(jù)流與TCP流共同分享可用帶寬。TFRC(TCP-Friendly Rate Control)便是其中最具代表性的一種TCP友好協(xié)議。從HANDLEY M等提出TFRC尤其是2003年IETF發(fā)布文檔RFC3448以來[1],眾多學(xué)者以此為參考對流媒體擁塞控制算法進(jìn)行了研究和改進(jìn)。參考文獻(xiàn)[2]指出TFRC在網(wǎng)絡(luò)狀況好的情況下表現(xiàn)得過于保守,導(dǎo)致帶寬利用率不高,提出利用模糊邏輯擁塞控制策略(FLC)來調(diào)整視頻發(fā)送速率,并用遺傳算法優(yōu)化模糊控制規(guī)則,以提高擁塞控制性能;但模糊化的不確定性和模糊控制規(guī)則的選取都會(huì)很大程度地對控制效果產(chǎn)生很大的影響。參考文獻(xiàn)[3]提出一種基于概率偏差計(jì)算超時(shí)重傳時(shí)間(RTO)的算法,以實(shí)際丟包事件概率與最優(yōu)丟包事件概率之間的偏差為依據(jù),對實(shí)時(shí)的RTO值進(jìn)行放大或縮小,使其更接近當(dāng)前TCP流的RTO來實(shí)現(xiàn)更好的TCP友好性。參考文獻(xiàn)[4]提出對TFRC計(jì)算公式中丟包率的不同冪級(jí)引入權(quán)重系數(shù),根據(jù)網(wǎng)絡(luò)的擁塞程度在網(wǎng)絡(luò)擁塞嚴(yán)重時(shí)加大發(fā)送速率,在擁塞較輕時(shí)減少發(fā)送速率,以保證流媒體數(shù)據(jù)傳輸?shù)姆€(wěn)定,增加了對不同網(wǎng)絡(luò)環(huán)境下如何來確保吞吐率穩(wěn)定性的考慮。
 本文在對TFRC擁塞控制機(jī)制分析研究的基礎(chǔ)上,提出一種基于鏈路延遲抖動(dòng)趨勢的TFRC改進(jìn)算法TFRC-DJT(TFRC-Delay Jitter Trend),通過對抖動(dòng)延遲的計(jì)算分析,并引入抖動(dòng)因子對吞吐率估值進(jìn)行調(diào)整,對鏈路中的擁塞狀況作早期的預(yù)測以提高傳輸?shù)钠椒€(wěn)度和TCP友好性。
1 TFRC擁塞控制算法
 現(xiàn)網(wǎng)中數(shù)據(jù)大部分都為TCP或者UDP的流,由于受Internet異構(gòu)性的影響,早期的TCP協(xié)議在網(wǎng)絡(luò)擁塞控制方面存在許多不足。為此,對TCP協(xié)議擁塞控制的研究從20世紀(jì)80年代初開始就未停止過,從最初的RFC793(TCP-Tahoe)提到擁塞避免算法以來,TCP協(xié)議歷經(jīng)TCP-Reno、TCP-Vegas、FAST-TCP和TCP-New-Reno等版本,擁塞控制算法被不斷改進(jìn)和完善。尤其是慢啟動(dòng)和擁塞避免的提出,以及后來快速重傳和快速恢復(fù)的引入使得TCP協(xié)議的可靠傳輸成為可能[5]。但與此同時(shí),可靠傳輸是以犧牲時(shí)延作為代價(jià)的,較大的傳輸延時(shí)使其無法直接應(yīng)用于許多像流媒體這樣的實(shí)時(shí)性業(yè)務(wù)中。
1.1 流媒體的擁塞控制機(jī)制
傳統(tǒng)的流媒體傳輸方式是基于UDP的,并不具有TCP友好性。UDP流在瓶頸鏈路上容易造成嚴(yán)重的資源不公平占用,甚至出現(xiàn)嚴(yán)重的擁塞,導(dǎo)致數(shù)據(jù)交付延遲、吞吐量下降以及丟棄概率增加等現(xiàn)象的發(fā)生。在TCP流大約占90%通信量的Internet,流媒體應(yīng)用必須具備一定的擁塞控制機(jī)制來達(dá)到TCP友好性[6]。此外,流媒體數(shù)據(jù)的傳輸會(huì)隨著網(wǎng)絡(luò)狀態(tài)的變化而改變,導(dǎo)致其傳輸狀態(tài)在擁塞的起始狀態(tài)和穩(wěn)定狀態(tài)之間不斷變化,較好的擁塞控制方案還必須考慮應(yīng)對網(wǎng)絡(luò)變化時(shí)數(shù)據(jù)傳輸?shù)氖諗刻匦约皞鬏數(shù)钠椒€(wěn)性,以避免大幅波動(dòng)。
現(xiàn)行的大多數(shù)流媒體應(yīng)用的傳輸都是基于C/S和P2P這兩種方式,其中,P2P的通信按端點(diǎn)的傳輸方式又可以分為單播和組播兩種。組播是一種有效的單點(diǎn)到多點(diǎn)的數(shù)據(jù)傳輸方式,但由于缺乏合適的擁塞控制機(jī)制,而無法得到ISP(Internet Service Provisor)的廣泛應(yīng)用[7]。單播的擁塞控制一般都是基于源端的,可分為基于模型和基于探測兩種類型?;谔綔y的方案通過模仿TCP的AIMD行為實(shí)現(xiàn)擁塞控制,發(fā)送端不斷探測網(wǎng)絡(luò)的可用帶寬,將丟包率與某一閾值比較來調(diào)節(jié)發(fā)送速率;但該方法容易導(dǎo)致速率在短期內(nèi)出現(xiàn)與TCP類似的鋸齒形波動(dòng)變化。基于模型的方案根據(jù)TCP流量模型進(jìn)行擁塞控制,其目的是在對擁塞有響應(yīng)的前提下,保持平滑的速率變化,因此較適合流媒體的傳輸。
1.2 TFRC算法
 TFRC是一種基于模型、通過控制發(fā)送速率的端到端單播TCP友好協(xié)議。TFRC的目標(biāo)是使流媒體數(shù)據(jù)與TCP共同競爭的網(wǎng)絡(luò)傳輸流(如實(shí)時(shí)流媒體數(shù)據(jù)流)具有適度的公平性。在同等條件下,TFRC在網(wǎng)絡(luò)中的發(fā)送速率和TCP的發(fā)送速率應(yīng)基本相同;并且,通過接收端丟包率的反饋調(diào)整使TFRC具有相對比TCP更好的平滑性,更適合流媒體對發(fā)送速率平滑性有較高要求的應(yīng)用[8]。TFRC一般具有固定的數(shù)據(jù)包大小,只需調(diào)整發(fā)送速率來響應(yīng)當(dāng)前擁塞情況。
 TFRC保持對TCP友好性是通過使用Reno-TCP協(xié)議的吞吐量計(jì)算公式來實(shí)現(xiàn)的,即:

 



    (1)由式(3)計(jì)算最新的延遲抖動(dòng)值ΔDk,并對前一次計(jì)算的平均延遲抖動(dòng)值J(k-1)進(jìn)行保存操作。
    (2)由式(4)計(jì)算本次的平均抖動(dòng)延遲J(k)。
    (3)將本次平均抖動(dòng)延遲J(k)與延遲門限值threshold進(jìn)行比較,如果J(k)≥threshold,則按式(5)計(jì)算吞吐量估值,即Tk=(1-α)Tx;如果J(k)<threshold,則Tk=βTx(k)+(1-β)Tx(k-1)(β取0.875)。
    (4)根據(jù)計(jì)算的吞吐量估值Tk,調(diào)整發(fā)送速率。
    (5)接收下一個(gè)包,并重復(fù)上述步驟,直至流媒體分組發(fā)送完成。
3 實(shí)驗(yàn)仿真與分析
 在網(wǎng)絡(luò)仿真軟件NS-2.34下分別對TCP、TFRC和TFRC-DJT進(jìn)行仿真實(shí)驗(yàn),以驗(yàn)證改進(jìn)效果。在NS2目錄下添加TFRC-DJT協(xié)議(需添加5個(gè)文件:tfrc_djt.h、tfrc_djt.cc、tfrc_djt_packet.h、tfrc_djt_rtable.h和tfrc_djt_rtable.cc),修改makefile文件,并用make重新編譯NS2。仿真實(shí)驗(yàn)采用啞鈴型的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),如圖1所示。

 由表1可知,TFRC算法的TFRC流與共存的TCP流的吞吐率比值為2.15,TFRC-DJT算法的TFRC流與共存的TCP流的吞吐率比值為2.13,表明TFRC-DJT算法較好地保持了對TCP業(yè)務(wù)流的友好性;TFRC算法的帶寬占用率為68.3%,TFRC-DJT算法的帶寬占用率為68.1%,兩者具有相似的帶寬占用率;但TFRC-DJT算法的單向傳輸延遲抖動(dòng)均值比TFRC算法下降了13.97%。
 從圖2可以看出,TFRC-DJT算法的TFRC流吞吐率及其平滑性均優(yōu)于TFRC算法。
 本文針對TFRC存在的不足提出了一種基于鏈路延遲抖動(dòng)趨勢的TFRC改進(jìn)算法,算法對鏈路中的擁塞狀況進(jìn)行預(yù)測,引入抖動(dòng)因子對TFRC吞吐量公式進(jìn)行修正,利用鏈路延遲抖動(dòng)趨勢來調(diào)整發(fā)送速率,并使用類似TCP的加權(quán)平均方案來提高其平穩(wěn)性,在保持TCP友好性的同時(shí)提高了流媒體數(shù)據(jù)傳輸?shù)钠交裕垢倪M(jìn)的TFRC算法更適合于實(shí)時(shí)流媒體業(yè)務(wù)傳輸?shù)囊蟆?br/>參考文獻(xiàn)
[1] HANDLEY M, FLOYD S, PADHYE J, et al. RFC 3448, TCP friendly rete control(TFRC):protocol specification[S].2003.
[2] 李紅,沈未名.基于模糊邏輯的Internet視頻流擁塞控制[J].計(jì)算機(jī)應(yīng)用研究,2009,26(5):1871-1874.
[3] 羅作民,王竟佳,李兵.基于概率偏差的TFRC-RTO算法[J].計(jì)算機(jī)工程,2010,36(21):92-94.
[4] 姜明,吳春明,張旻,等.TFRC協(xié)議友好性與平穩(wěn)性改進(jìn)算法研究[J].電子學(xué)報(bào),2009,37(8):1723-1727.
[5] 陶洋,杜軍恒,武俊.一種自適應(yīng)比例系數(shù)的TCP擁塞控制策略[J].微型機(jī)與應(yīng)用,2011,30(12):58-62.
[6] 肖甫,王汝傳,孫力娟,等.基于TCP友好的無線網(wǎng)絡(luò)擁塞控制機(jī)制研究[J].計(jì)算機(jī)科學(xué),2010,37(7):50-53.
[7] 楊云,周堅(jiān),陸璐,等.一種TCP-Friendly主動(dòng)分層組播擁塞控制機(jī)制[J].小型微型計(jì)算機(jī)系統(tǒng),2007,28(10):1774-1778.
[8] 甘泉,薛質(zhì).控制端到端傳輸延遲抖動(dòng)的改進(jìn)TFRC算法[J].計(jì)算機(jī)工程,2008,34(10):105-107.
[9] 張冰.流媒體業(yè)務(wù)的寬帶接入與擁塞控制技術(shù)研究[D].西安:西安電子科技大學(xué),2008.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。