近年來互聯(lián)網(wǎng)上基于視頻、音頻的流媒體應(yīng)用呈飛速發(fā)展的趨勢。互聯(lián)網(wǎng),即廣域網(wǎng)、局域網(wǎng)及單機(jī)按照一定的通訊協(xié)議組成的國際計(jì)算機(jī)網(wǎng)絡(luò)。互聯(lián)網(wǎng)是指將兩臺計(jì)算機(jī)或者是兩臺以上的計(jì)算機(jī)終端、客戶端、服務(wù)端通過計(jì)算機(jī)信息技術(shù)的手段互相聯(lián)系起來的結(jié)果,人們可以與遠(yuǎn)在千里之外的朋友相互發(fā)送郵件、共同完成一項(xiàng)工作、共同娛樂。計(jì)算機(jī)與網(wǎng)絡(luò)是繼造紙和印刷術(shù)發(fā)明以來,人類又一個(gè)信息存儲與傳播的偉大創(chuàng)造,稱為第五次信息革命。 通常,網(wǎng)絡(luò)與網(wǎng)絡(luò)之間所串連成的龐大網(wǎng)絡(luò),則可譯為“網(wǎng)際”網(wǎng)絡(luò),又音譯因特網(wǎng)或者英特網(wǎng),在1990年代發(fā)展初期,因其跨國際性連接之特性,在***亦有人稱其為國際網(wǎng)絡(luò),或國際電腦網(wǎng)絡(luò)。是指在ARPA網(wǎng)基礎(chǔ)上發(fā)展出的世界上最大的全球性互聯(lián)網(wǎng)絡(luò)。而互聯(lián)網(wǎng)(英語:international network或internet),在***譯作網(wǎng)際網(wǎng)路,或稱互連網(wǎng),即是“連接網(wǎng)絡(luò)的網(wǎng)絡(luò)”,可以是任何分離的實(shí)體網(wǎng)絡(luò)之集合,這些網(wǎng)絡(luò)以一組通用的協(xié)定相連,形成邏輯上的單一網(wǎng)絡(luò)。這種將計(jì)算機(jī)網(wǎng)絡(luò)互相聯(lián)接在一起的方法稱為“網(wǎng)絡(luò)互聯(lián)”。
阻礙流媒體發(fā)展的因素主要是帶寬問題,包括服務(wù)器磁盤帶寬和網(wǎng)絡(luò)帶寬,二者中相對較小者決定了系統(tǒng)服務(wù)用戶的數(shù)目。流媒體傳輸技術(shù)面臨如此多的挑戰(zhàn),從而吸引許多學(xué)者在這方面進(jìn)行研究,并取得了一定的成果。
對流媒體傳輸技術(shù)的研究主要涉及:(1)服務(wù)器流調(diào)度技術(shù)。(2)代理緩存技術(shù)。(3)節(jié)目替換算法的研究。
1 服務(wù)器流調(diào)度技術(shù)
在統(tǒng)計(jì)分析過程中,人們發(fā)現(xiàn)節(jié)目點(diǎn)播情況服從Zipf(齊夫)法則,即對N部電影按訪問概率從大到小進(jìn)行排序?yàn)镸1,M2,……Mn,第i部電影的訪問概率pi=P{X=Mi}(i=1,2,……n)滿足:
針對VOD的統(tǒng)計(jì)表明,大量用戶的點(diǎn)播往往集中在少數(shù)熱門節(jié)目上。當(dāng)大量用戶點(diǎn)播相同節(jié)目時(shí),可以把用戶的請求合并,通過組播通道傳輸媒體流,節(jié)約視頻服務(wù)器磁盤I/O帶寬和網(wǎng)絡(luò)帶寬。這種思想正是流媒體調(diào)度技術(shù)的基礎(chǔ)[3]。
流媒體調(diào)度算法分為兩類:(1)靜態(tài)調(diào)度算法是指服務(wù)器主動把節(jié)目在一系列組播通道中播放媒體流。(2)動態(tài)調(diào)度算法是指用戶點(diǎn)播驅(qū)動,服務(wù)器根據(jù)調(diào)度算法來為用戶調(diào)度媒體流。
1.1 靜態(tài)調(diào)度算法
在階段廣播和周期性廣播算法中,服務(wù)器在規(guī)定間隔后開始發(fā)送節(jié)目媒體流,它的延時(shí)取決于請求在間隔內(nèi)的到達(dá)點(diǎn)。其問題在于雖然提高了服務(wù)器帶寬利用率,但是它強(qiáng)迫用戶端增加延時(shí)。
分段廣播系統(tǒng)包括金字塔和摩天大樓算法等。這些系統(tǒng)不是在一個(gè)流中廣播一個(gè)節(jié)目,而是把節(jié)目分段,在每個(gè)流中廣播一個(gè)段。
GDB是GNU開源組織發(fā)布的一個(gè)強(qiáng)大的UNIX下的程序調(diào)試工具。或許,各位比較喜歡那種圖形界面方式的,像VC、BCB等IDE的調(diào)試,但如果你是在 UNIX平臺下做軟件,你會發(fā)現(xiàn)GDB這個(gè)調(diào)試工具有比VC、BCB的圖形化調(diào)試器更強(qiáng)大的功能。所謂“寸有所長,尺有所短”就是這個(gè)道理。要想運(yùn)行準(zhǔn)備調(diào)試的程序,可使用run命令,在它后面可以跟隨發(fā)給該程序的任何參數(shù),包括標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出說明符(<和> )和shell通配符(*、?、[、])在內(nèi)。如果你使用不帶參數(shù)的run命令,gdb就再次使用你給予前一條run命令的參數(shù),這是很有用的。利用set args 命令就可以修改發(fā)送給程序的參數(shù),而使用show args 命令就可以查看其缺省參數(shù)的列表。
1.2 動態(tài)調(diào)度算法
流媒體動態(tài)調(diào)度算法包括FCFS算法、Batching算法、Adaptive Piggybacking算法、Stream Tapping、補(bǔ)丁算法(Patching)、受控組播算法、Catching and Selective Catching、BandWidth Skimming、分片融合、層次型組播流聚合等。
(1)最簡單的動態(tài)調(diào)度算法是FCFS算法,該算法按照用戶請求“先來先服務(wù)”的原則,可以實(shí)現(xiàn)簡單的TvoD系統(tǒng),算法簡單實(shí)用,可以支持VCR功能,但是資源消耗過大。
(2)在Batching 算法中,當(dāng)幾個(gè)用戶在相近的時(shí)間內(nèi)點(diǎn)播同一部節(jié)目時(shí),服務(wù)器把他們的請求聚合在一起,綁定到一個(gè)組播流中。Batching 算法可以有效地利用系統(tǒng)資源。但是它增大了用戶的啟動延時(shí),且該算法不能支持用戶VCR功能。
(3)Adaptive Piggybacking算法中,節(jié)目的播放速度調(diào)節(jié)為原來的正負(fù)5%以使兩個(gè)流能聚合成一個(gè)流。一旦兩個(gè)流到達(dá)節(jié)目的同一個(gè)點(diǎn),其中一個(gè)流即被釋放,用戶切換到現(xiàn)存的流中。
(4)Stream Tapping算法中,利用客戶緩沖區(qū)使客戶加入服務(wù)器現(xiàn)存的流中,以便從多個(gè)流中取得數(shù)據(jù)。使用這種方法可以節(jié)約服務(wù)器帶寬資源,降低客戶延時(shí),但是它要求客戶有足夠的接收帶寬來同時(shí)接收多個(gè)流。
(5)補(bǔ)丁算法的基礎(chǔ)是Batching算法,它利用組播媒體流服務(wù)多個(gè)用戶。用戶可以利用本地緩沖同時(shí)從多個(gè)組播流中取得數(shù)據(jù),用戶沒有啟動延時(shí)。同時(shí)系統(tǒng)可以盡可能地合并用戶請求來提高系統(tǒng)的效率。
(6)受控組播技術(shù)與補(bǔ)丁算法相似,允許兩個(gè)點(diǎn)播同一節(jié)目的客戶共享同一通道。與補(bǔ)丁算法的區(qū)別是:它不會為了提高共享而延遲先到客戶的點(diǎn)播請求,而是通過允許后來的客戶共享先到的客戶的組播流,從而滿足客戶要求。然而受控組播技術(shù)并不是在任何可能的時(shí)候都允許客戶加入正在進(jìn)行的組播會話。使用一個(gè)域值來控制何時(shí)開辟一個(gè)新的組播會話。優(yōu)化的域值可以最小化服務(wù)器的通道數(shù)目。受控組播在低點(diǎn)播率時(shí)提供較好的性能。
(7)分片融合是一個(gè)在補(bǔ)丁基礎(chǔ)上支持VCR功能的算法。當(dāng)用戶執(zhí)行交互功能時(shí),它將從組播通道中退出,系統(tǒng)重新為它分配單播通道來進(jìn)行服務(wù),直到它能和現(xiàn)有的組播流聚合。
(8)Catching技術(shù)比較適合熱播節(jié)目。該技術(shù)的高效性體現(xiàn)在它智能地結(jié)合了服務(wù)器和客戶端的發(fā)送功能。在此技術(shù)中,一個(gè)視頻節(jié)目在一些通道中循環(huán)組播。想要觀看該節(jié)目的用戶可以立即加入合適的組播通道,無須等待下一個(gè)廣播周期。同時(shí)客戶向服務(wù)器發(fā)送請求來取得錯過節(jié)目的開始部分的數(shù)據(jù)(前綴)。前綴通過單播通道發(fā)送,客戶可以馬上觀看。另一方面,從組播通道取得的數(shù)據(jù)暫時(shí)緩存在客戶端,直到回放結(jié)束。這樣通過客戶端和服務(wù)器的模式Catching策略可以最小化啟動延遲。受控組播技術(shù)采用客戶端的模式,比較適合冷門節(jié)目。Catching是一種基于參數(shù)的策略,它的通道需求為點(diǎn)播率和文件大小的對數(shù)。
2 代理緩存技術(shù)
代理技術(shù)的研究主要包括:緩存策略、代理緩存結(jié)合服務(wù)器調(diào)度技術(shù)、分段分布式代理的研究。
2.1 緩存策略
(1)全部緩存策略:緩存整個(gè)流行度高的節(jié)目數(shù)據(jù),這種方法效率不高,特別是在代理緩存空間有限時(shí)尤為突出,緩存需要頻繁的換入換出,緩存一個(gè)巨大的節(jié)目代價(jià)是昂貴的,所以很難提高點(diǎn)播的命中率,同時(shí)也很難降低代理-服務(wù)器之間的網(wǎng)絡(luò)流量。正在進(jìn)行的流不能被刪除,這會使緩存替換算法替換掉本來不應(yīng)該被替換的節(jié)目,進(jìn)而偏離優(yōu)化點(diǎn)。
(2)部分緩存策略:可以降低用戶點(diǎn)播的啟動延時(shí),也可以利用緩存的前綴來做一些提前平滑及丟包重傳的處理。但是由于大量后綴數(shù)據(jù)要從服務(wù)器取得,所以不能從本質(zhì)上降低代理到中心服務(wù)器之間的網(wǎng)絡(luò)流量和服務(wù)器的負(fù)擔(dān)。該方法的側(cè)重點(diǎn)是解決服務(wù)延時(shí),服務(wù)器負(fù)載巨大和網(wǎng)絡(luò)帶寬的問題,緩存空間需要非常巨大。
(3)滑動窗口策略:沒有用戶點(diǎn)播請求時(shí),代理服務(wù)器不緩存任何數(shù)據(jù)。當(dāng)?shù)谝粋€(gè)用戶請求到達(dá)時(shí),代理服務(wù)器向中心服務(wù)器請求數(shù)據(jù),代理服務(wù)器預(yù)測將來可能還有請求,緩存w分鐘的數(shù)據(jù),數(shù)據(jù)的生命期就是窗口的大小。所以從第一個(gè)請求開始,w分鐘內(nèi)到達(dá)的請求都可以用這個(gè)窗口的數(shù)據(jù)來服務(wù),這個(gè)窗口之外的請求將要再次啟動網(wǎng)絡(luò)傳輸。
(4)分層編碼視頻的緩存策略:針對分層編碼的流媒體來決定應(yīng)該緩存哪一個(gè)節(jié)目的哪一層,才能最小化傳輸代價(jià)。主要的挑戰(zhàn)是根據(jù)客戶所擁有的不同可用帶寬進(jìn)行質(zhì)量調(diào)整后,用不同質(zhì)量的緩存流來響應(yīng)。該策略中的預(yù)取算法和適合分層編碼的細(xì)粒度的緩存替換算法,能根據(jù)節(jié)目的流行度對緩存狀態(tài)進(jìn)行調(diào)整。
2.2 代理緩存結(jié)合服務(wù)器調(diào)度
典型的緩存前綴有許多優(yōu)點(diǎn),例如:掩蓋代理與服務(wù)器之間的延時(shí)抖動、啟動延時(shí)、減少網(wǎng)絡(luò)傳輸,可以實(shí)現(xiàn)在線平滑。中心服務(wù)器使用組播和廣播技術(shù)可以降低服務(wù)器負(fù)載和網(wǎng)絡(luò)傳輸。
一種閉環(huán)(點(diǎn)播驅(qū)動)控制的方法被稱為Multicast with Caching(MCache)。MCache的中心思想是利用Batching、Patching和代理前綴緩存技術(shù)。Batching補(bǔ)丁的請求是本策略的獨(dú)特特點(diǎn)。使用區(qū)域的緩存服務(wù)器來緩存前綴以降低啟動延遲。MCache的特點(diǎn)在于組播開始后的請求仍舊可以聚合起來,通過組播補(bǔ)丁來達(dá)到?jīng)]有啟動延遲。
另一種結(jié)合服務(wù)器調(diào)度和代理前綴緩存或部分緩存的策略是在給定緩存容量時(shí),最小化主干網(wǎng)絡(luò)上的傳輸量。它不但存在一個(gè)選擇前綴集合的優(yōu)化算法,而且可以動態(tài)緩存補(bǔ)丁數(shù)據(jù)和RC的數(shù)據(jù)。
結(jié)合代理前綴緩存和視頻后綴數(shù)據(jù)服務(wù)器周期廣播的調(diào)度策略。該策略的思想是不同代理可以根據(jù)用戶和節(jié)目流行情況采用合適的前綴傳輸策略。另一種方案是結(jié)合部分緩存和Batch Pathing 的策略。
2.3 分段分布式代理
MiddleMan是由局域網(wǎng)聯(lián)結(jié)起來的協(xié)同工作的代理服務(wù)器集合。MiddleMan由兩部分組成:代理服務(wù)器和協(xié)調(diào)器(Coordinators)。典型的配置包括一臺協(xié)調(diào)器和多臺代理服務(wù)器,它們通過LAN互聯(lián)。協(xié)調(diào)器跟蹤代理服務(wù)器上保存的內(nèi)容,做出緩存替換決定。MiddleMan存儲系統(tǒng)中把視頻文件平均分成大小相等的文件塊,把它們在所有代理之間分布,使視頻看起來是由一系列順序的文件塊組成。
MiddleMan提供和評估了基于分?jǐn)啻鎯Υ竺襟w流的代理管理方法。代理服務(wù)器接收到的媒體流塊數(shù)據(jù)按可變大小的段組織,緩存接納控制和替換策略為每個(gè)段添加不同的緩存值。前綴只能替換原來緩存的前綴,后綴只能替換原來的后綴。結(jié)果表明:(1)基于分段緩存不但可以提高命中率(降低全部的網(wǎng)絡(luò)傳輸),而且可以降低請求的開始延時(shí);(2)基于分段緩存在緩存空間有限以及熱播節(jié)目變化頻繁、媒體文件巨大以及用戶經(jīng)常只觀看節(jié)目開始部分時(shí)具有特別的優(yōu)勢。
一些視頻服務(wù)器提供了VCR功能,但它需要經(jīng)歷很大的延時(shí)和大量的處理。另外用戶也不知道視頻的大致內(nèi)容以及感興趣部分的精確位置,同時(shí)也浪費(fèi)了網(wǎng)絡(luò)資源。結(jié)合交互式視頻發(fā)送和緩存系統(tǒng)并使用視頻分析和抽象技術(shù)設(shè)計(jì)了一個(gè)視頻代理系統(tǒng),可給用戶提供一個(gè)良好的觀看環(huán)境。視頻數(shù)據(jù)分段存儲在多個(gè)代理上來進(jìn)行負(fù)載均衡,同時(shí)也允許實(shí)現(xiàn)細(xì)粒度的替換策略。前綴緩存是只緩存每個(gè)視頻段的前綴,所以預(yù)取也能減低延時(shí)。
3 節(jié)目替換算法
傳統(tǒng)的替換算法主要應(yīng)用于大小相等的對象、傳統(tǒng)的內(nèi)存以及Web應(yīng)用的替換算法不適用于流媒體領(lǐng)域。LRU是Least Recently Used最近最少使用算法。Oracle系統(tǒng)使用的一種算法,對于在內(nèi)存中但最近又不用的數(shù)據(jù)塊(內(nèi)存塊)叫做LRU,Oracle會根據(jù)那些數(shù)據(jù)屬于LRU而將其移出內(nèi)存而騰出空間來加載另外的數(shù)據(jù)。關(guān)于操作系統(tǒng)的內(nèi)存管理,如何節(jié)省利用容量不大的內(nèi)存為最多的進(jìn)程提供資源,一直是研究的重要方向。而內(nèi)存的虛擬存儲管理,是現(xiàn)在最通用,最成功的方式—— 在內(nèi)存有限的情況下,擴(kuò)展一部分外存作為虛擬內(nèi)存,真正的內(nèi)存只存儲當(dāng)前運(yùn)行時(shí)所用得到信息。這無疑極大地?cái)U(kuò)充了內(nèi)存的功能,極大地提高了計(jì)算機(jī)的并發(fā)度。虛擬頁式存儲管理,則是將進(jìn)程所需空間劃分為多個(gè)頁面,內(nèi)存中只存放當(dāng)前所需頁面,其余頁面放入外存的管理方式。然而,有利就有弊,虛擬頁式存儲管理減少了進(jìn)程所需的內(nèi)存空間,卻也帶來了運(yùn)行時(shí)間變長這一缺點(diǎn):進(jìn)程運(yùn)行過程中,不可避免地要把在外存中存放的一些信息和內(nèi)存中已有的進(jìn)行交換,由于外存的低速,這一步驟所花費(fèi)的時(shí)間不可忽略。因而,采取盡量好的算法以減少讀取外存的次數(shù),也是相當(dāng)有意義的事情。
目前提出的RBC算法在緩存接納和替換時(shí)考慮了文件大小和所需的發(fā)送帶寬因素。Pooled RBC策略進(jìn)一步提高了RBC算法的性能。它提供一個(gè)帶寬POOL,當(dāng)一個(gè)點(diǎn)播請求到達(dá)時(shí),從帶寬POOL中為該用戶分配流。發(fā)送完畢要收回已經(jīng)分配的帶寬歸還給帶寬POOL。如果點(diǎn)播請求不能分配足夠的帶寬,則POOL RBC把請求轉(zhuǎn)交給原始服務(wù)器,而不是簡單地替換實(shí)體來釋放帶寬。實(shí)驗(yàn)結(jié)果表明,在大多數(shù)情況下這個(gè)策略明顯比RBC容易實(shí)現(xiàn)。而Hybrid LFU/Interval Caching策略的性能比Pooled RBC和LFU都優(yōu)越。LFU/IC是一個(gè)結(jié)合LFU和Interval Caching的技術(shù)。Interval Caching算法主要研究在內(nèi)存中緩存部分節(jié)目流。
LRU算法不能區(qū)別經(jīng)常和不經(jīng)常使用的對象。LRU-K算法仔細(xì)檢查使用對象最近K次被引用的信息。本文使用考慮最近2次引用信息的算法叫作LRU-2,更一般的是LRU-K算法。典型的LRU算法相當(dāng)于這里的LRU-1算法。LRU-K包含內(nèi)在的“老化”含義,考慮了對象的最近K次引用,然而LRU算法不能很好地處理不斷演化的引用模式。LRU-K算法有以下顯著的特點(diǎn):①能很好地區(qū)分不同級別引用對象的集合。②可以通過自調(diào)節(jié)來適應(yīng)不同的引用模式。③產(chǎn)生很少的管理負(fù)擔(dān)。通過2Q算法可對LRU-K進(jìn)行改進(jìn)。它引進(jìn)兩個(gè)管理隊(duì)列來簡化LRU-K的管理負(fù)擔(dān)。
LRU和LFU分別是考慮近期性和使用頻率的兩個(gè)極端。LRFU(Least Recently/Frequently Used)策略統(tǒng)一考慮頻率和近期性,在兩者之間進(jìn)行折中。LRFU算法中為每個(gè)塊分配一個(gè)CRF(Combined Recency and Frequency),這個(gè)CRF值代表該對象將來被點(diǎn)播的可能。過去的每次引用對該值的貢獻(xiàn)由一個(gè)權(quán)值函數(shù)F(x)來衡量。F(x)是一個(gè)單調(diào)降函數(shù),x代表當(dāng)前時(shí)刻。
Segmented LRU是基于頻率對基本LRU進(jìn)行擴(kuò)展,它是為頁緩存設(shè)計(jì)的,頁的大小均相等。Segmented LRU基于這樣的觀察:在很短一段時(shí)間內(nèi)使用兩次的對象比只使用一次的對象流行度高。在Segmented LRU中緩存空間分為兩部分:可能段和保護(hù)段。新對象(使用一次)首先進(jìn)入可能段,使用兩次以上的段進(jìn)入保護(hù)段。當(dāng)整個(gè)緩存空間滿時(shí),可能段中的最近最少使用的對象將被替換掉。為了盡量減少與理想算法的差距,產(chǎn)生了各種精妙的算法,最近最少使用頁面置換算法便是其中一個(gè)。LRU算法的提出,是基于這樣一個(gè)事實(shí):在前面幾條指令中使用頻繁的頁面很可能在后面的幾條指令中頻繁使用。反過來說,已經(jīng)很久沒有使用的頁面很可能在未來較長的一段時(shí)間內(nèi)不會被用到。這個(gè),就是著名的局部性原理 ——比內(nèi)存速度還要快的cache,也是基于同樣的原理運(yùn)行的。因此,我們只需要在每次調(diào)換時(shí),找到最近最少使用的那個(gè)頁面調(diào)出內(nèi)存。
The Size-Adjusted LRU把緩存的所有對象按cost-to-size(1/(Si*ΔTit))排序,這里Si是對象I的大小,ΔTit是自從上次使用以來經(jīng)歷的時(shí)間。它只是貪婪地把cost-to-size最小的對象刪除。實(shí)際應(yīng)用中對象按Si*ΔTit重新排序,具有較大索引的對象在替換時(shí)逐一被清除掉。
更進(jìn)一步,為了避免計(jì)算所有對象的cost-to-size值,一個(gè)近似的算法叫做Pyramidal Selection Scheme(PSS),對象按log2(size)分為有限的組,同一個(gè)組中對象大小相似。每個(gè)組中使用LRU機(jī)制。
4 小 結(jié)
本文歸納總結(jié)了當(dāng)前流媒體傳輸領(lǐng)域的一些流行的技術(shù),并對它們進(jìn)行分類。目前看來,各種技術(shù)都只能解決部分問題,并且都有自己的缺陷。因此目前還沒有完善的流媒體傳輸解決方案。我們期待將來隨著計(jì)算機(jī)和通信技術(shù)及流媒體領(lǐng)域各種相關(guān)技術(shù)(視頻壓縮、傳輸協(xié)議等)的發(fā)展,會出現(xiàn)更好的流媒體解決方案,使流媒體得到更廣泛的應(yīng)用。
-
互聯(lián)網(wǎng)
+關(guān)注
關(guān)注
55文章
11248瀏覽量
106347 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7658瀏覽量
90731 -
局域網(wǎng)
+關(guān)注
關(guān)注
5文章
777瀏覽量
47138
發(fā)布評論請先 登錄
評論