錢洋,龔秋石
〔東南大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,江蘇南京 211189;網(wǎng)絡(luò)空間國際治理研究基地(東南大學(xué)),江蘇南京211189〕
視頻點(diǎn)播服務(wù)(Video on Demand,VoD)是現(xiàn)在網(wǎng)絡(luò)流量中的主流,據(jù)預(yù)測,在2022年網(wǎng)絡(luò)中視頻流量將占據(jù)總流量80%以上[1]。然而,面對當(dāng)前如此復(fù)雜多變的網(wǎng)絡(luò)環(huán)境,傳統(tǒng)的視頻傳輸技術(shù)難以適應(yīng)網(wǎng)絡(luò)帶寬的抖動(dòng),不能充分利用信道的容量,很難保證視頻流的服務(wù)質(zhì)量,這使得用戶體驗(yàn)質(zhì)量大大降低。如何在動(dòng)態(tài)網(wǎng)絡(luò)環(huán)境中實(shí)現(xiàn)視頻流的自適應(yīng)傳輸是當(dāng)前的研究熱點(diǎn)。動(dòng)態(tài)地調(diào)整服務(wù)端發(fā)送的視頻碼率目前有兩種實(shí)現(xiàn)技術(shù)。(1)自適應(yīng)碼率(Adaptive Bitrate,ABR)技術(shù)。在服務(wù)器端采用非可伸縮性編碼視頻,并存儲(chǔ)多個(gè)碼率版本,在用戶帶寬變化的時(shí)候傳輸不同碼率的視頻流。(2)可伸縮性視頻編碼(Scalable Video Coding,SVC)技術(shù)[2]??缮炜s性編碼視頻僅需要在服務(wù)器端存儲(chǔ)一個(gè)最高碼率的版本,無需占用額外的存儲(chǔ)空間,同時(shí)可伸縮性視頻編碼技術(shù)可以通過調(diào)整輸出的層次來傳輸不同碼率的視頻流。目前,諸如YouTube等VoD服務(wù)商,主要采用自適應(yīng)碼率ABR方案。ABR技術(shù)一方面,同一個(gè)視頻需要在服務(wù)器端保存多個(gè)不同碼率的版本,占用較多的存儲(chǔ)空間。另一方面,ABR技術(shù)在服務(wù)器端存儲(chǔ)的碼率有限,未必可以完全利用帶寬。與ABR技術(shù)相比,SVC技術(shù)不存在這幾個(gè)方面的缺陷,通過切換輸出層數(shù),SVC視頻流能夠有效地適應(yīng)網(wǎng)絡(luò)動(dòng)態(tài)變化的視頻播放。但是,目前還沒有一種完美的層次自適應(yīng)選擇策略來最大限度發(fā)揮SVC的優(yōu)勢。
針對動(dòng)態(tài)網(wǎng)絡(luò)環(huán)境并且考慮到ABR技術(shù)的上述缺陷,本文設(shè)計(jì)了一個(gè)采用SVC的視頻傳輸系統(tǒng),并從用戶體驗(yàn)質(zhì)量(Quality of Experience,QoE)的角度出發(fā),利用馬爾可夫決策過程(Markov Decision Process,MDP)理論,設(shè)計(jì)了一個(gè)SVC視頻層次自適應(yīng)選擇算法,使得系統(tǒng)可以動(dòng)態(tài)地調(diào)節(jié)SVC視頻的傳輸層次,以提高用戶的體驗(yàn)質(zhì)量。
關(guān)于SVC技術(shù)的研究工作有很多,文獻(xiàn)[3~9]研究了在不同場景中采用SVC技術(shù),并指出相對于H.264/AVC等非可伸縮性編碼,SVC技術(shù)可以明顯提升帶寬利用率。文獻(xiàn)[10]提到一種帶寬預(yù)測方法,主要依靠每次請求視頻分片所花費(fèi)的時(shí)間來計(jì)算當(dāng)前帶寬。這種算法對帶寬變化比較敏感,一旦帶寬在較短時(shí)間內(nèi)發(fā)生變化,就會(huì)引起視頻層次的大幅度切換。文獻(xiàn)[11]提出一種應(yīng)用于SDN網(wǎng)絡(luò)的SVC視頻自適應(yīng)傳輸算法,利用控制器獲取所有交換機(jī)的流量信息,并且采用自回歸模型預(yù)測未來一段時(shí)間內(nèi)帶寬變化以此來選擇傳輸?shù)囊曨l層數(shù)。以上這些基于測量帶寬的算法都是通過帶寬的歷史測量值來對未來的帶寬進(jìn)行預(yù)測,其預(yù)測的信息都不是實(shí)時(shí)的,甚至還需要引入額外流量。其實(shí),選擇不同層次的目的就是為了控制播放緩存,防止產(chǎn)生溢出,直接根據(jù)緩存信息做出調(diào)節(jié)是一種更優(yōu)的選擇。文獻(xiàn)[12]提出了一個(gè)基于客戶端緩存的SVC視頻層次切換策略,每次決策前該策略通過估計(jì)當(dāng)前緩存的下溢概率來確定本次請求的層次。文獻(xiàn)[13]同樣從客戶端緩存的角度設(shè)計(jì)層次自適應(yīng)策略,在最大限度地提高接收質(zhì)量的同時(shí)最小化或防止緩沖區(qū)不足。但是,這兩種算法的向上切換策略都過于保守,導(dǎo)致視頻的平均質(zhì)量不高。
絕大多數(shù)自適應(yīng)機(jī)制是確定性的根據(jù)感知到的服務(wù)器、客戶端或者網(wǎng)絡(luò)情況而進(jìn)行調(diào)整,這種機(jī)制具有局限性并不適合復(fù)雜多變的真實(shí)網(wǎng)絡(luò)環(huán)境。目前已經(jīng)有研究將強(qiáng)化學(xué)習(xí)方法應(yīng)用到SVC視頻層次自適應(yīng)選擇領(lǐng)域。文獻(xiàn)[14]對在SDN網(wǎng)絡(luò)中SVC視頻流的層次和傳輸路由進(jìn)行聯(lián)合決策,構(gòu)造一個(gè)馬爾可夫決策過程模型,然后利用神經(jīng)元?jiǎng)討B(tài)規(guī)劃(Neuro-Dynamic Programming,NDP)方法構(gòu)造近似值函數(shù)獲得近似最優(yōu)解。但是,算法在設(shè)計(jì)回報(bào)函數(shù)時(shí)沒有充分考慮QoE因素。文獻(xiàn)[15]針對DASH系統(tǒng),考慮了一些影響視頻質(zhì)量的關(guān)鍵因素,提出了一種基于MDP的自適應(yīng)策略。文獻(xiàn)[16]針對HAS系統(tǒng),提出了一種基于Q-learning的客戶端自適應(yīng)策略,通過感知網(wǎng)絡(luò)環(huán)境動(dòng)態(tài)地調(diào)整請求碼率。以上兩種算法都是針對ABR應(yīng)用場景。
基于SVC的視頻點(diǎn)播系統(tǒng)架構(gòu)如圖1所示,該系統(tǒng)由流媒體服務(wù)器和視頻客戶端組成,二者通過HTTP協(xié)議完成通信。
流媒體服務(wù)器端設(shè)計(jì)如圖2所示,由SVC編碼模塊、層數(shù)計(jì)算模塊、碼流提取模塊和發(fā)送模塊組成。其中,SVC編碼模塊首先將服務(wù)器存儲(chǔ)的視頻從時(shí)間序列上拆分為n個(gè)視頻分片,然后將每個(gè)分片每16幀封裝為一個(gè)圖片組(Group-of-pictures, GOP),并逐GOP進(jìn)行編碼,產(chǎn)生含有m個(gè)層次的最高碼率版本視頻,每個(gè)編碼后的分片含有的層次為。層數(shù)計(jì)算模塊負(fù)責(zé)根據(jù)客戶端的請求信息計(jì)算本次請求的層次。碼流提取模塊負(fù)責(zé)根據(jù)層數(shù)計(jì)算模塊得到的本次請求的層次提取相應(yīng)版本的分片碼流。發(fā)送模塊負(fù)責(zé)將分片封裝發(fā)送。
圖1 系統(tǒng)架構(gòu)
圖2 服務(wù)端架構(gòu)
客戶端設(shè)計(jì)如圖3所示,由請求/接收模塊、解碼模塊、緩存模塊和播放模塊組成。其中,請求/接收模塊負(fù)責(zé)完成HTTP的請求和響應(yīng)工作。解碼模塊使用SVC解碼工具將分片解碼為YUV序列,然后放入緩存中。除此之外,緩存模塊還需要在每次請求時(shí)提供當(dāng)前的緩存信息幫助服務(wù)器端進(jìn)行決策,由于SVC視頻的特性,所以無法使用傳統(tǒng)的“字節(jié)”作為緩存的單位,而是使用“秒”來衡量緩存狀態(tài)。每次請求時(shí)將當(dāng)前緩存狀態(tài)傳遞給服務(wù)器。當(dāng)緩存中的YUV序列達(dá)到一定數(shù)量后,播放模塊負(fù)責(zé)按時(shí)間順序播放YUV序列。
圖3 客戶端架構(gòu)
關(guān)于QoE的評價(jià),本文主要考慮視頻質(zhì)量和緩存溢出風(fēng)險(xiǎn)來設(shè)計(jì)QoE函數(shù)。視頻質(zhì)量方面,采用峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)作為測度??蛻舳私邮盏膶哟卧礁?,其解碼得到的視頻質(zhì)量越高, PSNR值相應(yīng)越高,其定義如公式(1)所示。
緩存方面考慮緩存的上溢和下溢風(fēng)險(xiǎn),緩存下溢會(huì)導(dǎo)致播放暫停,緩存上溢往往意味著沒有選擇最優(yōu)的層次,其定義如公式(2)所示,將緩存的數(shù)據(jù)量映射到大小不等的值。
SVC視頻的特性使得播放過程中可以通過選擇不同的層次達(dá)到自適應(yīng)播放的目的。服務(wù)器每次響應(yīng)請求前都需要決定本次發(fā)送的視頻層次,不同層次的視頻帶給用戶端不同的體驗(yàn)質(zhì)量。本文將SVC視頻層次自適應(yīng)選擇問題建模成一個(gè)有限狀態(tài)的離散馬爾科夫決策過程。一個(gè)馬爾可夫決策過程由五元組M=(S,A,P,R,γ)描述,其中,S為有限的狀態(tài)集,A為有限的動(dòng)作集,P為狀態(tài)轉(zhuǎn)移概率,R為回報(bào)函數(shù),γ為折扣因子,用來計(jì)算累積回報(bào)。MDP進(jìn)行組織的方式為:智能體對初始環(huán)境進(jìn)行感知,按策略實(shí)施動(dòng)作,環(huán)境受動(dòng)作影響進(jìn)入新的狀態(tài),并反饋給智能體一個(gè)獎(jiǎng)勵(lì),隨后智能體基于做出新的決策,與環(huán)境持續(xù)交互。下面依次對SVC視頻服務(wù)的MDP的五元組進(jìn)行構(gòu)造。
在做出每個(gè)決策時(shí),系統(tǒng)都處在一個(gè)特定狀態(tài)。在本模型中,系統(tǒng)狀態(tài)由前次選擇的層次和當(dāng)前緩存的大小這兩個(gè)維度進(jìn)行定義。層次一共有15種,緩沖區(qū)最多存儲(chǔ)30秒視頻,所以狀態(tài)空間元素一共465個(gè)。
動(dòng)作是對系統(tǒng)行為的描述,是系統(tǒng)決策的結(jié)果。因此本模型中,動(dòng)作空間就是可選的層次空間,SVC編碼工具一共產(chǎn)生15個(gè)層次,動(dòng)作空間A={a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14}?;貓?bào)函數(shù)直接由QoE得到:
表1 狀態(tài)空間定義
因?yàn)樵诿總€(gè)狀態(tài)下做出的層次選擇動(dòng)作都是基于策略Π的,因此找到一個(gè)最優(yōu)策略使得期望總回報(bào)最大,這個(gè)策略就是SVC視頻層次選擇問題的最優(yōu)解。所以,該優(yōu)化問題可以表述成公式(9),對于最優(yōu)解,任意策略Π都滿足:
將Q-learning算法運(yùn)用到本文提出的模型當(dāng)中,得到基于MDP的層次自適應(yīng)選擇算法。
算法1 基于MDP的層次自適應(yīng)選擇算法
5:while 所有視頻分片沒有傳輸完成do
9: else
11: end if
13: 提取層數(shù) 的碼流,封裝發(fā)送
16: end while
本文自行開發(fā)的SVC服務(wù)器端部署在Ubuntu18.04平臺(tái)上,開發(fā)的SVC客戶端運(yùn)行在本地計(jì)算機(jī)上,實(shí)驗(yàn)環(huán)境如圖4所示,服務(wù)器和客戶端在同一局域網(wǎng)中,網(wǎng)絡(luò)帶寬和流量控制模塊主要使用Linux下的Traffic Control(TC)和Wondershaper工具來實(shí)現(xiàn),這兩個(gè)工具部署在服務(wù)器端,可以用來在性能良好的局域網(wǎng)中,通過限制網(wǎng)絡(luò)接口的傳入和傳出流量模擬出復(fù)雜的互聯(lián)網(wǎng)傳輸環(huán)境,諸如低帶寬、傳輸延遲、丟包等實(shí)際情況。實(shí)驗(yàn)采用SFT算法[10]和EBALS算法[12]作為對比。
圖4 實(shí)驗(yàn)環(huán)境
首先固定網(wǎng)絡(luò)中的丟包率,并觀察用戶端接收到的視頻質(zhì)量。實(shí)驗(yàn)視頻一共180個(gè)分片,每個(gè)分片的視頻時(shí)長是1s。在丟包率限定為10%的網(wǎng)絡(luò)環(huán)境下,三種算法的運(yùn)行情況如圖5所示其中橫軸為請求的分片序號(hào),縱軸為每次決策的層次。
圖5 丟包率10%下三種算法表現(xiàn)情況
從圖5中可以看出本文提出的算法能夠快速收斂到最優(yōu)的層次,而EBALS算法因?yàn)楸J氐闹鸺?jí)上調(diào)機(jī)制而收斂較慢,另外SFT算法因?yàn)槭腔诜制南螺d速度來測量帶寬,即使網(wǎng)絡(luò)抖動(dòng)不強(qiáng)時(shí),選擇的層次也不夠穩(wěn)定,這就導(dǎo)致了請求第70和150個(gè)分片時(shí)層次急劇下降。按照公式(3)計(jì)算本次傳輸?shù)钠骄鵔oE,取,分別為0.7和0.3,取,分別為0.8和0.5。得到的結(jié)果如表2所示,本文提出的算法表現(xiàn)明顯好于另外兩種算法,帶給用戶更好的體驗(yàn)質(zhì)量。
表2 三種算法QoE表現(xiàn)情況
實(shí)驗(yàn)二觀察用戶端接收到的視頻質(zhì)量及緩存狀態(tài)。視頻一共200個(gè)分片,每個(gè)分片的視頻時(shí)長是1s,經(jīng)編碼后產(chǎn)生15個(gè)層次。實(shí)驗(yàn)過程中,帶寬在500kbps到1500kbps之間波動(dòng)。三種算法的表現(xiàn)情況如圖6所示,圖6(a)顯示不同帶寬下選擇的平均層數(shù),而圖6(b)顯示不同帶寬下對應(yīng)的平均緩存量。圖中可以看出本文提出的算法在不同帶寬下平均每次選擇的層次都要優(yōu)于另外兩種算法。因?yàn)镾FT是基于帶寬的算法,具備一定的帶寬跟隨性,但同時(shí)較低帶寬時(shí)層次大幅減小;而EBALS算法因?yàn)槠浔J氐纳险{(diào)機(jī)制導(dǎo)致其所選的層數(shù)集中在較低的層次。從緩存量上也反映了上述缺陷,SFT和EBALS算法很明顯都沒有充分發(fā)揮緩存的潛力,也就導(dǎo)致了它們始終處在較高的緩存占有量上。本文提出的算法在緩存方面表現(xiàn)的更均衡,始終處于一個(gè)中間狀態(tài)。利用公式(3)來計(jì)算QoE,取,分別為0.7和0.3,取,分別為0.8和0.5。得到如圖6(c)所示的QoE表現(xiàn)情況??梢钥闯霰疚奶岢龅乃惴ㄔ诓煌瑤捪碌腝oE表現(xiàn)都好于另兩種算法,整個(gè)實(shí)驗(yàn)過程中本文提出的算法的平均QoE值明顯高于另外兩種算法,給用戶帶來的體驗(yàn)更好。
本文從提升用戶體驗(yàn)質(zhì)量的角度出發(fā),提出了一種基于馬爾可夫決策過程的可伸縮SVC視頻層次自適應(yīng)選擇算法。將馬爾可夫決策過程應(yīng)用于SVC視頻層次選擇問題中,通過每次反饋的QoE量化值來進(jìn)行分析決策。通過仿真實(shí)驗(yàn),分別比較了在有丟包與帶寬波動(dòng)的網(wǎng)絡(luò)環(huán)境下,算法能夠保證較高的視頻質(zhì)量和均衡的緩存,從而得到更好的QoE。今后的研究工作將側(cè)重于對層次切換的幅度和次數(shù)進(jìn)行優(yōu)化,在抖動(dòng)強(qiáng)烈的網(wǎng)絡(luò)中避免頻繁切換。
圖6 (a) 帶寬波動(dòng)下層次選擇情況
圖6 (b) 帶寬波動(dòng)下緩存表現(xiàn)情況
圖6 (c)帶寬波動(dòng)下QoE表現(xiàn)情況