陳園園 朱欣穎
摘 要:在深入研究現(xiàn)有的P2P網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的基礎(chǔ)上,構(gòu)建了一個(gè)新的P2P流媒體點(diǎn)播系統(tǒng)模型,該系統(tǒng)模型包含跟蹤服務(wù)器、資源服務(wù)器、超級(jí)節(jié)點(diǎn)和普通節(jié)點(diǎn)四個(gè)部分。它能快速定位到資源,減少路由查詢次數(shù),增加系統(tǒng)的擴(kuò)展性、魯棒性和數(shù)據(jù)吞吐量,能夠很好的滿足點(diǎn)播服務(wù)的要求。
關(guān)鍵詞:P2P;流媒體點(diǎn)播;網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-2163(2015)06-
Abstract: In-depth study of existing P2P network topology, the paper constructs a new P2P streaming media on-demand system model, which includes four parts tracking server, resource servers, super nodes and ordinary nodes. It can quickly locate the resources, reduce routing queries, increase system scalability, robustness and data throughput, therefore can well meet the requirements of on-demand services.
Keywords: P2P; Streaming Media On-demand; Network Topology
0 引 言
近年來,隨著P2P技術(shù)的發(fā)展,許多P2P流媒體點(diǎn)播系統(tǒng)進(jìn)入了人們的生活,為廣大的用戶提供了豐富的媒體服務(wù)。然而,由于用戶節(jié)點(diǎn)的動(dòng)態(tài)性、節(jié)點(diǎn)性能的差異性以及用戶操作的隨意性,導(dǎo)致P2P流媒體點(diǎn)播系統(tǒng)無法保證用戶獲得高質(zhì)量的流媒體點(diǎn)播服務(wù)。因此,為了提高P2P流媒體點(diǎn)播系統(tǒng)的服務(wù)質(zhì)量和用戶觀感,設(shè)計(jì)一種新的P2P流媒體點(diǎn)播系統(tǒng)模型具有十分重要的意義。
1 數(shù)據(jù)調(diào)度問題的模型
1.1 節(jié)點(diǎn)可利用帶寬的評(píng)估
在實(shí)際的系統(tǒng)中,某一個(gè)數(shù)據(jù)塊會(huì)被多個(gè)對(duì)等節(jié)點(diǎn)擁有,那么選擇哪個(gè)節(jié)點(diǎn)進(jìn)行傳輸即是一個(gè)亟需解決的重要問題。在本文中,以節(jié)點(diǎn)的網(wǎng)絡(luò)帶寬為主要依據(jù)選擇節(jié)點(diǎn)進(jìn)行數(shù)據(jù)的傳輸,不同節(jié)點(diǎn)的帶寬是不同的,同一節(jié)點(diǎn)在不同時(shí)期的帶寬也是不同的,因此需要研發(fā)一特定算法去估計(jì)每個(gè)節(jié)點(diǎn)的帶寬。
要評(píng)估一個(gè)節(jié)點(diǎn)的帶寬,可以根據(jù)其歷史帶寬來進(jìn)行識(shí)讀估計(jì)。最先想到的方法是取其歷史帶寬記錄的平均值作為下一個(gè)調(diào)度周期的估計(jì)帶寬,具體方法是,通過記錄這個(gè)節(jié)點(diǎn)最近 個(gè)周期的實(shí)際帶寬,再把這 個(gè)帶寬記錄求和,由此獲得平均值。但是使用這種方法估計(jì)下一個(gè)調(diào)度周期的網(wǎng)絡(luò)帶寬卻不準(zhǔn)確,因?yàn)榭赡艹霈F(xiàn)如下情況,即 個(gè)周期的前幾個(gè)周期,節(jié)點(diǎn)提供的網(wǎng)絡(luò)帶寬很大,而最近幾個(gè)調(diào)度周期,相應(yīng)的網(wǎng)絡(luò)帶寬卻很小,那么如果用歷史帶寬記錄平均值的方式做出的帶寬估計(jì)肯定也很大,就會(huì)導(dǎo)致請(qǐng)求節(jié)點(diǎn)將繼續(xù)向這個(gè)資源節(jié)點(diǎn)發(fā)出傳輸數(shù)據(jù)塊請(qǐng)求,為此可能導(dǎo)致傳輸時(shí)間過長(zhǎng),甚至直接導(dǎo)致失敗。
本文對(duì)上述的方式進(jìn)行了改進(jìn),使用公式(1)來估計(jì)每個(gè)資源節(jié)點(diǎn)的帶寬。在本算法中,記錄了節(jié)點(diǎn)n-1個(gè)周期的實(shí)際帶寬,調(diào)度周期 的估計(jì)帶寬包括2部分,一部分是節(jié)點(diǎn)前n-2個(gè)周期的實(shí)際帶寬平均后的加權(quán)值,另一部分是節(jié)點(diǎn)最近一次(n-1周期)網(wǎng)絡(luò)帶寬加權(quán)后的結(jié)果值。這種設(shè)計(jì)既考慮了節(jié)點(diǎn)的歷史帶寬,也顧及了節(jié)點(diǎn)最近一次的帶寬。
其中, 表示資源節(jié)點(diǎn) 在第 個(gè)周期能夠提供帶寬的估計(jì)值, 表示資源節(jié)點(diǎn) 在第 個(gè)周期實(shí)際提供的帶寬大小。而且,n是一個(gè)正整數(shù),表示要估計(jì)的調(diào)度周期。n是一個(gè)常量(01.2 數(shù)據(jù)分片
在P2P點(diǎn)播系統(tǒng)中,一般的資源都是體積可觀的,為了方便數(shù)據(jù)的調(diào)度,一個(gè)至關(guān)重要的操作就是如何對(duì)資源數(shù)據(jù)進(jìn)行合理分片[1]。
為了能夠?qū)崿F(xiàn)合理的分片,需要討論如下三個(gè)方面的因素:
(1)從數(shù)據(jù)調(diào)度的方面考慮,系統(tǒng)希望把資源文件分得越小越好,節(jié)點(diǎn)可以選擇從不同的鄰居節(jié)點(diǎn)調(diào)度某一片數(shù)據(jù),這樣就增加了數(shù)據(jù)調(diào)度的靈活性。
(2)從調(diào)度開銷方面考慮,希望數(shù)據(jù)片的容量越大越好。主要的調(diào)度開銷有:
每一片數(shù)據(jù)都需要一個(gè)頭文件來描述其詳情,包括數(shù)據(jù)片的序列號(hào)、時(shí)間戳等信息,因此數(shù)據(jù)片越大,頭文件的開銷就越?。?/p>
每一個(gè)對(duì)等節(jié)點(diǎn)都需要使其鄰居節(jié)點(diǎn)知道該節(jié)點(diǎn)中緩存了哪些數(shù)據(jù)片,節(jié)點(diǎn)一般使用位圖來表示這些信息,如果數(shù)據(jù)片分得過小,那么位圖必然很長(zhǎng),并且位圖還是所有開銷中最大的;
數(shù)據(jù)片是從其它節(jié)點(diǎn)獲取的,如此勢(shì)必導(dǎo)致額外開銷,如請(qǐng)求數(shù)據(jù)片信息等。
(3)從流媒體點(diǎn)播對(duì)數(shù)據(jù)實(shí)時(shí)性方面考慮,一般播放器多需要數(shù)據(jù)片在播放之前即已到達(dá),而數(shù)據(jù)片在網(wǎng)絡(luò)中傳輸經(jīng)常是拆分成多個(gè)數(shù)據(jù)包,如果這個(gè)數(shù)據(jù)片過于龐大,就必然增加傳輸失敗的概率,從而導(dǎo)致數(shù)據(jù)片將無法及時(shí)在播放之前到達(dá)。
綜合考慮上述因素,本文采用先分塊,再分片的方式。具體的方式是:先把資源文件分成大小相同的數(shù)據(jù)塊(除文件的最后一塊數(shù)據(jù)可能小于其它塊的大小外),每一塊的大小均為512KB,而后再把數(shù)據(jù)塊分成64片,每一片數(shù)據(jù)的大小則為8KB(同樣是除最后一塊數(shù)據(jù)的最后一片數(shù)據(jù)大小外)。資源分片的原理示意圖如1所示。
如果媒體資源文件的大小為 ,記最后一個(gè)獨(dú)立數(shù)據(jù)塊的大小為 ,而此后一個(gè)但愿數(shù)據(jù)片的大小記為 ,則其各自大小均可由下面的公式得到。
如上方式中,系統(tǒng)傳輸數(shù)據(jù)的時(shí)候以數(shù)據(jù)片為單位傳輸,而資源表示時(shí)以數(shù)據(jù)塊為單位,這樣既減小了系統(tǒng)的額外開銷,又滿足了數(shù)據(jù)調(diào)度的實(shí)時(shí)性要求,還增加了數(shù)據(jù)調(diào)度的靈活性。
1.3 緩存數(shù)據(jù)表示與交換
流媒體在點(diǎn)播的時(shí)候,需要緩存一定數(shù)量的數(shù)據(jù)塊進(jìn)行播放和提供給其它對(duì)等節(jié)點(diǎn)使用,本節(jié)將具體研究節(jié)點(diǎn)是如何標(biāo)識(shí)緩存的數(shù)據(jù)塊以及如何進(jìn)行標(biāo)識(shí)信息的交換。
在系統(tǒng)模型中,每一個(gè)完整的媒體文件都被分為同等大小的數(shù)據(jù)塊,為了表示數(shù)據(jù)塊的位置,利于數(shù)據(jù)調(diào)度,根據(jù)數(shù)據(jù)塊的位置分配一個(gè)唯一序列號(hào),從0開始分配。當(dāng)節(jié)點(diǎn)需要點(diǎn)播某一部資源時(shí),該節(jié)點(diǎn)就開始緩存數(shù)據(jù)內(nèi)容,并通過維護(hù)一個(gè)位圖BM來表示數(shù)據(jù)塊的存在情況。
位圖信息用來表示數(shù)據(jù)塊的可用信息。一個(gè)位圖由很多位組成,每一位代表對(duì)應(yīng)序號(hào)的一塊數(shù)據(jù),位圖的長(zhǎng)度表示了點(diǎn)播資源文件所擁有的數(shù)據(jù)塊數(shù)量。如果 表示節(jié)點(diǎn)緩存了數(shù)據(jù)塊 ;反之, 就表示節(jié)點(diǎn)沒有緩存數(shù)據(jù)塊 。播放節(jié)點(diǎn)通過與鄰居交換緩存位圖,根據(jù)位圖信息可以知道哪些節(jié)點(diǎn)擁有哪些數(shù)據(jù)塊,作為自身數(shù)據(jù)調(diào)度的依據(jù)。另外,在交換位圖時(shí),每一個(gè)鄰居節(jié)點(diǎn)還將自己的播放位置通知給相互交換位圖的節(jié)點(diǎn),而通過位圖信息和播放位置,就可以預(yù)測(cè)哪些數(shù)據(jù)塊也是其它節(jié)點(diǎn)需要的。
1.4 鄰居節(jié)點(diǎn)的選擇
在模型中,當(dāng)用戶點(diǎn)播某一部資源時(shí),超級(jí)節(jié)點(diǎn)會(huì)選擇某些個(gè)擁有這部資源的節(jié)點(diǎn)返回給點(diǎn)播用戶。在選擇這些節(jié)點(diǎn)的過程中,超級(jí)節(jié)點(diǎn)會(huì)考慮這些資源節(jié)點(diǎn)與點(diǎn)播節(jié)點(diǎn)的位置關(guān)系,優(yōu)先返回位于點(diǎn)播節(jié)點(diǎn)同一或者附近區(qū)域位置的資源節(jié)點(diǎn),如此即可減少網(wǎng)絡(luò)傳輸延時(shí),降低主干網(wǎng)的壓力,提高服務(wù)質(zhì)量。另外,本文提出的調(diào)度策略中,計(jì)算數(shù)據(jù)片的優(yōu)先級(jí)時(shí)也考慮了位置因素。
2 P2P流媒體點(diǎn)播系統(tǒng)模型
基于上述調(diào)度模型,通過研究現(xiàn)有的幾種P2P網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)及系統(tǒng)模型,本文設(shè)計(jì)了如圖2所示的P2P流媒體點(diǎn)播系統(tǒng)模型。
從圖2中可以看出,系統(tǒng)中包括跟蹤服務(wù)器、資源服務(wù)器、超級(jí)節(jié)點(diǎn)和普通節(jié)點(diǎn)。這樣的結(jié)構(gòu)設(shè)計(jì),主要是為了快速定位到資源,減少路由查詢次數(shù),增加網(wǎng)絡(luò)中數(shù)據(jù)的吞吐量,同時(shí)系統(tǒng)的擴(kuò)展性和魯棒性,滿足點(diǎn)播的服務(wù)質(zhì)量。下面將詳細(xì)介紹系統(tǒng)的每一個(gè)組成部分。
2.1 跟蹤服務(wù)器
這個(gè)服務(wù)器保存著系統(tǒng)所有資源的目錄信息,這些資源來自資源服務(wù)器和普通節(jié)點(diǎn),普通用戶可以根據(jù)給定的信息點(diǎn)播系統(tǒng)中的資源。服務(wù)器還管理著普通節(jié)點(diǎn)的加入、退出、資源點(diǎn)播和發(fā)布等操作,以及普通節(jié)點(diǎn)相關(guān)信息(包括IP地址、端口號(hào)、會(huì)話號(hào))的實(shí)時(shí)記錄,再根據(jù)不同的資源內(nèi)容選擇和管理超級(jí)節(jié)點(diǎn)。
2.2 資源服務(wù)器
這個(gè)服務(wù)器的主要作用是存儲(chǔ)了系統(tǒng)中供用戶點(diǎn)播的原始資源,如果系統(tǒng)中的節(jié)點(diǎn)要點(diǎn)播某一資源時(shí),且其它節(jié)點(diǎn)都沒有保存,此時(shí)節(jié)點(diǎn)就會(huì)從資源服務(wù)器上實(shí)現(xiàn)下載,并進(jìn)行欣賞。
2.3 超級(jí)節(jié)點(diǎn)
超級(jí)節(jié)點(diǎn)擁有良好性能(包括計(jì)算處理能力、存儲(chǔ)能力、網(wǎng)絡(luò)帶寬、I/O端口)和公共IP地址,而且表現(xiàn)出在線時(shí)間長(zhǎng)的實(shí)際優(yōu)勢(shì)。超級(jí)節(jié)點(diǎn)不僅具備普通節(jié)點(diǎn)的所有功能,還進(jìn)一步提供了管理資源分布信息的功能。普通節(jié)點(diǎn)在點(diǎn)播資源的同時(shí)把自己緩存資源的情況告知于超級(jí)節(jié)點(diǎn),超級(jí)節(jié)點(diǎn)統(tǒng)計(jì)這些信息,供其它普通節(jié)點(diǎn)查詢資源的分布信息,作為節(jié)點(diǎn)調(diào)度數(shù)據(jù)的重要基礎(chǔ)。超級(jí)節(jié)點(diǎn)和普通節(jié)點(diǎn)還組成一個(gè)簇,形成一個(gè)邏輯子網(wǎng),子網(wǎng)中的所有普通節(jié)點(diǎn)都成為鄰居節(jié)點(diǎn)。
2.4 普通節(jié)點(diǎn)
普通節(jié)點(diǎn)可以點(diǎn)播網(wǎng)絡(luò)中的資源進(jìn)行欣賞,同時(shí)也為其它的普通節(jié)點(diǎn)提供資源,加速數(shù)據(jù)的傳輸,并且普通節(jié)點(diǎn)還可以向網(wǎng)絡(luò)中的其它節(jié)點(diǎn)發(fā)布自己的整部資源,供其它普通節(jié)點(diǎn)選擇使用。性能好且在線時(shí)間長(zhǎng),具有公共IP地址的普通節(jié)點(diǎn)可以被服務(wù)器選擇升級(jí)為超級(jí)節(jié)點(diǎn)。
3 結(jié)束語
本文通過對(duì)影響P2P流媒體點(diǎn)播系統(tǒng)拓?fù)浣Y(jié)構(gòu)的分析,搭建了一個(gè)P2P流媒體點(diǎn)播系統(tǒng)模型,該系統(tǒng)模型包含跟蹤服務(wù)器、資源服務(wù)器、超級(jí)節(jié)點(diǎn)和普通節(jié)點(diǎn)。系統(tǒng)能快速地定位資源,減少路由查詢次數(shù),增加系統(tǒng)的擴(kuò)展性、魯棒性和數(shù)據(jù)的吞吐量,較好地利用帶寬資源,滿足用戶的點(diǎn)播服務(wù)要求。
參考文獻(xiàn):
[1] 趙惠.P2P流媒體點(diǎn)播系統(tǒng)的算法研究[D].成都:西華大學(xué),2008.
[2] 管磊.P2P技術(shù)揭秘---P2P網(wǎng)絡(luò)技術(shù)原理與典型系統(tǒng)開發(fā)[M].北京:清華大學(xué)出版社,2011:89-103.
[3] 石志磊.流媒體技術(shù)及其系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2011.