国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于流媒體直播系統(tǒng)的P2P網(wǎng)絡(luò)構(gòu)建方法與流程

      文檔序號:11623868閱讀:378來源:國知局
      基于流媒體直播系統(tǒng)的P2P網(wǎng)絡(luò)構(gòu)建方法與流程

      本發(fā)明屬于通信技術(shù)領(lǐng)域,更進一步涉及互聯(lián)網(wǎng)通信技術(shù)領(lǐng)域中的一種基于流媒體直播系統(tǒng)的對等網(wǎng)絡(luò)p2p(peertopeer)構(gòu)建方法。本發(fā)明提出的網(wǎng)絡(luò)構(gòu)建方法用于流媒體直播系統(tǒng)中流媒體數(shù)據(jù)的分發(fā)。



      背景技術(shù):

      相比于傳統(tǒng)的c/s(客戶端/服務(wù)器)模式,p2p模式的顯著特點是:每個節(jié)點在網(wǎng)絡(luò)中具有相同的地位,在接受其他節(jié)點服務(wù)的同時,也向其他節(jié)點提供服務(wù)。流媒體直播系統(tǒng)采用p2p模式,可以有效減小服務(wù)器的壓力,降低運營成本。

      p2p網(wǎng)絡(luò)按照有無固定拓撲結(jié)構(gòu),可以分為兩類:結(jié)構(gòu)化(structured)的p2p網(wǎng)絡(luò)統(tǒng)和非結(jié)構(gòu)化(unstructured)的p2p網(wǎng)絡(luò)。在結(jié)構(gòu)化p2p網(wǎng)絡(luò)中,節(jié)點之間有穩(wěn)定的父子關(guān)系,相對靠近內(nèi)容源的父節(jié)點將媒體流直接推送給子節(jié)點。由于預(yù)先有比較明確的數(shù)據(jù)傳輸路徑,這類系統(tǒng)具有時延小的優(yōu)點,缺點是在節(jié)點頻繁加入/退出的環(huán)境下需要大量的信令開銷用以維持拓撲,對動態(tài)環(huán)境的適應(yīng)性不好。在非結(jié)構(gòu)化p2p網(wǎng)絡(luò)中,每個節(jié)點以一部分節(jié)點作為鄰居,鄰居節(jié)點之間互相通告自己持有的內(nèi)容,如果鄰居節(jié)點持有的內(nèi)容是自己需要的,就顯式地請求該內(nèi)容。每個節(jié)點都有多個能獲取流媒體數(shù)據(jù)的鄰居,即使某個鄰居退出,也不會過多的影響它的播放質(zhì)量,因此這類系統(tǒng)對節(jié)點頻繁加入/退出的環(huán)境具有很強的適應(yīng)性,而它的缺點是每次獲取數(shù)據(jù)前需主動向鄰居請求,相比于結(jié)構(gòu)化系統(tǒng),具有較大的時延。

      z.jianming,y.nianmin,c.shaobin,l.xiang在其發(fā)表的論文“tree-meshbasedp2pstreamingdatadistributionscheme”(knowledgediscoveryanddataminingadvancesinintelligentandsoftcomputing,vol.135,pp77-83,2012)提出一種混合結(jié)構(gòu)p2p的組網(wǎng)方法。該方法綜合了基于分發(fā)樹的結(jié)構(gòu)化網(wǎng)絡(luò)和基于網(wǎng)的非結(jié)構(gòu)化網(wǎng)絡(luò),其關(guān)鍵在于為節(jié)點劃分自治域,位于同一自治域的節(jié)點組成分發(fā)樹,不同自治域之間的節(jié)點組成網(wǎng)狀結(jié)構(gòu),分發(fā)樹內(nèi)的節(jié)點采用推的方式轉(zhuǎn)發(fā)數(shù)據(jù),而不同自治域間節(jié)點之間采用拉的方式轉(zhuǎn)發(fā)數(shù)據(jù)。這種方法在降低數(shù)據(jù)傳輸時延的同時也解決了因節(jié)點頻繁加入/退出造成的性能下降問題。但是,該方法仍然存在的不足之處是,不同自治域之間節(jié)點基于網(wǎng)狀結(jié)構(gòu),采用拉的方式獲取數(shù)據(jù),依然存在著較大的時延。

      北京郵電大學(xué)在其申請的專利文獻“基于網(wǎng)狀結(jié)構(gòu)的樹形cdn-p2p融合網(wǎng)絡(luò)架構(gòu)及方法”(公開號cn104660677a,申請?zhí)?01510021631.6)公開了一種基于網(wǎng)狀結(jié)構(gòu)的樹形cdn-p2p融合網(wǎng)絡(luò)架構(gòu)及方法。該方法利用內(nèi)容分發(fā)網(wǎng)絡(luò)cdn服務(wù)器構(gòu)成系統(tǒng)的主干網(wǎng)絡(luò),每個內(nèi)容分發(fā)網(wǎng)絡(luò)cdn服務(wù)器向網(wǎng)絡(luò)中的一部分節(jié)點提供流媒體數(shù)據(jù),節(jié)點之間以p2p的方式構(gòu)成邊緣網(wǎng)絡(luò),在整體保持樹狀網(wǎng)絡(luò)拓撲的前提下,上下層的節(jié)點之間形成網(wǎng)格結(jié)構(gòu)。該方法能夠?qū)⒘髅襟w服務(wù)器的內(nèi)容迅速分發(fā)到網(wǎng)絡(luò)邊緣,減小在主干網(wǎng)絡(luò)中的傳輸時延。但是,該方法仍然存在的不足之處是,單個內(nèi)容分發(fā)網(wǎng)絡(luò)cdn服務(wù)器的的負載過高,導(dǎo)致較大的成本開銷。



      技術(shù)實現(xiàn)要素:

      本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)的不足,提出一種基于流媒體直播系統(tǒng)的p2p網(wǎng)絡(luò)構(gòu)建方法。本發(fā)明針對流媒體直播系統(tǒng)的低時延要求的特點,考慮到p2p網(wǎng)絡(luò)的結(jié)構(gòu)特點,同時充分利用加入流媒體直播系統(tǒng)節(jié)點的上傳帶寬信息,來減少流媒體數(shù)據(jù)在節(jié)點間的傳輸時延。

      本發(fā)明實現(xiàn)上述目的的具體思路是,根據(jù)節(jié)點的上傳帶寬大小將節(jié)點劃分不同的層次,上傳帶寬越大的節(jié)點越靠近直播源,對應(yīng)層次標號越小。從節(jié)點層次的角度觀察,整個系統(tǒng)構(gòu)成一棵直播樹,加速流媒體數(shù)據(jù)在節(jié)點間的傳輸;每層內(nèi)部的節(jié)點之間形成網(wǎng)狀結(jié)構(gòu),能夠適應(yīng)節(jié)點頻繁加入/退出的環(huán)境。

      本發(fā)明實現(xiàn)上述目的的步驟包括如下:

      (1)初始化系統(tǒng)參數(shù):

      (1a)將待加入系統(tǒng)節(jié)點的獲取流媒體數(shù)據(jù)的節(jié)點個數(shù)的下限和上限分別初始化為2和10;

      (1b)將流媒體數(shù)據(jù)塊的大小初始化為一個視頻幀的大??;

      (2)節(jié)點發(fā)出請求:

      (2a)為流媒體直播系統(tǒng)提供直播節(jié)目的內(nèi)容源節(jié)點,向流媒體直播系統(tǒng)發(fā)出成為直播源的請求;

      (2b)從流媒體直播系統(tǒng)獲取直播節(jié)目的普通節(jié)點,向流媒體直播系統(tǒng)發(fā)出成為接收者的請求;

      (3)響應(yīng)內(nèi)容源節(jié)點的請求:

      (3a)流媒體直播系統(tǒng)將接收到的請求中的直播節(jié)目信息添加到直播節(jié)目列表中;

      (3b)流媒體直播系統(tǒng)將接收到的請求中的內(nèi)容源節(jié)點信息添加到已注冊節(jié)點列表中;

      (3c)流媒體直播系統(tǒng)利用提供流媒體數(shù)據(jù)節(jié)點數(shù)計算公式,計算內(nèi)容源節(jié)點最多能提供流媒體數(shù)據(jù)的節(jié)點數(shù);

      (4)判斷已注冊節(jié)點列表中是否存有當(dāng)前普通節(jié)點,若有,則執(zhí)行步驟(6),否則,執(zhí)行步驟(5);

      (5)響應(yīng)當(dāng)前普通節(jié)點的請求:

      (5a)流媒體直播系統(tǒng)將請求中的當(dāng)前普通節(jié)點信息添加到已注冊節(jié)點列表中;

      (5b)流媒體直播系統(tǒng)向當(dāng)前普通節(jié)點發(fā)送直播節(jié)目列表;

      (5c)流媒體直播系統(tǒng)利用提供流媒體數(shù)據(jù)節(jié)點數(shù)計算公式,計算當(dāng)前普通節(jié)點最多能提供流媒體數(shù)據(jù)的節(jié)點數(shù);

      (5d)流媒體直播系統(tǒng)利用獲取流媒體數(shù)據(jù)節(jié)點數(shù)計算公式,計算當(dāng)前普通節(jié)點最多能獲取流媒體數(shù)據(jù)的節(jié)點數(shù);

      (6)分配提供流媒體數(shù)據(jù)的節(jié)點:

      (6a)將已注冊節(jié)點列表中的所有節(jié)點劃分層次,將內(nèi)容源節(jié)點作為第0層,將提供流媒體數(shù)據(jù)節(jié)點個數(shù)最大的普通節(jié)點作為第1層,將提供流媒體數(shù)據(jù)節(jié)點個數(shù)第二大的普通節(jié)點作為第2層,依此把所有的節(jié)點排列成n層;

      (6b)建立一個用來存放為當(dāng)前普通節(jié)點提供流媒體數(shù)據(jù)的節(jié)點集合m,將節(jié)點集合初始化為空,將當(dāng)前層次初始化為0;

      (6c)建立一個用來存放當(dāng)前層次節(jié)點的集合n;

      (6d)尋找該層次中提供流媒體數(shù)據(jù)的節(jié)點數(shù)未達到最大值的所有節(jié)點,將找到的所有節(jié)點存到節(jié)點集合n中;

      (6e)判斷節(jié)點集合n是否為空,若是,將當(dāng)前層次數(shù)加1后執(zhí)行步驟(6h),否則,執(zhí)行步驟(6f);

      (6f)從節(jié)點集合n中移出任意一個節(jié)點存到節(jié)點集合m中;

      (6g)判斷節(jié)點集合m中節(jié)點的個數(shù)是等于集合上限,若是,則執(zhí)行步驟(9),否則,執(zhí)行步驟(6e);

      (6h)判斷當(dāng)前層次的值是否大于當(dāng)前節(jié)點所在層數(shù),若是,則執(zhí)行步驟(7),否則執(zhí)行步驟(6d);

      (7)判斷節(jié)點集合m中的節(jié)點個數(shù)是否小于2,若是,則執(zhí)行步驟(8),否則,執(zhí)行步驟(9):

      (8)調(diào)整已注冊節(jié)點的鄰居關(guān)系:

      (8a)建立一個用來存放節(jié)點對的節(jié)點對集合z,將集合初始化為空;

      (8b)將當(dāng)前層次賦值為當(dāng)前節(jié)點所在的層數(shù);

      (8c)尋找當(dāng)前層次中提供流媒體數(shù)據(jù)的節(jié)點中存在層數(shù)大于當(dāng)前節(jié)點所在層數(shù)的所有節(jié)點,將找到的每一個節(jié)點和它的任意一個獲取流媒體數(shù)據(jù)的節(jié)點組成的節(jié)點對存到節(jié)點對集合z中;

      (8d)判斷節(jié)點對集合z是否為空,若是,則將當(dāng)前層次減1后執(zhí)行步驟(8g),否則,執(zhí)行步驟(8e);

      (8e)從節(jié)點對集合z中取出任意一個節(jié)點對,將所取出的節(jié)點對中提供流媒體數(shù)據(jù)的節(jié)點存到節(jié)點集合m中,將當(dāng)前節(jié)點變成為節(jié)點對中另一個節(jié)點提供流媒體數(shù)據(jù)的節(jié)點,斷開節(jié)點對中兩個節(jié)點的聯(lián)系;

      (8f)判斷節(jié)點集合m中的節(jié)點個數(shù)是否為2,若是,則執(zhí)行步驟(9),否則執(zhí)行步驟(8d);

      (8g)判斷當(dāng)前層次是否小于0,若是,則執(zhí)行步驟(9),否則執(zhí)行(8c);

      (9)完成p2p網(wǎng)絡(luò)的構(gòu)建:

      將節(jié)點集合m中的節(jié)點變成當(dāng)前普通節(jié)點獲取流媒體數(shù)據(jù)的節(jié)點,將當(dāng)前普通節(jié)點加入基于流媒體直播系統(tǒng)的p2p網(wǎng)絡(luò)。

      本發(fā)明與現(xiàn)有技術(shù)相比具有以下優(yōu)點:

      第1,本發(fā)明充分考慮流媒體直播系統(tǒng)的特點,利用加入流媒體直播系統(tǒng)節(jié)點的上傳帶寬信息,將已注冊的節(jié)點劃分層次,使得上傳帶寬越大的節(jié)點越靠近直播源,克服了現(xiàn)有技術(shù)流媒體數(shù)據(jù)從直播源到達節(jié)點的時延較大的問題,使得本發(fā)明具有了流媒體數(shù)據(jù)從直播源到達節(jié)點的時延較小的優(yōu)點。

      第2,本發(fā)明合理利用每個節(jié)點上傳帶寬的最大值,使每個節(jié)點下載數(shù)據(jù)的同時,根據(jù)自己上傳帶寬的上限,盡最大能力為其他節(jié)點轉(zhuǎn)發(fā)流媒體數(shù)據(jù),分擔(dān)服務(wù)器的壓力,克服了現(xiàn)有技術(shù)服務(wù)器負載過高,造成較大成本開銷的問題,使得本發(fā)明具有低服務(wù)器負載,部署成本低的優(yōu)點。

      附圖說明

      圖1是本發(fā)明的流程圖;

      圖2是本發(fā)明為節(jié)點分配提供流媒體數(shù)據(jù)的節(jié)點的流程圖;

      圖3是本發(fā)明調(diào)整已注冊節(jié)點的鄰居關(guān)系的流程圖。

      具體實施方式

      下面結(jié)合附圖對本發(fā)明作進一步的詳細描述。

      參照附圖1,本發(fā)明的具體步驟詳細描述如下。

      步驟1,初始化系統(tǒng)參數(shù)。

      將待加入系統(tǒng)節(jié)點的獲取流媒體數(shù)據(jù)的節(jié)點個數(shù)的下限和上限分別初始化為2和10。

      將流媒體數(shù)據(jù)塊的大小初始化為一個視頻幀的大小。

      步驟2,節(jié)點發(fā)出請求。

      為流媒體直播系統(tǒng)提供直播節(jié)目的內(nèi)容源節(jié)點,向流媒體直播系統(tǒng)發(fā)出成為直播源的請求。

      從流媒體直播系統(tǒng)獲取直播節(jié)目的普通節(jié)點,向流媒體直播系統(tǒng)發(fā)出成為接收者的請求。

      步驟3,響應(yīng)內(nèi)容源節(jié)點的請求。

      流媒體直播系統(tǒng)將接收到的的請求中的直播節(jié)目信息添加到直播節(jié)目列表中,這個列表供待加入的普通節(jié)點選擇系統(tǒng)能夠提供的節(jié)目,選擇直播節(jié)目也就是選擇能提供該直播節(jié)目的內(nèi)容源節(jié)點。

      流媒體直播系統(tǒng)將請求中包含的內(nèi)容源節(jié)點信息添加到已注冊節(jié)點列表中。

      利用提供流媒體數(shù)據(jù)節(jié)點數(shù)計算公式,計算內(nèi)容源節(jié)點最多能提供流媒體數(shù)據(jù)的節(jié)點數(shù)。所述的節(jié)點數(shù)計算公式如下:

      其中,p表示根據(jù)自身上傳帶寬的大小,節(jié)點最多能提供流媒體數(shù)據(jù)的節(jié)點數(shù),u表示節(jié)點上傳帶寬的大小,c表示流媒體數(shù)據(jù)塊的大小。

      步驟4,判斷已注冊節(jié)點列表中是否存有當(dāng)前普通節(jié)點,即當(dāng)前節(jié)點是不是第一次發(fā)出請求。若有,則執(zhí)行步驟6,否則,執(zhí)行步驟5。

      步驟5,響應(yīng)當(dāng)前普通節(jié)點的請求。

      流媒體直播系統(tǒng)將發(fā)出請求的當(dāng)前普通節(jié)點添加到已注冊節(jié)點列表中。

      流媒體直播系統(tǒng)向當(dāng)前普通節(jié)點發(fā)送直播節(jié)目列表,當(dāng)普通節(jié)點根據(jù)直播節(jié)目列表做出選擇后,會再次向系統(tǒng)發(fā)出請求,請求中攜帶有內(nèi)容源節(jié)點的信息。

      利用提供流媒體數(shù)據(jù)節(jié)點數(shù)計算公式,計算當(dāng)前普通節(jié)點最多能提供流媒體數(shù)據(jù)的節(jié)點數(shù)。所述的節(jié)點數(shù)計算公式如下:

      其中,p表示根據(jù)自身上傳帶寬的大小,節(jié)點最多能提供流媒體數(shù)據(jù)的節(jié)點數(shù),u表示節(jié)點上傳帶寬的大小,c表示流媒體數(shù)據(jù)塊的大小。

      利用獲取流媒體數(shù)據(jù)節(jié)點數(shù)計算公式,計算當(dāng)前普通節(jié)點最多能獲取流媒體數(shù)據(jù)的節(jié)點數(shù)。所述的節(jié)點數(shù)計算公式如下:

      其中,a表示根據(jù)自身下載帶寬的大小,當(dāng)前普通節(jié)點最多能獲取流媒體數(shù)據(jù)的節(jié)點數(shù),d表示節(jié)點下載帶寬的大小,c表示流媒體數(shù)據(jù)塊的大小。

      步驟6,分配提供流媒體數(shù)據(jù)的節(jié)點。

      參照附圖2,對分配提供流媒體數(shù)據(jù)的節(jié)點的過程進行詳細描述。

      第一步,劃分節(jié)點層次。

      將已注冊節(jié)點列表中的所有節(jié)點劃分層次,將內(nèi)容源節(jié)點作為第0層,將提供流媒體數(shù)據(jù)節(jié)點個數(shù)最大的普通節(jié)點作為第1層,將提供流媒體數(shù)據(jù)節(jié)點個數(shù)第二大的普通節(jié)點作為第2層,依此把所有的節(jié)點排列成n層。劃分層次的結(jié)果使得具有較大的上傳帶寬的節(jié)點更靠近內(nèi)容源,能夠為更多的節(jié)點迅速轉(zhuǎn)發(fā)流媒體數(shù)據(jù)。

      第二步,初始化。

      建立一個用來存放為當(dāng)前普通節(jié)點提供流媒體數(shù)據(jù)的節(jié)點集合m,將節(jié)點集合初始化為空,定義當(dāng)前層次為正在操作的層次,將當(dāng)前層次初始化為0。建立一個用來存放當(dāng)前層次中,提供流媒體數(shù)據(jù)的節(jié)點數(shù)未達到最大值的節(jié)點的集合n。

      第三步,尋找符合條件的節(jié)點。

      遍歷當(dāng)前層次的節(jié)點,尋找該層中提供流媒體數(shù)據(jù)的節(jié)點數(shù)未達到最大值,即具有剩余服務(wù)能力的所有節(jié)點,將找到的所有節(jié)點存到集合n中。

      第四步,判斷該層是否有符合條件的節(jié)點。

      判斷集合n是否為空,若是,則執(zhí)行第六步,否則,執(zhí)行第五步。

      第五步,移動節(jié)點。

      從集合n中移出任意一個節(jié)點存到集合m中。

      第六步,檢查集合m的節(jié)點個數(shù)。

      判斷集合m中節(jié)點的個數(shù)是等于集合上限,若是,則執(zhí)行步驟9,否則,執(zhí)行第四步。所述的集合上限為節(jié)點集合m能存放節(jié)點個數(shù)的最大值,節(jié)點上限的值為該節(jié)點多能獲取流媒體數(shù)據(jù)的節(jié)點數(shù)和10之間的最小值。集合上限存在的意義在于,避免因為節(jié)點下載帶寬太小導(dǎo)致為它提供流媒體數(shù)據(jù)的節(jié)點數(shù)量過少,影響播放流媒體性能;也不因為節(jié)點下載帶寬太大導(dǎo)致為它提供流媒體數(shù)據(jù)的節(jié)點數(shù)量過多,造成節(jié)點的冗余。

      第六步,遍歷下一層節(jié)點。

      將當(dāng)前層次數(shù)加1,準備遍歷下一層的節(jié)點。

      第七步,檢查當(dāng)前層數(shù)。

      因為為當(dāng)前節(jié)點尋找節(jié)點只在上傳帶寬大于它的節(jié)點中進行,因此,判斷當(dāng)前層次的值是否大于當(dāng)前節(jié)點所在層數(shù),若是,則執(zhí)行步驟7,否則執(zhí)行第三步。

      步驟7,判斷集合m中的節(jié)點個數(shù)是否小于2,若是,則執(zhí)行步驟8,否則,執(zhí)行步驟9。

      步驟8,調(diào)整已注冊節(jié)點的鄰居關(guān)系。

      參照附圖3,對調(diào)整已注冊節(jié)點的鄰居關(guān)系的過程進行詳細描述。

      第一步,初始化。

      建立一個用來存放節(jié)點對的集合z,將集合初始化為空。將當(dāng)前層次賦值為當(dāng)前節(jié)點所在的層數(shù)。

      第二步,尋找符合條件的節(jié)點對。

      遍歷當(dāng)前層次的節(jié)點,尋找該層中提供流媒體數(shù)據(jù)的節(jié)點中存在層數(shù)大于當(dāng)前節(jié)點所在層數(shù)的所有節(jié)點。從層次的角度看,就是提供流媒體數(shù)據(jù)的節(jié)點和獲取流媒體數(shù)據(jù)的節(jié)點分列當(dāng)前節(jié)點兩側(cè)。將找到的每一個節(jié)點和它的任意一個獲取流媒體數(shù)據(jù)的節(jié)點組成的節(jié)點對存到集合z中。

      第三步,判斷該層是否有符合條件的節(jié)點對。

      判斷集合z是否為空,若是,則將當(dāng)前層次減1后執(zhí)行第六步,否則,執(zhí)行步驟第四步。

      第四步,調(diào)整節(jié)點對的鄰居關(guān)系。

      從集合z中取出任意一個節(jié)點對,將所取出的節(jié)點對中提供流媒體數(shù)據(jù)的節(jié)點存到集合m中,將當(dāng)前節(jié)點變成為節(jié)點對中另一個節(jié)點提供流媒體數(shù)據(jù)的節(jié)點斷開節(jié)點對中兩個節(jié)點的聯(lián)系。這樣做的結(jié)果使得當(dāng)前節(jié)點獲取流媒體數(shù)據(jù)的節(jié)點個數(shù)增加1,而又減少其他節(jié)點獲取流媒體數(shù)據(jù)節(jié)點的個數(shù)。

      第五步,檢查集合m的節(jié)點個數(shù)。

      判斷集合m中的節(jié)點個數(shù)是否為2,若是,則執(zhí)行步驟9,否則執(zhí)行第三步。

      第六步,檢查當(dāng)前層數(shù)。

      判斷當(dāng)前層次是否小于0,若是,則執(zhí)行步驟9,否則執(zhí)行第二步。

      步驟9,完成p2p網(wǎng)絡(luò)的構(gòu)建。

      將集合m中的節(jié)點變成當(dāng)前普通節(jié)點獲取流媒體數(shù)據(jù)的節(jié)點,將當(dāng)前普通節(jié)點加入基于流媒體直播系統(tǒng)的p2p網(wǎng)絡(luò)。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1