命名數(shù)據(jù)移動自組織網(wǎng)絡(luò)的官渡緩存策略的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于網(wǎng)絡(luò)緩存技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002] 移動自組織網(wǎng)絡(luò)MANET(MobileAdhocNetwork)已被關(guān)注很長時間。但MANET 的應(yīng)用和研究多停留在軍事和應(yīng)急環(huán)境下,而不是公眾網(wǎng)絡(luò)應(yīng)用中。這使MANET并沒有真 正普及起來。無線網(wǎng)絡(luò)技術(shù)的發(fā)展使更多的公眾移動設(shè)備能夠很容易地接入網(wǎng)絡(luò)。調(diào)查表 明現(xiàn)在互聯(lián)網(wǎng)上越來越多的流量是由移動設(shè)備貢獻的。
[0003] 各種數(shù)量巨大的移動設(shè)備可能在某個時間段內(nèi)集中在某個區(qū)域內(nèi),如擁擠的地 鐵、移動的旅行車廂、繁忙的機場等。如果有可用的MANET網(wǎng)絡(luò)則可為這些用戶提供很多有 吸引力的應(yīng)用。例如,通過MANET,同一旅游車廂中的人們可以一起觀看其中某個移動設(shè)備 上的視頻,但不用支付任何流量費用、不用進行任何帶外交流、甚至完全不知道視頻來自哪 個設(shè)備、也無需任何網(wǎng)絡(luò)基礎(chǔ)設(shè)施的支持。這些為MANET準(zhǔn)備好了足夠的技術(shù)支持和應(yīng)用 市場。
[0004]NDN(NameddataNetworking)是近十幾年來根據(jù)Internet應(yīng)用發(fā)展的特點提出 來的一種新型的網(wǎng)絡(luò)互聯(lián)結(jié)構(gòu)。NDN以內(nèi)容的名字作為路由的索引,將資源和其所在主機 分離開。NDN在網(wǎng)絡(luò)中緩存轉(zhuǎn)發(fā)的數(shù)據(jù)。NDN將內(nèi)容作為尋址的實體,使內(nèi)容可在任何地方 存儲,所以可能檢索內(nèi)容的副本。這不但提高了響應(yīng)時間,而且還緩解了網(wǎng)絡(luò)失效帶來的影 響。
[0005]NDN對移動性有天生的支持優(yōu)勢。移動用戶離開原來位置,只要重新申請獲取數(shù)據(jù) 就可以、而且可能從新位置附近重新獲得數(shù)據(jù),而不需要和原來的數(shù)據(jù)源保持連接及重新 建立連接。NDN沒有中心、沒有層次的模式更適合支持沒有結(jié)構(gòu)的MANET網(wǎng)絡(luò)。NDN模式應(yīng) 用在MANET中的網(wǎng)絡(luò)被稱為命名數(shù)據(jù)MANET網(wǎng)絡(luò)(Named-dataMANET),簡稱NDM。
[0006] 在NDN基本模式中,內(nèi)容轉(zhuǎn)發(fā)路徑上的所有節(jié)點都會緩存該內(nèi)容。這被稱為沿路 徑緩存(on-pathcache)。雖然只在沿途節(jié)點上緩存內(nèi)容已經(jīng)減少了緩存的數(shù)目以及單獨 發(fā)送緩存分發(fā)數(shù)據(jù)包的流量和管理開銷。但MANET網(wǎng)絡(luò)移動節(jié)點的存儲空間一般很有限, 因而網(wǎng)絡(luò)整體上可用的緩存空間也就很有限。NDN沿路緩存的機制會給節(jié)點形成巨大負擔(dān)。 因而,需要設(shè)計合適的緩存策略才能使NDM有實際應(yīng)用的可能。
[0007] 有很多針對有線網(wǎng)絡(luò)的ICN/NDN網(wǎng)絡(luò)的緩存算法研究工作,但是,專門為NDM網(wǎng)絡(luò) 考慮移動環(huán)境的緩存算法很少。
[0008]NDM的緩存策略需要盡可能減少數(shù)據(jù)在網(wǎng)絡(luò)中的冗余,將有限的緩存空間緩存最 應(yīng)該緩存的內(nèi)容,同時把內(nèi)容緩存在最能提高網(wǎng)絡(luò)性能的節(jié)點上。此外,由于節(jié)點的處理能 力有限,因此緩存策略還應(yīng)該減少節(jié)點的緩存管理開銷,采用盡可能簡單的方法。根據(jù)上述 情況分析,本文給出一個緩存算法,該算法將減少沿途路徑上的緩存節(jié)點,使數(shù)據(jù)盡可能地 分散,并緩存在離數(shù)據(jù)源較遠的位置。我們將該算法稱為"官渡"算法,意取曹操在官渡之 戰(zhàn)部署上的戰(zhàn)略方針:不是分兵把守黃河南岸,而是集中兵力、扼守要隘、重點設(shè)防、以逸待 勞、最終實現(xiàn)以少勝多。算法意在用最有用的內(nèi)容布置在最合適的節(jié)點上阻擊盡可能多的 興趣包。
[0009] 對于使用緩存技術(shù)的網(wǎng)絡(luò),首先要解決的就是在什么地方緩存內(nèi)容的問題。NDN基 本模式是在內(nèi)容包途徑節(jié)點上緩存內(nèi)容。這樣做的好處是可以捎帶緩存,以少的通信量達 到大的可能緩存。問題是可能占用了過多的緩存空間,尤其是NDM中移動節(jié)點緩存空間有 限的情況下。Ioannis Psaras等人為了減少ICN網(wǎng)絡(luò)中緩存的冗余,提出了進行全局優(yōu)化 的想法,他們在內(nèi)容包經(jīng)過的節(jié)點上根據(jù)整條路徑所能支持的緩存空間總和以及節(jié)點離用 戶的距離得出的概率來進行緩存,使距離用戶越近的節(jié)點緩存概率越大。但這種方法需要 知道路徑的長度、每個節(jié)點在路徑中的位置、路徑上所有節(jié)點的總體緩存,實現(xiàn)起來開銷比 較大,尤其是在拓撲變化較快的移動網(wǎng)絡(luò)中,因而不適用于NDM網(wǎng)絡(luò)。
[0010] WAVE也選擇在應(yīng)答路徑上的某些節(jié)點來緩存數(shù)據(jù),緩存與否由上游節(jié)點根據(jù)請求 數(shù)的情況決定。該算法總體看起來數(shù)據(jù)會分布在路徑上,但其實數(shù)據(jù)更多地緩存在數(shù)據(jù)源 周圍,即距離用戶越近的節(jié)點緩存越少。這種策略對于類似于樹形的拓撲結(jié)構(gòu)會比較適合, 因為邊緣節(jié)點接入的終端用戶較少,中間節(jié)點會為更多的邊緣節(jié)點服務(wù),因此這樣做可以 提高緩存的利用率。但對于網(wǎng)絡(luò)拓撲不規(guī)則的移動網(wǎng)絡(luò)來說,則容易造成數(shù)據(jù)緩存集中在 數(shù)據(jù)源周圍,而距離需要的用戶較遠。
[0011] Yuguang Zeng等人提出了一個簡單的使用間隔緩存的策略減少NDN網(wǎng)絡(luò)中緩存 的冗余量。該算法在返回的內(nèi)容包中加入記錄內(nèi)容包在轉(zhuǎn)發(fā)過程中的轉(zhuǎn)發(fā)間隔數(shù)。每轉(zhuǎn)發(fā) 一次該值減1,當(dāng)值為〇時節(jié)點緩存該內(nèi)容,并重置該值繼續(xù)轉(zhuǎn)發(fā)。該算法非常容易實現(xiàn)、開 銷很小,值得借鑒。
[0012] 除了緩存位置,哪些內(nèi)容應(yīng)該緩存是需要考慮的另外一個問題。數(shù)據(jù)的流行度是 一個經(jīng)常被考慮的因素。流行度通常通過對該數(shù)據(jù)的請求計數(shù)來預(yù)測。但各種策略對請求 計數(shù)的處理是不一樣的。比如,讓節(jié)點定期從其子樹收集請求計數(shù),對于計數(shù)小于閾值的內(nèi) 容則不予緩存(該算法針對ISP(Internet Service Provider)內(nèi)部范圍網(wǎng)絡(luò),要求各個節(jié) 點維護樹形的拓撲結(jié)構(gòu))。WAVE則用文件請求計數(shù)的指數(shù)函數(shù)作為推薦下游節(jié)點緩存的文 件子塊數(shù)。讓節(jié)點只緩存請求計數(shù)超過閾值的數(shù)據(jù),以避免緩存只會被請求一次的數(shù)據(jù)。
[0013] 用復(fù)雜計算換取ISP外部流量的減少。不過該算法真正實現(xiàn)起來限制比較大,而 且只適合于ISP內(nèi)部,不適合計算能力比較弱、網(wǎng)絡(luò)拓撲不規(guī)則且變化較快的NDM網(wǎng)絡(luò)。 WAVE以文件為單位進行計數(shù),然后按照文件分片緩存。這在NDN網(wǎng)絡(luò)中不具普遍性,而且最 終形成的數(shù)據(jù)分布還是比較集中,冗余度也比較高。但其采用指數(shù)增長來分化流行和不流 行內(nèi)容的緩存密度是值得借鑒的。]還考慮對興趣包到來的接口進行計數(shù),如果這個數(shù)值超 過設(shè)定閾值也進行緩存,理由是更多網(wǎng)絡(luò)部分需要該內(nèi)容。這是個非常有意義且容易實現(xiàn) 的做法。不過移動網(wǎng)絡(luò)因為是廣播網(wǎng)絡(luò),因而不存在多個接口的問題。
[0014] 緩存策略的實現(xiàn)通常需要節(jié)點之間協(xié)同交流有關(guān)信息。信息交換的方式一般分為 兩種。一是在請求包或者內(nèi)容包中增加新的消息字段捎帶。另一種是發(fā)送單獨的協(xié)同數(shù)據(jù) 包捎帶方式增加的通信量非常少,缺點是與基本轉(zhuǎn)發(fā)策略交織在一起,需要更改基本協(xié)議。 如果基本協(xié)議已經(jīng)普及則存在實施困難。而采用單獨的數(shù)據(jù)包會增加網(wǎng)絡(luò)流量,比如要階 段性地交換緩存的概要。因此,此類算法通常需要采取一些措施減少流量,如使用Bloom Filter減小概要的規(guī)模。同樣由于會增加網(wǎng)絡(luò)流量,所以需要協(xié)同的方案大都針對自治域 范圍內(nèi)。這樣一來便于實現(xiàn),二來對于內(nèi)部流量,ISP也可以接受。這些算法通??梢詼p少 域內(nèi)到域外的流量,因而ISP有支持它們的動機。
【發(fā)明內(nèi)容】
[0015]官渡策略的目標(biāo)是盡可能減少內(nèi)容在MANET移動節(jié)點上的緩存數(shù)量,減少節(jié)點的 計算和維護開銷,但同時仍能夠維護NDN模式帶來的快速響應(yīng)時間,以適應(yīng)NDM的存儲和計 算能力都有限的移動節(jié)點。官渡策略的核心思想是如果轉(zhuǎn)發(fā)節(jié)點距離內(nèi)容節(jié)點太遠、且有 存儲空間,同時該數(shù)據(jù)可能再次被請求,而且在周圍還沒有被緩存,那么轉(zhuǎn)發(fā)節(jié)點就緩存該 數(shù)據(jù),否則不予緩存。以此減少數(shù)據(jù)在網(wǎng)絡(luò)中的冗余、減少對移動設(shè)備存儲空間的占用,同 時還能夠?qū)?shù)據(jù)盡可能地放置在離用戶較近的地方以減少對網(wǎng)絡(luò)帶寬的使用,提高響應(yīng)速 度。
[0016]按照官渡策略的目標(biāo),首先要選擇緩存數(shù)據(jù)的節(jié)點。為減少緩存的維護開銷以及 與NDN模式保持一致,緩存節(jié)點在數(shù)據(jù)轉(zhuǎn)發(fā)節(jié)點中選擇。當(dāng)數(shù)據(jù)轉(zhuǎn)發(fā)到某中間節(jié)點時,該節(jié) 點在轉(zhuǎn)發(fā)數(shù)據(jù)的同時根據(jù)情況決定自己是否緩存該數(shù)據(jù)。
[0017]命名數(shù)據(jù)移動自組織網(wǎng)絡(luò)的官渡緩存策略,其特征在于:
[0018]選擇緩存數(shù)據(jù)的節(jié)點;緩存節(jié)點在數(shù)據(jù)轉(zhuǎn)發(fā)節(jié)點中選擇;當(dāng)數(shù)據(jù)轉(zhuǎn)發(fā)到某中間節(jié) 點時,該節(jié)點在轉(zhuǎn)發(fā)數(shù)據(jù)的同時根據(jù)情況決定自己是否緩存該數(shù)據(jù);轉(zhuǎn)發(fā)節(jié)點在決定緩存 數(shù)據(jù)時要考量自己的空閑存儲空間是否足夠;只有當(dāng)緩存所需數(shù)據(jù)量與節(jié)點的空閑存儲空 間的比值小于1/10,才能緩存該數(shù)據(jù);
[0019]在內(nèi)容包中增加一個跳數(shù)字段;該跳數(shù)字段在內(nèi)容包每次被轉(zhuǎn)發(fā)時加一;規(guī)定網(wǎng) 絡(luò)能夠容納的節(jié)點數(shù)的開方為網(wǎng)絡(luò)半徑,在這里取網(wǎng)絡(luò)半徑的一半為設(shè)定距離,超過設(shè)定 距離,則認為該節(jié)點距離源節(jié)點較遠,能考慮緩存該數(shù)據(jù);
[0020] 在內(nèi)容包中增加一個緩存間隔字段;應(yīng)答節(jié)點在內(nèi)容包中設(shè)置緩存間隔字段為初 始值,初始值為網(wǎng)絡(luò)半徑的1/8 ;內(nèi)容包每次被轉(zhuǎn)發(fā)時緩存間隔字段遞減1 ;如果內(nèi)容被緩 存則緩存間隔字段重新設(shè)置為初始值;
[0021] 具體原理解釋如下:
[0022] 由于NDM中移動設(shè)備的存儲空間有限,每個節(jié)點既是中間轉(zhuǎn)發(fā)設(shè)備又是終端設(shè) 備。因此,轉(zhuǎn)發(fā)節(jié)點在決定緩存數(shù)據(jù)時要考量自己的空閑存儲空間是否足夠。只有當(dāng)緩存 所需數(shù)據(jù)量與節(jié)點的空閑存儲空間的比值小于特定閾值、不影響節(jié)點自身應(yīng)用的運行時, 才能緩存該數(shù)據(jù)。通常,將此閾值設(shè)置為系統(tǒng)可用空閑空間的1/10。
[0023]轉(zhuǎn)發(fā)節(jié)點距離內(nèi)容節(jié)點的距離通過內(nèi)容包所經(jīng)過的跳數(shù)進行判斷。為此,我們在 內(nèi)容包中增加一個跳數(shù)字段。該跳數(shù)字段在內(nèi)容包每次被轉(zhuǎn)發(fā)時加一。規(guī)定網(wǎng)絡(luò)能夠容納 的節(jié)點數(shù)的開方為網(wǎng)絡(luò)半徑,在這里取網(wǎng)絡(luò)半徑的一半為設(shè)定距離,即若網(wǎng)絡(luò)中節(jié)點數(shù)為 64,則此閾值取4。超過設(shè)定距離,則認為該節(jié)點距離源節(jié)點較遠。
[0024]為降低數(shù)據(jù)緩存的冗余度,若附近節(jié)點已經(jīng)緩存該數(shù)據(jù),則中間節(jié)點不再緩存。因 此節(jié)點需要知道其他節(jié)點的緩存情況。為此,在內(nèi)容包中增加一個緩存間隔字段。應(yīng)答節(jié) 點在內(nèi)容包中設(shè)置緩存間隔字段為初始值,初始值為網(wǎng)絡(luò)半徑的1/8。即若網(wǎng)絡(luò)中節(jié)點數(shù)為 64,則存間隔字段數(shù)取1。內(nèi)容包每次被轉(zhuǎn)發(fā)時緩存間隔字段遞減1。如果內(nèi)容被緩存則緩 存間隔字段重新設(shè)置為初始值。
[0025]由于緩存空間有限,所以應(yīng)該緩存最可能被其他節(jié)點再次需要的內(nèi)容。關(guān)于數(shù)據(jù) 的流行度考量,最直接的緩存策略是選擇那些流行度高的內(nèi)容進行緩存。要實現(xiàn)該策略,一 個做法是節(jié)點記錄對每個內(nèi)容收到的興趣包的個數(shù),然后選擇個數(shù)較高的內(nèi)容緩存。但該 做法需要為每個內(nèi)容維護一個記錄,開銷非常大。因為NDM網(wǎng)絡(luò)中的名字空