本發(fā)明涉及通信技術領域,特別是指一種基于區(qū)域協(xié)作緩存的D2D內容分發(fā)方法
背景技術:
近年來,隨著多媒體技術與移動網(wǎng)絡的不斷發(fā)展,傳統(tǒng)的無線蜂窩網(wǎng)絡已無法滿足用戶對于帶寬的需求。業(yè)界提出了Device-to-Device(設備到設備,D2D)連接使得移動終端可以互相交換數(shù)據(jù),輔助蜂窩網(wǎng)絡進行內容分發(fā)。然而無線移動D2D網(wǎng)絡雖然有傳輸速度快、通信資費低的優(yōu)點,但同時也存在通信范圍受限,網(wǎng)絡拓撲多變的缺點。當網(wǎng)絡中的節(jié)點移動較為頻繁時,D2D連接可能會因節(jié)點移動出通信范圍而中斷,進而導致傳輸失敗。
目前針對該問題主要有兩種解決思路:(1)請求發(fā)生前預先部署緩存資源;(2)請求發(fā)生后篩選最佳中繼節(jié)點。
第一種思路綜合考量全網(wǎng)中的節(jié)點與數(shù)據(jù)資源,使用特定機制優(yōu)化緩存資源部署位置,此種方式特點是未雨綢繆,主動優(yōu)化資源部署而不依賴請求信息,協(xié)作緩存方法是其中的代表,Zhuo等人提出根據(jù)“中心度”來優(yōu)化緩存部署的協(xié)作緩存機制?!爸行亩取笔怯晒?jié)點的地理位置、連接度等參數(shù)綜合計算而來,用來判斷該節(jié)點可能參與傳輸?shù)母怕??!爸行亩取睌?shù)值會隨節(jié)點移動而變化,網(wǎng)絡中的資源部署因此保持著動態(tài)優(yōu)化,由此可緩解D2D網(wǎng)絡中節(jié)點頻繁移動的問題。但該方法的缺點是小區(qū)內的資源分布不平均,在靠近小區(qū)邊緣的區(qū)域緩存資源較為匱乏,若請求節(jié)點在此發(fā)起請求,則很難在短時間內獲得足夠的資源。
第二種思路主要研究在請求開始后如何篩選最佳的中繼節(jié)點,代表方法是機會路由,機會路由充分利用無線信道的廣播特性,基于特定測度自動選擇每跳中的最佳中繼節(jié)點,該方法根據(jù)每一跳傳輸完成后的結果來選擇最佳中繼節(jié)點,以此可解決節(jié)點移動的隨機性問題,但該方法每一跳傳輸時均需將資源廣播至通信范圍內的全部節(jié)點,對信道與節(jié)點資源有著極大的浪費。
技術實現(xiàn)要素:
本發(fā)明要解決的技術問題是提供一種基于區(qū)域協(xié)作緩存的D2D內容分發(fā)方法,以解決現(xiàn)有技術所存在的當請求節(jié)點在緩存資源匱乏的位置發(fā)起請求時難以在短時間內獲得足夠的請求數(shù)據(jù),以及將請求的數(shù)據(jù)廣播至通信范圍內的全部節(jié)點會造成信道與節(jié)點資源浪費的問題。
為解決上述技術問題,本發(fā)明實施例提供一種基于區(qū)域協(xié)作緩存的D2D內容分發(fā)方法,包括:
步驟1,根據(jù)請求節(jié)點的移動趨勢信息和請求數(shù)據(jù)信息,獲取所需的緩存預置區(qū)域的數(shù)目與位置;
步驟2,根據(jù)所述請求節(jié)點的移動趨勢信息,獲取中繼節(jié)點,所述中繼節(jié)點用于在所述請求節(jié)點到達所述緩存預置區(qū)域之前,將所述請求節(jié)點請求的數(shù)據(jù)攜帶至所述緩存預置區(qū)域;
步驟3,當所述請求節(jié)點到達所述緩存預置區(qū)域后,在每個緩存預置區(qū)域獲取部分的請求數(shù)據(jù),并通過所有的緩存預置區(qū)域協(xié)作來獲得全部的請求數(shù)據(jù)。
進一步地,所述步驟1之前還包括:
獲取所述請求節(jié)點的移動終點位置及當前位置;
根據(jù)獲取的所述請求節(jié)點的移動終點位置及當前位置,對所述請求節(jié)點的行進路線進行預測,得到所述請求節(jié)點的移動趨勢信息。
進一步地,所述步驟1包括:
步驟11,根據(jù)所述請求數(shù)據(jù)信息中的請求數(shù)據(jù)包大小與D2D通信帶寬,得出所述請求節(jié)點請求的數(shù)據(jù)所需的傳輸時間;
步驟12,根據(jù)網(wǎng)絡中的節(jié)點密度得出所述緩存預置區(qū)域的半徑;
步驟13,根據(jù)所述緩存預置區(qū)域的半徑與所述請求節(jié)點的移動速度,得出所述請求節(jié)點在所述緩存預置區(qū)域內的期望停留時間;
步驟14,根據(jù)所述傳輸時間與所述期望停留時間,獲取所需的緩存預置區(qū)域的數(shù)目na,根據(jù)所述請求數(shù)據(jù)信息中的請求數(shù)據(jù)包大小及所需的緩存預置區(qū)域的數(shù)目na得出每個緩存預置區(qū)域所需部署的緩存數(shù)據(jù)量,并將所述請求節(jié)點請求的數(shù)據(jù)按每個緩存預置區(qū)域所需部署的緩存數(shù)據(jù)量進行分塊;
步驟15,按照預設的時間條件,根據(jù)所述請求節(jié)點的移動趨勢信息和平均移動速度得出所述請求節(jié)點最快取到請求數(shù)據(jù)的位置Dt,并以所述Dt為圓心的區(qū)域作為所述請求節(jié)點最快到達區(qū)域;
步驟16,判斷所述最快到達區(qū)域是否是第一個緩存預置區(qū)域;
步驟17,若是,在確定第一個緩存預置區(qū)域之后,以所述請求節(jié)點的移動終點位置為起點,以緩存預置區(qū)域的直徑為步長,以所述第一個緩存預置區(qū)域的圓心為終點,根據(jù)所述請求節(jié)點的移動趨勢信息(所述請求節(jié)點的行進路線),確定下一個緩存預置區(qū)域的圓心位置,直至確定所有緩存預置區(qū)域的圓心位置,其中,各緩存預置區(qū)域的半徑相同。
進一步地,所述步驟15包括:
步驟151,獲取數(shù)據(jù)源節(jié)點的位置Ds;
步驟152,獲取所述請求節(jié)點行進一半路程時的位置
步驟153,根據(jù)所述請求節(jié)點的平均移動速度,獲取從所述請求節(jié)點的當前位置到達時的用時與從所述數(shù)據(jù)源節(jié)點的位置Ds到達時的用時
步驟154,若則取到所述請求節(jié)點的當前位置的中點為否則,則取到所述請求節(jié)點的移動終點位置的中點為
步驟155,迭代執(zhí)行步驟151-步驟154,直至所述請求節(jié)點比所述數(shù)據(jù)源節(jié)點到某地時的用時更長,且不多于30秒,則此時的為所述請求節(jié)點最快取到請求數(shù)據(jù)的位置Dt,其中,所述為第n次迭代時所述請求節(jié)點行進一半路程時的位置。
進一步地,所述步驟16包括:
步驟161,將所述Dt展示給用戶,由用戶確認是否會經(jīng)過此地;
步驟162,若用戶確定會經(jīng)過此地,則將所述最快到達區(qū)域作為第一個緩存預置區(qū)域;
步驟163,若用戶不確定會經(jīng)過此地,則根據(jù)預測的所述請求節(jié)點的行進路線,在所述Dt到所述請求節(jié)點的移動終點位置之間的范圍內選取一個距離所述Dt最近且會經(jīng)過的位置作為第一個緩存預置區(qū)域的圓心。
進一步地,所述步驟2包括:
步驟21,將所述請求節(jié)點的請求數(shù)據(jù)信息、得到的每個緩存預置區(qū)域的圓心坐標、半徑及所需部署的緩存數(shù)據(jù)量發(fā)送給所述數(shù)據(jù)源節(jié)點;
步驟22,查找所述數(shù)據(jù)源節(jié)點通信范圍內的移動節(jié)點,根據(jù)每個移動節(jié)點的移動信息,從查找到的所述數(shù)據(jù)源節(jié)點通信范圍內的移動節(jié)點中選取k個移動節(jié)點作為本次傳輸?shù)闹欣^節(jié)點,將所述請求節(jié)點請求的數(shù)據(jù)分成na塊并進行隨機線性網(wǎng)絡編碼處理后向選取的k個中繼節(jié)點發(fā)送數(shù)據(jù);
步驟23,通過選取的k個中繼節(jié)點將所述請求節(jié)點請求的數(shù)據(jù)攜帶至相應的緩存預置區(qū)域。
進一步地,所述步驟22包括:
步驟221,以第一個緩存預置區(qū)域為目標區(qū)域;
步驟222,判斷每個移動節(jié)點的移動方向,若移動方向將會穿過所述目標區(qū)域的移動節(jié)點的數(shù)目大于k,則比較相應移動節(jié)點的當前位置,選取距離所述目標區(qū)域最近的k個移動節(jié)點作為中繼節(jié)點;否則,則選取移動方向離所述目標區(qū)域中心偏移最少的k個移動節(jié)點作為中繼節(jié)點;
步驟223,以下一個緩存預置區(qū)域為目標區(qū)域,重復步驟222,選取k個中繼節(jié)點,直至所有緩存預置區(qū)域所對應的中繼節(jié)點選擇完成;
步驟224,將所述請求節(jié)點請求的數(shù)據(jù)包平均分為na塊,將平均分成的na塊數(shù)據(jù)塊繼續(xù)分塊,對繼續(xù)分塊后的數(shù)據(jù)使用隨機線性網(wǎng)絡編碼進行編碼;
步驟225,將編碼后的數(shù)據(jù)塊發(fā)送至每個緩存預置區(qū)域對應的中繼節(jié)點。
進一步地,所述步驟22之后還包括:
步驟24,在所述數(shù)據(jù)源節(jié)點向所述中繼節(jié)點發(fā)送數(shù)據(jù)的過程中,所述中繼節(jié)點還用于判斷所述中繼節(jié)點當前位置到所述中繼節(jié)點終點位置的連線與所述中繼節(jié)點自身的移動方向夾角是否小于45度,若是,則重復步驟22;
否則,則刪除所述中繼節(jié)點自身的緩存數(shù)據(jù),不再繼續(xù)作為中繼節(jié)點。
進一步地,所述步驟3包括:
步驟31,當中繼節(jié)點攜帶相應的數(shù)據(jù)到達相應的緩存預置區(qū)域后,獲取處于所述中繼節(jié)點自身通信范圍和相應的緩沖預置區(qū)域交集內的緩存節(jié)點;
步驟32,將所述中繼節(jié)點攜帶的相應數(shù)據(jù)傳輸至獲取到的所述緩存節(jié)點,若所述中繼節(jié)點還攜帶有前一緩存預置區(qū)域的數(shù)據(jù),且本區(qū)域數(shù)據(jù)傳輸完成后仍與所述緩存節(jié)點保持連接,則繼續(xù)向所述緩存節(jié)點傳輸前一緩存預置區(qū)域的數(shù)據(jù)直至連接中斷;
步驟33,通過所述緩存節(jié)點在相應的緩存預置區(qū)域內尋找新的緩存節(jié)點并分發(fā)數(shù)據(jù),在數(shù)據(jù)分發(fā)結束后判斷所述緩存節(jié)點自身是否仍處于相應的緩存預置區(qū)域內,若仍處于相應的緩存預置區(qū)域內,則保留自身攜帶的緩存數(shù)據(jù);否則,則刪除自身攜帶的緩存數(shù)據(jù),不再作為相應的緩存預置區(qū)域內的緩存節(jié)點。
進一步地,所述步驟3還包括:
步驟34,當所述請求節(jié)點到達某緩存預置區(qū)域時,判斷當前緩存預置區(qū)域是否緩存有前一緩存預置區(qū)域的數(shù)據(jù),且緩存的數(shù)據(jù)量是否滿足所述請求節(jié)點的需求;若緩存的數(shù)據(jù)量滿足所述請求節(jié)點的需求,則當前緩存預置區(qū)域內的緩存節(jié)點直接向所述請求節(jié)點發(fā)送本區(qū)域數(shù)據(jù);若緩存的數(shù)據(jù)量不滿足所述請求節(jié)點的需求,且當前緩存預置區(qū)域內的緩存節(jié)點攜帶有前一緩存預置區(qū)域的數(shù)據(jù),則當前緩存預置區(qū)域內的緩存節(jié)點先向所述請求節(jié)點發(fā)送前一緩存預置區(qū)域缺少的數(shù)據(jù)再發(fā)送本區(qū)域數(shù)據(jù);當所述請求節(jié)點收到足夠的本區(qū)域數(shù)據(jù)時,立即使用隨機線性網(wǎng)絡編碼進行解碼,則此部分數(shù)據(jù)傳輸完成;
步驟35,當所述請求節(jié)點到達新的緩存預置區(qū)域時,重復步驟34,直至所述請求節(jié)點離開最后一個緩存預置區(qū)域。
本發(fā)明的上述技術方案的有益效果如下:
上述方案中,根據(jù)請求節(jié)點的移動趨勢信息和請求數(shù)據(jù)信息,獲取所需的緩存預置區(qū)域的數(shù)目與位置;根據(jù)所述請求節(jié)點的移動趨勢信息,獲取中繼節(jié)點,在所述請求節(jié)點到達相應的緩存預置區(qū)域之前,由所述中繼節(jié)點攜帶所述請求節(jié)點請求的數(shù)據(jù)到達相應的緩存預置區(qū)域進行緩存;當所述請求節(jié)點到達所述緩存預置區(qū)域后,在每個緩存預置區(qū)域獲取部分的請求數(shù)據(jù),并通過所有的緩存預置區(qū)域協(xié)作來獲得所述請求節(jié)點全部的請求數(shù)據(jù),這樣,根據(jù)所述請求節(jié)點的移動趨勢信息和請求數(shù)據(jù)信息部署緩存,請求節(jié)點的具體位置對數(shù)據(jù)分發(fā)無影響,并根據(jù)所述請求節(jié)點的移動趨勢信息,獲取中繼節(jié)點,不存在機會路由的資源浪費問題,從而可以提高網(wǎng)絡傳輸?shù)馁|量和可靠性。
附圖說明
圖1為本發(fā)明實施例提供的基于區(qū)域協(xié)作緩存的D2D內容分發(fā)方法的流程示意圖;
圖2為本發(fā)明實施例提供的獲取最快到達區(qū)域的中心位置的示意圖;
圖3為本發(fā)明實施例提供的判斷最快到達區(qū)域是否是第一個緩存預置區(qū)域的示意圖;
圖4為本發(fā)明實施例提供的當中繼節(jié)點到達對應的緩存預置區(qū)域后,獲取當前緩存預置區(qū)域內的緩存節(jié)點的示意圖。
具體實施方式
為使本發(fā)明要解決的技術問題、技術方案和優(yōu)點更加清楚,下面將結合附圖及具體實施例進行詳細描述。
本發(fā)明針對現(xiàn)有的D2D網(wǎng)絡節(jié)點移動導致的通信中斷,以及將請求的數(shù)據(jù)廣播至通信范圍內的全部節(jié)點會造成信道與節(jié)點資源浪費的問題,提供一種基于區(qū)域協(xié)作緩存的D2D內容分發(fā)方法。
實施例一
參看圖1所示,本發(fā)明實施例提供的基于區(qū)域協(xié)作緩存的D2D內容分發(fā)方法,包括:
步驟1,根據(jù)請求節(jié)點的移動趨勢信息和請求數(shù)據(jù)信息,獲取所需的緩存預置區(qū)域的數(shù)目與位置;
步驟2,根據(jù)所述請求節(jié)點的移動趨勢信息,獲取中繼節(jié)點,所述中繼節(jié)點用于在所述請求節(jié)點到達所述緩存預置區(qū)域之前,將所述請求節(jié)點請求的數(shù)據(jù)攜帶至所述緩存預置區(qū)域;
步驟3,當所述請求節(jié)點到達所述緩存預置區(qū)域后,在每個緩存預置區(qū)域獲取部分的請求數(shù)據(jù),并通過所有的緩存預置區(qū)域協(xié)作來獲得全部的請求數(shù)據(jù)。
本發(fā)明實施例所述的基于區(qū)域協(xié)作緩存的D2D內容分發(fā)方法,根據(jù)請求節(jié)點的移動趨勢信息和請求數(shù)據(jù)信息,獲取所需的緩存預置區(qū)域的數(shù)目與位置;根據(jù)所述請求節(jié)點的移動趨勢信息,獲取中繼節(jié)點,在所述請求節(jié)點到達相應的緩存預置區(qū)域之前,由所述中繼節(jié)點攜帶所述請求節(jié)點請求的數(shù)據(jù)到達相應的緩存預置區(qū)域進行緩存;當所述請求節(jié)點到達所述緩存預置區(qū)域后,在每個緩存預置區(qū)域獲取部分的請求數(shù)據(jù),并通過所有的緩存預置區(qū)域協(xié)作來獲得所述請求節(jié)點全部的請求數(shù)據(jù),這樣,根據(jù)所述請求節(jié)點的移動趨勢信息和請求數(shù)據(jù)信息部署緩存,請求節(jié)點的具體位置對數(shù)據(jù)分發(fā)無影響,并根據(jù)所述請求節(jié)點的移動趨勢信息,獲取中繼節(jié)點,不存在機會路由的資源浪費問題,從而可以提高網(wǎng)絡傳輸?shù)馁|量和可靠性。
本實施例中,為了解決現(xiàn)有的D2D網(wǎng)絡節(jié)點移動導致的通信中斷,以及將請求的數(shù)據(jù)廣播至通信范圍內的全部節(jié)點會造成信道與節(jié)點緩存空間浪費的問題,本實施例提出了一種基于區(qū)域協(xié)作緩存的D2D數(shù)據(jù)分發(fā)方法,通過分析請求節(jié)點的移動趨勢信息和請求數(shù)據(jù)信息來規(guī)劃緩存預置區(qū)域,并利用中繼節(jié)點的移動將所述請求節(jié)點請求的數(shù)據(jù)攜帶至已規(guī)劃的緩存預置區(qū)域,再由各緩存預置區(qū)域協(xié)作完成內容分發(fā)。在本實施例中,主要要解決以下三個基本問題:
(1)當某請求節(jié)點請求數(shù)據(jù)時,需解決的問題是如何根據(jù)請求節(jié)點的移動趨勢信息來規(guī)劃緩存預置區(qū)域;
(2)在規(guī)劃緩存預置區(qū)域后,需解決的問題是如何選擇中繼節(jié)點來攜帶所述請求節(jié)點請求的數(shù)據(jù)(緩存數(shù)據(jù))至已規(guī)劃的緩存預置區(qū)域中;
(3)當中繼節(jié)點攜帶緩存數(shù)據(jù)到達緩存預置區(qū)域后,需解決的問題是如何在緩存預置區(qū)域內部署緩存數(shù)據(jù),并在請求節(jié)點到達緩存預置區(qū)域后如何由各緩存預置區(qū)域協(xié)作完成數(shù)據(jù)分發(fā)。
本實施例中,所述請求節(jié)點可以為移動終端,該移動終端可以通過基站接入網(wǎng)絡,或,通過D2D與其他移動終端進行通信,該移動終端需要能接入地圖和導航數(shù)據(jù)的應用(Application,APP),并具備全球定位系統(tǒng)(Global Positioning System,GPS)功能。
本實施例中,為了解決問題(1),當有新的請求節(jié)點準備加入網(wǎng)絡時,可以由用戶在移動終端中輸入移動終點,得到移動終點坐標(xdn,ydn),并使用GPS可獲取所述新的請求節(jié)點的當前位置坐標(xln,yln),進而由導航APP預測所述新的請求節(jié)點的行進路線,從而得到所述新的請求節(jié)點的移動趨勢信息。
本實施例中,作為一可選實施例,所述步驟1之前還包括:
獲取所述請求節(jié)點的移動終點位置及當前位置;
根據(jù)獲取的所述請求節(jié)點的移動終點位置及當前位置,對所述請求節(jié)點的行進路線進行預測,得到所述請求節(jié)點的移動趨勢信息。
本實施例中,當網(wǎng)絡中有請求節(jié)點請求數(shù)據(jù)時,為了解決問題(1),還需執(zhí)行以下操作:
A11,根據(jù)網(wǎng)絡中的節(jié)點密度p(所述節(jié)點密度指每平方米中的節(jié)點數(shù)量)得出每個緩存預置區(qū)域的半徑其中,所述緩存預置區(qū)域為圓形;
A12,由所述節(jié)點密度及所述請求節(jié)點的移動速度vd(可以指平均移動速度)得出所述請求節(jié)點在所述緩存預置區(qū)域內的最大停留時間tsm=2r/vd,由于請求節(jié)點可能不是沿緩存預置區(qū)域的直徑穿過,但大多數(shù)情況下停留時間不小于因此取作為在所述請求節(jié)點在每個緩存預置區(qū)域內的期望停留時間;
A13,根據(jù)所述請求數(shù)據(jù)信息中的請求數(shù)據(jù)包大小m與D2D通信帶寬B可得出所述請求節(jié)點請求的數(shù)據(jù)所需的傳輸時間t=m/B;
A14,根據(jù)所述傳輸時間t與所述期望停留時間tse,得到所需的緩存預置區(qū)域的數(shù)目以及每個緩存預置區(qū)域所需部署的緩存數(shù)據(jù)量mn=m/na,并將所述請求節(jié)點請求的數(shù)據(jù)按每個緩存預置區(qū)域所需部署的緩存數(shù)據(jù)量mn進行分塊;
A 15,按照預設的時間條件,根據(jù)所述請求節(jié)點的移動趨勢信息和平均移動速度得出所述請求節(jié)點最快取到請求數(shù)據(jù)的位置Dt,并以所述Dt為圓心的區(qū)域作為所述請求節(jié)點最快到達區(qū)域;
A 16,判斷所述最快到達區(qū)域是否是第一個緩存預置區(qū)域;
A 17,若是第一個緩存預置區(qū)域,則在確定所述第一個緩存預置區(qū)域之后,按以下方式確定其余的緩存預置區(qū)域的位置:以所述請求節(jié)點的移動終點位置為起點,以緩存預置區(qū)域的直徑為步長,以所述第一個緩存預置區(qū)域的圓心為終點,根據(jù)所述請求節(jié)點的移動趨勢信息,確定下一個緩存預置區(qū)域的圓心位置,直至確定所有緩存預置區(qū)域的圓心位置,其中,各緩存預置區(qū)域的半徑相同。這樣,其余的緩存預置區(qū)域依次排列于所述第一個緩存預置區(qū)域之后,在所述請求節(jié)點的行進路線上首尾相接。
依次排列于所述第一個緩存預置區(qū)域之后,在所述請求節(jié)點的行進路線上首尾相接。
本實施例中,作為一可選實施例,所述步驟1包括:
步驟11,根據(jù)所述請求數(shù)據(jù)信息中的請求數(shù)據(jù)包大小與D2D通信帶寬,得出所述請求節(jié)點請求的數(shù)據(jù)所需的傳輸時間;
步驟12,根據(jù)網(wǎng)絡中的節(jié)點密度得出所述緩存預置區(qū)域的半徑;
步驟13,根據(jù)所述緩存預置區(qū)域的半徑與所述請求節(jié)點的移動速度,得出所述請求節(jié)點在所述緩存預置區(qū)域內的期望停留時間;
步驟14,根據(jù)所述傳輸時間與所述期望停留時間,獲取所需的緩存預置區(qū)域的數(shù)目na,根據(jù)所述請求數(shù)據(jù)信息中的請求數(shù)據(jù)包大小及所需的緩存預置區(qū)域的數(shù)目na得出每個緩存預置區(qū)域所需部署的緩存數(shù)據(jù)量,并將所述請求節(jié)點請求的數(shù)據(jù)按每個緩存預置區(qū)域所需部署的緩存數(shù)據(jù)量進行分塊;
步驟15,按照預設的時間條件,根據(jù)所述請求節(jié)點的移動趨勢信息和平均移動速度得出所述請求節(jié)點最快取到請求數(shù)據(jù)的位置Dt,并以所述Dt為圓心的區(qū)域作為所述請求節(jié)點最快到達區(qū)域;
步驟16,判斷所述最快到達區(qū)域是否是第一個緩存預置區(qū)域;
步驟17,若是,在確定第一個緩存預置區(qū)域之后,以所述請求節(jié)點的移動終點位置為起點,以緩存預置區(qū)域的直徑為步長,以所述第一個緩存預置區(qū)域的圓心為終點,根據(jù)所述請求節(jié)點的移動趨勢信息,確定下一個緩存預置區(qū)域的圓心位置,直至確定所有緩存預置區(qū)域的圓心位置,其中,各緩存預置區(qū)域的半徑相同。
本實施例中,在A15中,根據(jù)請求節(jié)點的移動趨勢信息(預測的行進路線)和平均移動速度ν可以利用二分法得出所述請求節(jié)點最快可以得到數(shù)據(jù)的位置Dt,并將其作為“最快到達區(qū)域”的圓心,其中,所述最快到達區(qū)域的半徑記所述請求節(jié)點的當前位置為Dstart,移動終點位置為Dstop;通過基站查找數(shù)據(jù)源節(jié)點位置記為Ds;首先計算所述請求節(jié)點行進一半路程時的位置記為根據(jù)所述請求節(jié)點的平均移動速度,可以獲得所述請求節(jié)點由Dstart到達此地的用時與所述數(shù)據(jù)源節(jié)點由Ds到達此地的用時若則取到Dstart的中點為否則,取到Dstop的中點為迭代上述步驟直至則此時的即為Dt,其中,所述為第n次迭代時所述請求節(jié)點行進一半路程時的位置,如圖2所示。
本實施例中,作為一可選實施例,所述步驟15包括:
步驟151,獲取數(shù)據(jù)源節(jié)點的位置Ds;
步驟152,獲取所述請求節(jié)點行進一半路程時的位置
步驟153,根據(jù)所述請求節(jié)點的平均移動速度,獲取從所述請求節(jié)點的當前位置到達時的用時與從所述數(shù)據(jù)源節(jié)點的位置Ds到達時的用時
步驟154,若則取到所述請求節(jié)點的當前位置的中點為否則,則取到所述請求節(jié)點的移動終點位置的中點為
步驟155,迭代執(zhí)行步驟151-步驟154,直至所述請求節(jié)點比所述數(shù)據(jù)源節(jié)點到某地時的用時更長,且不多于30秒,則此時的為所述請求節(jié)點最快取到請求數(shù)據(jù)的位置,其中,所述為第n次迭代時所述請求節(jié)點行進一半路程時的位置。
本實施例中,在A 16中,將Dt顯示在預定的APP中展示給用戶,并由用戶確認是否會經(jīng)過此地,如圖3所示;若用戶確認會經(jīng)過此地,則將Dt為圓心的區(qū)域作為離用戶最近的緩存預置區(qū)域(最快到達區(qū)域),記作“第一個緩存預置區(qū)域”;若用戶不確定會經(jīng)過此地,則按如下方式重新選擇第一個緩存預置區(qū)域:
根據(jù)預測的請求節(jié)點的行進路線,在Dt到請求節(jié)點的移動終點位置Dstop之間的范圍內選擇出一個距Dt最近且會經(jīng)過的位置,作為第一個緩存預置區(qū)域的圓心。
本實施例中,作為一可選實施例,所述步驟16包括:
步驟161,將所述Dt展示給用戶,由用戶確認是否會經(jīng)過此地;
步驟162,若用戶確定會經(jīng)過此地,則將所述最快到達區(qū)域作為第一個緩存預置區(qū)域;
步驟163,若用戶不確定會經(jīng)過此地,則根據(jù)預測的所述請求節(jié)點的行進路線,在所述Dt到所述請求節(jié)點的移動終點位置之間的范圍內選取一個距離所述Dt最近且會經(jīng)過的位置作為第一個緩存預置區(qū)域的圓心。
本實施例中,為了解決問題(2),可以執(zhí)行以下步驟:
A21,當規(guī)劃好每個緩存預置區(qū)域的圓心坐標、半徑及所需部署的緩存數(shù)據(jù)量后,可以通過基站將所述請求節(jié)點的請求數(shù)據(jù)信息、每個緩存預置區(qū)域的圓心坐標、半徑及所需部署的緩存數(shù)據(jù)量發(fā)送給數(shù)據(jù)源節(jié)點;
A22,所述數(shù)據(jù)源節(jié)點查找其通信范圍內的移動節(jié)點,根據(jù)每個移動節(jié)點移動信息挑選出最佳的k個作為本次傳輸?shù)闹欣^節(jié)點,將所述請求節(jié)點請求的數(shù)據(jù)分成na塊并使用隨機線性網(wǎng)絡編碼處理后向選取的k個中繼節(jié)點發(fā)送數(shù)據(jù);
A 23,通過選取的k個中繼節(jié)點將所述請求節(jié)點請求的數(shù)據(jù)攜帶至相應的緩存預置區(qū)域。
在前述基于區(qū)域協(xié)作緩存的D2D內容分發(fā)方法的具體實施方式中,進一步地,所述步驟2包括:
步驟21,將所述請求節(jié)點的請求數(shù)據(jù)信息、得到的每個緩存預置區(qū)域的圓心坐標、半徑及所需部署的緩存數(shù)據(jù)量發(fā)送給所述數(shù)據(jù)源節(jié)點;
步驟22,查找所述數(shù)據(jù)源節(jié)點通信范圍內的移動節(jié)點,根據(jù)每個移動節(jié)點的移動信息,從查找到的所述數(shù)據(jù)源節(jié)點通信范圍內的移動節(jié)點中選取k個移動節(jié)點作為本次傳輸?shù)闹欣^節(jié)點,將所述請求節(jié)點請求的數(shù)據(jù)分成na塊并進行隨機線性網(wǎng)絡編碼處理后向選取的k個中繼節(jié)點發(fā)送數(shù)據(jù);
步驟23,通過選取的k個中繼節(jié)點將所述請求節(jié)點請求的數(shù)據(jù)攜帶至相應的緩存預置區(qū)域。
本實施例中,在A22中,具體包括:數(shù)據(jù)源節(jié)點收到所述請求節(jié)點的請求數(shù)據(jù)信息、每個緩存預置區(qū)域的圓心坐標、半徑及所需部署的緩存數(shù)據(jù)量后,立即查找處于其通信范圍內的移動節(jié)點,將其列為潛在的中繼節(jié)點,詢問所述處于其通信范圍內的移動節(jié)點的當前位置與移動終點位置并得出每個移動節(jié)點的移動方向;接著,以第一個緩存預置區(qū)域為目標區(qū)域,判斷每個移動節(jié)點的移動方向,若將會經(jīng)過目標區(qū)域的移動節(jié)點的數(shù)目大于k個(其中,k為預設值),則進一步比較移動節(jié)點的當前位置,挑選距離目標區(qū)域最近的k個移動節(jié)點作為中繼節(jié)點;若移動方向穿過所述目標區(qū)域的移動節(jié)點的數(shù)目不足k個,則挑選移動方向距目標區(qū)域圓心偏移最少的k個移動節(jié)點作為中繼節(jié)點;以上述方法更換目標區(qū)域進行迭代,直至所有緩存預置區(qū)域所對應中繼節(jié)點選擇完成;接著,所述數(shù)據(jù)源節(jié)點將所述請求節(jié)點請求的數(shù)據(jù)按緩存預置區(qū)域的數(shù)目進行分塊,每一個緩存預置區(qū)域負責一塊數(shù)據(jù)且每塊數(shù)據(jù)中的數(shù)據(jù)量相同;數(shù)據(jù)源節(jié)點依次將數(shù)據(jù)塊發(fā)送給各緩存預置區(qū)域對應的中繼節(jié)點,發(fā)送前將數(shù)據(jù)塊進一步分為pn塊(pn的值由每個數(shù)據(jù)塊大小確定),并使用隨機線性網(wǎng)絡編碼進行編碼處理;若某中繼節(jié)點同時負責多個緩存預置區(qū)域的傳輸任務,則向所述中繼節(jié)點平均發(fā)送多個緩存預置區(qū)域的數(shù)據(jù);若某中繼節(jié)點自身傳輸任務完成后仍與數(shù)據(jù)源節(jié)點保持連接,則繼續(xù)向所述中繼節(jié)點傳輸前一緩存預置區(qū)域的數(shù)據(jù)直至連接中斷。
本實施例中,作為一可選實施例,所述步驟22包括:
步驟221,以第一個緩存預置區(qū)域為目標區(qū)域;
步驟222,判斷每個移動節(jié)點的移動方向,若移動方向將會穿過所述目標區(qū)域的移動節(jié)點的數(shù)目大于k,則比較相應移動節(jié)點的當前位置,選取距離所述目標區(qū)域最近的k個移動節(jié)點作為中繼節(jié)點;否則,則選取移動方向離所述目標區(qū)域中心偏移最少的k個移動節(jié)點作為中繼節(jié)點;
步驟223,以下一個緩存預置區(qū)域為目標區(qū)域,重復步驟222,選取k個中繼節(jié)點,直至所有緩存預置區(qū)域所對應的中繼節(jié)點選擇完成;
步驟224,將所述請求節(jié)點請求的數(shù)據(jù)包平均分為na塊,將平均分成的na塊數(shù)據(jù)塊繼續(xù)分塊,對繼續(xù)分塊后的數(shù)據(jù)使用隨機線性網(wǎng)絡編碼進行編碼;
步驟225,將編碼后的數(shù)據(jù)塊發(fā)送至每個緩存預置區(qū)域對應的中繼節(jié)點。
在前述基于區(qū)域協(xié)作緩存的D2D內容分發(fā)方法的具體實施方式中,進一步地,所述步驟22之后還包括:
步驟24,在所述數(shù)據(jù)源節(jié)點向所述中繼節(jié)點發(fā)送數(shù)據(jù)的過程中,所述中繼節(jié)點還用于判斷所述中繼節(jié)點當前位置到所述中繼節(jié)點終點位置的連線與所述中繼節(jié)點自身的移動方向夾角是否小于45度,若是,則重復步驟22;
否則,則刪除所述中繼節(jié)點自身的緩存數(shù)據(jù),不再繼續(xù)作為中繼節(jié)點。
本實施中,從數(shù)據(jù)源節(jié)點收到請求數(shù)據(jù)的請求時刻開始,網(wǎng)絡中每τ秒為一次傳輸時刻,數(shù)據(jù)源節(jié)點在向中繼節(jié)點發(fā)送數(shù)據(jù)時告知其請求時刻具體信息。在所述數(shù)據(jù)源節(jié)點向所述中繼節(jié)點傳輸數(shù)據(jù)時,此時攜帶緩存數(shù)據(jù)的中繼節(jié)點會判斷自身是否有機會與請求節(jié)點相遇;判斷依據(jù)為本中繼節(jié)點的當前位置到本中繼節(jié)點的終點位置的連線與自身移動方向夾角是否小于45度,若是則重復步驟22,所述數(shù)據(jù)源節(jié)點繼續(xù)尋找新的中繼節(jié)點并向本中繼節(jié)點發(fā)送數(shù)據(jù);否則,則刪除本中繼節(jié)點自身的緩存數(shù)據(jù),不再繼續(xù)作為中繼節(jié)點。
本實施例中,為了解決問題(3),可以執(zhí)行以下步驟:
A31,當某中繼節(jié)點發(fā)現(xiàn)自身已攜帶相應的數(shù)據(jù)到達對應的緩存預置區(qū)域后,其不再執(zhí)行步驟24,而是立即獲取處于所述中繼節(jié)點通信范圍和對應的緩沖預置區(qū)域交集內的節(jié)點,將獲取到的所述節(jié)點記為緩存節(jié)點,如圖4所示;
A32,將將所述中繼節(jié)點攜帶的相應數(shù)據(jù)卸載下來交給所述緩存節(jié)點;若該中繼節(jié)點除攜帶本區(qū)域數(shù)據(jù)外,還攜帶有前一緩存預置區(qū)域的數(shù)據(jù),且本區(qū)域數(shù)據(jù)發(fā)送完成后仍與當前緩存預置區(qū)域內的緩存節(jié)點保持連接,則繼續(xù)向其發(fā)送前一緩存預置區(qū)域的數(shù)據(jù)直至連接中斷;
A33,所述當前緩存預置區(qū)域內的緩存節(jié)點在接收到數(shù)據(jù)后,進一步尋找新的緩存節(jié)點,并分發(fā)數(shù)據(jù),直到無法找到新的緩存節(jié)點,以保持緩存預置區(qū)域內的緩存數(shù)據(jù)量;在數(shù)據(jù)分發(fā)結束后判斷所述緩存節(jié)點自身是否仍處于對應的緩存預置區(qū)域內,若仍處于相應的緩存預置區(qū)域內則保留自身攜帶的緩存數(shù)據(jù);若已離開相應的緩存預置區(qū)域內則刪除攜帶的緩存數(shù)據(jù),不再作為區(qū)域緩存節(jié)點。
本實施例中,作為一可選實施例,所述步驟3包括:
步驟31,當中繼節(jié)點攜帶相應的數(shù)據(jù)到達相應的緩存預置區(qū)域后,獲取處于所述中繼節(jié)點自身通信范圍和相應的緩沖預置區(qū)域交集內的緩存節(jié)點;
步驟32,將所述中繼節(jié)點攜帶的相應數(shù)據(jù)傳輸至獲取到的所述緩存節(jié)點,若所述中繼節(jié)點還攜帶有前一緩存預置區(qū)域的數(shù)據(jù),且本區(qū)域數(shù)據(jù)傳輸完成后仍與所述緩存節(jié)點保持連接,則繼續(xù)向所述緩存節(jié)點傳輸前一緩存預置區(qū)域的數(shù)據(jù)直至連接中斷;
步驟33,通過所述緩存節(jié)點在相應的緩存預置區(qū)域內尋找新的緩存節(jié)點并分發(fā)數(shù)據(jù),在數(shù)據(jù)分發(fā)結束后判斷所述緩存節(jié)點自身是否仍處于相應的緩存預置區(qū)域內,若仍處于相應的緩存預置區(qū)域內,則保留自身攜帶的緩存數(shù)據(jù);否則,則刪除自身攜帶的緩存數(shù)據(jù),不再作為相應的緩存預置區(qū)域內的緩存節(jié)點。
本實施例中,為了解決問題(3),還需以繼續(xù)執(zhí)行以下步驟:
A34,若請求節(jié)點到達某緩存預置區(qū)域,首先判斷其是否緩存有前一緩存預置區(qū)域的數(shù)據(jù),且緩存的數(shù)據(jù)量滿足請求節(jié)點需求;若緩存數(shù)據(jù)量滿足需求,則當前緩存預置區(qū)域內的緩存節(jié)點直接向所述請求節(jié)點發(fā)送本區(qū)域數(shù)據(jù);若緩存數(shù)據(jù)量不足,且當前緩存預置區(qū)域內的緩存節(jié)點攜帶有前一緩存預置區(qū)域的數(shù)據(jù),則優(yōu)先向所述請求節(jié)點發(fā)送前一緩存預置區(qū)域缺少的數(shù)據(jù)再發(fā)送本區(qū)域數(shù)據(jù),否則直接發(fā)送本區(qū)域數(shù)據(jù);當所述請求節(jié)點收到足夠的本區(qū)域數(shù)據(jù)時,立即使用隨機線性網(wǎng)絡編碼進行解碼,則此部分數(shù)據(jù)傳輸完成;
A35,當所述請求節(jié)點到達新的緩存預置區(qū)域時,重復A34,直至請求節(jié)點離開最后一個緩存預置區(qū)域。
本實施例中,作為一可選實施例,所述步驟3還包括:
步驟34,當所述請求節(jié)點到達某緩存預置區(qū)域時,判斷當前緩存預置區(qū)域是否緩存有前一緩存預置區(qū)域的數(shù)據(jù),且緩存的數(shù)據(jù)量是否滿足所述請求節(jié)點的需求;若緩存的數(shù)據(jù)量滿足所述請求節(jié)點的需求,則當前緩存預置區(qū)域內的緩存節(jié)點直接向所述請求節(jié)點發(fā)送本區(qū)域數(shù)據(jù);若緩存的數(shù)據(jù)量不滿足所述請求節(jié)點的需求,且當前緩存預置區(qū)域內的緩存節(jié)點攜帶有前一緩存預置區(qū)域的數(shù)據(jù),則當前緩存預置區(qū)域內的緩存節(jié)點先向所述請求節(jié)點發(fā)送前一緩存預置區(qū)域缺少的數(shù)據(jù)再發(fā)送本區(qū)域數(shù)據(jù);當所述請求節(jié)點收到足夠的本區(qū)域數(shù)據(jù)時,立即使用隨機線性網(wǎng)絡編碼進行解碼,則此部分數(shù)據(jù)傳輸完成;
步驟35,當所述請求節(jié)點到達新的緩存預置區(qū)域時,重復步驟34,直至所述請求節(jié)點離開最后一個緩存預置區(qū)域。
本實施例中,在所述請求節(jié)點到達相應的緩存預置區(qū)域之前,由所述中繼節(jié)點攜帶所述請求節(jié)點請求的數(shù)據(jù)到達相應的緩存預置區(qū)域,并由相應的緩存預置區(qū)域內的緩存節(jié)點協(xié)作部署好相應的請求數(shù)據(jù)。當所述請求節(jié)點每到達一個緩存預置區(qū)域后可獲得一部分的請求數(shù)據(jù),若所述請求節(jié)點請求的是視頻資源,則在完成第一個緩存預置區(qū)域的傳輸后可實現(xiàn)邊看邊傳輸。
本實施例中,執(zhí)行步驟35后,此時若所述請求節(jié)點仍未收到所述請求數(shù)據(jù)信息請求的全部數(shù)據(jù),則在所述請求節(jié)點的終點位置重新規(guī)劃一個緩存預置區(qū)域,再次執(zhí)行步驟2和步驟3,將所述請求節(jié)點缺少的數(shù)據(jù)部署到所述重新規(guī)劃的緩存預置區(qū)域中,并在所述請求節(jié)點到達移動終點時完成數(shù)據(jù)分發(fā);若所述請求節(jié)點收到所述請求數(shù)據(jù)信息請求的全部數(shù)據(jù),則此次數(shù)據(jù)請求完成。以上所述是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明所述原理的前提下,還可以作出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。