两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種p2p流媒體數(shù)據(jù)請(qǐng)求方法

文檔序號(hào):7665878閱讀:185來(lái)源:國(guó)知局
專利名稱:一種p2p流媒體數(shù)據(jù)請(qǐng)求方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)流媒體技術(shù)領(lǐng)域,更具體地,本發(fā)明涉及一 種P2P流媒體數(shù)據(jù)請(qǐng)求方法。
背景技術(shù)
數(shù)據(jù)請(qǐng)求分配是目前P2P流媒體技術(shù)領(lǐng)域中的一個(gè)關(guān)鍵技術(shù)問(wèn)題。 按照分配粒度,P2P流媒體系統(tǒng)中使用的數(shù)據(jù)請(qǐng)求分配方法主要分為兩 類,分別是基于數(shù)據(jù)層的粗粒度分配和基于數(shù)據(jù)包的細(xì)粒度分配。在基 于數(shù)據(jù)層的粗粒度分配方法中,主要是基于多重描述編碼(MDC)的數(shù)據(jù) 分配方法,所述方法對(duì)每條多重描述編碼子流采用獨(dú)立多播樹(shù)進(jìn)行傳輸, 接收方根據(jù)自身帶寬情況選擇加入到多棵多播樹(shù)中,適應(yīng)節(jié)點(diǎn)的異構(gòu)性, 但是,多重描述編碼的效率比分層編碼的效率低,同時(shí),多重描述編碼 的各個(gè)分層之間的解碼不存在依賴關(guān)系?;跀?shù)據(jù)包的細(xì)粒度分配方法 主要分為兩種, 一種是基于TCP友好(TCP-friendly)帶寬測(cè)試的數(shù)據(jù) 分配方法,在不知發(fā)送節(jié)點(diǎn)可用帶寬的條件下,確保每個(gè)數(shù)據(jù)包僅被一 個(gè)發(fā)送節(jié)點(diǎn)發(fā)送;另一種是基于前向糾錯(cuò)編碼(FEC)的數(shù)據(jù)分配方法, 可以在突發(fā)丟包網(wǎng)絡(luò)環(huán)境中,減小數(shù)據(jù)包的丟失概率。
上述現(xiàn)有的數(shù)據(jù)請(qǐng)求分配方法,或者以整個(gè)數(shù)據(jù)段為單位向入節(jié)點(diǎn)(本地節(jié)點(diǎn)向某個(gè)或某幾個(gè)節(jié)點(diǎn)請(qǐng)求數(shù)據(jù),這些,皮請(qǐng)求的節(jié)點(diǎn)稱為本地 節(jié)點(diǎn)的入節(jié)點(diǎn))進(jìn)行數(shù)據(jù)請(qǐng)求,或者以數(shù)據(jù)包為單位輪流向入節(jié)點(diǎn)進(jìn)行 數(shù)據(jù)請(qǐng)求。對(duì)于前者,在剛開(kāi)始播放的時(shí)候,如果數(shù)據(jù)段比較大,因?yàn)?入節(jié)點(diǎn)根據(jù)數(shù)據(jù)包的優(yōu)先級(jí)進(jìn)行響應(yīng),序號(hào)較小并具有較高優(yōu)先級(jí)的數(shù) 據(jù)包往往集中在同一個(gè)數(shù)據(jù)段中,所述同一數(shù)據(jù)段發(fā)向一個(gè)入節(jié)點(diǎn),而 一些優(yōu)先級(jí)較低的數(shù)據(jù)包放在另 一個(gè)數(shù)據(jù)段中,發(fā)向另外一個(gè)入節(jié)點(diǎn), 從而導(dǎo)致部分優(yōu)先級(jí)高的數(shù)據(jù)包得不到及時(shí)的響應(yīng),而部分優(yōu)先級(jí)較低 的數(shù)據(jù)包在另外一個(gè)入節(jié)點(diǎn)得到優(yōu)先響應(yīng)。對(duì)于后者,在數(shù)據(jù)請(qǐng)求到達(dá) 入節(jié)點(diǎn)中某個(gè)或某幾個(gè)節(jié)點(diǎn)的緩沖區(qū)末端時(shí),即部分入節(jié)點(diǎn)可供請(qǐng)求的 最新數(shù)據(jù)數(shù)目已經(jīng)不能達(dá)到正常播放碼率所要求的數(shù)據(jù)包的數(shù)目時(shí),由 于該方法以數(shù)據(jù)包為單位輪流向入節(jié)點(diǎn)進(jìn)行數(shù)據(jù)請(qǐng)求,將造成擁有稀有 數(shù)據(jù)包的入節(jié)點(diǎn)同時(shí)也承擔(dān)共有數(shù)據(jù)包的請(qǐng)求響應(yīng),從而導(dǎo)致?lián)碛邢∮?數(shù)據(jù)包的入節(jié)點(diǎn)負(fù)載過(guò)大,變成網(wǎng)絡(luò)中的瓶頸節(jié)點(diǎn)。

