一種基于ccn的內(nèi)容推送方法
【專利摘要】本發(fā)明涉及一種基于CCN的內(nèi)容推送方法,內(nèi)容推送者主動發(fā)起通信,無需用戶請求就可以將內(nèi)容直接推送給接收用戶,無需多次交互,通過一條特定興趣包的觸發(fā),即可建立多個內(nèi)容的反向推送路徑,大大減少了通信延時與鏈路負(fù)載。本發(fā)明可以應(yīng)用于眾多應(yīng)用場景中,例如現(xiàn)在經(jīng)常使用的微博、大文件傳送、股票、天氣預(yù)報等,豐富了CCN網(wǎng)絡(luò)的實際應(yīng)用。
【專利說明】—種基于CCN的內(nèi)容推送方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計算機(jī)網(wǎng)絡(luò)【技術(shù)領(lǐng)域】,具體涉及一種基于CCN的內(nèi)容推送方法。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)上應(yīng)用的不斷發(fā)展變化,基于TCP/IP的現(xiàn)有互聯(lián)網(wǎng)也逐漸暴露出許多的不適應(yīng),當(dāng)前,互聯(lián)網(wǎng)上主要暴露出的問題有:不安全、移動性差、可靠性差、靈活性差?;ヂ?lián)網(wǎng)的可擴(kuò)展性和有效的內(nèi)容分發(fā)問題已經(jīng)引起了覆蓋網(wǎng)(Overlay Network)和內(nèi)容分發(fā)網(wǎng)絡(luò)(Content Delivery Network)學(xué)者們的研究熱潮?;ヂ?lián)網(wǎng)正逐步由主機(jī)中心向內(nèi)容中心轉(zhuǎn)變。CCN (content centric network,內(nèi)容中心網(wǎng)絡(luò))是目前較為主流的研究方向。
【發(fā)明內(nèi)容】
[0003]為克服上述現(xiàn)有技術(shù)的不足,本發(fā)明提出了一種基于CCN的內(nèi)容推送方法,從而有效地提升CCN網(wǎng)絡(luò)的性能,其特征在于:
[0004]推送方構(gòu)造特定興趣包并發(fā)送該特定興趣包;
[0005]中間節(jié)點(diǎn)解析興趣包,并判斷興趣包中是否包含PIT特定字段;
[0006]中間節(jié)點(diǎn)如果檢測到PIT特定字段,則修改PIT條目;
[0007]中間節(jié)點(diǎn)修改端口,建立反向PIT ;
[0008]中間節(jié)點(diǎn)按照FIB路由將所述特定興趣包轉(zhuǎn)發(fā)到下一個節(jié)點(diǎn);
[0009]接收方建立反向PIT ;
[0010]推送方觸發(fā)興趣包查詢PIT匹配條目;
[0011]推送方將內(nèi)容從PIT中記錄的端口中轉(zhuǎn)發(fā)。
[0012]優(yōu)選地,如果所述判斷興趣包中是否包含PIT特定字段的結(jié)果為否,則按照正常CCN流程繼續(xù)處理。
[0013]優(yōu)選地,所述正常CCN流程具體為:
[0014]當(dāng)請求方需要請求內(nèi)容時,主動發(fā)送興趣包;中間節(jié)點(diǎn)收到興趣包后會依次查詢內(nèi)容緩存(CS)、PIT和FIB ;
[0015]如果CS中沒有請求方所請求的內(nèi)容,中間節(jié)點(diǎn)在PIT上記錄接收興趣包的端口號;
[0016]中間節(jié)點(diǎn)根據(jù)FIB轉(zhuǎn)發(fā)該興趣包;每個興趣包有一個隨機(jī)數(shù)(nonce);每一個CCN節(jié)點(diǎn)在接收到興趣包時,判斷興趣包的名稱,當(dāng)接收到一個同名稱但不同nonce的興趣包,CCN在PIT中添加該興趣包進(jìn)來的端口 ;如果接到的興趣包名稱與nonce 二者均相同,則CCN節(jié)點(diǎn)將丟棄該重復(fù)興趣包;
[0017]內(nèi)容源接收到興趣包后查找自己的CS,如果CS中存在請求方所請求的內(nèi)容,則根據(jù)PIT記錄的端口信息按原路徑;經(jīng)由中間節(jié)點(diǎn)回轉(zhuǎn)該內(nèi)容;
[0018]內(nèi)容經(jīng)過的中間節(jié)點(diǎn)將內(nèi)容副本緩存在本地CS中。
[0019]優(yōu)選地,所構(gòu)造的特定興趣包中包含內(nèi)容接收方名稱、需要推送的分片數(shù)量及起始分片號以及內(nèi)容名中的一個或多個。
[0020]優(yōu)選地,所述中間節(jié)點(diǎn)如果檢測到PIT特定字段,則修改PIT條目進(jìn)一步包括:去掉前面PIT標(biāo)志位以及最后一個表示PIT數(shù)量的組件;
[0021]構(gòu)建若干個新的連續(xù)的興趣包;
[0022]查找興趣包的轉(zhuǎn)發(fā)端口,將興趣包轉(zhuǎn)發(fā)端口添加到PIT條目中;
[0023]添加完成PIT條目后,不轉(zhuǎn)發(fā)該若干個興趣包,直接將興趣包丟棄。
[0024]優(yōu)選地,所述推送方將內(nèi)容從PIT中記錄的端口中轉(zhuǎn)發(fā)進(jìn)一步包括:
[0025]查找完CS找到匹配內(nèi)容后,直接按照建立的PIT來進(jìn)行內(nèi)容的轉(zhuǎn)發(fā)。
[0026]優(yōu)選地,所述中間節(jié)點(diǎn)按照FIB路由將所述特定興趣包轉(zhuǎn)發(fā)到下一個節(jié)點(diǎn)進(jìn)一步包括:
[0027]中間節(jié)點(diǎn)轉(zhuǎn)發(fā)特定興趣包,直到到達(dá)內(nèi)容的接收方才停止轉(zhuǎn)發(fā)。
[0028]優(yōu)選地,中間節(jié)點(diǎn)對于添加反向PIT時構(gòu)建的若干個興趣包不轉(zhuǎn)發(fā),在反向PIT建立后即丟棄。
[0029]優(yōu)選地,所述接收方建立反向PIT具體為:
[0030]當(dāng)特定興趣包到達(dá)接收方時,接收方建立PIT,名字前綴同中間節(jié)點(diǎn)處理一致,但PIT端口號為接收方本地端口號;
[0031 ] 當(dāng)數(shù)據(jù)包到達(dá)用戶B時,查找PIT端口為本地端口,將不會繼續(xù)轉(zhuǎn)發(fā)內(nèi)容而是直接存儲在本地CS中。
[0032]優(yōu)選地,所述反向PIT,是將PIT中的incoming face和outgoing face對調(diào)放置。
[0033]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,并可依照說明書的內(nèi)容予以實施,以下以本發(fā)明的較佳實施例并配合附圖詳細(xì)說明如后。
【專利附圖】
【附圖說明】
[0034]圖1示出了 CCN協(xié)議棧模型;
[0035]圖2示出了 CCN包格式;
[0036]圖3示出了 CCN節(jié)點(diǎn)間通信流程圖;
[0037]圖4示出了根據(jù)本發(fā)明的一個實施例的在CCN中實現(xiàn)內(nèi)容推送的流程圖。
【具體實施方式】
[0038]為更進(jìn)一步闡述本發(fā)明為達(dá)成預(yù)定發(fā)明目的所采取的技術(shù)手段及功效,以下結(jié)合附圖及較佳實施例,對依據(jù)本發(fā)明提出的一種基于CCN的內(nèi)容推送方法其【具體實施方式】、特征及其功效,詳細(xì)說明如后。在下述說明中,不同的“一實施例”或“實施例”指的不一定是同一實施例。此外,一或多個實施例中的特定特征、結(jié)構(gòu)、或特點(diǎn)可由任何合適形式組合。
[0039]圖1示出了 CCN協(xié)議棧的模型。基于CCN的協(xié)議棧結(jié)構(gòu)與基于TCP/IP的協(xié)議棧結(jié)構(gòu)類似,都是沙漏模型。其中最大的不同是,使用Content chunk (內(nèi)容塊)協(xié)議代替了IP協(xié)議。從網(wǎng)絡(luò)的角度看,即在網(wǎng)絡(luò)中對數(shù)據(jù)命名代替對物理實體命名。另外,在網(wǎng)絡(luò)中內(nèi)建存儲功能,用來緩存經(jīng)過的數(shù)據(jù)包,用以加快其他用戶訪問緩存數(shù)據(jù)包的響應(yīng)時間,同時可減少網(wǎng)絡(luò)中的流量。
[0040]CCN通信由數(shù)據(jù)消費(fèi)者驅(qū)動,數(shù)據(jù)可以進(jìn)行塊級傳輸。CCN中包含兩種類型的包:興趣包(Interest Packet)和數(shù)據(jù)包(Data Packet)。圖2示出了 CCN的包格式。興趣包(Interest Packet)包括指內(nèi)容名(Content Name),用于唯一標(biāo)識內(nèi)容;選擇器(Selector),包含一些可選參數(shù),用于確定興趣包的處理方法,例如Scope=O,則興趣包不能向本主機(jī)的其他應(yīng)用程序轉(zhuǎn)發(fā),而Scope=I則不能向發(fā)起興趣包的主機(jī)轉(zhuǎn)發(fā);隨機(jī)數(shù)(Nonce),用于唯一標(biāo)識興趣包,避免重復(fù)。數(shù)據(jù)包包括,內(nèi)容名(Content Name),用于唯一標(biāo)識內(nèi)容名;簽名(Signature),用于唯一標(biāo)識內(nèi)容來源及內(nèi)容名;簽名信息(SignedInfo),包含時間,密鑰等信息,用于對內(nèi)容參數(shù)進(jìn)行設(shè)置;數(shù)據(jù)(Data)指真正傳輸?shù)臄?shù)據(jù)內(nèi)容。需要相關(guān)內(nèi)容的用戶根據(jù)自身的FIB通過節(jié)點(diǎn)向多個方向通過興趣包發(fā)出請求,任何收到這個請求的節(jié)點(diǎn)如果有能夠滿足該請求的內(nèi)容,則通過數(shù)據(jù)包向請求節(jié)點(diǎn)發(fā)送響應(yīng)數(shù)據(jù)。這種對應(yīng)關(guān)系是建立在對內(nèi)容進(jìn)行標(biāo)識的基礎(chǔ)上,即每個內(nèi)容都有一個具體的標(biāo)識。興趣包和數(shù)據(jù)包的位置無關(guān),在一個廣播介質(zhì)上,有同樣內(nèi)容需求的請求可以分享相同的內(nèi)容和網(wǎng)絡(luò)傳輸,從而節(jié)省了網(wǎng)絡(luò)資源,提高了網(wǎng)絡(luò)傳輸效率。
[0041]內(nèi)容的標(biāo)識,其實就是CCN的地址。這種標(biāo)識是結(jié)構(gòu)化的,通常由幾個組件(也即component)組成,其中各個組件之間由/分隔通過這種結(jié)構(gòu)化的地址,可以利用類似于IP地址前綴機(jī)制來迅速定位所需要的信息。例如/catr.cn/videos/ffidgetA.mpg/_v〈timestamp>/_s3,其中catr.cn是全網(wǎng)可識別名稱、videos是內(nèi)容類型、WidgetA.mpg是內(nèi)容名、_v〈timestamp>是版本時間等信息、_s3是分段等信息。
[0042]如果興趣包的內(nèi)容名(Content name)是數(shù)據(jù)包的內(nèi)容名(Content name)的前綴,則表示該數(shù)據(jù)包滿足請求。內(nèi)容名可以動態(tài)生成,即讓不存在該請求內(nèi)容的應(yīng)用在接收到興趣包時臨時產(chǎn)生該內(nèi)容。類似于,動態(tài)Web,即靜態(tài)內(nèi)容和動態(tài)產(chǎn)生混合支持。
[0043]術(shù)語Face (面)指代CCN轉(zhuǎn)發(fā)器上耦合到應(yīng)用或網(wǎng)絡(luò)的接口。Face能夠基于硬件或軟件。這樣的CCN接口被稱為Face以使得它們能夠與作為路由器術(shù)語中的物理網(wǎng)絡(luò)接口的接口(interface)起到區(qū)分作用。
[0044]當(dāng)一個包到達(dá)一個Face,將利用內(nèi)容名進(jìn)行最長前綴匹配查找,其中將使用到三個關(guān)鍵數(shù)據(jù)完成轉(zhuǎn)發(fā)(FIB、內(nèi)容緩存、PIT)。FIB (Forwarding information base,轉(zhuǎn)發(fā)信息庫)相當(dāng)于IP協(xié)議中的路由表,但允許多個出口,而不是僅限于一個。內(nèi)容緩存(Content store)可以使用 LRU (least recently used)策略和生存時間(TTL, time tolive)等策略緩存轉(zhuǎn)發(fā)的數(shù)據(jù)包,以供其他消費(fèi)者使用,提高數(shù)據(jù)包的命中率。PIT(PendingInteresting Table,待定興趣表)用于記錄已經(jīng)轉(zhuǎn)發(fā)的興趣包的內(nèi)容名及端口號,從而讓響應(yīng)的數(shù)據(jù)包能根據(jù)端口號到達(dá)其對應(yīng)的請求者。當(dāng)響應(yīng)興趣的數(shù)據(jù)包利用PIT的某條目轉(zhuǎn)發(fā)后或者生存時間到期,該條目被刪除。
[0045]當(dāng)一個Interest包(興趣包)到達(dá)某一節(jié)點(diǎn),首先根據(jù)興趣包匹配內(nèi)容緩存,如果存在相匹配的內(nèi)容,則利用匹配的內(nèi)容響應(yīng)請求并丟棄Interest包;如果不存在相匹配的內(nèi)容,則說明內(nèi)容沒有被緩存或者緩存時間到期被替換掉,此時開始匹配PIT,如果存在匹配的PIT條目,則說明不久前可能其他用戶有請求過同樣內(nèi)容,此處可以進(jìn)行PIT聚合,即在PIT相應(yīng)的條目中增加Face,并丟棄Interest包;如果不存在相匹配的內(nèi)容,則根據(jù)興趣包最長前綴匹配FIB,按照所有匹配的Face (除Interest包到達(dá)Face)轉(zhuǎn)發(fā)Interest包,如果仍不存在相匹配的Face,則丟棄該Interest包。
[0046]data包(數(shù)據(jù)包)的處理相對簡單,當(dāng)數(shù)據(jù)包到達(dá)時,先對數(shù)據(jù)包的Content Name(內(nèi)容名)字段進(jìn)行最長前綴匹配,先在Content Store (內(nèi)容緩存)中進(jìn)行匹配,如果有匹配的內(nèi)容,則返回的內(nèi)容為無效內(nèi)容,之前請求的興趣包應(yīng)該已經(jīng)被響應(yīng),故丟棄該數(shù)據(jù)包;如果沒有匹配的內(nèi)容,則開始在PIT中繼續(xù)匹配,如果有匹配的條目,則將內(nèi)容從PIT中記錄的端口號轉(zhuǎn)發(fā)出去,同時緩存在Content Store (內(nèi)容緩存中),如果不存在匹配的條目,則丟棄該數(shù)據(jù)包。
[0047]圖3示出了 CCN節(jié)點(diǎn)間通信流程圖。用戶A與內(nèi)容源B之間可能存在若干個中間節(jié)點(diǎn)C,為簡潔起見,圖3中示例性地僅示出了一個中間節(jié)點(diǎn)C。其中用戶A也可以被稱作節(jié)點(diǎn)A,同樣內(nèi)容源B也可以被稱作節(jié)點(diǎn)B或是用戶B。如301所示,當(dāng)用戶A需要請求內(nèi)容時,主動發(fā)送興趣包;中間節(jié)點(diǎn)C收到興趣包后會依次查詢CS (Content Store,內(nèi)容緩存)、PIT和FIB。如果CS中沒有用戶A所請求的內(nèi)容,中間節(jié)點(diǎn)C在PIT上記錄接收興趣包的端口號;如302所示,中間節(jié)點(diǎn)C根據(jù)FIB轉(zhuǎn)發(fā)該興趣包;每個興趣包有一個nonce(隨機(jī)數(shù));每一個CCN節(jié)點(diǎn)在接收到興趣包時,將判斷興趣包的名稱,當(dāng)接收到一個同名稱但不同nonce的興趣包,CCN將在PIT中添加該興趣包進(jìn)來的端口 ;如果接到的興趣包名稱與nonce 二者均相同,則CCN節(jié)點(diǎn)將丟棄該重復(fù)興趣包;如步驟303所示,內(nèi)容源B接收到興趣包后首先查找自己的CS,如果CS中存在用戶A所請求的內(nèi)容,則根據(jù)PIT記錄的端口信息按原路徑,如步驟304所示,經(jīng)由中間節(jié)點(diǎn)C回轉(zhuǎn)該內(nèi)容。同時,內(nèi)容經(jīng)過的中間節(jié)點(diǎn)C會將內(nèi)容副本緩存在本地CS中。
[0048]PIT條目的格式如下表1所示,其中FaceO指興趣包進(jìn)入的端口。
[0049]
【權(quán)利要求】
1.一種基于CCN的內(nèi)容推送方法,其特征在于: 推送方構(gòu)造特定興趣包并發(fā)送該特定興趣包; 中間節(jié)點(diǎn)解析興趣包,并判斷興趣包中是否包含PIT特定字段; 中間節(jié)點(diǎn)如果檢測到PIT特定字段,則修改PIT條目; 中間節(jié)點(diǎn)修改端口,建立反向PIT ; 中間 節(jié)點(diǎn)按照FIB路由將所述特定興趣包轉(zhuǎn)發(fā)到下一個節(jié)點(diǎn); 接收方建立反向PIT ; 推送方觸發(fā)興趣包查詢PIT匹配條目; 推送方將內(nèi)容從PIT中記錄的端口中轉(zhuǎn)發(fā)。
2.根據(jù)權(quán)利要求1的方法,其特征在于: 如果所述判斷興趣包中是否包含PIT特定字段的結(jié)果為否,則按照正常CCN流程繼續(xù)處理。
3.根據(jù)權(quán)利要求2的方法,其特征在于: 所述正常CCN流程具體為: 當(dāng)請求方需要請求內(nèi)容時,主動發(fā)送興趣包;中間節(jié)點(diǎn)收到興趣包后會依次查詢內(nèi)容緩存(CS)、PIT 和 FIB ;如果CS中沒有請求方所請求的內(nèi)容,中間節(jié)點(diǎn)在PIT上記錄接收興趣包的端口號;中間節(jié)點(diǎn)根據(jù)FIB轉(zhuǎn)發(fā)該興趣包;每個興趣包有一個隨機(jī)數(shù)(nonce);每一個CCN節(jié)點(diǎn)在接收到興趣包時,判斷興趣包的名稱,當(dāng)接收到一個同名稱但不同nonce的興趣包,CCN在PIT中添加該興趣包進(jìn)來的端口 ;如果接到的興趣包名稱與nonce 二者均相同,則CCN節(jié)點(diǎn)將丟棄該重復(fù)興趣包; 內(nèi)容源接收到興趣包后查找自己的CS,如果CS中存在請求方所請求的內(nèi)容,則根據(jù)PIT記錄的端口信息按原路徑;經(jīng)由中間節(jié)點(diǎn)回轉(zhuǎn)該內(nèi)容; 內(nèi)容經(jīng)過的中間節(jié)點(diǎn)將內(nèi)容副本緩存在本地CS中。
4.根據(jù)權(quán)利要求1或3的方法,其特征在于: 所構(gòu)造的特定興趣包中包含內(nèi)容接收方名稱、需要推送的分片數(shù)量及 起始分片號以及內(nèi)容名中的一個或多個。
5.根據(jù)權(quán)利要求4的方法,其特征在于: 所述中間節(jié)點(diǎn)如果檢測到PIT特定字段,則修改PIT條目進(jìn)一步包括: 去掉前面PIT標(biāo)志位以及最后一個表示PIT數(shù)量的組件; 構(gòu)建若干個新的連續(xù)的興趣包; 查找興趣包的轉(zhuǎn)發(fā)端口,將興趣包轉(zhuǎn)發(fā)端口添加到pit條目中; 添加完成pit條目后,不轉(zhuǎn)發(fā)該若干個興趣包,直接將興趣包丟棄。
6.根據(jù)權(quán)利要求5的方法,其特征在于: 所述推送方將內(nèi)容從PIT中記錄的端口中轉(zhuǎn)發(fā)進(jìn)一步包括: 查找完CS找到匹配內(nèi)容后,直接按照建立的PIT來進(jìn)行內(nèi)容的轉(zhuǎn)發(fā)。
7.根據(jù)權(quán)利要求6的方法,其特征在于: 所述中間節(jié)點(diǎn)按照FIB路由將所述特定興趣包轉(zhuǎn)發(fā)到下一個節(jié)點(diǎn)進(jìn)一步包括: 中間節(jié)點(diǎn)轉(zhuǎn)發(fā)特定興趣包,直到到達(dá)內(nèi)容的接收方才停止轉(zhuǎn)發(fā)。
8.根據(jù)權(quán)利要求7的方法,其特征在于:中間節(jié)點(diǎn)對于添加反向PIT時構(gòu)建的若干個興趣包不轉(zhuǎn)發(fā),在反向PIT建立后即丟棄。
9.根據(jù)權(quán)利要求8的方法,其特征在于: 所述接收方建立反向PIT具體為: 當(dāng)特定興趣包到達(dá)接收方時,接收方建立PIT,名字前綴同中間節(jié)點(diǎn)處理一致,但PIT端口號為接收方本地端口號; 當(dāng)數(shù)據(jù)包到達(dá)用戶B時,查找PIT端口為本地端口,將不會繼續(xù)轉(zhuǎn)發(fā)內(nèi)容而是直接存儲在本地CS中。
10.根據(jù)權(quán)利要求9的方法,其特征在于: 所述反向PIT,是將PIT中的incoming face和outgoing face對調(diào)放置。
【文檔編號】H04L29/08GK103747083SQ201410002223
【公開日】2014年4月23日 申請日期:2014年1月2日 優(yōu)先權(quán)日:2014年1月2日
【發(fā)明者】黃韜, 劉江, 王利, 董美姣, 許光軍, 王國卿 申請人:北京郵電大學(xué)