專利名稱:移動(dòng)通信節(jié)點(diǎn)之間的內(nèi)容發(fā)現(xiàn)和傳送的制作方法
移動(dòng)通信節(jié)點(diǎn)之間的內(nèi)容發(fā)現(xiàn)和傳送背景諸如車輛中的衛(wèi)星導(dǎo)航設(shè)備或個(gè)人導(dǎo)航設(shè)備之類的移動(dòng)通信節(jié)點(diǎn),由步行者攜帶 的個(gè)人數(shù)字助理和由正在旅行的人用戶攜帶的移動(dòng)電話通常需要存儲(chǔ)內(nèi)容。例如,在衛(wèi)星 導(dǎo)航設(shè)備的情況下,內(nèi)容可以是地圖、公路建設(shè)位置、安全相機(jī)位置、興趣點(diǎn)位置、地標(biāo)位置 和類似的信息。取決于移動(dòng)通信節(jié)點(diǎn)的類型和涉及的應(yīng)用,特定內(nèi)容將變化。通常,由這樣的移動(dòng)通信節(jié)點(diǎn)所需的內(nèi)容需要被更新并分發(fā)到節(jié)點(diǎn)本身。一個(gè)選 項(xiàng)是安排移動(dòng)通信節(jié)點(diǎn)在每當(dāng)需要內(nèi)容時(shí)從網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)下載內(nèi)容,而并非將內(nèi)容存儲(chǔ)在 移動(dòng)通信節(jié)點(diǎn)本地。然而,這樣的按需系統(tǒng)產(chǎn)生非常大的通信成本。另一選項(xiàng)是將內(nèi)容存儲(chǔ)在移動(dòng)通信設(shè)備本地。在移動(dòng)設(shè)備具有足夠的存儲(chǔ)器資源 的情況下,這是切實(shí)可行的。然而,需要不斷地更新信息以保持新鮮,還需要以對(duì)用戶友好 的簡(jiǎn)單、可靠、快速且成本有效的方式將新內(nèi)容傳播到許多這樣的移動(dòng)通信設(shè)備。用于汽車中的衛(wèi)星導(dǎo)航設(shè)備是已知的,它們提供藍(lán)牙(商標(biāo))連通性,以允許設(shè)備 連接到也在車輛中的移動(dòng)電話。以此方式,衛(wèi)星導(dǎo)航設(shè)備能夠通過(guò)使用移動(dòng)電話的蜂窩網(wǎng) 絡(luò)的數(shù)據(jù)服務(wù)連接到因特網(wǎng)來(lái)從因特網(wǎng)數(shù)據(jù)中心獲取內(nèi)容。然而,此方法依賴于蜂窩電話 網(wǎng)絡(luò)來(lái)進(jìn)行內(nèi)容分發(fā)。不同的組織控制對(duì)蜂窩網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)的訪問(wèn),使得需要與那些不同 的組織協(xié)商才能進(jìn)行訪問(wèn)。此外,還在不同的區(qū)域使用不同的蜂窩技術(shù),使得可能需要對(duì)移 動(dòng)設(shè)備進(jìn)行硬件定制,以便用于那些不同的區(qū)域。還可能在網(wǎng)絡(luò)的不同的地理區(qū)域?qū)嵤┎?同的收費(fèi)計(jì)劃,使得最終用戶很可能會(huì)發(fā)現(xiàn)他們無(wú)意中比預(yù)期的增加了更大的賬單。用于汽車上的衛(wèi)星導(dǎo)航設(shè)備也是已知的,它們經(jīng)由FM無(wú)線電信道或基于衛(wèi)星的 分發(fā)接收從網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)廣播的內(nèi)容。此方法在其中覆蓋可用的地理區(qū)域起作用,雖然這 樣的覆蓋通常是受限的?;贔M的解決方案提供低比特率,并且限于可以獲得許可證并安 裝基礎(chǔ)結(jié)構(gòu)的城市和地區(qū)。基于衛(wèi)星的解決方案可以支持高得多的比特率,但是要求昂貴 的基礎(chǔ)結(jié)構(gòu)投資。下面所描述的各實(shí)施例不限于解決移動(dòng)通信節(jié)點(diǎn)之間的已知內(nèi)容發(fā)現(xiàn)和傳送過(guò) 程的任何或全部缺點(diǎn)的實(shí)現(xiàn)。概述下面呈現(xiàn)了本發(fā)明的簡(jiǎn)要概述,以便向讀者提供基本理解。本概述不是本發(fā)明的 詳盡概述,并且不標(biāo)識(shí)本發(fā)明的關(guān)鍵/重要元素,也不描述本發(fā)明的范圍。其唯一的目的是 以簡(jiǎn)化形式呈現(xiàn)此處所公開(kāi)的一些概念,作為稍后呈現(xiàn)的更詳細(xì)的描述的序言。常常需要移動(dòng)通信節(jié)點(diǎn)之間的內(nèi)容發(fā)現(xiàn)和內(nèi)容傳輸,例如,以同步安裝在車輛上 的衛(wèi)星導(dǎo)航設(shè)備、步行者手持式個(gè)人數(shù)字助理及其他移動(dòng)通信節(jié)點(diǎn)的地圖、交通熱點(diǎn)信息 等。在一實(shí)施例中,使用以特定方式設(shè)計(jì)并使用單個(gè)數(shù)據(jù)包發(fā)送的數(shù)據(jù)結(jié)構(gòu)的內(nèi)容發(fā)現(xiàn)過(guò) 程使得節(jié)點(diǎn)能標(biāo)識(shí)要傳輸?shù)奈募?,而同時(shí)使開(kāi)銷保持得較低。在一個(gè)實(shí)施例中,使用第一和 第二數(shù)據(jù)結(jié)構(gòu),每個(gè)數(shù)據(jù)結(jié)構(gòu)都是由關(guān)于要同步的文件的子集的稍微不同的信息構(gòu)成的。 在另一實(shí)施例中,使用單個(gè)基于樹(shù)的數(shù)據(jù)結(jié)構(gòu)。還描述了用于在兩個(gè)移動(dòng)通信節(jié)點(diǎn)之間傳 輸數(shù)據(jù)的過(guò)程。
4
通過(guò)結(jié)合附圖參考以下詳細(xì)描述,可更易于領(lǐng)會(huì)并更好地理解許多附帶特征。附圖描述根據(jù)附圖閱讀以下詳細(xì)描述,將更好地理解本發(fā)明,在附圖中
圖1是通信網(wǎng)絡(luò)的示意圖;圖2是通信節(jié)點(diǎn)處的方法的框圖;圖3是另一通信節(jié)點(diǎn)處的方法的框圖;圖4是作為動(dòng)態(tài)高速緩存中的文件的內(nèi)容發(fā)現(xiàn)過(guò)程的一部分的通信節(jié)點(diǎn)處的方 法的框圖;圖5是作為動(dòng)態(tài)高速緩存中的文件的內(nèi)容發(fā)現(xiàn)過(guò)程的另一部分的通信節(jié)點(diǎn)處的 方法的框圖;圖6是內(nèi)容發(fā)現(xiàn)過(guò)程中的節(jié)點(diǎn)之間的消息交換的消息序列圖表;圖7是作為固定高速緩存中的文件的內(nèi)容發(fā)現(xiàn)過(guò)程的一部分的方法的框圖;圖8是內(nèi)容發(fā)現(xiàn)過(guò)程中的節(jié)點(diǎn)之間的消息交換的消息序列圖表;圖9是節(jié)點(diǎn)處用于內(nèi)容傳輸?shù)姆椒ǖ目驁D;圖10是另一節(jié)點(diǎn)處用于內(nèi)容傳輸?shù)姆椒ǖ目驁D;圖11示出了其中可以實(shí)現(xiàn)通信網(wǎng)絡(luò)節(jié)點(diǎn)的實(shí)施例的示例性基于計(jì)算的設(shè)備。在各個(gè)附圖中使用相同的附圖標(biāo)記來(lái)指代相同的部件。詳細(xì)描述下面結(jié)合附圖提供的詳細(xì)描述旨在作為本發(fā)明示例的描述,并不旨在表示可以構(gòu) 建或使用本發(fā)明示例的唯一形式。本描述闡述了本發(fā)明示例的功能,以及用于構(gòu)建和操作 本發(fā)明示例的步驟的序列。然而,可以通過(guò)不同的示例來(lái)實(shí)現(xiàn)相同或等效功能和序列。雖然本示例此處被描述為和示為是在包括安裝在車輛上的衛(wèi)星導(dǎo)航設(shè)備的汽車 網(wǎng)絡(luò)中實(shí)現(xiàn)的,但是,所描述的系統(tǒng)是作為示例而不是限制來(lái)提供的。如本領(lǐng)域技術(shù)人員將 理解的,本發(fā)明示例適用于應(yīng)用在各種不同類型的具有移動(dòng)通信網(wǎng)絡(luò)節(jié)點(diǎn)的通信網(wǎng)絡(luò)中。術(shù)語(yǔ)“數(shù)據(jù)包”被用來(lái)指代具有頭部和有效負(fù)載的消息數(shù)據(jù)結(jié)構(gòu)。頭部被配置為 保留諸如地址細(xì)節(jié)之類的控制信息。有效負(fù)載被配置為保留一個(gè)或多個(gè)內(nèi)容塊。每一個(gè)塊 都是諸如文件或其他信息項(xiàng)之類的內(nèi)容片段的部分。每一個(gè)塊都具有指示塊將被配置為構(gòu) 成內(nèi)容片段的順序的序列標(biāo)識(shí)符。如上文所提及的,內(nèi)容常常本地存儲(chǔ)在移動(dòng)通信設(shè)備中。然而,需要不斷地更新信 息以使其保持新鮮,且還需要以對(duì)用戶友好的簡(jiǎn)單、可靠、快速且成本有效的方式將新內(nèi)容 散布到許多這樣的移動(dòng)通信設(shè)備。內(nèi)容可以是任何類型的信息,并且可包括圖像、列表、地 圖、數(shù)值信息、文本信息,且還包括諸如操作系統(tǒng)更新之類的控制信息或用于控制移動(dòng)通信 節(jié)點(diǎn)本身的其他指令或在移動(dòng)通信節(jié)點(diǎn)上提供的任何軟件應(yīng)用程序。內(nèi)容可以作為文件或 作為任何其他形式的信息來(lái)存儲(chǔ)。此處所描述的方法適合用于對(duì)等或流行的內(nèi)容分發(fā)系統(tǒng)中,由此移動(dòng)通信節(jié)點(diǎn)能 夠直接向彼此傳輸內(nèi)容(即,無(wú)需經(jīng)由諸如基站之類的靜態(tài)網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)節(jié)點(diǎn)來(lái)發(fā)送內(nèi) 容)。許多現(xiàn)有的對(duì)等內(nèi)容分發(fā)系統(tǒng)被設(shè)計(jì)成與固定通信節(jié)點(diǎn)一起使用,且不適合在通信節(jié) 點(diǎn)移動(dòng)的情況下使用,或者效率非常低。當(dāng)通信節(jié)點(diǎn)正在移動(dòng)時(shí),連接周期常常短暫,大約 幾秒。例如,在節(jié)點(diǎn)與安裝在機(jī)動(dòng)車輛或其他車輛上的衛(wèi)星導(dǎo)航設(shè)備形成整體或由步行者攜帶的情況下。除短暫之外,連接質(zhì)量通常也較差,且現(xiàn)有的對(duì)等內(nèi)容分發(fā)系統(tǒng)在設(shè)計(jì)時(shí)沒(méi) 有考慮到這些。另一因素是,與固定網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)相比,移動(dòng)通信節(jié)點(diǎn)通常具有有限的處理 資源。這是現(xiàn)有的對(duì)等內(nèi)容分發(fā)協(xié)議通常沒(méi)有考慮的另一特征。圖1是作為內(nèi)容分發(fā)云100的成員的多個(gè)移動(dòng)通信網(wǎng)絡(luò)節(jié)點(diǎn)101的示意圖。每一 個(gè)移動(dòng)節(jié)點(diǎn)101可以是能夠使用無(wú)線接口與一個(gè)或多個(gè)其他移動(dòng)節(jié)點(diǎn)101進(jìn)行通信的任何 合適的設(shè)備。即,移動(dòng)節(jié)點(diǎn)可以彼此不同,并包括不同的硬件和軟件應(yīng)用程序,只要它們能 夠使用任何合適的無(wú)線接口彼此進(jìn)行通信。無(wú)線接口可以是諸如如IEEE 802. 11標(biāo)準(zhǔn)所定 義的WiFi之類的短距離無(wú)線接口或任何其他合適的無(wú)線接口。例如,也可以使用藍(lán)牙(商 標(biāo))、IEEE 802. 15. 4/Zigbee。每一個(gè)移動(dòng)節(jié)點(diǎn)101都具有用于存儲(chǔ)從其他移動(dòng)節(jié)點(diǎn)中的 一個(gè)或多個(gè)分發(fā)的內(nèi)容的存儲(chǔ)器。可以任選地提供靜態(tài)信息站102。這是具有使用無(wú)線接 口與移動(dòng)節(jié)點(diǎn)101進(jìn)行通信的功能的靜態(tài)或固定通信網(wǎng)絡(luò)節(jié)點(diǎn)。對(duì)移動(dòng)節(jié)點(diǎn)101和任何靜 態(tài)信息站節(jié)點(diǎn)102中的全部設(shè)置了合適的通信協(xié)議軟件以實(shí)現(xiàn)此處所描述的方法??梢允褂渺o態(tài)信息站102來(lái)將內(nèi)容播種到內(nèi)容分發(fā)云100中。靜態(tài)信息站可以訪 問(wèn)要通過(guò)云分發(fā)的全部?jī)?nèi)容或僅內(nèi)容的子集。當(dāng)移動(dòng)節(jié)點(diǎn)101和靜態(tài)信息站102靠近時(shí), 移動(dòng)節(jié)點(diǎn)被安排成與信息站102同步。例如,靜態(tài)信息站可以是家庭網(wǎng)絡(luò)的一部分。在該 情況下,移動(dòng)通信節(jié)點(diǎn)101可以是,例如,PDA,而每當(dāng)用戶返回到他或她的家時(shí),PDA可以被 安排成將內(nèi)容與家庭網(wǎng)絡(luò)中的靜態(tài)信息站同步。替換地,可以在公共停車場(chǎng)提供靜態(tài)信息 站,以使得安裝在車輛上的移動(dòng)節(jié)點(diǎn)能夠在使用停車場(chǎng)的過(guò)程中將內(nèi)容與該靜態(tài)信息站同步ο在一個(gè)示例中,需要分發(fā)表示要分發(fā)的內(nèi)容的一組文件,f。每一個(gè)文件具有任何 合適的類型的用密碼簽名的文件證書(shū)。例如,文件證書(shū)包括文件SHAl散列、版本號(hào)、文件的 文本名稱以及指示一組文件的任選標(biāo)志。如本領(lǐng)域內(nèi)已知的,可以使用離線認(rèn)證機(jī)構(gòu)(CA) 來(lái)提供公鑰基礎(chǔ)結(jié)構(gòu)(PKI)。例如,可以給每一個(gè)設(shè)備提供CA的公鑰。每一個(gè)文件都可以 與被稱為文件的所有者的單個(gè)內(nèi)容提供商相關(guān)聯(lián),且一般而言,只有所有者才能夠生成文 件的新版本。當(dāng)更新文件時(shí),要求新證書(shū)帶有新文件散列和增大的版本號(hào)。一般而言,預(yù)期 版本號(hào)會(huì)單調(diào)地增大,如此,給定同一個(gè)文件的兩個(gè)證書(shū),任何設(shè)備都能夠確定哪一個(gè)是最 新的。每一個(gè)文件都可以具有與它相關(guān)聯(lián)的此處稱為文件標(biāo)識(shí)符和實(shí)例標(biāo)識(shí)符的兩個(gè) 文件標(biāo)識(shí)符。文件標(biāo)識(shí)符可以是例如與內(nèi)容所有者的公鑰串接在一起的文本文件名的 SHA-I散列。實(shí)例標(biāo)識(shí)符與文件和版本相關(guān)聯(lián),且可以是文件證書(shū)的SHA-I散列。通過(guò)比較 文件標(biāo)識(shí)符,可使節(jié)點(diǎn)能確定它們共同擁有的文件組,且通過(guò)比較實(shí)例標(biāo)識(shí)符,可使節(jié)點(diǎn)能 檢查它們是否具有相同的文件版本。每一個(gè)節(jié)點(diǎn)都具有用于進(jìn)行內(nèi)容分發(fā)的一組文件,并能夠向該組中添加或從該組 中刪除文件。對(duì)該組的文件的選擇可以作為用戶輸入的結(jié)果,或者也可以是以任何合適的 方式控制的自動(dòng)化過(guò)程。此組文件可以被視為存儲(chǔ)在每一個(gè)節(jié)點(diǎn)上的動(dòng)態(tài)高速緩存中。當(dāng)兩個(gè)節(jié)點(diǎn)101,102相遇時(shí),這些節(jié)點(diǎn)上的通信協(xié)議允許這些節(jié)點(diǎn)同步,以使得 指定的文件的較新的版本在節(jié)點(diǎn)之間傳輸(如果可用的話)??梢允褂梦募C書(shū)和PKI基 礎(chǔ)結(jié)構(gòu)或以任何其他合適的方式來(lái)驗(yàn)證所傳輸?shù)膬?nèi)容。如上文所提及的,在節(jié)點(diǎn)與安裝在機(jī)動(dòng)車輛或其他車輛中的衛(wèi)星導(dǎo)航設(shè)備形成整
6體或由步行者攜帶的情況下,有特定的挑戰(zhàn)。要求節(jié)點(diǎn)物理鄰近以便傳輸內(nèi)容。至少有兩 個(gè)因素會(huì)影響此動(dòng)作,支持內(nèi)容分發(fā)系統(tǒng)的車輛的比率和所需的內(nèi)容的流行度。同樣,如果 一個(gè)節(jié)點(diǎn)不太可能不久就遇到帶有相同文件的另一節(jié)點(diǎn),則一部分所傳輸?shù)奈募膬r(jià)值較 低。當(dāng)兩個(gè)節(jié)點(diǎn)101進(jìn)入彼此的無(wú)線通信范圍時(shí),它們需要快速而有效地建立連接, 且還需要標(biāo)識(shí)需要在節(jié)點(diǎn)101之間傳輸?shù)囊粋€(gè)或多個(gè)文件。可以使用用于在節(jié)點(diǎn)之間建立 連接的任何合適的方法,諸如802. 11協(xié)議系列的自組織(ad-hoc)模式。每一個(gè)節(jié)點(diǎn)都被 配置成每隔一定時(shí)間間隔廣播信標(biāo)消息。在優(yōu)選實(shí)施例中,建立連接的過(guò)程基于如上文所提及的802. 11協(xié)議系列的自組 織(ad-hoc)模式。通常,每隔100毫秒,802. 11網(wǎng)絡(luò)內(nèi)的一個(gè)節(jié)點(diǎn)發(fā)出其當(dāng)前SSID和 BSSID0當(dāng)一個(gè)節(jié)點(diǎn)啟動(dòng)時(shí),它進(jìn)入安靜狀態(tài),并進(jìn)行預(yù)定義信道列表的主動(dòng)掃描,以發(fā)現(xiàn)它 可以加入的網(wǎng)絡(luò)的(SSID,BSSID)對(duì)。為進(jìn)行主動(dòng)掃描,節(jié)點(diǎn)在每一個(gè)信道上傳送探針請(qǐng) 求。當(dāng)一個(gè)節(jié)點(diǎn)接收到探針請(qǐng)求時(shí),如果它相信它是被用信標(biāo)指示的最后節(jié)點(diǎn),則它用包含 SSID,BSSID對(duì)的探針響應(yīng)作出響應(yīng)。如果發(fā)現(xiàn)了被內(nèi)容分發(fā)云使用的SSID,那么,該節(jié)點(diǎn) 進(jìn)入已加入狀態(tài),并將此信息發(fā)信號(hào)通知到該節(jié)點(diǎn)所連接到的操作系統(tǒng)。節(jié)點(diǎn)保持在已加入狀態(tài),只要每隔指定的秒數(shù)都能接收到一個(gè)或多個(gè)信標(biāo)。例如, 這可以每隔3秒或每隔1秒進(jìn)行一次。如果沒(méi)有接收到信標(biāo),那么,節(jié)點(diǎn)如上文所描述的使 用探針請(qǐng)求進(jìn)行掃描。例如,每秒地發(fā)送探測(cè)請(qǐng)求,且如果在10秒內(nèi)沒(méi)有發(fā)現(xiàn)其他節(jié)點(diǎn),則 該節(jié)點(diǎn)進(jìn)入安靜狀態(tài),并向操作系統(tǒng)發(fā)送已斷開(kāi)連接的信號(hào)。對(duì)于移動(dòng)節(jié)點(diǎn),如上文所提及的,用于連通性的時(shí)間窗口非常小。迅速地發(fā)現(xiàn)節(jié)點(diǎn) 以最大化此窗口十分重要??梢孕薷淖越M織(ad-hoc)模式802. 11過(guò)程的各種默認(rèn)計(jì)時(shí)器 和參數(shù),以縮短節(jié)點(diǎn)發(fā)現(xiàn)時(shí)間。此外,還可以修改自組織(ad-hoc)模式過(guò)程,以確保實(shí)現(xiàn)如 上文所描述的有源探測(cè),而并非進(jìn)行被動(dòng)掃描。例如,當(dāng)一個(gè)節(jié)點(diǎn)從已加入狀態(tài)變換到安靜 狀態(tài)時(shí),可以頻繁地執(zhí)行主動(dòng)掃描,而沒(méi)有任何睡眠過(guò)程。同樣,節(jié)點(diǎn)可以保持在已加入狀 態(tài),只要每隔1秒地接收到一個(gè)或多個(gè)信標(biāo),如果這種情況未能發(fā)生,就會(huì)立即觸發(fā)斷開(kāi)連 接。802. 11協(xié)議的自組織(ad-hoc)模式包括了信標(biāo)抑制過(guò)程,此處認(rèn)識(shí)到,該過(guò)程可 能會(huì)對(duì)通信范圍內(nèi)的節(jié)點(diǎn)的發(fā)現(xiàn)時(shí)間造成負(fù)面影響。當(dāng)一個(gè)節(jié)點(diǎn)由于無(wú)意中聽(tīng)到針對(duì)其當(dāng) 前SSID的另一信標(biāo)而停止發(fā)送信標(biāo)時(shí),會(huì)發(fā)生信標(biāo)抑制。如此,此處所描述的方法使用顯 式的廣告過(guò)程,藉此內(nèi)容分發(fā)云中的每一個(gè)節(jié)點(diǎn)都反復(fù)地廣播宣告其存在的廣告。例如,每 隔k毫秒地廣播廣告,其中,k大約是100毫秒或任何其他合適的值。以此方式,在k毫秒 之后,內(nèi)容分發(fā)云中的在彼此的通信范圍內(nèi)的所有節(jié)點(diǎn)都將發(fā)現(xiàn)彼此。如上文所提及的,移動(dòng)節(jié)點(diǎn)可能只有十分短的機(jī)會(huì)窗口,約為幾秒,用于交換內(nèi) 容。因此,希望標(biāo)識(shí)需要利用盡可能少的通信往返行程進(jìn)行傳輸?shù)奈募?。往返行程是將?息從源節(jié)點(diǎn)發(fā)送到目的地節(jié)點(diǎn)以及源節(jié)點(diǎn)從目的地節(jié)點(diǎn)接收到應(yīng)答所需的時(shí)間。該過(guò)程還 需要是穩(wěn)健的,因?yàn)橄⒖赡軙?huì)由于移動(dòng)節(jié)點(diǎn)之間的連接質(zhì)量差而導(dǎo)致容易丟失。術(shù)語(yǔ)“源 節(jié)點(diǎn)”是指通信網(wǎng)絡(luò)的一個(gè)節(jié)點(diǎn),該節(jié)點(diǎn)被配置為將存儲(chǔ)在該節(jié)點(diǎn)上的內(nèi)容傳送到通信網(wǎng) 絡(luò)中的另一節(jié)點(diǎn)。術(shù)語(yǔ)“目的地節(jié)點(diǎn)”是指通信網(wǎng)絡(luò)的一個(gè)節(jié)點(diǎn),該節(jié)點(diǎn)被配置為接受從通 信網(wǎng)絡(luò)中的另一節(jié)點(diǎn)傳送的內(nèi)容。通信網(wǎng)絡(luò)的單個(gè)節(jié)點(diǎn)可以既作為源節(jié)點(diǎn)又作為目的地節(jié)點(diǎn)來(lái)操作?,F(xiàn)在將參考圖2的框圖來(lái)描述諸如圖1的內(nèi)容分發(fā)云100之類的通信網(wǎng)絡(luò)中的源 節(jié)點(diǎn)處的方法。此方法包括從源節(jié)點(diǎn)廣播廣告。在通信網(wǎng)絡(luò)中的目的地節(jié)點(diǎn)接收這些廣告, 并可以使用它們來(lái)標(biāo)識(shí)需要利用很少的往返行程傳輸?shù)奈募?如下面參考圖3所描述的)。 此外,兩個(gè)節(jié)點(diǎn)還能夠有效地確定它們共同擁有哪些文件以及哪一個(gè)節(jié)點(diǎn)具有最新的版本 (如下面參考圖3所描述的)。這種類型的過(guò)程可以稱為動(dòng)態(tài)內(nèi)容的內(nèi)容發(fā)現(xiàn)過(guò)程。源節(jié)點(diǎn)訪問(wèn)(圖2的框200)其存儲(chǔ)了用于內(nèi)容分發(fā)的文件的動(dòng)態(tài)高速緩存。如上 文所提及的,每一個(gè)文件都具有名稱、版本和公鑰。對(duì)于每一個(gè)文件,源節(jié)點(diǎn)生成兩個(gè)標(biāo)識(shí) 符(框201)?;谖募拿Q和公鑰,為文件生成文件標(biāo)識(shí)符。基于文件的名稱、公鑰和版 本,為文件生成實(shí)例標(biāo)識(shí)符。源節(jié)點(diǎn)還根據(jù)文件和每一個(gè)文件的實(shí)例標(biāo)識(shí)符生成全局標(biāo)識(shí) 符(參見(jiàn)圖2的框20 。即,每個(gè)動(dòng)態(tài)高速緩存都只有一個(gè)全局標(biāo)識(shí)符。源節(jié)點(diǎn)將全局標(biāo) 識(shí)符以及關(guān)于其動(dòng)態(tài)高速緩存中的文件的總數(shù)的信息嵌入到廣告消息中(圖2的框203)。 如上文所描述的,源節(jié)點(diǎn)反復(fù)地廣播廣告(框204)。目的地節(jié)點(diǎn)接收(圖3的框300)廣告,如在圖2的框204廣播的廣告。目的地節(jié) 點(diǎn)任選地檢查(框301)在其動(dòng)態(tài)高速緩存中它是否具有比廣告發(fā)送者更少的文件。它使 用接收到的廣告中關(guān)于源節(jié)點(diǎn)動(dòng)態(tài)高速緩存中的文件的數(shù)量的信息來(lái)執(zhí)行此項(xiàng)動(dòng)作。進(jìn)行此任選檢查是為了減少完成關(guān)于在兩個(gè)節(jié)點(diǎn)之間共同擁有哪些文件以及哪 一個(gè)節(jié)點(diǎn)具有這些文件中的每一個(gè)文件的最新版本的協(xié)商所需的消息的數(shù)量。在其動(dòng)態(tài)高 速緩存中具有最少數(shù)量的文件的節(jié)點(diǎn)開(kāi)始該過(guò)程,以便減少消息的數(shù)量。該過(guò)程是可行的, 無(wú)需進(jìn)行框301中的檢查,在該情況下,廣告不需要包括關(guān)于適當(dāng)節(jié)點(diǎn)的動(dòng)態(tài)高速緩存中 保留的文件的數(shù)量的信息。如果目的地節(jié)點(diǎn)的動(dòng)態(tài)高速緩存中的文件比源節(jié)點(diǎn)的文件少,則目的地節(jié)點(diǎn)執(zhí)行 如圖3所示的過(guò)程。否則,目的地節(jié)點(diǎn)繼續(xù)廣播廣告(框302)。為了判斷是否要與源節(jié)點(diǎn)交換文件,目的地節(jié)點(diǎn)將其全局標(biāo)識(shí)符與接收到的廣告 中的全局標(biāo)識(shí)符進(jìn)行比較(框30 。如果發(fā)現(xiàn)了區(qū)別,那么,源節(jié)點(diǎn)和目的地節(jié)點(diǎn)具有不同 的內(nèi)容文件。節(jié)點(diǎn)任選地被配置為存儲(chǔ)源節(jié)點(diǎn)的地址以及它們完全與其交換了它們的動(dòng)態(tài) 高速緩存內(nèi)容的任何源節(jié)點(diǎn)的全局標(biāo)識(shí)符(框304)。這防止對(duì)于已經(jīng)被同步的節(jié)點(diǎn)不必要 地進(jìn)行內(nèi)容發(fā)現(xiàn)過(guò)程。接下來(lái)進(jìn)行用于判定共同保留了哪些動(dòng)態(tài)緩存文件以及哪個(gè)節(jié)點(diǎn)具有這些文件 的最新版本(框30幻。下面將參考圖4和5比較詳細(xì)地描述此過(guò)程。使用任何合適的內(nèi)容 傳輸過(guò)程,例如,IP上的TCP或任何其他合適的基于數(shù)據(jù)包的內(nèi)容傳輸過(guò)程,傳輸已標(biāo)識(shí)的 文件(框306)。在同步之后,接收到的廣告中的源節(jié)點(diǎn)的地址和全局標(biāo)識(shí)符任選地存儲(chǔ)在 目的地節(jié)點(diǎn)上(框307)。因?yàn)楣?jié)點(diǎn)的動(dòng)態(tài)高速緩存中的文件組可以是任意大的,并且因?yàn)樵跀?shù)據(jù)包的有效 負(fù)載中可以傳輸?shù)臄?shù)據(jù)量是有限的,因此,難以以有效的方式實(shí)現(xiàn)內(nèi)容發(fā)現(xiàn)過(guò)程。為了尋 址,使用這些數(shù)據(jù)結(jié)構(gòu)來(lái)在節(jié)點(diǎn)之間傳輸關(guān)于動(dòng)態(tài)高速緩存中的文件的數(shù)據(jù),且這些數(shù)據(jù) 結(jié)構(gòu)被以特定方式設(shè)計(jì),以便能簡(jiǎn)單而有效地實(shí)現(xiàn)內(nèi)容發(fā)現(xiàn)過(guò)程。在特定示例中,數(shù)據(jù)結(jié)構(gòu)基于Bloom(布隆)過(guò)濾器。然而,不一定要使用Bloom 過(guò)濾器??梢允褂媚芤允沟脭?shù)據(jù)結(jié)構(gòu)可被用于確定特定文件是否是一組已編碼的文件的成員而不會(huì)提供錯(cuò)誤否定的方式編碼文件組成員資格的任何合適的數(shù)據(jù)結(jié)構(gòu)。在B. Bloom所 著的 “Space/time trade-offs in hash coding with allowable errors (具有容許差錯(cuò) 的散列編碼中的空間/時(shí)間權(quán)衡)” (ACM通信,13 (7) :422-426,1970)中詳細(xì)描述了 Bloom 過(guò)濾器OBloom過(guò)濾器包括某一長(zhǎng)度的比特陣列,其中,對(duì)于給定集的每一個(gè)項(xiàng)目,對(duì)于j 個(gè)散列函數(shù)的給定集合中的所有散列函數(shù),haS~(item)th(散列J項(xiàng)目)th)比特被置位。 為了檢查集合中是否存在一項(xiàng)目,檢查每一個(gè)has、(item)th,且如果每一比特都被置位,那 么,bloom過(guò)濾器被視為包含該項(xiàng)目。Bloom過(guò)濾器不會(huì)產(chǎn)生錯(cuò)誤否定,但是,它們可以產(chǎn)生 錯(cuò)誤肯定。一般而言,在可以在給定長(zhǎng)度的Bloom過(guò)濾器中編碼的項(xiàng)目的數(shù)量與錯(cuò)誤肯定 的概率之間有折衷。在某些實(shí)施例中,使用了完全的Bloom過(guò)濾器,其中,在Bloom過(guò)濾器中編碼了動(dòng) 態(tài)高速緩存中的所有文件的文件標(biāo)識(shí)符。然而,在其他實(shí)施例中,使用部分Bloom過(guò)濾器, 其中只編碼了文件標(biāo)識(shí)符的子集。例如,頭1000個(gè)或頭500個(gè)文件標(biāo)識(shí)符。在特定實(shí)施例中,提供了帶有陣列長(zhǎng)度1擬88比特的bloom過(guò)濾器,該過(guò)濾器被 安排成與數(shù)據(jù)包有效負(fù)載的大小相同。通過(guò)使用由Mitzenmacher (M. Mitzenmacher.壓縮 bloom過(guò)濾器.IEEE/ACM關(guān)于聯(lián)網(wǎng)的學(xué)報(bào),10(5),2002)給出的啟發(fā)式法,使用12個(gè)散列函 數(shù),每部分Bloom過(guò)濾器地編碼1000個(gè)文件標(biāo)識(shí)符。這會(huì)產(chǎn)生0. 0巧4%的錯(cuò)誤肯定概率。 然而,使用這些特定Bloom過(guò)濾器參數(shù)不是不可缺少的。現(xiàn)在將參考圖4、5和6描述用于確定要在兩個(gè)節(jié)點(diǎn)A和B之間傳輸?shù)倪m當(dāng)文件的 協(xié)商方案。圖4和5的過(guò)程更詳細(xì)地描述了在圖3的框305中的高層所描述的過(guò)程。假設(shè) 節(jié)點(diǎn)B是在其動(dòng)態(tài)高速緩存中有較少文件的節(jié)點(diǎn)(雖然如上文所提及的,這不是必需的)。節(jié)點(diǎn)B從節(jié)點(diǎn)A接收廣告602。廣告包括如上文所提及的全局標(biāo)識(shí)符,并且任選地 包括關(guān)于A的動(dòng)態(tài)高速緩存中的文件的數(shù)量的細(xì)節(jié)。通過(guò)使用此信息,B能夠確定它在其 動(dòng)態(tài)高速緩存中具有較少的文件,以及在A與B之間需要傳輸至少一個(gè)文件。節(jié)點(diǎn)B還生成第一數(shù)據(jù)結(jié)構(gòu),并將其發(fā)送到節(jié)點(diǎn)A。此第一數(shù)據(jù)結(jié)構(gòu)由動(dòng)態(tài)高速緩 存處指定的文件組的文件標(biāo)識(shí)符構(gòu)成(圖4的框400)。指定的文件組可以是動(dòng)態(tài)高速緩存 中的文件的子集,或者也可以是所有那些文件。上文參考圖2描述了文件標(biāo)識(shí)符。節(jié)點(diǎn)B還生成第二數(shù)據(jù)結(jié)構(gòu),并將其發(fā)送到節(jié)點(diǎn)A。此第二數(shù)據(jù)結(jié)構(gòu)由相同的文件 的實(shí)例標(biāo)識(shí)符構(gòu)成(圖4的框401)。上文參考圖2描述了實(shí)例標(biāo)識(shí)符。 節(jié)點(diǎn)B創(chuàng)建第一和第二數(shù)據(jù)結(jié)構(gòu)并在消息603中將它們發(fā)送到節(jié)點(diǎn)A (參見(jiàn)圖6)。 在一個(gè)示例中,此消息是包括兩部分Bloom過(guò)濾器(都使用可用比特的一半)的全幀(或 數(shù)據(jù)包)。第一部分Bloom過(guò)濾器是從B的頭500個(gè)本地文件的文件標(biāo)識(shí)符生成的。第二 部分Bloom過(guò)濾器是從B的頭500個(gè)本地文件的實(shí)例標(biāo)識(shí)符生成的。
設(shè)備A從B接收第一數(shù)據(jù)結(jié)構(gòu)和第二數(shù)據(jù)結(jié)構(gòu),并繼續(xù)以進(jìn)行圖5的框501和502 所描述的檢查。參考圖5,節(jié)點(diǎn)A從節(jié)點(diǎn)B接收第一和第二數(shù)據(jù)結(jié)構(gòu)(框500)。對(duì)于其動(dòng) 態(tài)高速緩存中的每一個(gè)文件,節(jié)點(diǎn)A檢查該文件的文件標(biāo)識(shí)符是否被包括在第一數(shù)據(jù)結(jié)構(gòu) 中(框501)。如果包括,則就第二數(shù)據(jù)結(jié)構(gòu)中是否沒(méi)有該文件的實(shí)例標(biāo)識(shí)符進(jìn)行檢查(框 502)。如果如此,則選擇該文件作為兩個(gè)節(jié)點(diǎn)共享的,但是帶有不同的版本文件(錯(cuò)誤肯定 的情況除外)(框50 。在該情況下,向B發(fā)送包括所選文件的細(xì)節(jié)的數(shù)據(jù)結(jié)構(gòu)(框504)。然后,A通過(guò)發(fā)送由A中的所有文件的文件標(biāo)識(shí)符構(gòu)成的全幀大小的部分bloom過(guò)濾器(消 息604)來(lái)對(duì)B作出響應(yīng),文件標(biāo)識(shí)符被表示在從B接收到的第一數(shù)據(jù)結(jié)構(gòu)中,但是,認(rèn)為不 被表示在從B接收到的第二數(shù)據(jù)結(jié)構(gòu)中。全幀大小的部分Bloom過(guò)濾器是由A發(fā)送到B的。B從A接收全幀大小的部分Bloom過(guò)濾器,并比較B上存在的文件的高速緩存,以 確定那些文件中的哪些被表示在全幀大小的部分Bloom過(guò)濾器中。對(duì)于每一個(gè)這樣的文 件,B發(fā)送(60 包含B的文件版本以及A判定是向B推該文件還是從B拉該文件所依據(jù) 的其他文件信息的文件信息記錄(消息606)。接著發(fā)生批量?jī)?nèi)容傳輸過(guò)程607,并且對(duì)于 下一已標(biāo)識(shí)的文件608重復(fù)該過(guò)程。再次參考圖4,節(jié)點(diǎn)B從節(jié)點(diǎn)A接收數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)包括組中兩個(gè)節(jié)點(diǎn)共享 但是帶有不同的版本的所有已標(biāo)識(shí)文件的細(xì)節(jié)(框40幻。對(duì)于每一個(gè)已標(biāo)識(shí)文件,節(jié)點(diǎn)B 將文件信息記錄發(fā)送到節(jié)點(diǎn)A (框40 ,并從A接收推或拉該文件的請(qǐng)求(框404)。然后, 進(jìn)入內(nèi)容傳輸過(guò)程,以傳輸文件(框40 ,并且對(duì)每一個(gè)已標(biāo)識(shí)文件重復(fù)此過(guò)程,如圖4所 示的??梢允褂萌魏魏线m的內(nèi)容傳輸過(guò)程。在圖6中概述了圖4和5的方法,圖6表示了節(jié)點(diǎn)A 600,以及B 601和在這些節(jié) 點(diǎn)之間發(fā)送的消息。箭頭的方向指示發(fā)送消息的方向,而頁(yè)面上箭頭的相對(duì)位置指示消息 在時(shí)間上的順序??梢詫?duì)方法進(jìn)行各種修改。例如,部分Bloom過(guò)濾器可以由任何合適的預(yù)先指定 數(shù)目個(gè)隨機(jī)或以任何其他合適的方式選擇的本地文件構(gòu)成。在另一示例中,代替使用兩個(gè) 部分Bloom過(guò)濾器,可以使用單個(gè)Bloom過(guò)濾器來(lái)編碼第一和第二數(shù)據(jù)結(jié)構(gòu)兩者的數(shù)據(jù)。 即,第一和第二數(shù)據(jù)結(jié)構(gòu)可以是整體的。在特定示例中,動(dòng)態(tài)高速緩存dd中的每一個(gè)文件i都具有文件名fnamei和16比 特版本Versioni以及與它相關(guān)聯(lián)的其所有者的公鑰pkit)通過(guò)使用SHA-I散列函數(shù)H,節(jié)點(diǎn) 為dd中的每一個(gè)文件i生成兩個(gè)唯一性160比特標(biāo)識(shí)符File Identifieri = H(concat (fnamei; Pki)) ( f 牛t示i = H(concat (
j, Pki)))以及 Instance Identifieri = H(concat (J^namei, pk" version》)(實(shí)例標(biāo)識(shí)符 i =H(concat (文件名 ^pki,版本,)))0為dd中的按文件標(biāo)識(shí)符排序的所有η個(gè)文件生成表示dd的全部?jī)?nèi)容的單個(gè) 160 比特散列密鑰:Global Identifier = H (concat (InstanceIdentifier1, Instance Identifier^ …,Instance Identifier》)(全局標(biāo)識(shí)符=H(concat (實(shí)例標(biāo)識(shí)符!、實(shí)例 標(biāo)識(shí)符2、…實(shí)例標(biāo)識(shí)符 )))。在另一實(shí)施例中,可以使用散列鏈接生成全局標(biāo)識(shí)符。全局 標(biāo)識(shí)符是使用一致排序生成的,以使得帶有相同文件和版本的兩個(gè)節(jié)點(diǎn)能具有相同的全局 標(biāo)識(shí)符。可以使用任何合適的排序,只要一致地使用即可。每一設(shè)備都在其周期性的廣告 中嵌入其全局標(biāo)識(shí)符。如此,任何設(shè)備都可以將其160比特全局標(biāo)識(shí)符與另一設(shè)備(剛才 聽(tīng)到了其廣告)的全局標(biāo)識(shí)符進(jìn)行比較,并快速地確定這些設(shè)備是否具有相同或不同的內(nèi) 容文件。因?yàn)槿謽?biāo)識(shí)符只占用20個(gè)字節(jié),因此,周期性的廣告保持很小。通信網(wǎng)絡(luò)中的每一個(gè)節(jié)點(diǎn)也可以在固定內(nèi)容高速緩存中保持固定的內(nèi)容文件。預(yù) 計(jì)固定內(nèi)容在所有節(jié)點(diǎn)上存在,且固定內(nèi)容的示例可以是操作系統(tǒng)文件?,F(xiàn)在將參考圖7描述固定內(nèi)容發(fā)現(xiàn)的過(guò)程的示例。每一個(gè)節(jié)點(diǎn)都生成用于嵌入 在廣告中的信息,并如現(xiàn)在所描述的,廣播此廣告。節(jié)點(diǎn)將其固定文件分組為2k個(gè)組(框700)。例如,對(duì)于每一個(gè)固定文件,取文件標(biāo)識(shí)符的k比特前綴(如上文參考圖2所描述 的)。此文件標(biāo)識(shí)符可以是內(nèi)容提供商公鑰和文件的文本名稱的散列。將具有相同前綴的 所有文件都被放進(jìn)一個(gè)組中。可以選擇k的值,以使得每一個(gè)組平均具有m個(gè)文件,例如, m = 16,k = 4。這會(huì)產(chǎn)生2k個(gè)組,表示為而到&k。如此使用文件標(biāo)識(shí)符,以使得文件獨(dú)立 于它們的版本被分組。對(duì)于每一個(gè)組,由節(jié)點(diǎn)上的處理器自動(dòng)地生成組散列(框701)。對(duì)于每一個(gè)文件, 通過(guò)取文件證書(shū)的散列來(lái)創(chuàng)建實(shí)例標(biāo)識(shí)符。然后,使用每一個(gè)組中的文件的實(shí)例標(biāo)識(shí)符值 對(duì)這些文件進(jìn)行排序,且通過(guò)散列鏈接,來(lái)生成組散列。即,遞歸地散列每一個(gè)實(shí)例標(biāo)識(shí)符, 例如,H(IdFile4, H(IdFile3, H(IdFile2, H(IdFilel))))。其中,H 表示散列函數(shù)。然后,使用節(jié)點(diǎn)處的處理器自動(dòng)地創(chuàng)建Merkle樹(shù)(框702)。在R. Merkle的A digital signature based on a conventional encryption function (基于常規(guī)力口密函數(shù) 的數(shù)字簽名)(在Crypto' 87,1987中)中詳細(xì)描述了 Merkle樹(shù)。Merkle樹(shù)的每一行是 通過(guò)取來(lái)自前一行的對(duì)并將它們散列在一起來(lái)生成。組散列值是樹(shù)的葉子,并根據(jù)它們的k 比特前綴被排序。對(duì)于空組,使用空值令牌。Merkle樹(shù)的根是整個(gè)固定文件集的唯一性散 列,由所使用的k的值來(lái)參數(shù)化。任何節(jié)點(diǎn)都可以通過(guò)比較相同的k值的根散列來(lái)確定它 們的固定集是否相同。如果根散列不同,那么,節(jié)點(diǎn)具有不同的內(nèi)容。在信標(biāo)(框703)和 廣播(框704)中包括了根散列和k的值。如果一節(jié)點(diǎn)檢測(cè)到其根散列不同于另一節(jié)點(diǎn)的根散列,則它執(zhí)行遞歸過(guò)程,以確 定在兩個(gè)節(jié)點(diǎn)處的固定高速緩存中哪些文件不同?,F(xiàn)在將參考圖8對(duì)此進(jìn)行描述。節(jié)點(diǎn)A 800廣播由節(jié)點(diǎn)B 801接收的廣告802。節(jié)點(diǎn)B 801處的處理器自動(dòng)地檢 查廣告中的根散列是否不同于節(jié)點(diǎn)B的本地根散列(框803)。如果是,則節(jié)點(diǎn)B處的處理 器選擇節(jié)點(diǎn)B的Merkle樹(shù)的第j層,并在數(shù)據(jù)包804中將其發(fā)送到節(jié)點(diǎn)A。第j層是基于 被通信協(xié)議使用的數(shù)據(jù)包的有效負(fù)載大小來(lái)選擇的。例如,如此選擇Merkle樹(shù)的第j層, 以使得2、20 <有效負(fù)載大小。在節(jié)點(diǎn)A處,處理器自動(dòng)地檢查805其本地Merkle樹(shù)的第 j層中的哪些散列不同于在數(shù)據(jù)包804中接收到的那些散列。對(duì)于那些不同的散列,節(jié)點(diǎn)A 使用數(shù)據(jù)包806將其本地Merkle樹(shù)的相關(guān)聯(lián)子樹(shù)層發(fā)送到節(jié)點(diǎn)B。然后,節(jié)點(diǎn)B檢查其本 地Merkle樹(shù)的該子樹(shù)層中的哪些散列不同于在數(shù)據(jù)包806中接收到的那些散列。它基于 那些不同的散列來(lái)選擇其本地Merkle樹(shù)的相關(guān)聯(lián)子樹(shù)層,并使用數(shù)據(jù)包808將該子樹(shù)層發(fā) 回到節(jié)點(diǎn)A。重復(fù)此過(guò)程,直到可以將可能不同的組的集合的全部散列放進(jìn)一個(gè)數(shù)據(jù)包中。 在某些實(shí)施例中,將兩個(gè)組放入一個(gè)數(shù)據(jù)包中,從而使所需的數(shù)據(jù)包的數(shù)量低一些,且這會(huì) 影響m的值的選擇。這提供了有效地允許一個(gè)節(jié)點(diǎn)利用較低開(kāi)銷檢測(cè)不同的文件的非常有效的算法。 例如,在使用2304字節(jié)的有效負(fù)載大小的一實(shí)現(xiàn)中,可以將115個(gè)散列裝入單個(gè)數(shù)據(jù)包中。 在此情況下,當(dāng)m= 16時(shí),組具有57個(gè)以上的文件的可能性較低。(當(dāng)m= 16時(shí),單個(gè)組 具有56個(gè)條目或更多的概率是10_15。在此情況下,僅Merkle樹(shù)的一個(gè)層需要交換,以便發(fā) 現(xiàn)不同的文件,其中,固定集中的文件的數(shù)量少于大致3650個(gè)。如此,該過(guò)程能夠在幾個(gè)消 息中迅速而有效地標(biāo)識(shí)不同的文件。可以向固定文件高速緩存中添加文件并從其中刪除文件。添加文件會(huì)影響單個(gè) 組,并且該文件被映射到單個(gè)組??梢詫?duì)已刪除的文件保持永久性記錄。對(duì)文件進(jìn)行分組可以在添加或刪除一個(gè)或多個(gè)文件的情況下有效地確定需要哪些組。例如,這樣進(jìn)行分組, 以使得當(dāng)添加一個(gè)文件時(shí),只影響單個(gè)組。然后,如果添加兩個(gè)文件,每一個(gè)文件被添加在 不同的組中,則可以有效地確定哪兩個(gè)組已被影響。在發(fā)現(xiàn)了第一不同的文件之后,不需要 重復(fù)內(nèi)容發(fā)現(xiàn)過(guò)程?!┦褂蒙衔乃枋龅姆椒z測(cè)到固定文件高速緩存中的不同的文件,就可以使 用任何合適的內(nèi)容傳輸過(guò)程來(lái)在兩個(gè)節(jié)點(diǎn)之間傳輸該文件。例如,可以使用IP上的TCP,或 任何其他合適的基于數(shù)據(jù)包的內(nèi)容傳輸過(guò)程。在某些實(shí)施例中,現(xiàn)在將參考圖9和10描述與此處所描述的方法一起使用的內(nèi)容 傳輸過(guò)程。此內(nèi)容傳輸過(guò)程利用每一個(gè)節(jié)點(diǎn)預(yù)先知道要傳輸?shù)奈募拇笮〉哪芰Α@纾?在圖6的過(guò)程中,文件大小信息對(duì)于當(dāng)前具有該文件的節(jié)點(diǎn)是已知的,并該信息作為文件 信息記錄的一部分被發(fā)送到其他節(jié)點(diǎn)(圖6的消息60 。在圖8的過(guò)程中,將接收已標(biāo)識(shí) 文件的最新版本的節(jié)點(diǎn)要么從其他節(jié)點(diǎn)請(qǐng)求文件大小信息,要么向它自動(dòng)地發(fā)送該信息。圖9是通信網(wǎng)絡(luò)中的源節(jié)點(diǎn)處的方法的框圖。源節(jié)點(diǎn)可以是圖1的通信節(jié)點(diǎn)中的 任一個(gè),且它也可以作為目的地節(jié)點(diǎn)來(lái)操作。源節(jié)點(diǎn)具有訪問(wèn)(框901)要傳輸?shù)侥康牡毓?jié)點(diǎn)的文件或其他內(nèi)容片段的輸入。 源節(jié)點(diǎn)包括任何合適的類型的處理器,該處理器被安排成將文件或其他內(nèi)容片段拆分為塊 (參見(jiàn)框90 ,其中,一個(gè)塊具有預(yù)先指定的大小。處理器為每一個(gè)塊創(chuàng)建具有一個(gè)比特的 發(fā)送矢量(參見(jiàn)框90 ,且此矢量被初始化,例如,以使得每個(gè)比特都具有零值。當(dāng)初始化了發(fā)送矢量時(shí),該矢量中的所有比特都被視為被復(fù)位。然后,發(fā)生將塊發(fā) 送到目的地節(jié)點(diǎn)的過(guò)程(參見(jiàn)圖9的框904)。對(duì)于發(fā)送矢量中的任何復(fù)位的比特,處理器 被配置為將與該復(fù)位的比特相對(duì)應(yīng)的塊發(fā)送到目的地節(jié)點(diǎn)。對(duì)于±夬,重復(fù)此過(guò)程,且當(dāng)發(fā)送 矢量中的所有比特都被置位時(shí)結(jié)束(框90幻。在此過(guò)程中,如果從目的地節(jié)點(diǎn)接收到接收 矢量(框906),則使用該接收矢量代替發(fā)送矢量。在下文中參考圖10更詳細(xì)地描述了接 收矢量。當(dāng)發(fā)送塊時(shí),它們可以構(gòu)成例如數(shù)據(jù)包,且一個(gè)或多個(gè)塊構(gòu)成一個(gè)數(shù)據(jù)包的有效負(fù) 載,并且數(shù)據(jù)包具有包括諸如源節(jié)點(diǎn)和目的地節(jié)點(diǎn)的細(xì)節(jié)之類的控制信息的頭部。圖10是目的地節(jié)點(diǎn)處的方法的框圖。目的地節(jié)點(diǎn)訪問(wèn)關(guān)于要傳輸?shù)臄?shù)據(jù)塊的數(shù) 量的信息(圖10的框1001)。以任何合適的方式獲取此信息。例如,源節(jié)點(diǎn)和目的地節(jié)點(diǎn)之 間的連接可能已經(jīng)建立,且源節(jié)點(diǎn)可以將此信息提供給目的地節(jié)點(diǎn)。目的地節(jié)點(diǎn)包括處理 器,該處理器被安排成為要傳輸?shù)拿恳粋€(gè)塊創(chuàng)建具有一個(gè)比特的接收矢量(圖10的1002)。 初始化接收矢量,以便每一個(gè)比特都被視為被復(fù)位。如上文所提及的,源節(jié)點(diǎn)和目的地節(jié)點(diǎn)之間的連接已經(jīng)建立,且目的地節(jié)點(diǎn)針對(duì) 數(shù)據(jù)包監(jiān)視該連接。如果接收到塊,則目的地節(jié)點(diǎn)上的處理器被安排成置位接收矢量中的 相關(guān)聯(lián)比特,并監(jiān)視該矢量中的置位的比特的數(shù)量(圖10的框1003)。如果置位比特的數(shù)量已增大了閾值比例(圖10的框1006),那么,目的地節(jié)點(diǎn)將 其接收矢量發(fā)送給源節(jié)點(diǎn)(圖10的框1007)。閾值比例可以是50%或任何其他合適的閾 值。而且,處理器任選地被安排成如果在目的地節(jié)點(diǎn)上接收到重復(fù)的塊,則將接收矢量發(fā)送 到源節(jié)點(diǎn)(圖10的框1004和1007)。當(dāng)接收矢量中的所有比特都被置位時(shí),過(guò)程結(jié)束(框 1005)。通過(guò)使用如此處所描述的接收矢量,需要發(fā)送的確認(rèn)數(shù)據(jù)包的數(shù)量是較低的。這里的確認(rèn)數(shù)據(jù)包是那些發(fā)送接收矢量的數(shù)據(jù)包。這就提高了效率并減輕對(duì)通信網(wǎng)絡(luò)資源的 壓力。例如,目的地節(jié)點(diǎn)不需要每η個(gè)數(shù)據(jù)包就發(fā)送接收矢量的副本。它可以基于接收到的 數(shù)據(jù)包的函數(shù)來(lái)發(fā)送其接收比特矢量的副本。例如,每當(dāng)目的地節(jié)點(diǎn)發(fā)送接收矢量時(shí),它都 能夠記錄置位的比特的數(shù)量。當(dāng)置位比特的數(shù)量增大50% (或其他合適的閾值比例)時(shí), 這會(huì)觸發(fā)對(duì)接收矢量的發(fā)送。而且,如果目的地節(jié)點(diǎn)獲得預(yù)定義的數(shù)量的重復(fù)的數(shù)據(jù)包,例 如,一個(gè),則它會(huì)觸發(fā)對(duì)接收矢量的發(fā)送。以此方式,協(xié)議生成包含接收矢量信息的0 (Iogk) 個(gè)數(shù)據(jù)包(其中,k是傳輸文件所需的數(shù)據(jù)包的數(shù)量)。例如,要在帶有30%的丟失率的鏈 路上傳輸1MB文件,所發(fā)送的接收矢量數(shù)據(jù)包的數(shù)量少于完成傳輸所需的數(shù)據(jù)包的總數(shù)的 1%。此外,在目的地節(jié)點(diǎn)處接收到的重復(fù)的數(shù)據(jù)包的數(shù)量將接近于零。而且,如果文件傳 輸被中斷,且需要利用相同或者不同的通信網(wǎng)絡(luò)節(jié)點(diǎn)來(lái)恢復(fù),則目的地節(jié)點(diǎn)能夠提供接收 矢量,且傳輸過(guò)程從那一點(diǎn)開(kāi)始。還要注意,如果源節(jié)點(diǎn)和目的地節(jié)點(diǎn)之間的連接具有高丟失率,并且這會(huì)導(dǎo)致包 含接收矢量的數(shù)據(jù)包被丟棄,那么,恢復(fù)是快速的。這是因?yàn)榘邮帐噶康牧硪粩?shù)據(jù)包將 立即被發(fā)送。結(jié)果,該過(guò)程是穩(wěn)健的。接收矢量通常是能夠放入單個(gè)數(shù)據(jù)包中的大小。在一個(gè)非常大的文件要從源節(jié)點(diǎn) 傳輸?shù)侥康牡毓?jié)點(diǎn)的情況下,不可能將接收矢量放入單個(gè)數(shù)據(jù)包中。在此情況下,源節(jié)點(diǎn)可 以將文件分解或拆分為一個(gè)或多個(gè)部分,并使用此處所描述的過(guò)程來(lái)分開(kāi)地發(fā)送這些部分 中的每一部分。一旦接收到所有部分,目的地節(jié)點(diǎn)就可以重構(gòu)原始較大的文件。在現(xiàn)在將參考圖5所描述的另一實(shí)施例中,源節(jié)點(diǎn)和目的地節(jié)點(diǎn)是具有用于連接 彼此的無(wú)線網(wǎng)絡(luò)接口控制器的移動(dòng)通信設(shè)備。節(jié)點(diǎn)具有有限的計(jì)算能力。源節(jié)點(diǎn)和目的地 節(jié)點(diǎn)可以使用基于IEEE 802. 11系列標(biāo)準(zhǔn)中所定義的那些通信協(xié)議的通信協(xié)議以自組織 (ad hoc)模式彼此直接接口(如圖5中的箭頭503所表示的)。在此實(shí)施例中,源節(jié)點(diǎn)和 目的地節(jié)點(diǎn)之間的通信鏈路是短暫的,并是有損耗的。例如,源節(jié)點(diǎn)和目的地節(jié)點(diǎn)與行駛中 的汽車500中的衛(wèi)星導(dǎo)航設(shè)備501集成在一起。例如,在此實(shí)施例中,節(jié)點(diǎn)包括帶有集成的無(wú)線網(wǎng)絡(luò)接口控制器的衛(wèi)星導(dǎo)航設(shè)備。 節(jié)點(diǎn)被安排成使用如上文所描述的圖2到6的方法來(lái)執(zhí)行每一個(gè)節(jié)點(diǎn)處的動(dòng)態(tài)高速緩存中 的文件的內(nèi)容發(fā)現(xiàn)。節(jié)點(diǎn)被安排成使用諸如IP上的TCP之類的任何合適的協(xié)議或使用上 文參考圖9和10所描述的過(guò)程來(lái)執(zhí)行內(nèi)容傳輸。在使用上文參考圖9和10所描述的過(guò)程 的情況下,不需要使用IP。替代地,可以使用結(jié)合到所有數(shù)據(jù)包中的頭部里的節(jié)點(diǎn)的MAC地 址來(lái)標(biāo)識(shí)節(jié)點(diǎn)。以此方式,不需要檢測(cè)和管理重復(fù)的IP地址或使用地址解析協(xié)議(ARP)。 而且,還可以利用無(wú)線網(wǎng)絡(luò)接口控制器可以支持的全幀大小。這會(huì)減少每個(gè)數(shù)據(jù)包的開(kāi)銷, 并且使得能實(shí)現(xiàn)更高的實(shí)際吞吐量(goodput)。在評(píng)估中,在包括兩輛汽車的小型車輛試驗(yàn)臺(tái)上進(jìn)行許多實(shí)驗(yàn)。對(duì)于所有實(shí)驗(yàn),在 每一輛汽車中安裝了帶有Netgear (商標(biāo))WAG511 PCMCIA卡(該卡使用Atheros (商標(biāo)) ar5212芯片集)的運(yùn)行Windows XP SP2的膝上型計(jì)算機(jī)。計(jì)算802. 11天線的兩種可能 的配置在基本的情況下,在后置物架上放置了膝上型計(jì)算機(jī),與將安裝便攜式衛(wèi)星導(dǎo)航設(shè) 備的高度一致。在第二種情況下,通過(guò)在每一小汽車的頂棚安裝膝上型計(jì)算機(jī)來(lái)將天線放 置在小汽車外部。為了最小化來(lái)自部署在家庭的其他無(wú)線網(wǎng)絡(luò)的干擾,使用在5. 4GHz頻帶 上操作的802. Ila0另外,兩個(gè)膝上型計(jì)算機(jī)都配備有GPS接收器,以記錄它們的相應(yīng)的位置和速度。在實(shí)驗(yàn)中,每臺(tái)膝上型計(jì)算機(jī)都被配置成使用經(jīng)修改以確??焖俚逆溌穼影l(fā)現(xiàn) 的Atheros (商標(biāo))Reference (參考)驅(qū)動(dòng)程序。對(duì)于每一個(gè)實(shí)驗(yàn),兩臺(tái)膝上型計(jì)算機(jī)在它 們的dd中都具有相同50個(gè)文件條目。其中一臺(tái)膝上型計(jì)算機(jī)具有每一文件的稍晚的版本, 且每一文件的大小都是10MB。當(dāng)兩個(gè)設(shè)備形成連接時(shí),它們使用前面所描述的內(nèi)容發(fā)現(xiàn)算 法來(lái)確定要傳輸?shù)奈募?。為了傳輸文件,考慮了兩個(gè)配置TCP和Broadside(側(cè)面)。TCP 在此配置中,使用了標(biāo)準(zhǔn)的未經(jīng)修改的Windows XP SP2 TCP/IP堆棧,且使用配置有1500 字節(jié)的標(biāo)準(zhǔn)MTU的TCP來(lái)傳輸文件。為了動(dòng)態(tài)地消除將IP地址指派到膝上型計(jì)算機(jī)的開(kāi) 銷,我們向每一臺(tái)膝上型計(jì)算機(jī)靜態(tài)地配置了非沖突的IP地址。Broadside 在此配置中, TCP/IP堆棧被禁用,使用參考圖9和10所描述的數(shù)據(jù)傳輸協(xié)議。這意味著,不需要向每一 臺(tái)膝上型計(jì)算機(jī)指派IP地址,并且數(shù)據(jù)傳輸被配置成使用2304字節(jié)的最大幀大小。實(shí)驗(yàn) 是在英國(guó)劍橋的街道進(jìn)行的。為了增大結(jié)果中的置信度,所有實(shí)驗(yàn)都是在同一天進(jìn)行的,每 一個(gè)實(shí)驗(yàn)緊接著進(jìn)行5次,從而試圖確保所有實(shí)驗(yàn)都是以相同車輛速度進(jìn)行的。為了取得 可重復(fù)性,在我們的實(shí)驗(yàn)中只使用了一輛行駛的小汽車,而第二輛汽車停在路邊。行駛的小 汽車全程作為數(shù)據(jù)源,向靜止的小汽車傳輸。對(duì)于每一個(gè)實(shí)驗(yàn),進(jìn)行了 5遍。每一遍的持續(xù) 時(shí)間都不同,因此對(duì)于每一遍,通過(guò)膝上型計(jì)算機(jī)之間的連通性的持續(xù)期來(lái)規(guī)范化已實(shí)現(xiàn) 的實(shí)際吞吐量,以提供以每秒字節(jié)數(shù)計(jì)的實(shí)際吞吐量?;诖藢?shí)際吞吐量度量,對(duì)該5遍進(jìn) 行排序,且選擇達(dá)成了中值的那一遍,以在隨后進(jìn)行交叉比較。位置接近于劍橋市中心,但 是,由于地方交通限制通行方案,只有適量的過(guò)境交通。該地區(qū)具有很密集的典型的十九世 紀(jì)歐洲城鎮(zhèn)中心開(kāi)發(fā)的建筑物,并有典型的狹窄馬路,馬路兩側(cè)排列著兩層帶陽(yáng)臺(tái)的房屋。 沿著馬路的一側(cè)或兩側(cè)停滿了一排汽車,沒(méi)有足夠的空間讓兩輛汽車在相反的方向通過(guò), 因此實(shí)施了單行規(guī)則,并限速。這就在最接近點(diǎn)將我們的小汽車的速度限制在10和15英 里/小時(shí)之間。結(jié)果表明,TCP實(shí)現(xiàn)差不多1兆字節(jié)/秒的合理的實(shí)際吞吐量,對(duì)于內(nèi)部和 外部天線都是如此。Broadside使用內(nèi)部天線比TCP好1. 61倍,而在使用外部天線的情況 下,則好1. 85倍。在下表中示出了連接時(shí)間和實(shí)際吞吐量的字節(jié)總數(shù)。
權(quán)利要求
1.一種在具有存儲(chǔ)了需要與通信網(wǎng)絡(luò)(100)中的至少一個(gè)其他節(jié)點(diǎn)(101)同步的多個(gè) 文件的存儲(chǔ)器(1101)的通信網(wǎng)絡(luò)節(jié)點(diǎn)(101)處的方法,包括自動(dòng)地生成包括第一數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)包(603)并將其發(fā)送G00)到其他節(jié)點(diǎn),該第一 數(shù)據(jù)結(jié)構(gòu)是使用所述多個(gè)文件的文件名和公鑰來(lái)形成的;自動(dòng)地生成使用所述多個(gè)文件的文件名、公鑰和版本號(hào)形成的第二數(shù)據(jù)結(jié)構(gòu),并將其 發(fā)送(401)到其他節(jié)點(diǎn);從所述其他節(jié)點(diǎn)接收(40 包括具有所述多個(gè)文件中存在于在該其他節(jié)點(diǎn)處的存儲(chǔ) 器中的帶有不同的版本號(hào)的任何已標(biāo)識(shí)文件的細(xì)節(jié)的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)包。
2.如權(quán)利要求1所述的方法,其特征在于,所述第一和第二數(shù)據(jù)結(jié)構(gòu)兩者都在所述數(shù) 據(jù)包中發(fā)送。
3.如權(quán)利要求1或2所述的方法,其特征在于,所述數(shù)據(jù)結(jié)構(gòu)基于Bloom過(guò)濾器。
4.如任一項(xiàng)在前權(quán)利要求所述的方法,其特征在于,所述第一和第二數(shù)據(jù)結(jié)構(gòu)是使用 僅關(guān)于所述多個(gè)文件的一部分的信息來(lái)形成的。
5.如任一項(xiàng)在前權(quán)利要求所述的方法,其特征在于,還包括執(zhí)行內(nèi)容傳送過(guò)程(607) 以使已標(biāo)識(shí)文件中的每一個(gè)與其他節(jié)點(diǎn)同步。
6.根據(jù)任一項(xiàng)在前權(quán)利要求所述的方法,其特征在于,包括從其他節(jié)點(diǎn)接收廣告 (300),所述廣告是包括全局標(biāo)識(shí)符的數(shù)據(jù)包,以及基于所述全局標(biāo)識(shí)符與所述節(jié)點(diǎn)的全局 標(biāo)識(shí)符的比較判斷是否進(jìn)行(301)對(duì)所述數(shù)據(jù)結(jié)構(gòu)的發(fā)送。
7.如權(quán)利要求6所述的方法,其特征在于,每個(gè)全局標(biāo)識(shí)符是使用所述存儲(chǔ)器中的每 個(gè)文件的文件標(biāo)識(shí)符和實(shí)例標(biāo)識(shí)符來(lái)形成的,所述文件標(biāo)識(shí)符是使用每個(gè)文件的文件名和 公鑰形成的,而所述實(shí)例標(biāo)識(shí)符是使用每個(gè)文件的文件名、公鑰和版本號(hào)形成的。
8.一種在具有存儲(chǔ)了需要與通信網(wǎng)絡(luò)中的至少一個(gè)其他節(jié)點(diǎn)同步的多個(gè)文件的存儲(chǔ) 器(1101)的通信網(wǎng)絡(luò)節(jié)點(diǎn)(101)處的方法,包括將所述文件存儲(chǔ)在所述節(jié)點(diǎn)處的多個(gè)組(700)中;使用所述節(jié)點(diǎn)處的處理器(1106)來(lái)為每個(gè)組生成組散列;使用所述處理器來(lái)利用所述組散列值來(lái)創(chuàng)建基于樹(shù)的數(shù)據(jù)結(jié)構(gòu)并將其存儲(chǔ)在所述節(jié) 點(diǎn)處的存儲(chǔ)器中;創(chuàng)建(703)廣告,所述廣告是包括關(guān)于組的數(shù)量的信息和關(guān)于所述數(shù)據(jù)結(jié)構(gòu)的信息的 數(shù)據(jù)包;在所述通信網(wǎng)絡(luò)上廣播(704)所述廣告。
9.如權(quán)利要求8所述的方法,其特征在于,所述多個(gè)文件被存儲(chǔ)在每個(gè)通信網(wǎng)絡(luò)節(jié)點(diǎn) 處的存儲(chǔ)器中,且那些文件中的至少一些具有在所述節(jié)點(diǎn)之間不同的版本。
10.如權(quán)利要求8或9所述的方法,其特征在于,所述文件是獨(dú)立于它們的版本來(lái)分組的。
11.如權(quán)利要求8到10中的任一項(xiàng)所述的方法,其特征在于,所述組散列是通過(guò)遞歸地 散列每個(gè)文件的標(biāo)識(shí)符來(lái)形成的,其中每個(gè)文件標(biāo)識(shí)符是使用該文件的所述文件名、公鑰 和版本號(hào)來(lái)形成的。
12.—種移動(dòng)通信網(wǎng)絡(luò)節(jié)點(diǎn)(101),包括:存儲(chǔ)需要與通信網(wǎng)絡(luò)中的至少一個(gè)其他移動(dòng)節(jié)點(diǎn)同步的多個(gè)文件的存儲(chǔ)器(1101);被布置成與所述通信網(wǎng)絡(luò)中的至少一個(gè)其他節(jié)點(diǎn)建立無(wú)線通信鏈路的無(wú)線接口 (1105),該其他節(jié)點(diǎn)還具有存儲(chǔ)需要同步的多個(gè)文件的存儲(chǔ)器;被布置成生成包括數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)包并通過(guò)所述無(wú)線通信鏈路將那些數(shù)據(jù)包發(fā)送到 其他節(jié)點(diǎn)的處理器;以及,由此所述處理器被布置成生成所述數(shù)據(jù)結(jié)構(gòu),以使得在少于四十 秒的時(shí)間內(nèi)建立無(wú)線通信鏈路的情況下,該時(shí)間期間的同步量大約是每秒鐘1兆字節(jié)。
13.如權(quán)利要求12所述的節(jié)點(diǎn),其特征在于,所述處理器被布置成生成包括第一數(shù)據(jù) 結(jié)構(gòu)的數(shù)據(jù)包并將其發(fā)送到其他節(jié)點(diǎn),該第一數(shù)據(jù)結(jié)構(gòu)是使用所述多個(gè)文件的文件名和公 鑰來(lái)形成的。
14.如權(quán)利要求13所述的節(jié)點(diǎn),其特征在于,所述處理器還被布置成自動(dòng)地生成使用 所述多個(gè)文件的文件名、公鑰和版本號(hào)形成的第二數(shù)據(jù)結(jié)構(gòu),并將其發(fā)送到其他節(jié)點(diǎn)。
15.如權(quán)利要求14所述的節(jié)點(diǎn),其特征在于,所述處理器被布置成在單個(gè)數(shù)據(jù)包中將 所述第一和第二數(shù)據(jù)結(jié)構(gòu)發(fā)送到其他節(jié)點(diǎn)。
全文摘要
常常要求移動(dòng)通信節(jié)點(diǎn)之間的內(nèi)容發(fā)現(xiàn)和內(nèi)容傳輸,例如,以同步安裝在車輛上的衛(wèi)星導(dǎo)航設(shè)備、步行者手持式個(gè)人數(shù)字助理及其他移動(dòng)通信節(jié)點(diǎn)的地圖,交通熱點(diǎn)信息。在一實(shí)施例中,使用以特定方式設(shè)計(jì)的并使用單個(gè)數(shù)據(jù)包發(fā)送的數(shù)據(jù)結(jié)構(gòu)的內(nèi)容發(fā)現(xiàn)過(guò)程使得節(jié)點(diǎn)能標(biāo)識(shí)要傳輸?shù)奈募瑫r(shí)使開(kāi)銷保持得較低。在一實(shí)施例中,使用第一和第二數(shù)據(jù)結(jié)構(gòu),每個(gè)數(shù)據(jù)結(jié)構(gòu)都是由關(guān)于要同步的文件的子集的稍微不同的信息構(gòu)成的。在另一實(shí)施例中,使用單個(gè)基于樹(shù)的數(shù)據(jù)結(jié)構(gòu)。還描述了在兩個(gè)移動(dòng)通信節(jié)點(diǎn)之間傳輸數(shù)據(jù)的過(guò)程。
文檔編號(hào)G08G1/096GK102113352SQ200980131158
公開(kāi)日2011年6月29日 申請(qǐng)日期2009年7月20日 優(yōu)先權(quán)日2008年7月31日
發(fā)明者A·羅姆斯特姆, G·F·奧謝, T·C·策恩 申請(qǐng)人:微軟公司