發(fā)明內(nèi)容
為克服現(xiàn)有技術(shù)中的數(shù)據(jù)資源不能有效利用、帶寬不能合理分配的
缺陷,本發(fā)明提出一種P2P流媒體數(shù)據(jù)請(qǐng)求方法。 一種P2P流媒體數(shù)據(jù)請(qǐng)求方法,包括
步驟IO)、用戶節(jié)點(diǎn)加入P2P網(wǎng)絡(luò),獲得入節(jié)點(diǎn)列表,向所述列表中 的入節(jié)點(diǎn)發(fā)送請(qǐng)求,檢測(cè)丟包情況,獲得各入節(jié)點(diǎn)的上行帶寬;
步驟20)、根據(jù)所述各個(gè)入節(jié)點(diǎn)的上行帶寬,向所述各個(gè)入節(jié)點(diǎn)分配 數(shù)據(jù)請(qǐng)求步驟210)、當(dāng)本地緩沖區(qū)的大小小于預(yù)設(shè)值時(shí),將要請(qǐng)求的數(shù)據(jù)包 按照優(yōu)先級(jí)從大到小進(jìn)行排序,按照排序結(jié)果依次將所述各個(gè)數(shù)據(jù)包按 照一定的塊大小進(jìn)行分塊,并分配給各個(gè)入節(jié)點(diǎn),直至已分配的數(shù)量達(dá) 到所述入節(jié)點(diǎn)的請(qǐng)求量;
步驟220 )、當(dāng)本地緩沖區(qū)的大小大于預(yù)設(shè)值時(shí),依次檢測(cè)從各入節(jié) 點(diǎn)能獲得的數(shù)據(jù)包的個(gè)數(shù),根據(jù)所述數(shù)據(jù)包個(gè)數(shù)的比例,確定所述各入 節(jié)點(diǎn)分配的請(qǐng)求量。
其中,數(shù)據(jù)包請(qǐng)求過(guò)程中,記錄所述用戶節(jié)點(diǎn)的唯一標(biāo)識(shí)號(hào),如果 發(fā)往某個(gè)入節(jié)點(diǎn)的數(shù)據(jù)包丟失,則下次優(yōu)先選擇其他用戶節(jié)點(diǎn)發(fā)送所述 丟失數(shù)據(jù)包的請(qǐng)求。
在步驟IO)中,在所述請(qǐng)求發(fā)送之前,檢測(cè)上上次發(fā)送隊(duì)列的全部 和上次發(fā)送隊(duì)列的前半部分的數(shù)據(jù)包是否存在丟包,或者檢測(cè)上上次發(fā) 送隊(duì)列的數(shù)據(jù)包是否存在丟包。
其中,當(dāng)還未開(kāi)始播放時(shí),在每次請(qǐng)求數(shù)據(jù)前,檢測(cè)上上次發(fā)送隊(duì) 列的全部和上次發(fā)送隊(duì)列的前半部分是否有數(shù)據(jù)包未收到,如果有數(shù)據(jù) 包未收到,將所述數(shù)據(jù)包的播放位置值和對(duì)應(yīng)的唯一標(biāo)識(shí)號(hào)加入緊急隊(duì) 列,同時(shí)統(tǒng)計(jì)所述唯一標(biāo)識(shí)號(hào)相應(yīng)的入節(jié)點(diǎn)的丟包數(shù)。
其中,當(dāng)已經(jīng)開(kāi)始播放時(shí),在每次請(qǐng)求數(shù)據(jù)前,只檢測(cè)上上次發(fā)送 隊(duì)列是否有數(shù)據(jù)包未收到,如果有數(shù)據(jù)包未收到,將所述數(shù)據(jù)包的播放 位置值和對(duì)應(yīng)的唯一標(biāo)識(shí)號(hào)加入緊急隊(duì)列,同時(shí)統(tǒng)計(jì)所述唯一標(biāo)識(shí)號(hào)相 應(yīng)的入節(jié)點(diǎn)的丟包數(shù)。
其中,所述方法進(jìn)一步包括步驟110)、將所述緊急隊(duì)列中的序列號(hào)按照優(yōu)先級(jí)的大小排序; 步驟120)、在數(shù)據(jù)請(qǐng)求前,優(yōu)先處理所述緊急隊(duì)列的數(shù)據(jù)請(qǐng)求,檢
測(cè)要請(qǐng)求的數(shù)據(jù)包的序列號(hào)是否過(guò)期,如果過(guò)期則放棄請(qǐng)求,如果沒(méi)有
過(guò)期,則請(qǐng)求所述數(shù)據(jù)包;
步驟130)、檢查所述緊急隊(duì)列中要請(qǐng)求的數(shù)據(jù)包對(duì)應(yīng)節(jié)點(diǎn)的唯一標(biāo)
識(shí)號(hào)是否為空,如果不為空,在請(qǐng)求數(shù)據(jù)時(shí),優(yōu)先將所述數(shù)據(jù)包的請(qǐng)求 向節(jié)點(diǎn)唯一標(biāo)識(shí)號(hào)不同于所述緊急隊(duì)列所記錄的唯一標(biāo)識(shí)號(hào)的節(jié)點(diǎn)發(fā)送。
其中,步驟210)中,根據(jù)所述入節(jié)點(diǎn)一次能夠同時(shí)發(fā)送的數(shù)據(jù)包的 大小,確定所述塊的大??;為保證數(shù)據(jù)勻速發(fā)送,所述入節(jié)點(diǎn)將整個(gè)數(shù) 據(jù)請(qǐng)求分作許多個(gè)時(shí)隙來(lái)發(fā)送;所述一次能夠同時(shí)發(fā)送的數(shù)據(jù)包的大小 是指一個(gè)時(shí)隙所i^節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包的數(shù)目。
其中,步驟220 )進(jìn)一步包括將相鄰序號(hào)的所述各數(shù)據(jù)包請(qǐng)求分配 給同一個(gè)入節(jié)點(diǎn),直至分配數(shù)量達(dá)到所述入節(jié)點(diǎn)的請(qǐng)求量,然后將鄰接 的下一個(gè)數(shù)據(jù)包請(qǐng)求發(fā)送給下一個(gè)入節(jié)點(diǎn),循環(huán)進(jìn)行,直至本次數(shù)據(jù)包 請(qǐng)求分配結(jié)束。
通過(guò)應(yīng)用本發(fā)明,使得用戶節(jié)點(diǎn)根據(jù)初始時(shí)對(duì)各入節(jié)點(diǎn)帶寬的探測(cè) 情況和所要請(qǐng)求數(shù)據(jù)包的優(yōu)先級(jí)大小,對(duì)各個(gè)入節(jié)點(diǎn)進(jìn)行數(shù)據(jù)請(qǐng)求,加 快數(shù)據(jù)到達(dá)速度,減少單點(diǎn)故障帶來(lái)的影響,在數(shù)據(jù)請(qǐng)求末端靈活調(diào)整 連續(xù)請(qǐng)求數(shù)據(jù)塊的大小,從而能更快請(qǐng)求到最新的數(shù)據(jù)包,達(dá)到流暢播 放的目的。


