流識(shí)別和過濾的制作方法
【專利摘要】一種方法獲得第一數(shù)據(jù)項(xiàng)的第一數(shù)據(jù)項(xiàng)簽名,第一數(shù)據(jù)項(xiàng)簽名包括第一數(shù)據(jù)項(xiàng)中的多個(gè)同步點(diǎn)與對(duì)應(yīng)的多個(gè)塊簽名之間的關(guān)聯(lián)。處理嘗試在第二數(shù)據(jù)項(xiàng)中找到所述多個(gè)同步點(diǎn)中的一個(gè);并且,如果找到這樣的同步點(diǎn),則通過將哈希函數(shù)應(yīng)用于第二數(shù)據(jù)項(xiàng)中對(duì)應(yīng)的比特塊來確定第二數(shù)據(jù)項(xiàng)中的所述對(duì)應(yīng)的比特塊的塊簽名。所述處理查明來自第二數(shù)據(jù)項(xiàng)的所述同步點(diǎn)和所述對(duì)應(yīng)的塊簽名是否對(duì)應(yīng)于第一數(shù)據(jù)項(xiàng)簽名中的同步點(diǎn)和塊簽名。如果預(yù)定數(shù)量的同步點(diǎn)和對(duì)應(yīng)的塊簽名匹配,則第一和第二數(shù)據(jù)項(xiàng)被認(rèn)為匹配。
【專利說明】流識(shí)別和過濾
[0001]版權(quán)聲明
[0002]本專利文檔包含受版權(quán)保護(hù)的資料。版權(quán)所有人不反對(duì)美國專利商標(biāo)局的文件中的本專利文檔或任何相關(guān)資料的復(fù)制,但在其它方面保留任何所有的版權(quán)。
【技術(shù)領(lǐng)域】
[0003]本發(fā)明涉及流識(shí)別和過濾。
【專利附圖】
【附圖說明】
[0004]當(dāng)參照附圖考慮以下描述和所附權(quán)利要求時(shí),本發(fā)明的其它目的、特征和特性、以及結(jié)構(gòu)的相關(guān)元件的功能和操作的方法、以及部件的結(jié)合和制造的經(jīng)濟(jì)性將變得更清楚,所有的附圖形成本說明書的一部分。
[0005]圖1 (a)描繪數(shù)據(jù)流;
[0006]圖1 (b)描繪同步點(diǎn)和對(duì)應(yīng)的比特塊;
[0007]圖1 (c)描繪圖1 (A)的數(shù)據(jù)流的流簽名;
[0008]圖2 (a) -2 (d)描繪數(shù)據(jù)流的處理;
[0009]圖3 (a) -3 (b)示出用于對(duì)多個(gè)流進(jìn)行處理的結(jié)構(gòu);
[0010]圖4 (a) -4 (b)描繪多個(gè)流的處理;
[0011]圖5示出用于對(duì)流進(jìn)行處理的示例性數(shù)據(jù)結(jié)構(gòu);
[0012]圖6 (a) -6 (c)示出使用圖5的數(shù)據(jù)結(jié)構(gòu)處理的示例流;
[0013]圖7示出典型的分組;
[0014]圖8是計(jì)算機(jī)系統(tǒng)的示意圖。
【具體實(shí)施方式】
[0015]背景和概述
[0016]檢查存儲(chǔ)在設(shè)備上或者在設(shè)備之間傳輸?shù)臄?shù)據(jù)以便試圖確定該數(shù)據(jù)是否對(duì)應(yīng)于其它已知的數(shù)據(jù)通常是有用的且期望的。例如,確定存儲(chǔ)在設(shè)備上的數(shù)據(jù)是否對(duì)應(yīng)于或者是其它數(shù)據(jù)的整個(gè)或部分副本可能是有用的或期望的。作為另一個(gè)示例,確定在兩個(gè)設(shè)備之間發(fā)送的數(shù)據(jù)流是否對(duì)應(yīng)于(或者是)其它數(shù)據(jù)(的整個(gè)或部分副本)可能是有用的或期望的。
[0017]描述
[0018]數(shù)據(jù)流(或流)包括比特序列。流中的比特序列可以表示某一類型的數(shù)據(jù)項(xiàng)(例如,電影或圖像或音樂、數(shù)據(jù)庫等)或者對(duì)某一類型的數(shù)據(jù)項(xiàng)進(jìn)行編碼??梢詫?duì)流中的比特序列進(jìn)行加密和/或壓縮。本領(lǐng)域技術(shù)人員在閱讀本描述時(shí)將認(rèn)識(shí)并理解到,本發(fā)明不受底層比特序列所表示的內(nèi)容限制。
[0019]如本文中所使用的,數(shù)據(jù)指的是任何任意的數(shù)據(jù),而不管底層數(shù)據(jù)表示什么,也不管如何對(duì)底層數(shù)據(jù)進(jìn)行格式化、編碼或存儲(chǔ)。
[0020]參照?qǐng)D1 (a)_l (b),流100包括多個(gè)同步點(diǎn)(在圖中該流被示出具有i個(gè)同步點(diǎn),這些同步點(diǎn)被表示為SP1, SP2, SP3,…,SPi,其統(tǒng)稱為SPp。在該流中跟在每個(gè)同步點(diǎn)后面的是比特塊(在圖中第j個(gè)塊被表示為Bj)。
[0021]如圖1(b)中所示,第i個(gè)同步點(diǎn)(SPi)由k個(gè)比特(Kb1-K)組成,并且第i個(gè)比特塊(Bi)由j個(gè)比特(Ctl(VCj)組成。
[0022]盡管第j個(gè)比特塊在圖中被示為緊跟在第j個(gè)同步點(diǎn)的后面,但是應(yīng)當(dāng)明白,第j個(gè)比特塊可以與第j個(gè)同步點(diǎn)間隔某個(gè)已知量。
[0023]在目前優(yōu)選的實(shí)現(xiàn)中,存在十六(16)個(gè)同步點(diǎn),每個(gè)同步點(diǎn)由32個(gè)比特組成,并且每個(gè)比特塊由256個(gè)字節(jié)組成。在另一實(shí)現(xiàn)中,存在十(10)個(gè)同步點(diǎn),每個(gè)同步點(diǎn)由64個(gè)比特組成,并且每個(gè)比特塊由256個(gè)字節(jié)組成。如本文中所使用的,流中的比特的數(shù)量被稱為流的大小,同步點(diǎn)中的比特的數(shù)量被稱為同步點(diǎn)的大小,并且比特塊中的比特的數(shù)量被稱為比特塊的大小。本領(lǐng)域技術(shù)人員在閱讀本描述時(shí)將認(rèn)識(shí)并理解到,可以使用除以上示出的數(shù)量之外的不同的和/或其它的數(shù)量的同步點(diǎn),同步點(diǎn)可以具有與以上示出的數(shù)量不同的大小,比特塊可以具有與以上示出的數(shù)量不同的大小。
[0024]本領(lǐng)域技術(shù)人員在閱讀本描述時(shí)將認(rèn)識(shí)并理解到,同步點(diǎn)的數(shù)量在某些情況下可以被確定為比特流的大小的函數(shù)。
[0025]與每個(gè)比特塊Bj對(duì)應(yīng)的是通過將函數(shù)(h)應(yīng)用于該比特塊而確定的值H」,以使得:
[0026]Hj = h (Bj)
[0027]值%在本文中也被稱為第j個(gè)比特塊的塊簽名。
[0028]函數(shù)h應(yīng)當(dāng)具有以下性質(zhì):對(duì)于任何兩個(gè)任意的比特塊Ba和Bb,如果Ba等于Bb,貝丨J h (Ba) = h (Bb) ο
[0029]函數(shù)h的其它可期望性質(zhì)包括:
[0030](a)Bi中的小變化有可能導(dǎo)致Ii(Bi)的不同值;
[0031](b)函數(shù)h相對(duì)簡單并且快速地計(jì)算。
[0032]函數(shù)h可以是任何哈希函數(shù)。在一些實(shí)現(xiàn)中,可以使用諸如MD5或SHA-1等的消息摘要函數(shù),盡管優(yōu)選地可以使用更簡單并且更輕量的函數(shù)。優(yōu)選地,哈希函數(shù)生成32比特值。
[0033]本領(lǐng)域技術(shù)人員在閱讀本描述時(shí)將認(rèn)識(shí)并理解到,函數(shù)h不需要(并且可能將不會(huì))對(duì)于每一個(gè)比特塊生成唯一值。
[0034]每個(gè)流具有對(duì)應(yīng)的流簽名。現(xiàn)在參照?qǐng)Dl(a)-l(c),具有i個(gè)同步點(diǎn)(SP1, SP2,SP3,…,SPi)的流的簽名由i對(duì)〈SPj,h(Bj)>組成,j = 1-1o圖1(c)中的示圖示出了圖1(a)的流100的簽名102的邏輯表示。
[0035]參照?qǐng)D2(a)和圖2(b)描述數(shù)據(jù)流的流簽名的創(chuàng)建。如圖2(a)中所示,初始設(shè)定200對(duì)流S進(jìn)行處理以生成流簽名202。參照?qǐng)D2(b)中的流程圖更詳細(xì)地描述初始設(shè)定200的處理。初始設(shè)定處理200將創(chuàng)建由一定數(shù)量(k)的對(duì)〈SPj,h (Bj) >組成的流簽名202,j = I…k,k為某個(gè)值。k的值優(yōu)選地被預(yù)設(shè)(例如,10、15、20等),但是,如以上所提到的,還可以將k的值確定為流S的大小的函數(shù)。
[0036]在對(duì)流200進(jìn)行處理中,初始設(shè)定202可以首先確定流S的大小(在204處)。該大小信息可以被用于例如確定該流所需的同步點(diǎn)的數(shù)量(k)和/或該流內(nèi)的同步點(diǎn)的間隔。如當(dāng)閱讀本描述時(shí)將變得清楚的,對(duì)于任何給定的流(S),優(yōu)選的是使同步點(diǎn)分布在整個(gè)流⑶上。
[0037]處理202然后(在206處)確定流S中的下一個(gè)(第i個(gè))同步點(diǎn)(SPi)以及對(duì)應(yīng)的比特塊(Bi)15對(duì)于比特塊Bi確定值H (Bi)(在208處),并且將對(duì)<SPj,H (Bj) >存儲(chǔ)在流S的簽名中(在210處)。在208處計(jì)算的函數(shù)“H”對(duì)應(yīng)于以上所描述的函數(shù)h,并且優(yōu)選為諸如MD5或SHA等的哈希函數(shù)的消息摘要。
[0038]處理202然后確定對(duì)于該流S是否已經(jīng)確定了充分的〈同步點(diǎn),值〉對(duì)(在212處)。如果是,則存儲(chǔ)該流的簽名(SS)(在214處),否則確定另一個(gè)同步點(diǎn)(在206處)。在對(duì)流(S)處理的結(jié)束時(shí),生成(例如,圖1(c)中所示的形式的)流簽名,并且將該流簽名與流S)相關(guān)聯(lián)地存儲(chǔ)。
[0039]如在閱讀本描述時(shí)對(duì)于本領(lǐng)域技術(shù)人員將清楚的,兩個(gè)流具有同樣的流簽名(使用本文中所描述的處理而確定)的事實(shí)不一定暗示這兩個(gè)流是同樣的。例如,第一個(gè)流可以由數(shù)百萬個(gè)比特組成,而流簽名可以僅由十個(gè)或二十個(gè)〈同步點(diǎn),比特塊值〉對(duì)組成,其中,同步點(diǎn)隨機(jī)地分布在該流上,并且其中,每個(gè)同步點(diǎn)僅使用128個(gè)比特,并且每個(gè)比特塊僅使用512個(gè)比特。在這種情況下,如果第二個(gè)流具有完全相同的〈同步點(diǎn),比特塊值〉對(duì),則它可能對(duì)應(yīng)于第一個(gè)流,但是它可能不對(duì)應(yīng)于第一個(gè)流。然而,如果第二個(gè)流不具有與第一個(gè)流相同的〈同步點(diǎn),比特塊值 > 對(duì),則它不對(duì)應(yīng)于第一個(gè)流。
[0040]發(fā)明人認(rèn)識(shí)到,對(duì)于一些應(yīng)用,確定數(shù)據(jù)流是否充分地對(duì)應(yīng)于另一個(gè)已知數(shù)據(jù)流可能是足夠的。他們認(rèn)識(shí)到,在一些應(yīng)用中,以某種程度的確定性確定兩個(gè)流可能相等可能是足夠的。這樣的信息可以被用于觸發(fā)流的更廣泛的(而且可能更昂貴的)處理以確定對(duì)應(yīng)或相等。
[0041]現(xiàn)在參照?qǐng)D2(c),在已確定并存儲(chǔ)流S的簽名(SS)之后,可以對(duì)任意的流進(jìn)行處理以確定它是否充分地對(duì)應(yīng)于流S。流S’被提供給比較處理216 (以下參照?qǐng)D2(d)進(jìn)行描述),比較處理216使用先前存儲(chǔ)的流簽名(SS)來確定輸入流S’是否對(duì)應(yīng)于流S。
[0042]比較處理216確定是否存在任何更多的流要處理(在218處)。如果不是,則沒有找到匹配,因此這些流不匹配。如果存在更多的輸入流要處理,則所述處理查找同步點(diǎn)(在220處)。應(yīng)當(dāng)意識(shí)到,所述處理將查找流簽名SS中的同步點(diǎn)的任何一個(gè)(SP),并且不需要按順序查找它們。如在閱讀本描述時(shí)對(duì)于本領(lǐng)域技術(shù)人員將清楚的,這允許輸入流以片(piece)或分組(packet)被處理,這些片或分組可以不按順序到達(dá)比較處理216。
[0043]在已找到同步點(diǎn)(SP)之后,比較處理216然后尋找與該同步點(diǎn)相關(guān)聯(lián)的對(duì)應(yīng)的比特塊(B)(在220處),并且確定該比特塊B的簽名H(B)。本領(lǐng)域技術(shù)人員在閱讀本描述時(shí)將認(rèn)識(shí)并理解到,比較處理216中所使用的函數(shù)H必須與用于產(chǎn)生流簽名的函數(shù)相同。
[0044]接著(在226處),將對(duì)<SP,H(B)>與流簽名SS中的同步點(diǎn)SP的對(duì)應(yīng)的對(duì)進(jìn)行比較。如果該對(duì)不匹配(在228處),則對(duì)流的其余部分(如果有的話)進(jìn)行處理(在218處,…)。另一方面,如果(在228處)對(duì)〈SP,H (B)〉與流簽名SS中的同步點(diǎn)SP的對(duì)應(yīng)的對(duì)匹配,則(在230處)比較處理216確定是否已存在認(rèn)為流匹配的充分的對(duì)匹配。對(duì)于“充分匹配”的測(cè)試(在230處)可以使用到目前為止流中匹配的數(shù)量的計(jì)數(shù),并且可以使用該計(jì)數(shù)值來確定流簽名的〈同步點(diǎn),塊簽名〉對(duì)的百分比匹配。在一些優(yōu)選的實(shí)現(xiàn)中,認(rèn)為70%匹配(例如,十分之七匹配)是認(rèn)為流匹配的充分匹配(在232處)。本領(lǐng)域技術(shù)人員在閱讀本描述時(shí)將認(rèn)識(shí)并理解到,所需的百分比匹配(高達(dá)并且包括100%)是比較處理所需的精度的函數(shù)。因?yàn)?,如以上所解釋的,?dāng)找到匹配(在232處)時(shí),可以使用比較處理216來觸發(fā)附加的(而且代價(jià)更高的)比較,所以本領(lǐng)域技術(shù)人員將知道并且理解如何權(quán)衡錯(cuò)誤的肯定匹配(在232處)與充分匹配流的隨后處理的代價(jià)。
[0045]到目前為止,我們已經(jīng)描述了將輸入流(S’ )與單個(gè)先前處理的流(S)進(jìn)行比較,并且與其進(jìn)行可能匹配。在一些實(shí)施例中,可以將輸入流與多于一個(gè)的先前處理的流進(jìn)行比較。
[0046]圖3 (a)中的示圖示出了多個(gè)(k個(gè))流簽名的邏輯組織300,k個(gè)流SI,…Sk中的每一個(gè)有一個(gè)流簽名。可以如以上參照?qǐng)D2(a)_2(b)所描述的那樣確定流簽名中的每一個(gè)。
[0047]現(xiàn)在參照?qǐng)D3 (a) -3 (b)和圖4 (a) _4 (b)描述將任意的輸入流(S)與這k個(gè)流中的每一個(gè)進(jìn)行比較的處理。與多個(gè)可能的流進(jìn)行比較的一個(gè)流的比較處理可以在輸入流中尋找多個(gè)流簽名的同步點(diǎn),并且它還可以尋找多于一個(gè)的簽名的匹配〈同步點(diǎn),哈希值〉對(duì)。總之,所述處理優(yōu)選地跟蹤它對(duì)于k個(gè)流(Sl-Sk)中的每一個(gè)找到的匹配〈同步點(diǎn),哈希值 > 對(duì)的數(shù)量,并且宣告輸入流S與這k個(gè)流中的第一個(gè)流之間的匹配為充分匹配(如以上所討論的,基于對(duì)于充分性的某一預(yù)定閾值)。
[0048]參照?qǐng)D4(a)_4(b)中的流程圖,如果存在更多的流S要處理(在400處),則處理繼續(xù)(在402處)查找S中與流SP"Sk中的一個(gè)的同步點(diǎn)中的至少一個(gè)對(duì)應(yīng)的同步點(diǎn)(SP)。在該流程圖中,流Sb-Sk被稱為流集合,其被表示為S’。如果沒有找到同步點(diǎn)(在402處),則處理繼續(xù)(在400處)對(duì)輸入流S的任何其余部分進(jìn)行處理。如果(在402處)在S中找到與流SP"Sk( S卩,流集合S’)中的任何一個(gè)對(duì)應(yīng)的同步點(diǎn)(SP),則處理繼續(xù)(在404處)確定與所找到的同步點(diǎn)(SP)相關(guān)聯(lián)的比特塊B的對(duì)應(yīng)的簽名H(B)。
[0049]接著(在406處),將簽名對(duì)〈SP,H (B)〉與S’中的所有流的與同步點(diǎn)SP相關(guān)聯(lián)的簽名進(jìn)行比較(其中,SP是在S中找到的與流SP-Sk中的至少一個(gè)中的同步點(diǎn)中的至少一個(gè)對(duì)應(yīng)的同步點(diǎn));并且H(B)是與該同步點(diǎn)(SP)對(duì)應(yīng)的比特塊B的簽名。再次參照?qǐng)D3(a),流SP-Sk中的每一個(gè)的流簽名被存儲(chǔ)并且對(duì)于所述處理是可用的,以使得可以檢查<同步點(diǎn),簽名〉對(duì)。
[0050]如果對(duì)于S’中的流的任何一個(gè)對(duì)于對(duì)<SP,H(B) >沒有找到匹配簽名對(duì)(在408處),則處理繼續(xù)(在400處)對(duì)輸入流S的任何其余部分進(jìn)行處理。如果找到一個(gè)或多個(gè)匹配對(duì)<SP,H(B)>(在408處),則處理繼續(xù)(在410處),對(duì)于S’中的所有匹配流的〈SP,H (B)〉對(duì)的計(jì)數(shù)。
[0051]一旦計(jì)數(shù)被更新(在410中),所述處理就確定(在412處)S’中的任何一個(gè)流(Sm)是否具有充分的匹配對(duì)。如果確定(在412處)S’中沒有流具有充分的匹配對(duì),則處理繼續(xù)(在400處)對(duì)輸入流S的任何其余部分進(jìn)行處理。如果任何流Sm具有充分的匹配對(duì),則所述處理完成(在414處),并且認(rèn)為輸入流S與具有充分的匹配對(duì)的流匹配。
[0052]應(yīng)當(dāng)意識(shí)到,以上所描述的處理可以導(dǎo)致輸入流S與集合S’中的多于一個(gè)的流匹配。
[0053]在一些實(shí)現(xiàn)中,數(shù)據(jù)結(jié)構(gòu)302(圖3(b))為每個(gè)流簽名維護(hù)一個(gè)檢查列表(checklist),以使得每次〈同步點(diǎn),簽名 > 對(duì)對(duì)于該流匹配時(shí),所述處理可以劃掉(或打勾)。該列表允許系統(tǒng)確定(例如,計(jì)數(shù))對(duì)于該流的匹配對(duì)的數(shù)量。本領(lǐng)域技術(shù)人員在閱讀本描述時(shí)將認(rèn)識(shí)并理解到,檢查列表可以以任何數(shù)量的方式實(shí)現(xiàn),包括,例如,被實(shí)現(xiàn)為其中對(duì)應(yīng)的〈同步點(diǎn),簽名 > 對(duì)中的每一個(gè)為一個(gè)比特的位圖。在處理輸入流的開始時(shí),檢查列表中的所有比特都被設(shè)置為O,并且當(dāng)找到匹配時(shí),對(duì)應(yīng)的比特值被設(shè)置為I。用于流Sj的位圖檢查列表中的比特的和于是將給出對(duì)于該流Sj的輸入流中的匹配對(duì)的數(shù)量。如將意識(shí)到的,可以使用不同的和/或其它的方案來跟蹤匹配數(shù)量。
[0054]本領(lǐng)域技術(shù)人員在閱讀本描述時(shí)將認(rèn)識(shí)并理解到,相對(duì)于兩個(gè)流的術(shù)語“匹配”(或“不匹配”)的使用這里不一定暗示它們是同樣的。如果對(duì)于兩個(gè)流的充分?jǐn)?shù)量的<同步點(diǎn),簽名 > 對(duì)相同,則這兩個(gè)流匹配。
[0055]如先前所討論的,本領(lǐng)域技術(shù)人員在閱讀本描述時(shí)將認(rèn)識(shí)并理解到,可以使用充分性的不同度量來確定兩個(gè)流是否具有充分匹配。在一些實(shí)施例中,70%匹配將被認(rèn)為是充分的,而在其它實(shí)施例中,可能需要更高的匹配(高達(dá)100%)。本領(lǐng)域技術(shù)人員在閱讀本描述時(shí)將認(rèn)識(shí)并理解到,如何基于例如處理的應(yīng)用以及對(duì)于錯(cuò)誤的肯定匹配的容限來選擇匹配充分性的度量。如早先所提到的,在一些應(yīng)用中,一旦通過這里所描述的處理找到兩個(gè)流匹配,就可以使用進(jìn)一步的測(cè)試來確定這些流是否匹配。
[0056]數(shù)據(jù)結(jié)構(gòu)和實(shí)現(xiàn)
[0057]本領(lǐng)域技術(shù)人員在閱讀本描述時(shí)將認(rèn)識(shí)并理解到,可以應(yīng)用各種優(yōu)化來實(shí)現(xiàn)匹配處理。數(shù)據(jù)結(jié)構(gòu)優(yōu)選地應(yīng)當(dāng)是:
[0058].可擴(kuò)展的:應(yīng)當(dāng)初始處理數(shù)百個(gè)到數(shù)百萬個(gè)條目,如果需要,具有增長的選擇。
[0059].存儲(chǔ)器高效的:應(yīng)當(dāng)使用盡可能少的存儲(chǔ)器。
[0060].搜索高效的:對(duì)于給定模式的搜索應(yīng)當(dāng)不超過O (η)。
[0061]參照?qǐng)D5描述用于流匹配處理的實(shí)現(xiàn)的示例性數(shù)據(jù)結(jié)構(gòu)。對(duì)于該示例,假定每個(gè)同步點(diǎn)是六至八個(gè)字節(jié)的序列,并且每個(gè)指紋是兩字節(jié)長的值。附加的(可選的)數(shù)據(jù)也可以被存儲(chǔ)在所述數(shù)據(jù)結(jié)構(gòu)中。參照?qǐng)D5,所述數(shù)據(jù)結(jié)構(gòu)(被稱為同步指紋數(shù)據(jù)結(jié)構(gòu)(SFDS))包括一組數(shù)組:
[0062]rowl—256比特長的數(shù)組,其中,每個(gè)比特對(duì)應(yīng)于ASCII代碼(可以出現(xiàn)在同步點(diǎn)中的代碼)
[0063]row2一2562比特長的數(shù)組,其中,256個(gè)比特與rowl中的比特的每一個(gè)相關(guān)
[0064]row3—2563比特長的數(shù)組,其中,256個(gè)比特與row3中的比特的每一個(gè)相關(guān)
[0065]row4一與row3中的特定條目對(duì)應(yīng)的樹的列表
[0066]在初始化處理中,將同步點(diǎn)¢-8個(gè)字節(jié)的序列)和指紋(2字節(jié)長的哈希值,其具有附加的可選數(shù)據(jù)集)的對(duì)如下存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)中:
[0067]1.同步的第I個(gè)字節(jié)將設(shè)置rowl中的相關(guān)比特(如果它還未被設(shè)置)。
[0068]2.同步的第2個(gè)字節(jié)將設(shè)置與在rowl中設(shè)置的比特相關(guān)的row2的256個(gè)比特中的相關(guān)比特(如果它還未被設(shè)置)。
[0069]3.同步的第3個(gè)字節(jié)將設(shè)置與在row2中設(shè)置的比特相關(guān)的row3的256個(gè)比特中的相關(guān)比特(如果它還未被設(shè)置)。
[0070]4.將同步字節(jié)的剩余部分存儲(chǔ)在與在步驟3處設(shè)置的比特對(duì)應(yīng)的樹中。(如果樹尚不存在,則將創(chuàng)建該樹。)
[0071]5.將指紋和任何附加的數(shù)據(jù)連接到來自以上步驟4的樹的相關(guān)葉子。
[0072]示例
[0073]以下示例示出以上(在圖5中)所描述的示例性數(shù)據(jù)結(jié)構(gòu)的使用?,F(xiàn)在參照?qǐng)D6 (a) -6 (c)中的圖,考慮具有同步點(diǎn)SPl =“2,254,1,A,A,C” (該模式在這里以ASCII示出)、具與對(duì)應(yīng)的指紋值0x23a9的流。將意識(shí)到,這意味著與同步點(diǎn)SPl相關(guān)聯(lián)的比特塊的哈希為0x23a9。為了該示例,假定該流具有流id 1000和同步索引5。
[0074]可以如下將該對(duì)< “2,254,I, A, A, C,,,0x23a9>添加到數(shù)據(jù)結(jié)構(gòu):
[0075]1.同步點(diǎn)中的第I個(gè)字符是“2”,所以將rowl中的比特2設(shè)置為I。
[0076]2.同步點(diǎn)中的第2個(gè)字符為254,所以將與rowl的比特2對(duì)應(yīng)的row2的256個(gè)比特中的比特254設(shè)置為I。也就是說,將row2[2] [254]設(shè)置為I。
[0077]3.同步點(diǎn)中的第3個(gè)字符為1,所以設(shè)置與在步驟2中設(shè)置的比特對(duì)應(yīng)的ι.ο?3的256個(gè)比特中的第I比特。也就是說,將row3[2,254] [I]設(shè)置為I。
[0078]4.假定在步驟3中設(shè)置的比特已經(jīng)具有與它對(duì)應(yīng)的樹,并且該樹已經(jīng)具有’ A’作為第I個(gè)字符,則不對(duì)’A’(同步點(diǎn)中的第4個(gè)字符)進(jìn)行處理。
[0079]5.同步點(diǎn)中的第5個(gè)字符也為’ A’ 一將它添加到樹作為第2個(gè)字母。
[0080]6.同步點(diǎn)中的第6個(gè)字符為“C”,所以將它添加到樹作為第3個(gè)字母,并且在它下面創(chuàng)建新的空的葉子。
[0081]7.將指紋值(0x23a9)和附加的數(shù)據(jù)(流id 1000和同步索引5)存儲(chǔ)在記錄中,并且將它與在步驟6中創(chuàng)建的葉子相關(guān)聯(lián)。
[0082]一旦數(shù)據(jù)結(jié)構(gòu)被設(shè)定(如上所述),就可以例如如這里參照?qǐng)D6 (a)-6 (C)描述的那樣處理輸入流。匹配處理使用兩個(gè)輔助的數(shù)據(jù)結(jié)構(gòu),即,匹配同步列表(MSL)數(shù)據(jù)結(jié)構(gòu)(圖6(b))和匹配簽名矢量列表(MSLoV)數(shù)據(jù)結(jié)構(gòu)(圖6(c))。
[0083]匹配同步列表(MSL)結(jié)構(gòu)是具有多達(dá)η個(gè)條目的列表(其中,η是同步的長度)。在該示例中,同步長度為8,并且MSL具有8個(gè)條目。該列表保存正被處理的同步的地址(SFDS,圖5)。矢量的條目i保存頭i個(gè)字節(jié)與SFDS中的同步匹配且其第(i+Ι)個(gè)字節(jié)還未被比較的同步的地址。值-1代表在該長度中“沒有匹配”。
[0084]匹配簽名矢量列表(MSLoV)結(jié)構(gòu)是矢量列表。MSLoV列表中的每個(gè)矢量保存與給定流的同步匹配的同步和該流的流id的列表。矢量的第j個(gè)條目保存找到的與該流的同步匹配的第j個(gè)同步的同步索引(從SFDS獲取)。
[0085]使用這些數(shù)據(jù)結(jié)構(gòu)的搜索流程如下:
[0086]1.每次新的分組被讀取時(shí),逐個(gè)字節(jié)地掃描該分組中的所有字節(jié)。每個(gè)字節(jié)與SFDS的rowl中的字節(jié)進(jìn)行比較。如果存在匹配,則將MSL的條目I設(shè)置為與SFDS的rowl中的相關(guān)條目相關(guān)的SFDS的row2的部分。
[0087]2.對(duì)跟在具有匹配的字節(jié)后面的字節(jié)進(jìn)行數(shù)次比較。假定前一字節(jié)是匹配中的第i個(gè),則將對(duì)當(dāng)前的字節(jié)檢查i次(檢查按以下描述的逆序進(jìn)行。也就是說,首先,進(jìn)行步驟e中的檢查,然后進(jìn)行d中的檢查,然后…,最后一次是在步驟a中描述的檢查):
[0088]a.作為匹配中的第I (如步驟I中所描述的)
[0089]b.作為以MSL的條目I指向的部分同步開始的匹配中的第2字節(jié)一對(duì)照MSL的條目I指向的SFDS的1.0?2的相關(guān)部分對(duì)該匹配進(jìn)行檢查。如果找到匹配,則將條目I設(shè)置為“-1”,并且利用到目前為止找到的部分匹配的地址(其是SFDS的ι.ο?2中的相關(guān)條目)來更新條目2。
[0090]c.作為以MSL的條目2指向的部分同步開始的匹配中的第3字節(jié)一對(duì)照MSL的條目I指向的SFDS的ι.ο?3的相關(guān)部分對(duì)該匹配進(jìn)行檢查。如果找到匹配,則將條目2設(shè)置為“-1”,并且利用到目前為止找到的部分匹配的地址(其是SFDS的ι.ο?2中的相關(guān)條目)來更新條目3。
[0091]d____
[0092]e.作為以MSL的條目i_l指向的部分同步開始的匹配中的第i字節(jié)一對(duì)照MSL的條目i_l指向的SFDS的相關(guān)部分對(duì)該匹配進(jìn)行檢查。如果找到匹配,則將條目i_l設(shè)置為“-1”,并且利用到目前為止找到的部分匹配的地址(其是SFDS中的相關(guān)條目)來更新條目
1
[0093]3.每次找到完整同步(也就是說,步驟2中的i等于完整同步的長度,并且步驟
2.e成功)時(shí),計(jì)算指紋。計(jì)算的指紋與MSL的最后一個(gè)條目中的SFDF部分指向的SFDF的樹葉所指向的指紋進(jìn)行比較。如果找到匹配指紋,則獲取其流Id和同步索引,并且更新MSLoV:
[0094]a.如果MSLoV對(duì)于該流Id不具有矢量,則創(chuàng)建一個(gè)新矢量,并將該新矢量添加到MSLoV的開頭。該新矢量的流Id被設(shè)置為從SFDS獲取的流Id。該新矢量的條目I被設(shè)置為從SFDS獲取的同步索引。
[0095]b.如果MSLoV對(duì)于該流Id已經(jīng)具有矢量,則將其第I個(gè)空條目設(shè)置為從SFDS獲取的同步索引。
[0096]c.注意,如果匹配同步具有MSLoV中的數(shù)個(gè)葉子,則分別對(duì)這些葉子中的每一個(gè)進(jìn)行以上步驟a/b。
[0097]4.一旦MSLoV矢量中的索引的數(shù)量超過給定的量(例如,十分之八),則定義輸入流與其id根據(jù)該矢量的流Id而存儲(chǔ)的流之間的匹配。
[0098]5.注意,對(duì)于同步,僅搜索具有預(yù)定義長度的流的部分。如果搜索超過識(shí)別匹配流的該部分,則假定為未知流,并且對(duì)MSL和MSLoV 二者進(jìn)行清除。
[0099]結(jié)束示例
[0100]本領(lǐng)域技術(shù)人員在閱讀本描述時(shí)將認(rèn)識(shí)并理解到,可以使用不同的和/或其它的數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)這里描述的處理。應(yīng)當(dāng)意識(shí)到,對(duì)于所使用的數(shù)據(jù)結(jié)構(gòu),一些效率是優(yōu)選的。作為目標(biāo),數(shù)據(jù)結(jié)構(gòu)應(yīng)當(dāng)存儲(chǔ)多達(dá)I百萬個(gè)同步點(diǎn)(每個(gè)6-8個(gè)字節(jié))與和同步模式中的每一個(gè)相關(guān)的指紋。如所指出的,數(shù)據(jù)結(jié)構(gòu)優(yōu)選地提前離線創(chuàng)建(它將被準(zhǔn)備用于初始數(shù)據(jù)集,并且然后每當(dāng)需要時(shí)被遞增地更新),而搜索本身將實(shí)時(shí)地進(jìn)行。
[0101]通過使用以上示例(圖6(a)-6(C))中描述的數(shù)據(jù)結(jié)構(gòu),對(duì)于一百萬個(gè)同步條目:
[0102].頭3個(gè)字節(jié)將被添加到3行,每行256個(gè)條目(28的3次等于224,等于1600萬個(gè)條目)。后面的字節(jié)將被唯一地添加到每個(gè)前綴的最后一行(小于1%將具有相同的前綴,并且列表結(jié)構(gòu)將是足夠高效的,如果不是,則可以對(duì)新添加的流考慮不同的同步模式)。
[0103].添加新同步被離線進(jìn)行,并且它為同步長度的階(order)。
[0104]?搜索數(shù)據(jù)結(jié)構(gòu)中的同步可以實(shí)時(shí)地進(jìn)行,并且為同步長度的階0(1)。
[0105]分組化(packetize)的數(shù)據(jù)流
[0106]在一些情況下,輸入數(shù)據(jù)流可以是以分組化的數(shù)據(jù)的形式。例如,如果比較處理在諸如路由器的設(shè)備中發(fā)生,則這可以出現(xiàn)。在這樣的情況下,執(zhí)行處理的設(shè)備可能需要緩沖來自多于一個(gè)的分組的有效載荷數(shù)據(jù),以便執(zhí)行處理。
[0107]眾所周知,在基于分組的網(wǎng)絡(luò)(諸如TCP/IP網(wǎng)絡(luò),例如,因特網(wǎng))中,要從一個(gè)位置發(fā)送到另一個(gè)位置的數(shù)據(jù)被分組化(分割成多個(gè)分組)。參照?qǐng)D7,典型的分組包括地址信息和有效載荷。有效載荷包括要被傳輸?shù)臄?shù)據(jù),地址信息包括允許網(wǎng)絡(luò)將分組路由到其目的地的信息。本領(lǐng)域技術(shù)人員在閱讀本描述時(shí)將認(rèn)識(shí)并理解到,可以使用許多形式的分組化,并且分組的形式和類型不限于本發(fā)明。另外,應(yīng)當(dāng)意識(shí)到,一些網(wǎng)絡(luò)可以使用協(xié)議的多個(gè)層級(jí),以使得有效載荷本身可以是包括其它地址信息的分組。不管所使用的協(xié)議如何,本領(lǐng)域技術(shù)人員都將知道如何從特定的分組提取與數(shù)據(jù)項(xiàng)對(duì)應(yīng)的數(shù)據(jù)。
[0108]如果預(yù)先知道分組化的類型,則優(yōu)選的是選擇同步點(diǎn),以使得每個(gè)同步點(diǎn)適合放入單個(gè)分組的有效載荷內(nèi)。然而,由于這也許是不可能的,所以可能有必要獲得并且緩沖多個(gè)順序分組的有效載荷,以便執(zhí)行上述處理(查找同步點(diǎn),并然后對(duì)其對(duì)應(yīng)的比特塊進(jìn)行處理)。
[0109]本領(lǐng)域技術(shù)人員在閱讀本描述時(shí)將認(rèn)識(shí)并理解到,與當(dāng)前使用的方法相比,所描述的處理和系統(tǒng)支持兩個(gè)內(nèi)容流之間的快得多的并且更高效方式的比較。另外,本文中所描述的方法可以處理加密內(nèi)容。
[0110]計(jì)算
[0111]實(shí)現(xiàn)這樣的方法的程序(以及其它類型的數(shù)據(jù))可以以許多方式使用各種介質(zhì)(例如,計(jì)算機(jī)可讀介質(zhì))傳輸和存儲(chǔ)??梢允褂糜策B線電路或定制硬件代替可以實(shí)現(xiàn)各種實(shí)施例的處理的軟件指令中的一些或全部、或者與這些軟件指令中的一些或全部結(jié)合。因此,可以使用硬件和軟件的各種結(jié)合,而不是僅使用軟件。
[0112]圖8是其上可以實(shí)現(xiàn)并且執(zhí)行本公開的實(shí)施例的計(jì)算機(jī)系統(tǒng)800的示意圖。
[0113]根據(jù)本示例,計(jì)算機(jī)系統(tǒng)800包括總線801 (即,互連)、至少一個(gè)處理器802、至少一個(gè)通信端口 803、主存儲(chǔ)器804、可移動(dòng)存儲(chǔ)介質(zhì)805、只讀存儲(chǔ)器806、以及大容量儲(chǔ)存器807。
[0114]處理器802可以是任何已知的處理器,諸如,但不限于,Intel? Itanium?或 Itanium 2? 處理器、AMD? Opteron? 或 Athlon MP? 處理器、或Motorola?處理器線(lines)等。通信端口 903可以是以下端口中的任何一個(gè):與基于調(diào)制解調(diào)器的撥號(hào)連接一起使用的RS-232端口、10/100以太網(wǎng)端口、使用銅或光纖的吉比特端口、或USB端口等。通信端口 803可以根據(jù)網(wǎng)絡(luò)(諸如局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、⑶N、或計(jì)算機(jī)系統(tǒng)800連接的任何網(wǎng)絡(luò))而選擇。計(jì)算機(jī)系統(tǒng)800可以經(jīng)由輸入/輸出(1/0)端口 809與外圍設(shè)備(例如,顯示屏幕830、輸入設(shè)備816)通信。
[0115]主存儲(chǔ)器804可以是隨機(jī)存取存儲(chǔ)器(RAM)、或本領(lǐng)域中公知的其它動(dòng)態(tài)存儲(chǔ)設(shè)備。只讀存儲(chǔ)器806可以是用于存儲(chǔ)靜態(tài)信息(諸如用于處理器802的指令)的任何靜態(tài)存儲(chǔ)設(shè)備(諸如可編程只讀存儲(chǔ)器(PROM)芯片)。大容量儲(chǔ)存器807可以被用于存儲(chǔ)信息和指令。例如,可以使用硬盤(諸如Adaptec?小型計(jì)算機(jī)串行接口(scsi)驅(qū)動(dòng)器族)、光盤、磁盤陣列(諸如獨(dú)立磁盤冗余陣列(RAID),諸如Adaptec? RAID驅(qū)動(dòng)器族)、或任何其它大容量存儲(chǔ)設(shè)備。
[0116]總線801將處理器802與其它存儲(chǔ)器、儲(chǔ)存器和通信塊通信地耦合。根據(jù)所使用的存儲(chǔ)設(shè)備等,總線801可以是PCI/PC1-X、SCS1、基于通用串行總線(USB)的系統(tǒng)總線(或其它)??梢苿?dòng)存儲(chǔ)介質(zhì)805可以是任何類型的外部硬盤驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器、1MEGA? Zip驅(qū)動(dòng)器、緊湊盤-只讀存儲(chǔ)器(CD-ROM)、緊湊盤-可重寫(CD-RW)、數(shù)字視頻盤-只讀存儲(chǔ)器(DVD-ROM)等。
[0117]本文中的實(shí)施例可以被提供作為計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品可以包括其上存儲(chǔ)指令的機(jī)器可讀介質(zhì),所述指令可以被用于對(duì)計(jì)算機(jī)(或其它電子設(shè)備)編程以執(zhí)行處理。如本文中所使用的,術(shù)語“機(jī)器可讀介質(zhì)”指的是任何介質(zhì)、多個(gè)相同介質(zhì)、或不同介質(zhì)的結(jié)合,這些介質(zhì)參與提供可以被計(jì)算機(jī)、處理器或類似設(shè)備讀取的數(shù)據(jù)(例如,指令、數(shù)據(jù)結(jié)構(gòu))。這樣的介質(zhì)可以采取許多形式,包括但不限于,非易失性介質(zhì)、易失性介質(zhì)、以及傳輸介質(zhì)。非易失性介質(zhì)包括,例如,光盤或磁盤以及其它持久存儲(chǔ)器。易失性介質(zhì)包括通常構(gòu)成計(jì)算機(jī)的主存儲(chǔ)器的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器。傳輸介質(zhì)包括同軸電纜、銅線和光纖,其包括包含耦合到處理器的系統(tǒng)總線的線。傳輸介質(zhì)可以包括或傳送聲波、光波以及電磁發(fā)射,諸如射頻(RF)和紅外(IR)數(shù)據(jù)通信期間產(chǎn)生的那些。
[0118]機(jī)器可讀介質(zhì)可以包括,但不限于,軟盤、光盤、⑶-ROM、磁光盤、ROM、RAM、可擦除可編程只讀存儲(chǔ)器(EPROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、磁卡或光學(xué)卡、閃存、或適合于存儲(chǔ)電指令的其它類型的介質(zhì)/機(jī)器可讀介質(zhì)。而且,本文中的實(shí)施例還可以被作為計(jì)算機(jī)程序產(chǎn)品下載,其中,所述程序可以經(jīng)由通信鏈路(例如,調(diào)制解調(diào)器或網(wǎng)絡(luò)連接)通過載波或其它傳播介質(zhì)中所包含的數(shù)據(jù)信號(hào)從遠(yuǎn)程計(jì)算機(jī)傳遞到請(qǐng)求計(jì)算機(jī)。
[0119]在將數(shù)據(jù)(例如,指令序列)傳載到處理器中可以涉及各種形式的計(jì)算機(jī)可讀介質(zhì)。例如,數(shù)據(jù)可以⑴從RAM遞送到處理器;(ii)通過無線傳輸介質(zhì)傳載;(iii)根據(jù)大量的格式、標(biāo)準(zhǔn)或協(xié)議進(jìn)行格式化和/或傳輸;和/或(iv)以本領(lǐng)域中眾所周知的各種方式中的任何一種進(jìn)行加密。
[0120]計(jì)算機(jī)可讀介質(zhì)可以(以任何適當(dāng)?shù)母袷?存儲(chǔ)適于執(zhí)行方法的那些程序元素。
[0121]如所示的,主存儲(chǔ)器804被編碼有支持本文中所討論的功能性的應(yīng)用850-1 (應(yīng)用850-1可以是例如初始設(shè)定200或比較應(yīng)用216)。應(yīng)用850-1 (和/或本文中描述的其它資源)可以體現(xiàn)為支持根據(jù)本文中描述的不同實(shí)施例的處理功能性的軟件代碼,諸如數(shù)據(jù)和/或邏輯指令(例如,存儲(chǔ)在存儲(chǔ)器中或另一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(諸如盤)上的代碼)。
[0122]在一個(gè)實(shí)施例的操作期間,處理器802經(jīng)由總線801的使用訪問主存儲(chǔ)器804,以便啟動(dòng)、運(yùn)行、執(zhí)行、解釋或以其它方式執(zhí)行應(yīng)用850-1的邏輯指令。應(yīng)用850-1的執(zhí)行生成處理850-2中的處理功能性。換句話講,處理950-2表示在計(jì)算機(jī)系統(tǒng)800中的處理器802內(nèi)或上執(zhí)行的應(yīng)用850-1的一個(gè)或多個(gè)部分。
[0123]應(yīng)當(dāng)注意,除了執(zhí)行本文中所討論的操作的處理850-2之外,本文中的其它實(shí)施例包括應(yīng)用850-1本身(即,未執(zhí)行的或非執(zhí)行的邏輯指令和/或數(shù)據(jù))。應(yīng)用850-1可以被存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)(例如,儲(chǔ)存庫)(諸如盤、硬盤)上或光學(xué)介質(zhì)中。根據(jù)其它實(shí)施例,應(yīng)用850-1還可以被存儲(chǔ)在存儲(chǔ)器類型系統(tǒng)中,諸如固件、只讀存儲(chǔ)器(ROM)中,或者如該示例中那樣,作為主存儲(chǔ)器804內(nèi)的(例如,隨機(jī)存取存儲(chǔ)器或RAM內(nèi)的)可執(zhí)行代碼。例如,應(yīng)用850-1還可以被存儲(chǔ)在可移動(dòng)存儲(chǔ)介質(zhì)805、只讀存儲(chǔ)器806、和/或大容量存儲(chǔ)設(shè)備807中。
[0124]以上參照?qǐng)D2(a)_2(d)和圖4(a)_4(b)討論了計(jì)算機(jī)系統(tǒng)800支持的示例功能性,更具體地,與應(yīng)用850-1相關(guān)聯(lián)的功能性。
[0125]本領(lǐng)域技術(shù)人員將理解,計(jì)算機(jī)系統(tǒng)800可以包括其它處理和/或軟件和硬件組件,諸如控制硬件資源的分配和使用的操作系統(tǒng)。
[0126]如本文中所討論的,本發(fā)明的實(shí)施例包括各種步驟或操作。各個(gè)這些步驟可以由硬件組件執(zhí)行,或者可以包含在機(jī)器可執(zhí)行指令中,這些指令可以被用于使通用或?qū)S锰幚砥鞅痪幊逃袌?zhí)行操作的指令??商娲?,步驟可以由硬件、軟件和/或固件的結(jié)合執(zhí)行。術(shù)語“模塊”指的是自包含功能組件,其可以包括硬件、軟件、固件或它們的任何結(jié)合。
[0127]本領(lǐng)域普通技術(shù)人員在閱讀本描述時(shí)將容易意識(shí)并理解到,裝置的實(shí)施例可以包括可操作為執(zhí)行所描述的處理中的一些(而不必是全部)的計(jì)算機(jī)/計(jì)算設(shè)備。
[0128]存儲(chǔ)程序或數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì)的實(shí)施例包括存儲(chǔ)程序的計(jì)算機(jī)可讀介質(zhì),該程序在被執(zhí)行時(shí)可以使處理器執(zhí)行所描述的處理中的一些(而不必是全部)。
[0129]在本文中描述處理的情況下,本領(lǐng)域技術(shù)人員將意識(shí)到,該處理可以在沒有任何用戶干預(yù)的情況下進(jìn)行操作。在另一實(shí)施例中,該處理包括一些人類干預(yù)(例如,步驟由人執(zhí)行或者通過人的幫助執(zhí)行)。
[0130]應(yīng)當(dāng)意識(shí)到,權(quán)利要求中的詞“第一”和“第二”被用于區(qū)分或識(shí)別,而非表示順序或數(shù)字限制。類似地,字母或數(shù)字標(biāo)記(諸如“(a)”、“(b)”等)的使用被用于幫助區(qū)分和/或識(shí)別,而非表示任何順序或數(shù)字限制或排序。
[0131]盡管已經(jīng)結(jié)合目前認(rèn)為是最實(shí)用且優(yōu)選的實(shí)施例的實(shí)施例對(duì)本發(fā)明進(jìn)行了描述,但要理解,本發(fā)明不限于所公開的實(shí)施例,而是相反,旨在涵蓋包括在所附權(quán)利要求的精神和范圍內(nèi)的各種修改和等同布置。
【權(quán)利要求】
1.一種由硬件結(jié)合軟件實(shí)現(xiàn)的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述方法包括: 確定數(shù)據(jù)項(xiàng)中的多個(gè)同步點(diǎn),所述數(shù)據(jù)項(xiàng)由任意的比特序列組成,并且每個(gè)同步點(diǎn)由所述數(shù)據(jù)項(xiàng)中的比特序列組成; 對(duì)于所述多個(gè)同步點(diǎn)中的每一個(gè),確定所述數(shù)據(jù)項(xiàng)中對(duì)應(yīng)的比特塊; 對(duì)于每個(gè)比特塊,通過將哈希函數(shù)或消息摘要函數(shù)應(yīng)用于所述比特塊來確定對(duì)應(yīng)的塊簽名; 通過將所述多個(gè)同步點(diǎn)中的每一個(gè)與所述對(duì)應(yīng)的比特塊的對(duì)應(yīng)的塊簽名相關(guān)聯(lián)來形成數(shù)據(jù)項(xiàng)簽名。
2.根據(jù)權(quán)利要求1所述的方法,其中,每個(gè)特定的同步點(diǎn)的對(duì)應(yīng)的比特塊與所述特定的同步點(diǎn)直接相鄰。
3.根據(jù)權(quán)利要求1或2所述的方法,其中,所述哈希函數(shù)從包括以下函數(shù)的函數(shù)中選擇:SHA 和 MD5。
4.根據(jù)權(quán)利要求1、2和3中的任何一項(xiàng)所述的方法,其中,每個(gè)同步點(diǎn)由32個(gè)比特組成。
5.根據(jù)權(quán)利要求1、2、3和4中的任何一項(xiàng)所述的方法,其中,每個(gè)比特塊由256個(gè)字節(jié)組成。
6.一種設(shè)備,所述設(shè)備包括用于實(shí)現(xiàn)權(quán)利要求1-5中的任何一項(xiàng)的方法的硬件和軟件。
7.一種由硬件結(jié)合軟件實(shí)現(xiàn)的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述方法包括: (A)獲得第一數(shù)據(jù)項(xiàng)的第一數(shù)據(jù)項(xiàng)簽名,所述第一數(shù)據(jù)項(xiàng)簽名包括所述第一數(shù)據(jù)項(xiàng)中的多個(gè)同步點(diǎn)與對(duì)應(yīng)的多個(gè)塊簽名之間的關(guān)聯(lián); (B)嘗試在第二數(shù)據(jù)項(xiàng)中尋找所述多個(gè)同步點(diǎn)中的同步點(diǎn);以及 (C)如果在所述第二數(shù)據(jù)項(xiàng)中找到所述多個(gè)同步點(diǎn)中的同步點(diǎn),則: (C) (I)確定所述第二數(shù)據(jù)項(xiàng)中對(duì)應(yīng)的比特塊的塊簽名,其中,所述塊簽名通過將哈希函數(shù)或消息摘要函數(shù)應(yīng)用于所述第二數(shù)據(jù)項(xiàng)中所述對(duì)應(yīng)的比特塊來確定;和 (C) (2)查明來自所述第二數(shù)據(jù)項(xiàng)的所述同步點(diǎn)和所述對(duì)應(yīng)的塊簽名是否對(duì)應(yīng)于所述第一數(shù)據(jù)項(xiàng)簽名中的同步點(diǎn)和塊簽名;以及 (C)(3)當(dāng)來自所述第二數(shù)據(jù)項(xiàng)的所述同步點(diǎn)和所述對(duì)應(yīng)的塊簽名對(duì)應(yīng)于所述第一數(shù)據(jù)項(xiàng)簽名中的同步點(diǎn)和塊簽名時(shí),維護(hù)指示該對(duì)應(yīng)的信息; (D)在所述第二數(shù)據(jù)項(xiàng)中的至少一些仍未被處理時(shí),重復(fù)步驟(B)和(C),直到來自所述第二數(shù)據(jù)項(xiàng)的預(yù)定數(shù)量的同步點(diǎn)和對(duì)應(yīng)的塊簽名與所述第一數(shù)據(jù)項(xiàng)簽名中的同步點(diǎn)和對(duì)應(yīng)的塊簽名匹配為止; (E)當(dāng)來自所述第二數(shù)據(jù)項(xiàng)的所述預(yù)定數(shù)量的同步點(diǎn)和對(duì)應(yīng)的塊簽名與所述第一數(shù)據(jù)項(xiàng)簽名中的同步點(diǎn)和對(duì)應(yīng)的塊簽名匹配時(shí),指示所述第一數(shù)據(jù)項(xiàng)與所述第二數(shù)據(jù)項(xiàng)之間匹配。
8.根據(jù)權(quán)利要求7所述的方法,其中,對(duì)于所述第二數(shù)據(jù)項(xiàng)的多個(gè)不同部分,并行地重復(fù)步驟⑶和(C)。
9.根據(jù)權(quán)利要求7或8所述的方法,還包括: (F)在(E)中所確定的第一數(shù)據(jù)項(xiàng)與第二數(shù)據(jù)項(xiàng)之間匹配的情況下,選擇性地拒絕對(duì)所述第二數(shù)據(jù)項(xiàng)的訪問。
10.根據(jù)權(quán)利要求7、8和9中的任何一項(xiàng)所述的方法,還包括: (G)在(E)中所確定的第一數(shù)據(jù)項(xiàng)與第二數(shù)據(jù)項(xiàng)之間匹配的情況下,維護(hù)關(guān)于第二數(shù)據(jù)項(xiàng)的信息。
11.根據(jù)權(quán)利要求10所述的方法,其中,處理的至少一些在特定的設(shè)備中發(fā)生,并且其中,所維護(hù)的信息包括關(guān)于所述特定的設(shè)備的信息。
12.根據(jù)權(quán)利要求11所述的方法,其中,所述設(shè)備是網(wǎng)絡(luò)中的路由器。
13.根據(jù)權(quán)利要求7-12中的任何一項(xiàng)所述的方法,還包括: 獲得多個(gè)分組;和 從所述多個(gè)分組提取有效載荷信息,以獲得所述第二數(shù)據(jù)項(xiàng)中的至少一些。
14.根據(jù)權(quán)利要求7-13中的任何一項(xiàng)所述的方法,還包括: (H)在(E)中所確定的第一數(shù)據(jù)項(xiàng)與第二數(shù)據(jù)項(xiàng)之間匹配的情況下,使所述第二數(shù)據(jù)項(xiàng)經(jīng)受附加的檢查以確定它是否與所述第一數(shù)據(jù)項(xiàng)相同。
15.根據(jù)權(quán)利要求7-14中的任何一項(xiàng)所述的方法,其中,每個(gè)特定的同步點(diǎn)的對(duì)應(yīng)的比特塊與所述特定的同步點(diǎn)直接相鄰。
16.根據(jù)權(quán)利要求7-15中的任何一項(xiàng)所述的方法,其中,所述哈希函數(shù)從包括以下函數(shù)的函數(shù)中選擇:SHA和MD5。
17.根據(jù)權(quán)利要求7-16中的任何一項(xiàng)所述的方法,其中,每個(gè)同步點(diǎn)由32個(gè)比特組成。
18.根據(jù)權(quán)利要求7-17中的任何一項(xiàng)所述的方法,其中,每個(gè)比特塊由256個(gè)字節(jié)組成。
19.一種由硬件結(jié)合軟件實(shí)現(xiàn)的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述方法包括: (A)獲得多個(gè)數(shù)據(jù)項(xiàng)簽名,多個(gè)數(shù)據(jù)項(xiàng)中的每一個(gè)具有至少一個(gè)簽名,所述多個(gè)數(shù)據(jù)項(xiàng)中的每一個(gè)特定的數(shù)據(jù)項(xiàng)的數(shù)據(jù)項(xiàng)簽名包括所述特定的數(shù)據(jù)項(xiàng)中的多個(gè)同步點(diǎn)與所述特定的數(shù)據(jù)項(xiàng)的對(duì)應(yīng)的多個(gè)塊簽名之間的關(guān)聯(lián); (B)嘗試在第二數(shù)據(jù)項(xiàng)中尋找所述多個(gè)數(shù)據(jù)項(xiàng)簽名的同步點(diǎn);以及 (C)如果在所述第二數(shù)據(jù)項(xiàng)中找到所述多個(gè)數(shù)據(jù)項(xiàng)簽名的同步點(diǎn),則: (C) (I)確定所述第二數(shù)據(jù)項(xiàng)中對(duì)應(yīng)的比特塊的塊簽名,其中,所述塊簽名通過將哈希函數(shù)或消息摘要函數(shù)應(yīng)用于所述第二數(shù)據(jù)項(xiàng)中所述對(duì)應(yīng)的比特塊來確定;和 (C) (2)查明所述第二數(shù)據(jù)項(xiàng)的所述同步點(diǎn)和所述對(duì)應(yīng)的塊簽名是否對(duì)應(yīng)于所述多個(gè)數(shù)據(jù)項(xiàng)簽名的任何一個(gè)中的同步點(diǎn)和塊簽名;以及 (C)(3)當(dāng)所述第二數(shù)據(jù)項(xiàng)的所述同步點(diǎn)和所述對(duì)應(yīng)的塊簽名對(duì)應(yīng)于所述多個(gè)數(shù)據(jù)項(xiàng)簽名的一個(gè)或多個(gè)中的同步點(diǎn)和塊簽名時(shí),維護(hù)指示該對(duì)應(yīng)的信息; (D)在所述第二數(shù)據(jù)項(xiàng)中的至少一些仍未被處理時(shí),重復(fù)步驟(B)和(C),直到來自所述第二數(shù)據(jù)項(xiàng)的預(yù)定數(shù)量的同步點(diǎn)和對(duì)應(yīng)的塊簽名與所述多個(gè)數(shù)據(jù)項(xiàng)簽名的至少一個(gè)中的同步點(diǎn)和對(duì)應(yīng)的塊簽名匹配為止; (E)當(dāng)來自所述第二數(shù)據(jù)項(xiàng)的預(yù)定數(shù)量的同步點(diǎn)和對(duì)應(yīng)的塊簽名與所述多個(gè)數(shù)據(jù)項(xiàng)的第一數(shù)據(jù)項(xiàng)簽名中的所述預(yù)定數(shù)量的同步點(diǎn)和塊簽名匹配時(shí),指示第一數(shù)據(jù)項(xiàng)與第二數(shù)據(jù)項(xiàng)之間匹配。
【文檔編號(hào)】G06F17/00GK104205089SQ201380011606
【公開日】2014年12月10日 申請(qǐng)日期:2013年2月15日 優(yōu)先權(quán)日:2012年2月29日
【發(fā)明者】R·薩吉, N·梅約米 申請(qǐng)人:阿爾特耐特股份有限公司