(武漢大學 遙感測繪信息工程國家重點實驗室 武漢 430079)
摘 要:為了提高視頻傳輸質量,在Internet上對視頻流進行擁塞控制,即利用包發送和接收間隔時間(IPGs)代替丟包率作為擁塞指示,采用模糊邏輯擁塞控制策略(FLC)調整視頻發送速率并用遺傳算法優化模糊控制規則,提高了擁塞控制性能。仿真結果表明,與TFRC和RAP擁塞控制相比,由于FLC發送速率更平滑、帶寬利用率更高,從而減少了丟包,提高了視頻傳輸質量;另外,FLC能夠與競爭的TCP流公平地分享帶寬并對路由器緩沖區大小保持了很好的魯棒性。
關鍵詞:模糊邏輯;擁塞控制;遺傳算法;視頻流
中圖分類號:TP393.06文獻標志碼:A
文章編號:1001-3695(2009)05-1871-03
Congestion control of Internet video streaming based on fuzzylogic
LI Hong,SHEN Weiming
(State Key Laboratory of Information Engineering in Surveying Mapping Remote Sensing Wuhan University Wuhan 430079 China)
Abstract:Congestion control of video streaming crossing the Internet is a real challenge in order to improve the quality of received video.This paper put forward a fuzzylogic congestion control strategy (FLC) which changed the sending rate of video streaming,it used packet dispersion instead of packet loss to detect congestion and used genetic algorithm to optimize the fuzzy control rules. Simulation shows that the FLC’s sending rate is significantly smoother allowing it to more closely take up available bandwidth and the packet losses is lower compared with the wellknown TFRC and RAP congestion controller. In addition the FLC is TCPfriendly and is robust to changes in router buffer size.
Key words:fuzzy logic; congestion control; genetic algorithm; video streaming
0 引言
Internet的快速增長極大地促進了多媒體在其上的應用,如視頻會議、視頻監控、視頻點播、流媒體等。2003年的統計表明[1],多媒體流量上升到了整個網絡流量的60%。由于網絡帶寬和網絡資源的限制,網絡將出現擁塞,從而增加傳輸延遲、抖動和丟包,這極大地影響了對這些參數敏感的視頻傳輸質量,為此,需要對網絡擁塞進行檢測并實施合理的傳輸控制策略。傳統的以丟包率作為擁塞指示的TCP在Internet擁塞控制上取得了巨大的成功。這種方法可以接受數據包的丟失,因為丟失的包可以通過TCP的重傳機制得到,但卻造成了TCP的性能瓶頸[2]。對于采用UDP的視頻流,由于其對時延和播放時間有嚴格要求,如果不進行擁塞的早期檢測,而是仍然采用丟包作為擁塞指示,那么丟失的包無法通過重傳獲得,會進一步降低視頻傳輸質量。
由于網絡的復雜性,很難用精確的數據模型對網絡擁塞進行建模。傳統的擁塞控制方法要么采用試探的方法,要么對網絡擁塞建模進行簡化,控制效果不理想。模糊邏輯由于適用于非線性、時變和無法建模的系統,在工業和商業控制領域得到了廣泛應用[3]。采用模糊邏輯對擁塞進行控制是一種有效的方法。本文針對Internet視頻流傳輸提出了一種具有早期擁塞檢測功能的模糊邏輯擁塞控制策略(FLC)。FLC是一種針對單播流的基于發送端的擁塞控制策略,由于FLC采用了合理的網絡擁塞檢測方法和模糊控制規則優化算法,獲得了很好的擁塞控制效果。
1 相關工作
由于網絡多媒體的廣泛應用,針對單播視頻流,學術界提出了許多擁塞控制方法。RAP[4]是模仿TCP的AIMD方法而設計出來的協議。RAP在沒有或很少發生數據包傳輸超時時,可以獲得與TCP相近的速率,但它沒有考慮數據包傳輸超時,因此在存在大量超時事件時,擁塞控制力度顯得不夠。TFRC[5]以TCP吞吐量公式為基礎來調整發送速率。TFRC在網絡狀況較差或網絡有丟包事件存在的情況下有較好的表現,但它不能在網絡狀況好的情況下精確估計丟包率,因此在網絡狀況良好時表現得過于保守,對網絡帶寬利用率不高。TEAR[6]是一種基于窗口與速率調整的混合型擁塞控制協議。TEAR的接收端計算出恰當的接收速率并反饋給發送端,發送端根據此決定發送速率,避免了TCP中經常的速率改變;同時保持了TCP的友好性,但對網絡狀況的變化顯得不夠敏感。
為了對網絡擁塞進行早期檢測,文獻[7]提出了一種基于丟包和時延抖動的擁塞控制方法,具有較好的帶寬利用率和TCP友好性;但由于該方法對發送速率的控制不夠精細,發送速率不夠平滑。文獻[8]提出了一種基于往返延時的擁塞控制方法,該方法能及時發現網絡擁塞,減少了丟包,但帶寬利用率不高。文獻[9]提出了一種基于單程延時的擁塞控制方法,與文獻[8]相比,該文不需要附加的探測包,因此提高了帶寬的利用率;同時由于其采用了AIAD的速率控制方式,發送速率更加平滑;但該方法在與TCP流共存時搶占了過多的帶寬,使TCP友好性得不到保證。
近年來人們對視頻流擁塞控制進行了大量的研究,由于網絡的復雜性,要改進這些性能并非易事。FLC部分借鑒了上述文獻網絡擁塞早期檢測方法的基礎并嘗試將模糊邏輯用于視頻流擁塞控制方法中。
2 模糊邏輯擁塞控制
2.1 系統結構
圖1為視頻流傳輸模糊邏輯擁塞控制系統結構。客戶端定時器單元監測接收包的IPGs,經平滑和規格化后反饋給服務器擁塞級別決策單元;擁塞級別決策單元同時監測輸出包的大小和間隔時間并結合客戶端反饋的IPGs計算出當前網絡的擁塞級別CL和擁塞級別變化率δCL;模糊邏輯擁塞控制單元以CL和δCL作為輸入,通過模糊推理計算出反映當前網絡狀態的發送速率。視頻流發送單元根據上述計算結果調整預編碼視頻流的實際發送速率。
2.2 擁塞檢測
對相同的應用程序而言,數據包發送和接收速率的差異可以作為網絡擁塞的指示。為了計算發送和接收速率,關鍵是獲得數據包的IPGs,然后在服務器和客戶端分別通過IPGs計算發送和接收速率。IPGs通過包大小進行規格化,在服務器端,規格化后的IPG實際上就是發送帶寬的倒數,在客戶端也一樣。設Ts和Tr分別為包發送和接收的IPG,當可用網絡帶寬大于或等于發送帶寬時,Tr=Ts;而當網絡發生擁塞時,接收端的IPG將受到影響,從而導致Tr>Ts。因此Tr和Ts的差別可以作為網絡擁塞強弱的測量。
設兩個連續包的大小分別為Sn和Sn-1,接收時間分別為Tn和Tn-1,則傳輸時間定義如下:
Fn=(Tn-Tn-1)/Sn
其中:Tn為當前包到達時間;Tn-1為上一個包到達時間;Sn為當前包大小。服務器端一幀圖像傳輸時間內的所有包傳輸時間構成集合{Fst},同樣客戶端的傳輸時間構成集合{Frt},其形式如下:
{Fst}={Fs1,Fs2,…,Fsn},{Frt}={Fr1,Fr2,…,Frn}
由于丟包的原因,通常sn≠rn。
對集合{F st}和{F rt}中的元素按相同的分辨率間隔重新生成具有Ns和Nr個元素的集合[10],Ns和Nr按下式由服務器和客戶端動態決定:
Ns=(Fmaxsn-Fminsn)/ω,Nr=(Fmaxrn-Fminrn)/ω
其中:Fmaxsn和Fminsn分別表示集合{Fst}中的最大和最小值;1/ω代表發送速率分辨率,它依賴于最高的視頻編碼碼率。ω的設置是為了減少網絡中的背景流和后續路由器排隊對測量結果的影響[10]。文獻[10]指出帶寬測量結果是多模式的,因此根據統計規律,直方圖分辨率應設定為預測量數據四分位距的10%。然而本系統無法進行數據的預先測量,因此根據估計結果,把1/ω設為了編碼碼率的1%。分辨率太大或太小均將影響帶寬評估的精度[11]。
根據分辨率間隔,在服務器和客戶端按權重平均方法對傳輸時間分別進行如下計算:
F sa=Nsi=1Gsi×Wsi/Ni=1Wsi,Fra=Nri=1Gri×Wri/Ni=1Wri
其中:Gsi和Gri分別為服務器和客戶端按分辨率間隔重新生成的傳輸時間值;Wsi和Wri為它們的權重。
為了平滑測量結果,本文采用指數加權滑動平均算法對F sa和F ra進行濾波處理,算法如下:
F sav=αF sa+(1-α)Fsav-1,F rav=αF ra+(1-α)F rav-1
其中:F sav-1和F rav-1為上次濾波結果,初始計算時F sav-1和F rav-1設為Fsa和Fra。本文把α設為0.1,α越大,發送速率波動越大。
根據上面的計算結果,可計算出服務器端的發送速率和客戶端的接收速率如下:
Rs=1/F sav,Rr=1/F rav
由此可按式(1)定義網絡的擁塞級別:
CL=(Rs-Rr)/Rs=1-F sav/F rav(1)
按式(2)定義網絡擁塞級別的變化率δCL:
δCL=CLn-CLn-1(2)
其中:CLn為當前擁塞級別;CLn-1為上次擁塞級別。δCL和CL一起作為模糊擁塞控制器的輸入。
2.3 FLC設計和優化
模糊邏輯控制[12]是模糊理論在控制技術上的應用,它通過模擬行業專家的控制決策來對對象實施控制。它用語言變量代替數學變量,用模糊條件語句來刻畫變量間的函數關系;用模糊算法來刻畫復雜關系,是具有模擬人類學習和自適應能力的控制系統。
圖2為FLC框圖,它包括模糊化、模糊控制規則、模糊推理引擎、解模糊化等幾個主要部分。模糊化的功能是把輸入量CL和δCL轉換為語言變量并確定隸屬度函數;模糊控制規則是根據專家經驗制定的控制方法;模糊推理引擎是FLC的智能決策中心,它根據輸入的語言變量和模糊控制規則進行推理,從而得到輸出語言變量;最后,解模糊化過程把輸出語言變量轉換為確定的控制量,即輸出速率。
在對CL和δCL進行模糊化時,模糊子集數量選擇的多少和隸屬度函數形狀的確定將對輸出速率的平滑性及計算復雜性產生影響,需要在它們之間進行折中。根據控制對象的實際情況,本文對CL在其論域上定義了五個模糊子集,分別為L(大)、M(中)、H(小)、VH(非常大)、EH(特別大);對δCL在其論域上定義了九個模糊子集,分別為NVH(負非常高)、NH(負高)、NM(負中)、NL(負低)、Z(零)、PL(正低)、PM(正中)、PH(正高)、PVH(正非常高)。CL和δCL的隸屬度函數曲線采用三角形形狀以減少計算量。隸屬度函數如圖3所示。
模糊控制規則采用“if (condition) then (action)”的形式,如下面的例子:
if CL is L andδCL is NVH then S is PL
if CL is M and δCL is NVH then S is Z
模糊控制規則的選擇會在很大程度上影響控制效果,根據專家經驗建立的控制規則只能起到指導性的作用,很難準確確定各項參數,控制效果不理想。當然可以采用試探的方法不斷調整,這實際上是一個尋優過程,但由于控制規則排列組合太多,采用試探的方法工作量太大,且很難達到令人滿意的程度。為此,人們把神經網絡、梯度法等算法引入模糊控制進行控制規則的優化。但這些方法均存在一定的不足,如神經網絡的收斂速度過慢且容易陷入局部最優;梯度法的速度雖然較快,但要求性能評價函數必須連續可微。本文采用能夠全局尋優的遺傳算法,遺傳算法是借用自然界重遺傳、選擇、變異的原理,模擬生物進化過程的一種新型優化算法[13]。這種方法利用隨機化處理技術來指導對被編碼的參數空間進行高效搜索,定義域可以任意設定,適應度函數不受連續可微的約束,優化結果令人滿意。采用遺傳算法優化模糊控制規則的方法如下:
首先根據專家經驗確定模糊控制規則,如表1所示。
表1 模糊控制規則
CL\\δCLNVHNHNMNLZPLPMPHPVH
LPHPMPLPLZNLNLNMNM
MPMPLZZNLNLNMNHNH
HPLZZNLNMNMNHNHNVH
VHZNLNMNMNHNHNHNVHNVH
EHNLNMNMNHNHNHNVHNVHNVH為了把求解空間映射到算法空間,采用二進制編碼的方法把表1所示的輸出語言變量{NVH,NH,NM,NL,Z,PL,PM,PH}依次編碼為{000,001,010,011,100,101,110,111},然后對表1的45條規則按照從左到右、從上到下的原則編碼成一條染色體:111110101101…010000000000,這樣,一條染色體包括45×3=135個基因。對于目前的計算機硬件條件來說,導致的搜索空間并不是很大。采用f=1/(1+J(ITAE))[14]作為適應度函數,設種群大小n=100,交叉率Pc=0.7,變異率Pm=0.001,經過30代遺傳后,適應度函數基本趨于穩定,并從中獲得了比較理想的模糊控制規則。
采用模糊控制規則對輸入語言變量進行模糊推理后得到輸出語言變量后,采用重心法對輸出語言變量進行解模糊化,得到輸出控制變量如下:
CV=(Mi=1yiui)/Mi=1ui
其中:M為輸出語言變量數目;yi為輸出離散論域的點;ui為相應點的隸屬度函數值。控制量CV被規格化到論域(0,1]。對于設定的平均輸出速率Rav,可得到實際輸出速率Rout如下所示:
Rout=CV×Rav(3)
3 仿真性能分析
本文在NS2網絡仿真器(版本2.26)上對模糊擁塞控制算法進行仿真。采用經典的啞鈴網絡拓撲結構,瓶頸鏈路位于兩個路由器之間,源節點和目的節點的接入鏈路分配了足夠的帶寬,擁塞只在瓶頸鏈路發生。接入鏈路的帶寬設為100 Mbps,路由器缺省緩沖區大小設為兩倍帶寬延時積;瓶頸鏈路的單程延時設為5 ms,接入鏈路延時設為1 ms;路由器緩沖區管理策略缺省設為FIFO(尾丟棄策略)。
在本文所有的實驗中,客戶端每隔一幀時間間隔(40 ms)向服務器模糊控制器反饋包接收間隔時間IPG。采用具有中度運動幅度的MPEG-4視頻序列“news clip”,其平均編碼碼率為2.0 Mbps。仿真網絡的源節點包括了一個FLC視頻節點和10個TCP節點,瓶頸鏈路帶寬設為500 kbps。為了考察FLC的視頻傳輸質量,一共進行了10組實驗,每組實驗采用不同的TCP源節點作為背景流,每組試驗執行20次并計算平均的峰值信噪比PSNR。對TFRC和RAP進行了相同的實驗,實驗結果如圖4所示。
從圖4看出,FLC的PSNR明顯高于TFRC和RAP,從而提高了視頻主觀質量。為了考察FLC的發送速率平滑性和帶寬利用率,通過控制TCP流的加入和退出時間來改變可用帶寬,實驗結果如圖5所示。
從圖5看出,與TFRC相比,FLC的發送速率更加平滑,對帶寬的跟蹤迅速及時,從而提高了帶寬利用率,降低了丟包。
為了考察FLC的TCP優好性,按文獻[15]對試驗方案進行配置,仿真結果如圖6所示。
從圖6看出,針對各種路由器緩沖區大小,FLC都是TCP友好的,因此其對路由器緩沖區大小保持了很好的魯棒性。
4 結束語
為了在Internet上提高視頻傳輸服務質量,針對實時視頻流的擁塞控制策略紛紛提出。采用TCP吞吐量公式和AIMD方式的擁塞控制策略由于需要采用丟包率反饋和具有類似TCP的發送速率波動,并不太適合視頻流傳輸。本文提出的視頻流擁塞控制策略,針對早期擁塞檢測,利用了發送和接收間隔時間作為擁塞指示;針對網絡擁塞的時變和非線性,采用了模糊控制策略對發送速率進行控制并用遺傳算法對模糊控制規則進行了優化。