圖1為P2P流媒體網(wǎng)絡(luò)結(jié)構(gòu)圖; 圖2為用戶節(jié)點(diǎn)加入P2P網(wǎng)絡(luò)流程圖; 圖3為數(shù)據(jù)請(qǐng)求流程圖; 圖4為丟包檢測(cè)處理流程具體實(shí)施例方式
下面結(jié)合附圖和具體實(shí)施例,對(duì)本發(fā)明提供的一種P2P流媒體數(shù)據(jù) 請(qǐng)求方法作進(jìn)一步說(shuō)明。
圖1示出P2P流媒體網(wǎng)絡(luò)結(jié)構(gòu),數(shù)據(jù)源服務(wù)器為流媒體直播提供數(shù) 據(jù)源,數(shù)據(jù)中轉(zhuǎn)服務(wù)器負(fù)責(zé)在各流媒體直播區(qū)域中轉(zhuǎn)數(shù)據(jù)源的數(shù)據(jù),相 當(dāng)于各個(gè)直播區(qū)域的數(shù)據(jù)源服務(wù)器,各直播區(qū)域中的先加入的節(jié)點(diǎn)直接 和數(shù)據(jù)中轉(zhuǎn)服務(wù)器連接,獲取流媒體數(shù)據(jù),并為后加入的節(jié)點(diǎn)提供數(shù)據(jù) 信息。
圖2示出節(jié)點(diǎn)加入P2P網(wǎng)絡(luò)的流程,用戶節(jié)點(diǎn)A (下面稱節(jié)點(diǎn)A)加 入圖1所示的P2P直播網(wǎng)絡(luò),節(jié)點(diǎn)A首先連接本區(qū)域的索引服務(wù)器,即 圖中所示的索引服務(wù)器l,索引服務(wù)器l根據(jù)節(jié)點(diǎn)A的IP地址在已有的 網(wǎng)絡(luò)節(jié)點(diǎn)中選擇與其網(wǎng)絡(luò)距離最近并且播放位置相近的節(jié)點(diǎn)列表返回給 節(jié)點(diǎn)A。
節(jié)點(diǎn)A向所獲得的節(jié)點(diǎn)列表中的所有節(jié)點(diǎn)發(fā)送連接請(qǐng)求,設(shè)圖1中 用戶節(jié)點(diǎn)B (簡(jiǎn)稱節(jié)點(diǎn)B)和用戶節(jié)點(diǎn)C (簡(jiǎn)稱節(jié)點(diǎn)C)在節(jié)點(diǎn)列表中, 例如節(jié)點(diǎn)A向節(jié)點(diǎn)B發(fā)送連接請(qǐng)求,如果連接成功,則節(jié)點(diǎn)A將節(jié)點(diǎn)B設(shè)置為其入節(jié)點(diǎn),節(jié)點(diǎn)B將節(jié)點(diǎn)A設(shè)置為其出節(jié)點(diǎn),并定期向節(jié)點(diǎn)A發(fā) 送自己的緩沖區(qū)映像,告知節(jié)點(diǎn)A目前節(jié)點(diǎn)B緩沖區(qū)所有的數(shù)據(jù)包的情 況。
節(jié)點(diǎn)A根據(jù)節(jié)點(diǎn)列表中所有入節(jié)點(diǎn)所返回的緩沖區(qū)映像中播放位置 (index)值確定節(jié)點(diǎn)A自身的起始播放點(diǎn)(Playinglndex )。
圖3示出用戶節(jié)點(diǎn)發(fā)送數(shù)據(jù)請(qǐng)求的流程,節(jié)點(diǎn)A根據(jù)自己的緩沖區(qū) 情況,向入節(jié)點(diǎn)發(fā)送數(shù)據(jù)請(qǐng)求。
節(jié)點(diǎn)A根據(jù)向各個(gè)入節(jié)點(diǎn)的上上次的請(qǐng)求量(Last2ReqNum)確定 本次向該入節(jié)點(diǎn)的請(qǐng)求量;
如果是第一次請(qǐng)求,由于各個(gè)入節(jié)點(diǎn)的異構(gòu)性,無(wú)法預(yù)知各個(gè)入節(jié) 點(diǎn)的上行帶寬,在第一次數(shù)據(jù)請(qǐng)求時(shí),根據(jù)播放碼率的M倍,向各個(gè)入 節(jié)點(diǎn)均分請(qǐng)求量,M為自定義量,優(yōu)選地,M取1.2-1.4。本次請(qǐng)求的目 的是探測(cè)各個(gè)入節(jié)點(diǎn)的上行帶寬,在第一次檢測(cè)丟包情況的時(shí)候,可以 根據(jù)各個(gè)入節(jié)點(diǎn)的丟包情況獲得各個(gè)入節(jié)點(diǎn)的上行帶寬的估計(jì)值,如果 某些節(jié)點(diǎn)不存在丟包情況,說(shuō)明這些節(jié)點(diǎn)具有足夠的上行帶寬,如果需 要,可以增加對(duì)這些節(jié)點(diǎn)的數(shù)據(jù)請(qǐng)求量。
如果是第二次請(qǐng)求,節(jié)點(diǎn)A根據(jù)入節(jié)點(diǎn)中向各個(gè)節(jié)點(diǎn)的上次的請(qǐng)求 量(LastReqN咖)確定本次向該節(jié)點(diǎn)的請(qǐng)求量,如果某些節(jié)點(diǎn)存在丟包 情況,則把上次對(duì)該節(jié)點(diǎn)的請(qǐng)求量(LastReqNum)減去丟包數(shù)進(jìn)行請(qǐng)求, 如果某些節(jié)點(diǎn)不存在丟包現(xiàn)象,此時(shí)默認(rèn)請(qǐng)求速度處在快增長(zhǎng)狀態(tài),則 繼續(xù)向該節(jié)點(diǎn)增加請(qǐng)求量N, N取較大值,可以快速逼近入節(jié)點(diǎn)上行帶寬, 并且,向各個(gè)入節(jié)點(diǎn)的請(qǐng)求總量控制在碼率的M倍,M為自定義量,優(yōu)選地,M取1.2-1. 4。
第三次請(qǐng)求及以后的每次請(qǐng)求,節(jié)點(diǎn)A根據(jù)入節(jié)點(diǎn)中向各個(gè)節(jié)點(diǎn)的 上上次的請(qǐng)求量(Last2ReqNum)確定本次向該節(jié)點(diǎn)的請(qǐng)求量,如果某些 節(jié)點(diǎn)存在丟包情況,則把上次對(duì)該節(jié)點(diǎn)的請(qǐng)求量(LastReqNum)減去丟 包數(shù)進(jìn)行請(qǐng)求,如果某些節(jié)點(diǎn)不存在丟包現(xiàn)象,此時(shí)默認(rèn)請(qǐng)求速度處在 快增長(zhǎng)狀態(tài),則繼續(xù)向該節(jié)點(diǎn)增加請(qǐng)求量N, N取較大值,可以快速逼近 入節(jié)點(diǎn)上行帶寬,并且,向各個(gè)入節(jié)點(diǎn)的請(qǐng)求總量控制在碼率的M倍,M 為自定義量,優(yōu)選地,M取1.2-1. 4。
如圖4所示,當(dāng)本地緩沖區(qū)(Buffer)的百分比未達(dá)到開(kāi)始播放百 分比(START-PERCENT ),此時(shí)還未開(kāi)始播放,丟包檢測(cè)采用立即檢測(cè)機(jī) 制,即本次發(fā)送數(shù)據(jù)之前檢測(cè)上上次發(fā)送隊(duì)列(Last-SentQue)和上次 發(fā)送隊(duì)列(This-SentQue)的前半部分?jǐn)?shù)據(jù)是否到達(dá)。當(dāng)本地緩沖區(qū)的 百分比達(dá)到START-PERCENT后,此時(shí)已經(jīng)開(kāi)始播放,丟包檢測(cè)釆用隔輪 檢測(cè)機(jī)制,即在本次發(fā)送數(shù)據(jù)之前檢測(cè)上上次發(fā)送隊(duì)列(Last-SentQue) 的數(shù)據(jù)包是否有丟包(具體檢測(cè)方法見(jiàn)后面敘述的丟包檢測(cè)方法)。
如果不存在丟包,根據(jù)目前請(qǐng)求速度所處的狀態(tài),進(jìn)行請(qǐng)求增加, 即如果處于初始快增長(zhǎng)狀態(tài),則請(qǐng)求量增加N, N取值越大,可以越快逼 i^節(jié)點(diǎn)上行帶寬,如果請(qǐng)求速度狀態(tài)處于慢速狀態(tài),增加一個(gè)小量n, n<N;如果發(fā)現(xiàn)存在丟包,將丟失的數(shù)據(jù)加入緊急隊(duì)列中,如果丟包數(shù)小 于預(yù)先設(shè)定的值一最大延遲數(shù)(MAX-DELAY-NUM ),則本次請(qǐng)求量設(shè)置為 上上次的請(qǐng)求量(Last2ReqNum)減去丟包數(shù),當(dāng)采用立即檢測(cè)機(jī)制時(shí), 本次請(qǐng)求量設(shè)置為上次的請(qǐng)求量(LastReqNum)減去丟包數(shù);如果丟包數(shù)大于一個(gè)預(yù)先設(shè)定的值一最大延遲數(shù)(MAX-DELAY-NUM),則將請(qǐng)求量 設(shè)置為(Last2ReqNum-MAX-DEUY-NUM),當(dāng)采用立即檢測(cè)機(jī)制時(shí),請(qǐng)求 量設(shè)置為(LastReqNum-MAX-DELAY-NUM)。
根據(jù)請(qǐng)求過(guò)程中測(cè)量的各個(gè)入節(jié)點(diǎn)的上行帶寬,向各個(gè)入節(jié)點(diǎn)分配 本次請(qǐng)求的請(qǐng)求量。
當(dāng)本地緩沖區(qū)(Buffer)的大小小于預(yù)設(shè)值(SWITCH-PERCENT)時(shí), 根據(jù)實(shí)時(shí)性(或者優(yōu)先級(jí)大小)的要求將要請(qǐng)求的數(shù)據(jù)包從高到低進(jìn)行 排序,按照排序結(jié)果依次將各個(gè)數(shù)據(jù)包按照一定的塊大小(假設(shè)為K)進(jìn) 行分塊分配給各個(gè)入節(jié)點(diǎn),直至已分配數(shù)量達(dá)到該入節(jié)點(diǎn)的請(qǐng)求量,此 時(shí)的塊大小取決于目標(biāo)節(jié)點(diǎn)一次能夠同時(shí)發(fā)送的數(shù)據(jù)包的大小,由于節(jié) 點(diǎn)的異構(gòu)性,每個(gè)節(jié)點(diǎn)一次能夠同時(shí)發(fā)送的數(shù)據(jù)包大小會(huì)有所不同。發(fā) 送端為保證數(shù)據(jù)勻速發(fā)送會(huì)將整個(gè)數(shù)據(jù)請(qǐng)求分作許多個(gè)時(shí)隙來(lái)發(fā)送,這 里所指的一次能夠同時(shí)發(fā)送的數(shù)據(jù)包的大小表示的是一個(gè)時(shí)隙發(fā)送端所 發(fā)送的數(shù)據(jù)包的數(shù)目。
當(dāng)本地緩沖區(qū)(Buffer)的大小大于預(yù)設(shè)值(SWITCH-PERCENT)時(shí), 依次檢測(cè)從各入節(jié)點(diǎn)能獲得的數(shù)據(jù)包的個(gè)數(shù)(Retr ivNum)并根據(jù)各個(gè)入 節(jié)點(diǎn)的RetrivNum比例確定各入節(jié)點(diǎn)本次分配的請(qǐng)求量,將相鄰序號(hào)的 各數(shù)據(jù)包請(qǐng)求分配給同一個(gè)節(jié)點(diǎn),直至分配的數(shù)量達(dá)到該入節(jié)點(diǎn)的請(qǐng)求 量,然后將鄰接的下一個(gè)數(shù)據(jù)包請(qǐng)求發(fā)送給下一個(gè)入節(jié)點(diǎn),如此循環(huán), 直至本次分配完畢。
數(shù)據(jù)包請(qǐng)求過(guò)程中,記錄請(qǐng)求發(fā)送目的節(jié)點(diǎn)的唯一標(biāo)識(shí)號(hào)(ID),如 果遇到發(fā)往某個(gè)節(jié)點(diǎn)的數(shù)據(jù)包丟失,則下次發(fā)送是優(yōu)先選擇其他節(jié)點(diǎn)發(fā)送該數(shù)據(jù)包的請(qǐng)求。 丟包檢測(cè)方法
采用雙發(fā)送隊(duì)列機(jī)制,即使用兩個(gè)發(fā)送隊(duì)列, 一個(gè)發(fā)送隊(duì)列
This一SentQue存儲(chǔ)本次發(fā)送請(qǐng)求的數(shù)據(jù)包的序列號(hào)值(index)和發(fā)送目 的節(jié)點(diǎn)的唯一標(biāo)識(shí)號(hào)(ID),另一個(gè)發(fā)送隊(duì)列Last-SentQue存儲(chǔ)上次發(fā) 送請(qǐng)求的數(shù)據(jù)包的序列號(hào)值(index)和發(fā)送目的節(jié)點(diǎn)的唯一標(biāo)識(shí)號(hào)(ID);
請(qǐng)求時(shí),在This-SentQue當(dāng)中記錄請(qǐng)求數(shù)據(jù)包的序列號(hào)值(index ) 和請(qǐng)求發(fā)送的目的節(jié)點(diǎn)的唯一標(biāo)識(shí)號(hào)(ID);
當(dāng)本地緩沖區(qū)大小小于START-PERCENT時(shí)(此時(shí)還未開(kāi)始播放),在 每次請(qǐng)求數(shù)據(jù)前,檢測(cè)Last-SentQue隊(duì)列和This—SentQue的前半部分 中是否還有數(shù)據(jù)包未收到,如果有數(shù)據(jù)包未收到,則將數(shù)據(jù)包的序列號(hào) 值(index)和對(duì)應(yīng)的唯一標(biāo)識(shí)號(hào)(ID)加入緊急隊(duì)列(Urgent Que ),使 用下述的緊急隊(duì)列處理方法進(jìn)行處理,同時(shí)才艮據(jù)唯一標(biāo)識(shí)號(hào)(ID),統(tǒng)計(jì) 相應(yīng)的入節(jié)點(diǎn)的丟包數(shù);
當(dāng)本地緩沖區(qū)大小大于START—PERCENT時(shí)(此時(shí)已經(jīng)開(kāi)始播放),在 每次請(qǐng)求數(shù)據(jù)前,只檢測(cè)Last-SentQue隊(duì)列是否有數(shù)據(jù)包未收到,如果 有數(shù)據(jù)包未收到,則將數(shù)據(jù)包的序列號(hào)值(index)和對(duì)應(yīng)的唯一標(biāo)識(shí)號(hào) (ID)加入緊急隊(duì)列(UrgentQue ),使用下述的緊急隊(duì)列處理方法進(jìn)行 處理,同時(shí)根據(jù)唯一標(biāo)識(shí)號(hào)(ID ),統(tǒng)計(jì)相應(yīng)的入節(jié)點(diǎn)的丟包數(shù)。
緊急隊(duì)列(UrgentQue)處理方法
將緊急隊(duì)列中的序列號(hào)值(index)按照優(yōu)先級(jí)的大小排序; 每次數(shù)據(jù)請(qǐng)求前優(yōu)先處理緊急隊(duì)列的數(shù)據(jù)請(qǐng)求,當(dāng)處理緊急隊(duì)列數(shù)據(jù)請(qǐng)求時(shí),首先檢測(cè)要請(qǐng)求的數(shù)據(jù)包的序列號(hào)值(index)是否過(guò)期,如 果過(guò)期則放棄請(qǐng)求,如果沒(méi)有過(guò)期,則請(qǐng)求該數(shù)據(jù)包;
檢查緊急隊(duì)列中要請(qǐng)求的數(shù)據(jù)包對(duì)應(yīng)節(jié)點(diǎn)的唯一標(biāo)識(shí)號(hào)(ID)是否 為空,如果不為空,在請(qǐng)求數(shù)據(jù)時(shí),優(yōu)先將該數(shù)據(jù)包的請(qǐng)求向節(jié)點(diǎn)唯一 標(biāo)識(shí)號(hào)(ID)不同于緊急隊(duì)列所記錄的唯一標(biāo)識(shí)號(hào)(ID)的節(jié)點(diǎn)發(fā)送。
總的來(lái)說(shuō),在本實(shí)施例中,首先根據(jù)初始時(shí)對(duì)各入節(jié)點(diǎn)帶寬的探測(cè) 情況和所要請(qǐng)求的數(shù)據(jù)包的優(yōu)先級(jí)大小,對(duì)各個(gè)入節(jié)點(diǎn)所進(jìn)行的數(shù)據(jù)請(qǐng) 求輪塊分配,在播放的初始階段,以單個(gè)數(shù)據(jù)包為單位,按照優(yōu)先級(jí)的 大小將優(yōu)先級(jí)較大的數(shù)據(jù)包分別先向不同的入節(jié)點(diǎn)發(fā)送請(qǐng)求,其次再發(fā) 送優(yōu)先級(jí)較低的數(shù)據(jù)包請(qǐng)求,使優(yōu)先級(jí)較高的數(shù)據(jù)包請(qǐng)求能夠得到快速 的響應(yīng),從而加快數(shù)據(jù)響應(yīng)速度;同時(shí)在數(shù)據(jù)請(qǐng)求末端靈活調(diào)整連續(xù)請(qǐng) 求數(shù)據(jù)塊的大小,采用一定大小的數(shù)據(jù)塊為單位,向各個(gè)入節(jié)點(diǎn)發(fā)送數(shù) 據(jù)請(qǐng)求,將公共擁有的數(shù)據(jù)請(qǐng)求發(fā)往擁有公共數(shù)據(jù)比重較大的入節(jié)點(diǎn), 而把稀有數(shù)據(jù)請(qǐng)求發(fā)往擁有稀有數(shù)據(jù)比重較大的入節(jié)點(diǎn),以平衡各個(gè)入 節(jié)點(diǎn)的帶寬負(fù)載,從而減少單點(diǎn)故障帶來(lái)的影響,并且結(jié)合丟包重傳機(jī) 制,最終達(dá)到流暢播放的目的。
最后應(yīng)說(shuō)明的是,以上所述實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而 非對(duì)其限制,并且在應(yīng)用上可以延伸到其他的^"改、變化、應(yīng)用和實(shí)施 例,同時(shí)認(rèn)為所有這樣的修改、變化、應(yīng)用、實(shí)施例都在本發(fā)明的精神 和范圍內(nèi)。
權(quán)利要求
1、一種P2P流媒體數(shù)據(jù)請(qǐng)求方法,包括步驟10)、用戶節(jié)點(diǎn)加入P2P網(wǎng)絡(luò),獲得入節(jié)點(diǎn)列表,向所述列表中的入節(jié)點(diǎn)發(fā)送請(qǐng)求,檢測(cè)丟包情況,獲得各入節(jié)點(diǎn)的上行帶寬;步驟20)、根據(jù)所述各個(gè)入節(jié)點(diǎn)的上行帶寬,向所述各個(gè)入節(jié)點(diǎn)分配數(shù)據(jù)請(qǐng)求步驟210)、當(dāng)本地緩沖區(qū)的大小小于預(yù)設(shè)值時(shí),將要請(qǐng)求的數(shù)據(jù)包按照優(yōu)先級(jí)從大到小進(jìn)行排序,按照排序結(jié)果依次將所述各個(gè)數(shù)據(jù)包按照一定的塊大小進(jìn)行分塊,并分配給各個(gè)入節(jié)點(diǎn),直至已分配的數(shù)量達(dá)到所述入節(jié)點(diǎn)的請(qǐng)求量;步驟220)、當(dāng)本地緩沖區(qū)的大小大于預(yù)設(shè)值時(shí),依次檢測(cè)從各入節(jié)點(diǎn)能獲得的數(shù)據(jù)包的個(gè)數(shù),根據(jù)所述數(shù)據(jù)包個(gè)數(shù)的比例,確定所述各入節(jié)點(diǎn)分配的請(qǐng)求量。
2、 權(quán)利要求l的方法,其中,數(shù)據(jù)包請(qǐng)求過(guò)程中,記錄所述用戶節(jié)點(diǎn)的唯一標(biāo)識(shí)號(hào),如果發(fā)往某個(gè)入節(jié)點(diǎn)的數(shù)據(jù)包丟失,則下次優(yōu)先選擇其他用戶節(jié)點(diǎn)發(fā)送所述丟失數(shù)據(jù)包的請(qǐng)求。
3、 權(quán)利要求l的方法,在步驟IO)中,在所述請(qǐng)求發(fā)送之前,檢測(cè)上上次發(fā)送隊(duì)列的全部和上次發(fā)送隊(duì)列的前半部分的數(shù)據(jù)包是否存在丟包,或者檢測(cè)上上次發(fā)送隊(duì)列的數(shù)據(jù)包是否存在丟包。
4、 權(quán)利要求3的方法,其中,當(dāng)還未開(kāi)始播放時(shí),在每次請(qǐng)求數(shù)據(jù)前,檢測(cè)上上次發(fā)送隊(duì)列的全部和上次發(fā)送隊(duì)列的前半部分是否有數(shù)據(jù)包未收到,如果有數(shù)據(jù)包未收到,將所述數(shù)據(jù)包的播放位置值和對(duì)應(yīng)的唯一標(biāo)識(shí)號(hào)加入緊急隊(duì)列,同時(shí)統(tǒng)計(jì)所述唯一標(biāo)識(shí)號(hào)相應(yīng)的入節(jié)點(diǎn)的丟包數(shù)。
5、 權(quán)利要求3的方法,其中,當(dāng)已經(jīng)開(kāi)始播放時(shí),在每次請(qǐng)求數(shù)據(jù)前,只檢測(cè)上上次發(fā)送隊(duì)列是否有數(shù)據(jù)包未收到,如果有數(shù)據(jù)包未收到,將所述數(shù)據(jù)包的播放位置值和對(duì)應(yīng)的唯一標(biāo)識(shí)號(hào)加入緊急隊(duì)列,同時(shí)統(tǒng)計(jì)所述唯一標(biāo)識(shí)號(hào)相應(yīng)的入節(jié)點(diǎn)的丟包數(shù)。
6、 權(quán)利要求4或者權(quán)利要求5的方法,進(jìn)一步包括步驟110)、將所述緊急隊(duì)列中的序列號(hào)按照優(yōu)先級(jí)的大小排序;步驟120)、在數(shù)據(jù)請(qǐng)求前,優(yōu)先處理所述緊急隊(duì)列的數(shù)據(jù)請(qǐng)求,檢測(cè)要請(qǐng)求的數(shù)據(jù)包的序列號(hào)是否過(guò)期,如果過(guò)期則放棄請(qǐng)求,如果沒(méi)有過(guò)期,則請(qǐng)求所述數(shù)據(jù)包;步驟130)、檢查所述緊急隊(duì)列中要請(qǐng)求的數(shù)據(jù)包對(duì)應(yīng)節(jié)點(diǎn)的唯一標(biāo)識(shí)號(hào)是否為空,如果不為空,在請(qǐng)求數(shù)據(jù)時(shí),優(yōu)先將所述數(shù)據(jù)包的請(qǐng)求向節(jié)點(diǎn)唯一標(biāo)識(shí)號(hào)不同于所述緊急隊(duì)列所記錄的唯一標(biāo)識(shí)號(hào)的節(jié)點(diǎn)發(fā)送。
7、 權(quán)利要求l的方法,其中,步驟210)中,根據(jù)所述入節(jié)點(diǎn)一次能夠同時(shí)發(fā)送的數(shù)據(jù)包的大小,確定所述塊的大??;為保證數(shù)據(jù)勻速發(fā)送,所述入節(jié)點(diǎn)將整個(gè)數(shù)據(jù)請(qǐng)求分作許多個(gè)時(shí)隙來(lái)發(fā)送;所述一次能夠同時(shí)發(fā)送的數(shù)據(jù)包的大小是指一個(gè)時(shí)隙所述入節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包的數(shù)目。
8、 權(quán)利要求l的方法,其中,步驟220 )進(jìn)一步包括將相鄰序號(hào)的所述各數(shù)據(jù)包請(qǐng)求分配給同 一個(gè)入節(jié)點(diǎn),直至分配數(shù)量達(dá)到所述入節(jié)點(diǎn)的請(qǐng)求量,然后將鄰接的下一個(gè)數(shù)據(jù)包請(qǐng)求發(fā)送給下一個(gè)入節(jié)點(diǎn),循環(huán)進(jìn)行,直至本次數(shù)據(jù)包請(qǐng)求分配結(jié)束。
全文摘要
本發(fā)明提供一種P2P流媒體數(shù)據(jù)請(qǐng)求方法,針對(duì)P2P網(wǎng)絡(luò)異構(gòu)性,根據(jù)不同節(jié)點(diǎn)的帶寬,對(duì)不同節(jié)點(diǎn)進(jìn)行相應(yīng)的數(shù)據(jù)請(qǐng)求。用戶節(jié)點(diǎn)根據(jù)初始時(shí)對(duì)各入節(jié)點(diǎn)帶寬的探測(cè)情況和所要請(qǐng)求的數(shù)據(jù)包的優(yōu)先級(jí)大小,對(duì)各個(gè)入節(jié)點(diǎn)進(jìn)行數(shù)據(jù)請(qǐng)求和輪塊分配,加快數(shù)據(jù)到達(dá)速度,同時(shí)減少單點(diǎn)故障帶來(lái)的影響;在數(shù)據(jù)請(qǐng)求末端,靈活調(diào)整連續(xù)請(qǐng)求數(shù)據(jù)塊的大小,可以更快請(qǐng)求到最新的數(shù)據(jù)包,并且結(jié)合丟包檢測(cè)重傳機(jī)制,達(dá)到流暢播放的目的。
文檔編號(hào)H04L12/56GK101459585SQ20071017958
公開(kāi)日2009年6月17日 申請(qǐng)日期2007年12月14日 優(yōu)先權(quán)日2007年12月14日
發(fā)明者浩 任, 馮偵探, 王勁林, 杭 蘇, 蘇少煒, 魯逸峰 申請(qǐng)人:中國(guó)科學(xué)院聲學(xué)研究所
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
定西市| 始兴县| 云林县| 平顶山市| 丹巴县| 永清县| 章丘市| 滁州市| 平舆县| 千阳县| 肃宁县| 乳源| 太保市| 福贡县| 天峻县| 策勒县| 石柱| 清涧县| 永昌县| 井研县| 大竹县| 蓬溪县| 老河口市| 镇平县| 古田县| 葫芦岛市| 奉新县| 长治市| 镇巴县| 当雄县| 光山县| 厦门市| 同心县| 东莞市| 勃利县| 洛南县| 固始县| 普宁市| 固安县| 乌兰察布市| 大理市|