發(fā)明的實(shí)施例提供一種內(nèi)容復(fù)制系統(tǒng),其解決了在不廣告共同的名稱前綴的多個(gè)復(fù)制服務(wù)器上緩存內(nèi)容對(duì)象的問題。為了解決此問題,內(nèi)容復(fù)制系統(tǒng)使發(fā)布者可以創(chuàng)建無名稱內(nèi)容對(duì)象,無名稱內(nèi)容對(duì)象由內(nèi)容對(duì)象散列(C0H)自認(rèn)證名稱尋址。
[0039]這些無名稱內(nèi)容對(duì)象是真正沒有固定位置的對(duì)象,原因是他們不包括名稱,因此沒有暗含的路由。發(fā)布者可以在各個(gè)復(fù)制服務(wù)器(或托管服務(wù))上托管這些無名稱內(nèi)容對(duì)象,即便這些復(fù)制服務(wù)器向其它CCN節(jié)點(diǎn)只廣告他們自己的名稱前綴。發(fā)布者可以創(chuàng)建無名稱內(nèi)容對(duì)象的清單(或無名稱內(nèi)容對(duì)象集合的清單層級(jí)),并且可以向請(qǐng)求這些內(nèi)容對(duì)象的客戶端提供清單(或根清單),以致客戶端可以生成直接從(若干)復(fù)制服務(wù)器請(qǐng)求無名稱內(nèi)容對(duì)象的興趣。清單(或根清單)包括托管無名稱內(nèi)容對(duì)象的復(fù)制服務(wù)器的名稱前綴,并包括可以用來唯一地識(shí)別無名稱內(nèi)容對(duì)象或其它非根清單的內(nèi)容對(duì)象散列(C0H)值。
[0040]例如,發(fā)布者可能想在任何托管服務(wù)(例如復(fù)制服務(wù)器)上存儲(chǔ)內(nèi)容對(duì)象的集合,托管服務(wù)可以針對(duì)特定的地理位置緩存并提供這些內(nèi)容對(duì)象。這些托管服務(wù)可以包括分布于全球的緩存服務(wù)器集群,每個(gè)集群可以具有唯一的名稱前綴以允許負(fù)載平衡器將請(qǐng)求重新引導(dǎo)到特定的集群或地理區(qū)域。然而,如果內(nèi)容對(duì)象有使用發(fā)布者的名稱前綴嵌入到其中的名稱(和其簽名),則這些內(nèi)容對(duì)象可只被廣告發(fā)布者的名稱前綴的節(jié)點(diǎn)或服務(wù)托管。問題是這些服務(wù)中有一些可以托管很大一組發(fā)布者的內(nèi)容對(duì)象,并且只可以存儲(chǔ)每個(gè)發(fā)布者的小量的內(nèi)容對(duì)象。將所有這些發(fā)布者的名稱前綴映射到這些服務(wù)上會(huì)對(duì)相鄰路由器帶來不期望的負(fù)擔(dān)。在許多情況下,路由器不可能在所有這些名稱前綴的路由表中創(chuàng)建表項(xiàng),因?yàn)檫@樣做可能要求有比可用的更多的路由表表項(xiàng)。
[0041]—種選擇是發(fā)布者改變這些內(nèi)容對(duì)象的名稱,使得每個(gè)復(fù)制內(nèi)容對(duì)象具有帶托管服務(wù)的前綴的名稱,托管服務(wù)緩存復(fù)制內(nèi)容對(duì)象。這可以將興趣具體地重新引導(dǎo)到期望的托管服務(wù)(例如特定地理區(qū)域的復(fù)制服務(wù)器)。然而,這樣做引起具有新名稱的復(fù)制內(nèi)容對(duì)象變成與原始內(nèi)容對(duì)象完全不同的內(nèi)容對(duì)象,原因是這兩個(gè)內(nèi)容對(duì)象具有不同的名稱和不同的簽名。
[0042]另一種可能的解決方案是“封裝”,這涉及將發(fā)布者的內(nèi)容對(duì)象(其名稱包括發(fā)布者的名稱前綴)封裝到其名稱包括復(fù)制服務(wù)器的名稱前綴的內(nèi)容對(duì)象中。例如,具有名稱前綴“/marc”的發(fā)布者可以將內(nèi)容對(duì)象“/marc/foo”封裝到名稱為“/alice/foo”的內(nèi)容對(duì)象中,以允許復(fù)制服務(wù)器(具有名稱前綴“/alice”)托管內(nèi)容對(duì)象“/marc/foo”。執(zhí)行負(fù)載平衡的網(wǎng)絡(luò)節(jié)點(diǎn)(例如路由器或網(wǎng)關(guān))可以通過生成并傳播對(duì)“/alice/foo”的新興趣,將對(duì)“/marc/foo”的興趣重新引導(dǎo)到復(fù)制服務(wù)器“/alice”。同樣,當(dāng)復(fù)制服務(wù)器返回內(nèi)容對(duì)象時(shí),此網(wǎng)絡(luò)節(jié)點(diǎn)可以從內(nèi)容對(duì)象“/alice/foo”解封裝內(nèi)容對(duì)象“/marc/foo”,返回解封裝的內(nèi)容對(duì)象。
[0043]然而,“封裝”導(dǎo)致此網(wǎng)絡(luò)節(jié)點(diǎn)上的附加計(jì)算開銷,原因是網(wǎng)絡(luò)節(jié)點(diǎn)需要通過生成新興趣重新引導(dǎo)興趣,需要保持被重新引導(dǎo)的興趣的狀態(tài)信息。此網(wǎng)絡(luò)節(jié)點(diǎn)還需要能夠檢測(cè)哪些內(nèi)容對(duì)象包括封裝的內(nèi)容對(duì)象,并且在將解封裝的內(nèi)容對(duì)象返回客戶端之前,需要花費(fèi)寶貴的處理時(shí)間來將內(nèi)容對(duì)象“/marc/foo”從復(fù)制內(nèi)容對(duì)象“/alice/foo”解封裝。更糟糕的是,允許內(nèi)容對(duì)象的名稱改變可能容忍將惡意或不期望內(nèi)容注入到興趣的返回路徑中的“偏離路徑(off-path) ”攻擊。
[0044]因此,本發(fā)明的實(shí)施例使用命名和簽名的根“清單”(和無名稱和無簽名的非根清單的集合)來識(shí)別集合中的無名稱內(nèi)容對(duì)象,以及可以從其中獲得數(shù)據(jù)集合的名稱前綴。對(duì)“清單”(也稱作“聚合簽名對(duì)象”)的描述在美國專利申請(qǐng)?zhí)?4/231,515(發(fā)明人Ersin Uzun、Marc E.Mosko、Michael F.Plass 和 Glenn C.Scott 于 2014 年 3 月 31 日申請(qǐng)的名稱為 “AGGREGATE SIGNING OF DATA IN CONTENT CENTRIC NETWORKING”,律師案號(hào)為PARC-20140190US01)中描述。
[0045]圖1圖解說明根據(jù)實(shí)施例促進(jìn)在多個(gè)內(nèi)容托管服務(wù)上復(fù)制無名稱對(duì)象的示例性網(wǎng)絡(luò)環(huán)境100。計(jì)算環(huán)境100可以包括內(nèi)容中心網(wǎng)絡(luò)102,內(nèi)容中心網(wǎng)絡(luò)102包括可以基于其名稱或名稱前綴轉(zhuǎn)發(fā)興趣的多個(gè)邊緣節(jié)點(diǎn)104和路由節(jié)點(diǎn)106。同樣,邊緣節(jié)點(diǎn)104和路由節(jié)點(diǎn)106可以基于內(nèi)容對(duì)象的名稱(對(duì)于命名內(nèi)容對(duì)象)或者基于內(nèi)容對(duì)象的散列(對(duì)于無名稱內(nèi)容對(duì)象)返回滿足興趣的內(nèi)容對(duì)象。
[0046]例如,網(wǎng)絡(luò)102可以由互聯(lián)網(wǎng)服務(wù)提供商(ISP)管理,并且可以包括向多個(gè)客戶端裝置提供網(wǎng)絡(luò)接入的邊緣節(jié)點(diǎn)104.1。網(wǎng)絡(luò)102還可以包括向可以托管或緩存各個(gè)內(nèi)容生產(chǎn)者的內(nèi)容對(duì)象的多個(gè)內(nèi)容托管服務(wù)(例如直接地或者通過回送網(wǎng)絡(luò))提供網(wǎng)絡(luò)接入的邊緣節(jié)點(diǎn)104.2和104.3。發(fā)布者108 (例如內(nèi)容生產(chǎn)者)可以在內(nèi)容托管服務(wù)110上(例如內(nèi)容傳送網(wǎng)絡(luò)或復(fù)制服務(wù)器)以及內(nèi)容托管服務(wù)120上存儲(chǔ)無名稱內(nèi)容對(duì)象的集合。替代性地,內(nèi)容托管服務(wù)110和/或120可以各自對(duì)應(yīng)于由ISP運(yùn)營(yíng)的混雜緩存服務(wù),使得每個(gè)緩存服務(wù)使用不同的名稱前綴(例如與具體的地理位置關(guān)聯(lián)的名稱前綴)托管無名稱內(nèi)容對(duì)象。
[0047]注意,內(nèi)容托管服務(wù)110和120不必廣告與集合關(guān)聯(lián)的名稱前綴。同樣,在向內(nèi)容托管服務(wù)110和/或120提供集合之前,發(fā)布者108不必改變內(nèi)容對(duì)象的名稱前綴以匹配與內(nèi)容托管服務(wù)110和/或120關(guān)聯(lián)的名稱前綴。而是,發(fā)布者108可以生成清單層級(jí),使得根清單可以包括集合的一組內(nèi)容托管服務(wù)(例如服務(wù)110和120)的名稱前綴以及一組無名稱內(nèi)容對(duì)象的內(nèi)容對(duì)象散列(C0H)值(例如對(duì)于其它清單或者對(duì)于集合中的數(shù)據(jù)對(duì)象)。
[0048]裝置114可以通過生成和傳播包括集合的名稱的興趣(諸如與發(fā)布者108關(guān)聯(lián)的名稱前綴、與集合關(guān)聯(lián)的名稱前綴)來請(qǐng)求集合。當(dāng)裝置114傳播興趣時(shí),邊緣節(jié)點(diǎn)104和/或路由節(jié)點(diǎn)106可以將興趣轉(zhuǎn)發(fā)到發(fā)布者108,在此時(shí)發(fā)布者108可以將根清單返回裝置114。替代性地,如果網(wǎng)絡(luò)102中的CCN節(jié)點(diǎn)(例如邊緣節(jié)點(diǎn)104.1)已經(jīng)緩存根清單,則此CCN節(jié)點(diǎn)可以不必將興趣轉(zhuǎn)發(fā)給發(fā)布者108,就將根清單返回裝置114。
[0049]裝置114可以使用根清單選擇內(nèi)容托管服務(wù)110,由內(nèi)容托管服務(wù)110請(qǐng)求集合的個(gè)別無名稱內(nèi)容對(duì)象,并使用C0H自認(rèn)證名稱生成對(duì)集合中的每個(gè)無名稱內(nèi)容對(duì)象的請(qǐng)求。例如,裝置114可以生成包括所選的內(nèi)容托管服務(wù)的名稱前綴并包括各個(gè)無名稱內(nèi)容對(duì)象的C0H自認(rèn)證名稱的興趣。邊緣節(jié)點(diǎn)104和/或路由節(jié)點(diǎn)106可以使用興趣的名稱中的名稱前綴將興趣轉(zhuǎn)發(fā)到適當(dāng)?shù)膬?nèi)容托管服務(wù),內(nèi)容托管服務(wù)可以使用C0H自認(rèn)證名稱來選擇需要返回裝置114的無名稱內(nèi)容對(duì)象。
[0050]在一些實(shí)施例中,發(fā)布者可以將大的數(shù)據(jù)對(duì)象(例如電影流)分割成數(shù)據(jù)片段的大的集合,并創(chuàng)建這些片段中每個(gè)片段的無名稱內(nèi)容對(duì)象。發(fā)布者還可以創(chuàng)建集合的清單層級(jí),這允許客戶端從在集合的根清單中命名的任何內(nèi)容托管服務(wù)獲得內(nèi)容對(duì)象的任何復(fù)制品。
[0051]在一些實(shí)施例中,如果現(xiàn)有(例如原始)根清單不包括托管集合中的一個(gè)或多個(gè)無名稱內(nèi)容對(duì)象的內(nèi)容托管服務(wù)的名稱前綴,則內(nèi)容托管服務(wù)可以通過引用或通過包含創(chuàng)建合并現(xiàn)有的根清單的新根清單。裝置114(或任何其它消費(fèi)者)可以使用新根清單(因此還有內(nèi)容托管服務(wù)的名稱前綴)來獲得集合,原因是集合中的無名稱內(nèi)容對(duì)象仍具有與C0H自認(rèn)證名稱匹配作為現(xiàn)有的可信根清單的散列值。如果裝置114需要驗(yàn)證集合的真實(shí)性,則裝置114仍可以使用原始根清單(由發(fā)布者簽名的)來確保所接收的內(nèi)容對(duì)象全部具有與原始根清單或者由根清單直接地或者間接地引用的非根清單中指定的C0H自認(rèn)證名稱匹配的散列值。
[0052]圖2A圖解說明根據(jù)實(shí)施例的示例性數(shù)據(jù)集合202,示例性數(shù)據(jù)集合202包括已經(jīng)分割成多個(gè)無名稱內(nèi)容對(duì)象204的數(shù)據(jù),并包括無名稱內(nèi)容對(duì)象的清單層級(jí)。具體地,發(fā)布者可以將數(shù)據(jù)分割成η個(gè)無名稱內(nèi)容對(duì)象204,并且可以創(chuàng)建清單層級(jí)206,208,210。清單層級(jí)可以包括一級(jí)或多級(jí)根清單,使得較低等級(jí)的清單(例如根清單)通過其C0H自認(rèn)證名稱引用下一等級(jí)的清單(例如清單208)。盡管清單層級(jí)206,208,210描繪完整的樹,但實(shí)際上,清單層級(jí)可以包括保持按順序遍歷順序的任何樹結(jié)構(gòu)。例如,清單層級(jí)204中的任何清單可以包括針對(duì)無名稱內(nèi)容對(duì)象204、針對(duì)其它清單或者針對(duì)內(nèi)容對(duì)象204和其它清單的C0H自認(rèn)證名稱。同樣,清單層級(jí)204中的個(gè)別清單可以各自包括任意數(shù)目的C0H自認(rèn)證名稱,或者替代性地,發(fā)布者可以生成所有清單,以包括相同數(shù)目的C0H名稱。
[0053]例如,發(fā)布者可以為η個(gè)內(nèi)容對(duì)象204創(chuàng)建一組ρ個(gè)清單206。如果發(fā)布者生成包括m個(gè)無名稱內(nèi)容對(duì)象的C0H自認(rèn)證名稱的每個(gè)清單,則發(fā)布者生成總共包括所有η個(gè)內(nèi)容對(duì)象204的C0H值的p = n/m個(gè)清單。
[0054]例如,底層數(shù)據(jù)可以包括2GB視頻流。發(fā)布者可以將視頻流分割成η = 2百萬個(gè)無名稱內(nèi)容對(duì)象,并