本發(fā)明涉及內(nèi)容中心網(wǎng)絡(luò)數(shù)據(jù)傳輸技術(shù),特別涉及到一種內(nèi)容中心網(wǎng)絡(luò)節(jié)點數(shù)據(jù)緩存替換方法和裝置。
背景技術(shù):
內(nèi)容中心網(wǎng)絡(luò)是信息中心網(wǎng)的一種典型架構(gòu),與傳統(tǒng)的IP網(wǎng)絡(luò)架構(gòu)相比,最根本的區(qū)別是不再依賴IP地址,將傳統(tǒng)的以主機(jī)為中心的模型轉(zhuǎn)變?yōu)橐詳?shù)據(jù)內(nèi)容為中心的模型。所有的數(shù)據(jù)內(nèi)容被全網(wǎng)統(tǒng)一唯一命名,并且基于內(nèi)容進(jìn)行定位尋址、轉(zhuǎn)發(fā)路由。路由器具備和數(shù)據(jù)服務(wù)器同樣的存儲轉(zhuǎn)發(fā)功能,用戶除了在原始服務(wù)器請求內(nèi)容外,可以在網(wǎng)內(nèi)路由器節(jié)點的緩存空間命中內(nèi)容,減輕了服務(wù)器端的負(fù)載壓力。
內(nèi)容中心網(wǎng)絡(luò)中,路由器節(jié)點的緩存空間和服務(wù)器相比,空間極小,隨著客戶端請求次數(shù)的增加和時間推移,節(jié)點緩存空間將會出現(xiàn)飽和狀態(tài),此時,如果有新的數(shù)據(jù)需要在該節(jié)點上進(jìn)行緩存,則需要用新接收到的數(shù)據(jù)替換掉該節(jié)點上已緩存的數(shù)據(jù)。
現(xiàn)有技術(shù)中,節(jié)點數(shù)據(jù)緩存替換方法主要有三種技術(shù)方案,
1.最近最少使用(簡稱,LRU)替換方法,在節(jié)點中維護(hù)一個緩存項隊列,隊列中的數(shù)據(jù)按照每項的最后被訪問時間排序。緩存空間飽和后,如果接收到新的數(shù)據(jù),節(jié)點將刪除最后一次被訪問時間距離當(dāng)前時刻最久的數(shù)據(jù)項。
2.最近最少頻率(簡稱,LFU)替換方法,緩存空間飽和后,如果接收到新的數(shù)據(jù),節(jié)點將刪除緩存中使用頻率最小的數(shù)據(jù)項。
3.先入先出(簡稱,F(xiàn)IFO)替換方法,緩存空間飽和后,如果接收到新的數(shù)據(jù),節(jié)點將刪除最先緩存的數(shù)據(jù)項。
上述三種替換方法存在的問題是,LRU替換方法僅考慮了數(shù)據(jù)的最近使用時間,在進(jìn)行緩存替換時會造成使用頻率較高的數(shù)據(jù)被刪除,而保留下使用頻率較低的數(shù)據(jù);LFU替換方法僅考慮了數(shù)據(jù)使用的頻率,如果某數(shù)據(jù)在過去一段時間內(nèi)被大量請求,使該數(shù)據(jù)具有較大的請求頻率,即使在最近時間該數(shù)據(jù)塊的請求頻率急劇下降,但由于前面的高頻率請求使該數(shù)據(jù)獲得了較大的權(quán)重,因此該數(shù)據(jù)即使當(dāng)前請求頻率很低也不能及時地將其替換,從而長期占用內(nèi)存空間;FIFO替換方法在節(jié)點實現(xiàn)上最為簡單,但在進(jìn)行數(shù)據(jù)替換時沒有考慮節(jié)點緩存數(shù)據(jù)使用情況。
綜上所述,現(xiàn)有的節(jié)點數(shù)據(jù)緩存替換方法都只考慮了單一的影響因素,在進(jìn)行數(shù)據(jù)替換時沒有充分的反映緩存數(shù)據(jù)的流行度,從而造成數(shù)據(jù)替換時不能很好的保證節(jié)點緩存空間中緩存數(shù)據(jù)的使用價值,不利于內(nèi)容中心網(wǎng)絡(luò)傳輸效率的提高。
技術(shù)實現(xiàn)要素:
為了解決現(xiàn)有技術(shù)中存在的上述問題,本發(fā)明提出了一種內(nèi)容中心網(wǎng)絡(luò)節(jié)點數(shù)據(jù)緩存替換方法和裝置,以提高節(jié)點緩存空間中緩存數(shù)據(jù)的使用價值。
為了實現(xiàn)上述目的,本發(fā)明采用了以下技術(shù)方案:
一種內(nèi)容中心網(wǎng)絡(luò)節(jié)點數(shù)據(jù)緩存替換方法,包括:
節(jié)點計算緩存空間中各數(shù)據(jù)最近訪問時間間隔T_inti;
節(jié)點計算緩存空間中各數(shù)據(jù)的平均訪問時間間隔T_averagei;
節(jié)點根據(jù)所述T_inti和所述T_averagei計算各數(shù)據(jù)的流行度Pi
節(jié)點將新接收到的數(shù)據(jù)存儲到緩存空間替換掉Pi最小的數(shù)據(jù);
其中,所述i為節(jié)點緩存空間中緩存的數(shù)據(jù)的編號。
進(jìn)一步,所述節(jié)點計算緩存空間中各數(shù)據(jù)最近訪問時間間隔T_inti包括:
節(jié)點獲取各數(shù)據(jù)最近一次被訪問的時間和當(dāng)前時間的間隔Tintervali,作為該數(shù)據(jù)的T_inti。
進(jìn)一步,所述節(jié)點計算緩存空間中各數(shù)據(jù)的平均訪問時間間隔T_averagei包括:
節(jié)點根據(jù)所述各數(shù)據(jù)的第一次被訪問時間和所述各數(shù)據(jù)被訪問的次數(shù)計算各數(shù)據(jù)的平均訪問時間T_averi,T_averi=(T_recenti-T_firsti)/Mi;
節(jié)點將所述各數(shù)據(jù)的T_averi作為該數(shù)據(jù)的T_averagei;
其中,所述T_recenti為第i個數(shù)據(jù)最近一次被訪問的時間,所述T_firsti為第i個數(shù)據(jù)第一次被訪問的時間,所述Mi為第i個數(shù)據(jù)被訪問的次數(shù)。
進(jìn)一步,所述節(jié)點計算緩存空間中各數(shù)據(jù)最近訪問時間間隔T_inti包括:
節(jié)點獲取各數(shù)據(jù)最近一次被訪問的時間和當(dāng)前時間的間隔Tintervali;
節(jié)點對各數(shù)據(jù)的Tintervali進(jìn)行歸一化處理,計算各數(shù)據(jù)的T_inti,
T_inti=T_intervali/Tinterval_max
其中,所述Tinterval_max為各數(shù)據(jù)的Tintervali中的最大值。
進(jìn)一步,所述節(jié)點計算緩存空間中各數(shù)據(jù)的平均訪問時間間隔T_averagei包括:
節(jié)點根據(jù)所述各數(shù)據(jù)的第一次被訪問時間和所述各數(shù)據(jù)被訪問的次數(shù)計算各數(shù)據(jù)的平均訪問時間T_averi:
T_averi=(T_recenti-T_firsti)/Mi
節(jié)點對所述各數(shù)據(jù)的平均訪問時間進(jìn)行歸一化處理,獲得各數(shù)據(jù)的平均訪問時間間隔T_averagei:T_averagei=T_averi/T_average_max;
其中,所述T_recenti為當(dāng)前時間,所述T_firsti為第i個數(shù)據(jù)第一次被訪問的時間,所述Mi為第i個數(shù)據(jù)被訪問的次數(shù),所述T_average_max為所有T_averi中的最大值。
本發(fā)明的內(nèi)容中心網(wǎng)絡(luò)節(jié)點數(shù)據(jù)緩存替換裝置包括:
節(jié)點緩存空間,用于緩存數(shù)據(jù);
最近訪問時間間隔計算模塊,用于計算緩存空間中各數(shù)據(jù)最近訪問時間間隔T_inti;
平均訪問時間間隔計算模塊,用于計算緩存空間中各數(shù)據(jù)的平均訪問時間間隔T_averagei;
數(shù)據(jù)流行度計算模塊,用于根據(jù)所述T_inti和所述T_averagei計算各數(shù)據(jù)的流行度Pi:
數(shù)據(jù)替換模塊,用于將新接收到的數(shù)據(jù)存儲到所述緩存空間替換掉Pi最小的數(shù)據(jù);
其中,所述i為節(jié)點緩存空間中緩存的數(shù)據(jù)的編號。
優(yōu)選的,所述最近訪問時間間隔計算模塊包括:
最近訪問時間獲取單元,用于獲取各數(shù)據(jù)最近一次被訪問的時間和當(dāng)前時間的間隔Tintervali;
最近訪問時間歸一化單元,用于對各數(shù)據(jù)的Tintervali進(jìn)行歸一化處理,計算各數(shù)據(jù)的T_inti;
T_inti=T_intervali/Tinterval_max
其中,所述Tinterval_max為各數(shù)據(jù)的Tintervali中的最大值。
優(yōu)選的,所述平均訪問時間間隔計算模塊包括:
平均訪問時間計算單元節(jié)點,用于計算各數(shù)據(jù)的平均訪問時間T_averi:
T_averi=(T_recenti-T_firsti)/Mi
平均訪問時間歸一化單元,用于對所述各數(shù)據(jù)的平均訪問時間進(jìn)行歸一化處理,獲得各數(shù)據(jù)的平均訪問時間間隔T_averagei:
T_averagei=T_averi/T_average_max
其中,所述T_recenti為第i個數(shù)據(jù)最近一次被訪問的時間,所述T_firsti為第i個數(shù)據(jù)第一次被訪問的時間,所述Mi為第i個數(shù)據(jù)被訪問的次數(shù),所述T_average_max為各數(shù)據(jù)的T_averi中的最大值。
本發(fā)明的技術(shù)方案中,節(jié)點在緩存替換時通過各數(shù)據(jù)的最近訪問時間間隔和平均訪問時間間隔計算出各數(shù)據(jù)的流行度,根據(jù)各數(shù)據(jù)的流行度判斷節(jié)點所緩存的各數(shù)據(jù)的使用價值,替換掉使用價值最小的數(shù)據(jù),從而有效的提高了節(jié)點數(shù)據(jù)替換的準(zhǔn)確性,有利于提高內(nèi)容中心網(wǎng)絡(luò)的數(shù)據(jù)傳輸效率。
附圖說明
圖1本發(fā)明內(nèi)容中心網(wǎng)絡(luò)節(jié)點數(shù)據(jù)緩存替換方法流程圖;
圖2本發(fā)明容中心網(wǎng)絡(luò)節(jié)點數(shù)據(jù)緩存替換裝置結(jié)構(gòu)示意圖;
具體實施方式
為了更好的說明本發(fā)明的技術(shù)方案,下面結(jié)合附圖對本發(fā)明的具體實施方式進(jìn)行詳細(xì)描述。
內(nèi)容中心網(wǎng)絡(luò)中,內(nèi)容中心網(wǎng)不再關(guān)心數(shù)據(jù)的存儲位置,只關(guān)心數(shù)據(jù)本身。網(wǎng)內(nèi)的數(shù)據(jù)不再使用IP地址作為數(shù)據(jù)的標(biāo)識,而是以數(shù)據(jù)的名稱作為標(biāo)識。內(nèi)容中心網(wǎng)中存在兩種數(shù)據(jù)包類型:請求包(簡稱,Interest Packet)和數(shù)據(jù)包(簡稱,Data Packet)。用戶發(fā)送包含數(shù)據(jù)名稱的請求包,該請求包被路由到含有對應(yīng)數(shù)據(jù)的鄰近節(jié)點或服務(wù)器;然后,將找到的數(shù)據(jù)包沿著請求包的反向路徑傳送給數(shù)據(jù)請求者。
(1)節(jié)點首先查找緩存空間(簡稱,CS)中是否有與該請求對應(yīng)的數(shù)據(jù)包,如果有就將數(shù)據(jù)傳回給請求者;
(2)否則節(jié)點會查詢未決請求表(簡稱,PIT)中是否含有與該請求對應(yīng)的條目,如果存在,就將請求包從某接口進(jìn)入的接口號添加到對應(yīng)條目的接口列表中,說明有客戶端對同樣的內(nèi)容發(fā)出過請求,并且經(jīng)過了該節(jié)點,后續(xù)對同樣內(nèi)容的請求只要把進(jìn)入的接口號添加到對應(yīng)的PIT條目下即可,然后將請求包丟棄,否則新建一個PIT條目并查詢節(jié)點的轉(zhuǎn)發(fā)信息庫(簡稱,F(xiàn)IB),將請求轉(zhuǎn)發(fā)到下一跳節(jié)點;
(3)數(shù)據(jù)包到達(dá)時,節(jié)點會查詢未決請求表PIT,如果PIT中存在與數(shù)據(jù)對應(yīng)的請求條目就將數(shù)據(jù)從該條目的接口列表中轉(zhuǎn)發(fā)出去,并根據(jù)相應(yīng)的存儲策略將其存儲在合適節(jié)點的CS中。
請求命中的數(shù)據(jù)在返回路徑中要存儲在某個節(jié)點時,可能會出現(xiàn)該節(jié)點空間存滿,需要把舊的數(shù)據(jù)替換出去。
具體實施例1
本實施例為本發(fā)明內(nèi)容中心網(wǎng)絡(luò)節(jié)點數(shù)據(jù)緩存替換方法的一種優(yōu)選實施方式。
參見圖1,本實施例的節(jié)點數(shù)據(jù)緩存替換流程如圖1所示,包括:
S101、節(jié)點接收到新數(shù)據(jù);
S102、節(jié)點判斷是否緩存空間是否飽和;如果是,執(zhí)行步驟S103,否則節(jié)點將接收到的新數(shù)據(jù)存入緩存空間,結(jié)束流程。
S103、節(jié)點計算緩存空間中各數(shù)據(jù)最近訪問時間間隔T_inti;
作為本實施例的一種優(yōu)選實現(xiàn)方案,本步驟進(jìn)一步包括:
節(jié)點獲取各數(shù)據(jù)最近一次被訪問的時間和當(dāng)前時間的間隔Tintervali,作為該數(shù)據(jù)的T_inti:
T_intverali=(Ti-T_recenti)
其中,所述Ti為當(dāng)前時間,所述T_recenti為第i個數(shù)據(jù)最近一次被訪問的時間。
作為本實施例的又一種優(yōu)選實現(xiàn)方案,本步驟進(jìn)一步包括:
節(jié)點獲取各數(shù)據(jù)最近一次被訪問的時間和當(dāng)前時間的間隔T_averi;
T_intverali=(Ti-T_recenti)
節(jié)點對各數(shù)據(jù)的T_intervali進(jìn)行歸一化處理,計算各數(shù)據(jù)的T_inti;
T_inti=T_intervali/Tinterval_max
其中,所述Tinterval_max為各數(shù)據(jù)的T_intervali中的最大值。
S104、節(jié)點計算緩存空間中各數(shù)據(jù)的平均訪問時間間隔T_averagei;
作為本具體實施例的一種優(yōu)選實現(xiàn)方案,本步驟進(jìn)一步包括:
節(jié)點根據(jù)所述各數(shù)據(jù)的第一次被訪問時間和所述各數(shù)據(jù)被訪問的次數(shù)計算各數(shù)據(jù)的平均訪問時間:
T_averi=(T_recenti-T_firsti)/Mi
節(jié)點將所述各數(shù)據(jù)的T_averi作為該數(shù)據(jù)的T_averagei。
其中,所述T_recenti為第i個數(shù)據(jù)最近一次被訪問的時間,所述T_firsti為第i個數(shù)據(jù)第一次被訪問的時間,所述Mi為第i個數(shù)據(jù)被訪問的次數(shù)。
作為本具體實施例的又一種優(yōu)選實現(xiàn)方案,本步驟進(jìn)一步包括:
節(jié)點根據(jù)所述各數(shù)據(jù)的第一次被訪問時間和所述各數(shù)據(jù)被訪問的次數(shù)計算各數(shù)據(jù)的平均訪問時間T_averi:
T_averi=(T_recenti-T_firsti)/Mi
節(jié)點對所述各數(shù)據(jù)的平均訪問時間進(jìn)行歸一化處理,獲得各數(shù)據(jù)的平均訪問時間間隔:
T_averagei=T_averi/T_average_max
其中,所述T_recenti為第i個數(shù)據(jù)最近一次被訪問的時間,所述T_firsti為第i個數(shù)據(jù)第一次被訪問的時間,所述Mi為第i個數(shù)據(jù)被訪問的次數(shù),所述T_average_max為所有T_averi中的最大值。
S105、節(jié)點根據(jù)所述T_inti和所述T_averagei計算各數(shù)據(jù)的流行度Pi
S106、節(jié)點將新接收到的數(shù)據(jù)存儲到緩存空間替換掉Pi最小的數(shù)據(jù)。
其中,所述i為所述節(jié)點所緩存的數(shù)據(jù)的編號。
具體實施例2
本實施例為本發(fā)明內(nèi)容中心網(wǎng)絡(luò)節(jié)點數(shù)據(jù)緩存替換裝置的一種優(yōu)選實施方式。
參見圖2,本實施例的裝置結(jié)構(gòu)如圖2所示,包括:
節(jié)點緩存空間,用于緩存數(shù)據(jù);
最近訪問時間間隔計算模塊,用于計算緩存空間中各數(shù)據(jù)最近訪問時間間隔T_inti;
平均訪問時間間隔計算模塊,用于計算緩存空間中各數(shù)據(jù)的平均訪問時間間隔T_averagei;
數(shù)據(jù)流行度計算模塊,用于根據(jù)所述T_inti和所述T_averagei計算各數(shù)據(jù)的流行度Pi
數(shù)據(jù)替換模塊,用于將新接收到的數(shù)據(jù)存儲到所述緩存空間替換掉Pi最小的數(shù)據(jù)。
作為本具體實施例的一種優(yōu)選實現(xiàn)方案,所述最近訪問時間間隔計算模塊包括:
最近訪問時間獲取單元,用于獲取各數(shù)據(jù)最近一次被訪問的時間和當(dāng)前時間的間隔Tintervali;
最近訪問時間歸一化單元,用于對各數(shù)據(jù)的Tintervali進(jìn)行歸一化處理,計算各數(shù)據(jù)的T_inti;
其中,所述對各數(shù)據(jù)的Tintervali歸一化處理為:
T_inti=T_intervali/Tinterval_max
其中,所述Tinterval_max為各數(shù)據(jù)的Tintervali中的最大值。
作為本具體實施例的一種優(yōu)選實現(xiàn)方案,所述平均訪問時間間隔計算模塊包括:
平均訪問時間計算單元,用于計算各數(shù)據(jù)的平均訪問時間T_averi,所述計算為:
T_averi=(T_recenti-T_firsti)/Mi
平均訪問時間歸一化單元,用于對所述各數(shù)據(jù)的平均訪問時間進(jìn)行歸一化處理,獲得各數(shù)據(jù)的平均訪問時間間隔T_averagei,所述歸一化處理為:
T_averagei=T_averi/T_average_max
其中,所述T_recenti為第i個數(shù)據(jù)最近一次被訪問的時間,所述T_firsti為第i個數(shù)據(jù)第一次被訪問的時間,所述Mi為第i個數(shù)據(jù)被訪問的次數(shù)T_average_max為所有T_averi中的最大值。
其中,所述i為所述節(jié)點所緩存的數(shù)據(jù)的編號。
本發(fā)明的上述具體實施例中,節(jié)點在進(jìn)行緩存替換時,綜合考慮了各數(shù)據(jù)的最近訪問時間(即數(shù)據(jù)的新鮮度)和平均訪問間隔(即數(shù)據(jù)的訪問熱度),計算出數(shù)據(jù)的流行度,通過數(shù)據(jù)的流行度來判定數(shù)據(jù)在網(wǎng)絡(luò)中的使用價值,進(jìn)行數(shù)據(jù)替換時優(yōu)先替換掉使用價值低(即流行度低)的數(shù)據(jù),保證了節(jié)點中緩存的數(shù)據(jù)是使用價值較高的數(shù)據(jù),使得后續(xù)用戶的數(shù)據(jù)請求包能夠更多的在節(jié)點緩存中快速命中,從而有效的提高了網(wǎng)絡(luò)的傳輸效率,提升了整個內(nèi)容中心網(wǎng)絡(luò)的性能。
在上述實施例的優(yōu)選實現(xiàn)方案中,節(jié)點通過對T_averi和/或T_averi歸一化得到各數(shù)據(jù)的T_inti和T_averagei,可以把計算流行度的各個參量壓縮到0~1范圍之內(nèi),使計算更加便捷快速。但各個數(shù)據(jù)之間仍然能夠保持相對大小,數(shù)據(jù)之間進(jìn)行比較時收斂速度更快,對內(nèi)容中心網(wǎng)來說,節(jié)點對數(shù)據(jù)處理要求需要達(dá)到線性速度,通過歸一化處理后,可以節(jié)省計算量,加快各數(shù)據(jù)對比的速度,可以有效減少甚至避免路由器節(jié)點出現(xiàn)擁塞狀況。
需要說明的是,以上實施例僅用以說明本發(fā)明的技術(shù)方案而非限制,盡管參照較佳實施例對本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明技術(shù)方案的宗旨和范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。