JP6340668B2 - ストリーム認識およびフィルタリング - Google Patents

ストリーム認識およびフィルタリング Download PDF

Info

Publication number
JP6340668B2
JP6340668B2 JP2014559914A JP2014559914A JP6340668B2 JP 6340668 B2 JP6340668 B2 JP 6340668B2 JP 2014559914 A JP2014559914 A JP 2014559914A JP 2014559914 A JP2014559914 A JP 2014559914A JP 6340668 B2 JP6340668 B2 JP 6340668B2
Authority
JP
Japan
Prior art keywords
data stream
bits
signature
block
synchronization
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2014559914A
Other languages
English (en)
Other versions
JP2015515770A (ja
Inventor
セージ、ラビッド
メイジョメ、ノルベルト
Original Assignee
グローバル ファイル システムズ ホールディングス、エルエルシー
グローバル ファイル システムズ ホールディングス、エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by グローバル ファイル システムズ ホールディングス、エルエルシー, グローバル ファイル システムズ ホールディングス、エルエルシー filed Critical グローバル ファイル システムズ ホールディングス、エルエルシー
Publication of JP2015515770A publication Critical patent/JP2015515770A/ja
Application granted granted Critical
Publication of JP6340668B2 publication Critical patent/JP6340668B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/835Generation of protective data, e.g. certificates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Storage Device Security (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

[著作権の陳述] この特許文献は著作権保護を受ける資料を含む。著作権者は、本特許文献または米国特許商標庁での出願におけるいずれかの関係資料を複製することに異議はないが、それ以外ではあらゆる著作権を留保する。
本発明は、ストリーム認識およびフィルタリングに関する。
データが他の既知のデータに対応するか否かを判定することを試みるべくデバイス上に格納され、またはデバイス間で送信されるデータを検査することは多くの場合、有用であり、望ましい。例えば、デバイスに格納されたデータが他のデータに対応し、または他のデータの完全もしくは部分的コピーであるかを判定することは有用であり、あるいは望ましい。別の例としては、2つのデバイス間で送信されるデータストリームが他のデータに対応するか(または他のデータの完全または部分的コピーであるか)を判定することが有用であり、あるいは望ましいことがある。
本発明の他の目的、特徴、および特性、関連する構造体の要素の操作方法および機能、ならびに部品の組み合わせおよび製造の効率性は、添付の図面を参照して以下の説明および添付の特許請求の範囲を検討すればより明らかとなるであろう。なお、これら書類の全てが本明細書の一部を形成する。
データストリームを図示する。
同期ポイントおよび対応するビットのブロックを図示する。
図1(a)のデータストリームに対するストリームシグネチャを図示する。
データストリームの処理を図示する。 データストリームの処理を図示する。 データストリームの処理を図示する。 データストリームの処理を図示する。
複数のストリームを処理するべく用いられる構造を示す。 複数のストリームを処理するべく用いられる構造を示す。
複数のストリームの処理を図示する。 複数のストリームの処理を図示する。
ストリームを処理するための例示的なデータ構造体を示す。
図5のデータ構造体を用いて処理した例示的なストリームを示す。 図5のデータ構造体を用いて処理した例示的なストリームを示す。 図5のデータ構造体を用いて処理した例示的なストリームを示す。
典型的なパケットを示す。
コンピュータシステムの概略図である。
データストリーム(またはストリーム)はビットのシーケンスを含む。ストリーム中のビットのシーケンスはいくつかの種類のデータ項目(例えば映画または画像、もしくは音楽、データベース等)を表し、あるいは符号化することができる。ストリーム中のビットのシーケンスは暗号化および/または圧縮してもよい。当業者は、本明細書を読めば、本発明が基礎となるビットのシーケンスが何を表すかによって限定されないことを理解するであろう。
本明細書において使用するように、データは、基礎となるデータが何を表すか、および基礎となるデータがどのようにフォーマットされ、符号化され、または格納されるかに関わらず、任意のデータを指す。
図1(a)〜図1(b)を参照すると、ストリーム100は複数の同期ポイントを含む(図面において、SP、SP、SP...SPと示され、集合的にはSPと呼ばれるi同期ポイントと共にストリームを示す。)。ビットのブロックはストリーム中の各同期ポイントの次である(j番目のブロックは図面においてBと表される)。
図1(b)に示すように、i番目の同期ポイント(SP)はkビット(b...b)からなり、 ビット(B)のi番目のブロックはjビット(c...c)からなる。
図面において、ビットのj番目のブロックをj番目の同期ポイントのすぐ次にあるものとして示すが、ビットのj番目のブロックがある既知の量によってj番目の同期ポイントから分離され得ることは明らかである。
現在好ましい実装において、16個の同期ポイントが存在し、そのそれぞれは32ビットからなり、またビットの各ブロックは256バイトからなる。別の実装において、10個の同期ポイントが存在し、そのそれぞれは64ビットからなり、またビットの各ブロックは256バイトからなる。本明細書において使用されるように、ストリーム中のビット数はストリームのサイズと呼ばれ、同期ポイントにおけるビット数は同期ポイントのサイズと呼ばれ、ビットのブロックにおけるビット数はビットのブロックのサイズと呼ばれる。当業者は本明細書を読めば、上記の数以外の種々のおよび/または他の数の同期ポイントを使用することができ、同期ポイントは上記のもの以外の種々の異なるサイズを有することができ、ビットのブロックが上記の数以外の種々のサイズを有することができることを理解するであろう。
当業者は本明細書を読めば、同期ポイントの数が、ある場合にビットのストリームサイズの関数として判定され得ることを理解するであろう。
関数(h)をビットのブロックに適用することによって判定される値HはビットBの各ブロックに対応し、従って次式の通りである。 H=h(B
値Hは本明細書において、ビットのj番目のブロックに対するブロックシグネチャとも呼ばれる。
関数hはビットの2つの任意のブロックBおよびBについて、BがBに等しいとき、h(B)=h(B)という特性を有していなければならない。
関数hに対する他の所望の特性としては、以下のものがある。(a)Bにおける小さい変化がh(B)の異なる値をもたらす可能性があること。(b)関数hは比較的容易かつ迅速に計算できること。
関数hは任意のハッシュ関数であり得る。いくつかの実装において、MD5またはSHA‐1等のメッセージダイジェスト関数を用いることができる、好ましくはより単純でより軽い関数を用い得る。ハッシュ関数は32ビット値を生成することが好ましい。
当業者は本明細書を読めば、関数hがビットの全てのブロックについて一意な値を生成する必要がない(またその可能性が少ない)ことを理解するであろう。
各ストリームは対応するストリームシグネチャを有する。ここで図1(a)〜図1(c)を参照すると、i同期ポイント(SP、SP、SP3...SP)を有するストリームのシグネチャはi組の<SP,h(B)>からなり、ただしj=1...iである。図1(c)のダイアグラムは図1(a)のストリーム100のシグネチャ102の論理表現を示す。
図2(a)および図2(b)を参照してデータストリームに対するストリームシグネチャの作成を説明する。図2(a)に示すように、ストリームSは初期設定200によって処理され、ストリームシグネチャ202を生成する。図2(b)の流れ図を参照して初期設定200による処理をより詳細に説明する。初期設定処理200により、ある数(k)のペア<SP,h(B)>からなり、ただしkのある値についてj=1...kであるストリームシグネチャ202を作成される。kの値は事前設定されているのが好ましいが(例えば10、15、20等)、上述のようにkの値はストリームSのサイズの関数として決定してもよい。
ストリーム200を処理するとき、初期設定202により、まずストリームSのサイズを判定することができる(204)。このサイズ情報は、例えばこのストリームに必要とされる同期ポイントの数(k)および/またはストリーム中の同期ポイントの分離を判定するべく用いることができる。本明細書を読めば明らかなように、任意の所与のストリーム(S)について、同期ポイントをストリーム(S)全体に分散させることが好ましい。
その後、(206で)処理202により、ストリームS中の次の(i番目の)同期ポイント(SP)およびビット(B)の対応するブロックが判定される。ビットBのブロックについての値H(B)を判定し(208)、ペア<SP,H(B)>はストリームSのシグネチャ中に格納される(210)。208で計算される関数「H」は上記の関数hに対応し、MD5またはSHA等のハッシュ関数のメッセージダイジェストであることが好ましい。
その後、処理202により、このストリームSについて十分な<同期ポイント,値>のペアを決定したかを判定する(212)。そうである場合、ストリームのシグネチャ(SS)は格納され(214)、そうでなければ別の同期ポイントを判定する(206)。ストリーム(S)の処理の終わりに、ストリームシグネチャ(例えば図1(c)に示す形態の)を生成し、ストリームSに関連付けて格納する。
本明細書を読めば当業者には明らかなように、2つのストリームが同一のストリームシグネチャ(本明細書に説明する処理を用いて判定した)を有するという事実は2つのストリームが同一であることを必ずしも示唆するものではない。例えば、第1のストリームは数百万のビットからなるが、ストリームシグネチャは10または20の<同期ポイント,ビット値のブロック>のペアのみからなることがあり、この場合、同期ポイントはストリーム全体に無作為に分散され、各同期ポイントは128ビットのみを使用し、ビットの各ブロックは512ビットのみを使用する。この場合、第2のストリームが全く同じ<同期ポイント,ビット値のブロック>のペアを有する場合、第1のストリームに対応してもよく、または対応しなくてもよい。しかし、第2のストリームが第1のストリームと同じ<同期ポイント,ビット値のブロック>のペアを有しない場合、第1のストリームに対応しない。
本発明者はいくつかの用途について、データストリームが別の既知のデータストリームに十分に対応しているかを判定すれば十分であり得ることに気付いた。本発明者はいくつかの用途において、2つのストリームがある程度は確実に等しいことを判定すれば十分であり得ることに気付いた。そのような情報は、ストリームのより広範な(かつ、恐らくは高価な)処理をトリガし、対応または等しさを判定するべく使用し得る。
ここで図2(c)を参照すると、ストリームSのシグネチャ(SS)を判定および格納すると、任意のストリームを処理し、ストリームSに十分対応しているかを判定することができる。ストリームS'を比較処理216に提供する(以下に図2(d)を参照して記載する)。比較処理216は先に格納されたストリームシグネチャ(SS)を使用し、入力ストリームS'がストリームSに対応するか否かを判定する。
比較処理216は処理するストリームが他に存在しないかを判定する(218)。存在しない場合、一致は見られず、ストリームは一致しない。処理する入力ストリームが更に存在する場合、処理により同期ポイントを検索する(220)。処理によりストリームシグネチャSSにおける同期ポイント(SP)のいずれかを検索し、順序通りに検索する必要はないことを理解されたい。本明細書を読めば当業者に明らかなように、これによって入力ストリームを比較処理216に順序に関係なく送られ得る断片またはパケットの状態で処理することを可能にする。
同期ポイント(SP)を発見すると、次いで比較処理216は(220で)その同期ポイントに関連するビット(B)の対応するブロックを発見し、ビットBのブロックkに対するシグネチャH(B)を判定する。当業者は本明細書を読めば、比較処理216において使用する関数hがストリームシグネチャを生成するべく使用した関数と同じでなければならないことを理解するであろう。
次に(226で)ペア<SP,H(B)>を、ストリームシグネチャSSにおける同期ポイントSPに対して対応するペアと比較する。 ペアが(228で)一致しない場合、残余のストリーム(もしあれば)を(218以降で)処理する。他方、(228で)ペア<SP,H(B)>がストリームシグネチャSSにおける同期ポイントSPの対応するペアに一致する場合、(230で)比較処理216により一致するストリームを検討するべく十分なペアの一致が存在したかどうかを判定する。「十分な一致」に対する試験(230)ではそれまでのストリームにおける一致の数のカウントを用いてもよく、そのカウント値を用いてストリームシグネチャに対する<同期ポイント,ブロックシグネチャ>のペアのパーセンテージによる一致を判定してもよい。いくつかの好ましい実装において、ストリームの一致を検討する上で70%の一致(例えば10分の7の一致)は十分な一致とみなされる(232)。当業者は本明細書を読めば、要求されるパーセンテージによる一致(最大で100%を含む)が比較処理により要求される確度の関数であることを理解するであろう。上記で説明したように、一致が発見された場合に(232)、比較処理216を用いて追加項目(そしてより費用の掛かる比較)をトリガすることができるので、当業者は(232で)どのように偽の肯定的一致を、十分に一致するストリームの次の処理コストとトレードオフするかを理解するであろう。
これまで、入力ストリーム(S')を先に処理した1つのストリーム(S)と比較してこれに一致させる段階を説明してきた。いくつかの実施形態において、入力ストリームは、2つ以上の先に処理したストリームと比較することができる。
図3(a)のダイアグラムは複数(k個)のストリームシグネチャの論理構成300を示し、k個のストリームS1,...Skのそれぞれに1つのストリームシグネチャがある。ストリームシグネチャのそれぞれは図2(a)〜2(b)を参照して上記のように判定され得る。
ここで、図3(a)〜3(b)および4(a)〜4(b)を参照して任意の入力ストリーム(S)をこれらのkストリームのそれぞれと比較する処理を説明する。複数の可能なストリームと比較した1つのストリームに対する比較処理により、入力ストリームにおける複数のストリームシグネチャに対する同期ポイントを発見することができ、一致する2つ以上のシグネチャに対する<同期ポイント,ハッシュ値>のペアを発見することもできる。要するに、処理によりkストリーム(S1...Sk)のそれぞれについて処理が発見した一致する<同期ポイント,ハッシュ値>のペアの数をトラッキングし、(上記のように十分性に関する所定のしきい値に基づいて)入力ストリームSとkストリームの第1のものとの間の一致を十分な一致と宣言するのが好ましい。
図4(a)〜4(b)の流れ図を参照すると、処理するストリームSが更に存在する場合(400)、処理を継続して(402)、ストリームS1...Skのうち1つに対する同期ポイントのうちの少なくとも1つに対応するSにおける同期ポイント(SP)を検索する。流れ図において、ストリームS1...SkはS'として示されるストリームのセットと称する。同期ポイントが発見されない場合(402)、処理を継続して(400)、入力ストリームSのいずれかの残存する部分を処理する。(402で)ストリームS1...Sk(すなわちストリームS'のセット)のいずれかに対応するSにおいて同期ポイント(SP)が発見されない場合、処理を継続して(404)、発見された同期ポイント(SP)に関連するビットBのブロックkの対応するシグネチャH(B)を判定する。
次に(406で)、シグネチャのペア<SP,H(B)>を同期ポイントSPと関連するS'における全てのストリームのシグネチャと比較する(SPはSにおいて発見された、ストリームS1...Skのうち少なくとも1つの同期ポイントのうちの少なくとも1つに対応する同期ポイントであり、H(B)は同期ポイントSPに対応するビットBのブロックのシグネチャである)。再び図3(a)を参照すると、ストリームS1...Skのそれぞれのストリームシグネチャは格納されて処理のために利用可能であるので、<同期ポイント,シグネチャ>のペアをチェックすることができる。
S'においてストリームのいずれかに対するペア<SP,H(B)>について一致するシグネチャのペアが発見されない場合(408)、処理を継続して(400)、入力ストリームSの残存する任意の部分を処理する。1または複数の一致するペア<SP,H(B)>を発見した場合(408)、S'における全ての一致するストリームについて<SP,H(B)>のペアのカウントが更新されるまで、処理を継続する(410)。
カウントを更新すると(410)、処理によりS'におけるストリーム(S)のいずれかが十分に一致するペアを有するかを判定する(412)。(412で)S'におけるストリームが十分に一致するペアを有しないと判定される場合、処理を継続して(400)、入力ストリームSのいずれかの残存する部分を処理する。ストリームSが十分に一致するペアを有する場合、処理を行い(414)、入力ストリームSは十分に一致するペアを有するストリームに一致するとみなされる。
上記の処理がセットS'において2つ以上のストリームに一致する入力ストリームSをもたらし得ることを理解されたい。
いくつかの実装において、データ構造体302(図3(b))は各ストリームシグネチャのチェックリストを維持し、従って<同期ポイント,シグネチャ>のペアがそのストリームに一致するたびに、処理はマークオフ(またはチェック)することができる。そのリストにより、システムがそのストリームの一致するペアの数を判定する(例えばカウントする)ことを可能にする。当業者は本明細書を読めば、例えば対応する<同期ポイント,シグネチャ>のペアのそれぞれにつき1ビットのビットマップとすることを含む、任意の数の方法でチェックリストを実装し得ることを理解するであろう。入力ストリームの処理を開始するとき、チェックリストにおける全てのビットはゼロに設定され、一致を発見すると、対応するビット値は1に設定される。ストリームSjのビットマップチェックリストにおけるビットの合計により、そのストリームSjに対する入力ストリームにおいて一致するペアの数が与えられる。理解されるように、異なるおよび/または他のスキームを用いて一致の数をトラッキングしてもよい。
当業者は本明細書を読めば、ここで2つのストリームに関して「一致する(match)」(または「一致する(matching))という用語を用いても、それらが同一であることを必ずしも示唆するものでないことを理解するであろう。2つのストリームは、これらのストリームについて十分な数の<同期ポイント,シグネチャ>のペアが同じである場合に一致する。
前述のように、当業者は本明細書を読めば、十分性の異なる基準を用いて2つのストリームが十分に一致するかを判定し得ることを理解するであろう。いくつかの実施形態において、70%の一致が十分とみなされるが、他の実施形態においてはより高い一致(最大100%)が要求されることがある。当業者は本明細書を読めば、例えば処理の用途および偽の肯定的一致の公差に基づいて一致の十分性の基準をどのように選択するかを理解するであろう。前述のように、いくつかの用途において、ここで説明する処理により2つのストリームが一致することが分かると、更なる試験を用いてストリームが一致するかを判定することができる。
[データ構造体および実装] 当業者は本明細書を読めば、様々な最適化をマッチング処理の実装に適用することができることを理解するであろう。好ましくは、データ構造体は以下のようであるべきである。 スケーラブル。初期には数百から数百万のエントリを取扱い、必要であれば拡張する選択肢を有するべきである。 メモリが効率的であること。可能な限り少ないメモリを使用するべきである。 検索が効率的であること。所与のパターンの検索はO(n)を超えないものとする。
図5を参照してストリームマッチング処理を実装するための例示的なデータ構造体を説明する。この例においては、各同期ポイントは6〜8バイトのシーケンスであり、各フィンガープリントは2バイト長の値であると想定されたい。追加の(任意選択の)データもデータ構造体内に格納してもよい。図5を参照すると、データ構造体(同期フィンガープリンティングデータ構造体(SFDS)と呼ばれる)はアレイのセットから構成される。 行1。256ビット長のアレイであり、各ビットはASCIIコード(同期ポイントにおいて現れるコード)に対応する。 行2。256ビット長のアレイであり、256ビットは行1のビットのそれぞれに関係する。 行3。256ビット長のアレイであり、256ビットは行3のビットのそれぞれに関係する。(行4。行3の個別のエントリに対応するツリーのリストである。
初期化処理において、同期ポイントのペア(6〜8バイトのシーケンス)およびフィンガープリント(データの追加の任意選択のセットを有する2バイト長のハッシュ値)を以下のようにデータ構造体に格納する。
1.同期の第1のバイトは行1の適切なビットを設定する(まだ設定されていない場合)。
2.同期の第2のバイトは、行1で設定されたビットに関係し、行2の256ビットにおいて適切なビットを設定する(まだ設定されていない場合)。
3.同期の第3のバイトは、行2で設定されたビットに関係する、行3の256ビット中の適切なビットを設定する(まだ設定されていない場合)。
4.それ以外の同期バイトは段階3でビットセットに対応するツリー内に格納される(ツリーはまだ存在しない場合に作成される)。
5.フィンガープリントおよび追加のデータを上記の段階4のツリーの適切なリーフに接続する。
[例] 以下の例は上記の例示的なデータ構造体(図5)の使用を示す。ここで図6(a)〜6(c)の図面を参照し、同期ポイントSP1=「2、254、1、A、A、C」(ここではこのパターンをASCIIにおいて示す)を有し、対応するフィンガープリント値が0×23a9であるストリームを考えられたい。これは同期ポイントSP1に関連するビットのブロックのハッシュが0×23a9であることを意味すると理解されたい。この例のために、ストリームは1000のストリームidおよび5の同期インデックスを有すると想定されたい。
このペア<「2、254、1、A、A、C」、0×23a9>を以下のようにデータ構造体に追加することができる。
1.同期ポイントにおける第1の文字は「2」であり、従って行1のビット2を1に設定する。
2.同期ポイントにおける第2の文字は254であり、従って行1のビット2と一致する行2の256ビットのうちビット254を1に設定する。すなわち、行2[2][254]を1に設定する。
3.同期ポイントの第3の文字は1であり、従って段階2で設定されたビットに一致する行3の256ビットの第1のビットを設定する。すなわち、行3[2,254][1]を1に設定する。
4.段階3で設定されたビットが一致するツリーをすでに有し、かつそのツリーが第1の文字としてすでに「A」を有すると想定すると、「A」についてすることはない(同期ポイントの第4の文字)。
5.同期ポイントの第5の文字も「A」であり、第2の文字としてツリーに追加する。
6.同期ポイントの第6の文字は「C」であり、従って第3の文字としてツリーに追加し、その下に新しい空のリーフを作成する。
7.フィンガープリント値(0×23a9)および追加のデータ(ストリームid1000および同期インデックス5)をレコードに格納し、段階6で作成されたリーフと関連付ける。
データ構造体を設定すると(上記のように)、例えば図6(a)〜6(c)を参照してここに記載するように、入力ストリームを処理することができるマッチング処理は2つの補助的データ構造体、つまり一致同期リスト(Match Synch List、MSL)データ構造体(図6(b))およびベクトルの一致シグネチャリスト(Match signature list of vectors、MSLoV)データ構造体(図6(c))を用いる。
一致同期リスト(MSL)構造は最大nのエントリ(nは同期の長さである)を有するリストである。この例において、同期の長さは8であり、MSLは8のエントリを有する。リストは処理される同期のアドレス(SFDS、図5)を保持する。ベクトルのエントリiは同期のアドレスを保持し、それについて、第1のiバイトはSFDSにおける同期に一致したがその(i+1)番目のバイトはまだ比較していない。−1という値は、その長さにおいて「一致がない」を表す。
ベクトル構造の一致シグネチャリスト(MSLoV)はベクトルのリストである。MSLoVリストにおける各ベクトルは、所与のストリームの同期に一致する同期およびそのストリームのストリームidのリストを保持する。ベクトルのj番目のエントリは、そのストリームの同期に一致すると分かったj番目の同期の同期インデックス(SFDSから取得)を保持する。
これらのデータ構造体を用いる検索の流れは以下の通りである。
1.新しいパケットを読み取るたびに、そのパケット中の全てのバイトをバイト単位でスキャンする。各バイトをSFDSの行1におけるバイトと比較する。一致が存在する場合、MSLのエントリ1を、SFDSの行1において適切なエントリに関係するSFDSの行2に設定する。
2.一致するバイトに続くバイトを数回比較する。先のバイトが一致するもののうちi番目であると想定し、現在のバイトをi回チェックする(チェックは以下の説明の逆の順序で行われる。すなわち、まず段階eにおいてチェックを行い、その次に段階dにおいてチェックし、最終的なものが段階aに記載されている)。a.一致するもののうち第1番目のバイト(段階1に記載)b.MSLのエントリ1によりポイントされた部分的同期から開始した一致するもののうち第2番目のバイト。MSLのエントリ1によりポイントされたSFDSの行2の適切なセクションに照らして一致をチェックする。一致を発見した場合、エントリ1を「−1」に設定し、エントリ2をそれまでに発見された(SFDSの行2における適切なエントリである)部分的一致のアドレスを用いて更新する。c.MSLのエントリ2によりポイントされた部分的同期から開始した一致するもののうち第3番目のバイト。MSLのエントリ1によりポイントされたSFDSの行3の適切なセクションに照らして一致をチェックする。一致を発見した場合、エントリ2を「−1」に設定し、エントリ3をそれまでに発見された(SFDSの行2における適切なエントリである)部分的一致のアドレスを用いて更新する。d...e.MSLのエントリiによりポイントされた部分的同期から開始した一致するもののうちi番目のバイト。MSLのエントリi−1によりポイントされたSFDSの適切なセクションに照らして一致をチェックする。一致を発見した場合、エントリi−1を「−1」に設定し、エントリiをそれまでに発見された(SFDSにおける適切なエントリである)部分的一致のアドレスを用いて更新する。
3.完全な同期を発見するたびに(すなわち段階2におけるiが完全な同期の長さに等しく、かつ段階2eが成功裏であったとき)、フィンガープリントを計算する。計算したフィンガープリントを、MSLの最後のエントリにおけるSFDFセクションによりポイントされているSFDFのツリーリーフによりポイントされたフィンガープリントと比較する。一致するフィンガープリントを発見した場合、そのストリームidおよび同期インデックスを取得し、MSLoVを更新する。a.MSLoVがそのストリームidのベクトルを有しない場合、新しいMSLoVを作成し、MSLoVの初めに追加する。新しいベクトルのストリームidを、SFDSから取得したストリームidに設定する。新しいベクトルのエントリ1を、SFDSから取得した同期インデックスに設定する。b.MSLoVがそのストリームidのベクトルをすでに有する場合、第1の空のエントリをSFDSから取得した同期インデックスに設定する。c.一致する同期がMSLoV中にいくつかのリーフを有する場合、上記の段階a/bはこれらのリーフのそれぞれについて別個に行われることに留意されたい。
4.MSLoVベクトルのインデックスの数が所与の量(例えば10のうち8)を超えると、入力フローと、idがそのベクトルのストリームidにより格納されたストリームとの間の一致が定義される。
5.フローの所定の長さを有する一部分のみにおいて同期を検索することに留意されたい。検索が一致するストリームを識別するその部分を超えると、未知のストリームと想定され、MSLおよびMSLoVの双方がクリアされる。
[最終例] 当業者は本明細書を読めば、異なるデータ構造体および/または他のデータ構造体を用いてここに説明する処理を実装し得ることを理解するであろう。使用するデータ構造体に対してある程度の効率性が好ましいことを理解されたい。目的としては、データ構造体は同期パターンのそれぞれに関係するフィンガープリントを有する最大百万個の同期ポイント(各々6〜8バイト)を格納するべきである。述べたように、データ構造体を予めオフラインで作成することが好ましいが(データ構造体はデータの初期設定のために準備された後、必要があれば増分的に更新される)、検索自体はリアルタイムで行う。
百万の同期エントリに上記の例(図6(a)〜6(c))において説明したデータ構造体を使用する。最初の3バイトを、それぞれが256エントリからなる3つのラインに追加する(3×2=224で1600万エントリ)次のバイトを各プレフィックスの最後の行に一意に追加する(1%未満が同一のプレフィックスを有し、リスト構造は十分に効率的である。そうでなければ、新たに追加したストリームに対して異なる同期パターンが考慮され得る)。新しい同期の追加をオフラインで、かつ同期の長さの順序で行う。データ構造体内での同期の検索はリアルタイムで行うことができ、かつ同期の長さO(1)の順序である。
パケット化データストリームある場合には、データの入力ストリームはパケット化データの形態である。これは、例えば比較処理をルータ等のデバイスで行う場合に生じることがある。そのような場合に処理を行うべく、処理を行うデバイスは2つ以上のパケットからペイロードデータをバッファする必要があり得る。
周知のように、パケットに基づくネットワーク(TCP/IPネットワークなど、例えばインターネット)において、ある位置から別の位置へと送信するデータはパケット化される(複数のパケットに分割される)。図7を参照すると、典型的なパケットはアドレス情報およびペイロードを含む。ペイロードは送信するデータを含み、アドレス情報はネットワークがパケットをその目的地にルーティングすることを可能にする情報を含む。当業者は本明細書を読めば、多くのパケット化の形態を用いることができ、パケットの形態およびタイプが本発明に限定されないことを理解するであろう。更に、いくつかのネットワークは複数のレベルのプロトコルを用いることができ、従ってペイロード自体は他のアドレス情報を含むパケットであり得ることを理解されたい。使用するプロトコルに関わらず、当業者は特定のパケットのデータ項目に対応するデータをどのように抽出するかを知るであろう。
パケット化の種類が予め知られている場合、各同期ポイントが1つのパケットのペイロード内で適合するように同期ポイントを選択することが好ましい。しかし、これは可能でないことがあるので、上記の処理(同期ポイントを検索した後、ビットの対応するブロックを処理する)を行うべく複数のシーケンシャルなパケットのペイロードを取得およびバッファすることが必要な場合がある。
当業者は本明細書を読めば、説明した処理およびシステムが現在使用されているアプローチと比較して、2つのコンテンツストリーム間の比較をはるかに迅速に、かつより効率的な方法でサポートすることを理解するであろう。更に、本明細書に説明するアプローチは暗号化コンテンツを取り扱うことができる。
[計算] そのような方法(ならびに他のタイプのデータ)を実装するプログラムは、多くの態様で多様な媒体(例えばコンピュータ可読媒体)を用いて格納および送信することができる。ハードワイヤードされた回路または特注のハードウェアは、様々な実施形態の処理を実装し得るソフトウェア命令のいくつかまたは全てに代えて、またはこれらと組み合わせて使用してもよい。従って、ソフトウェアのみにではなく、ハードウェアおよびソフトウェアの様々な組み合わせを使用してもよい。
図8は本開示の実施形態を実装し、また実行し得るコンピュータシステム800の概略図である。
この例によれば、コンピュータシステム800はバス801(すなわちインターコネクト)、少なくとも1つのプロセッサ802、少なくとも1つの通信ポート803、メインメモリ804、リムーバブルストレージ媒体805、リードオンリメモリ806、および大容量ストレージ807を含む。
プロセッサ802はインテル(登録商標)アイテニアム(登録商標)プロセッサまたはアイテニアム2(登録商標)プロセッサ、AMD(登録商標)オプテロンプロセッサ(登録商標)またはアスロンMP(登録商標)プロセッサ、またはモトローラ(登録商標)ラインのプロセッサ等の、しかしこれらに限定されない既知のプロセッサであり得る。通信ポート903はモデムベースのダイアルアップ接続と共に使用するRS-232ポート、10/100イーサネット(登録商標)ポート、銅線またはファイバを用いるギガビットポート、またはUSBポート等のいずれかであり得る。通信ポート803は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、CDN、またはコンピュータシステム800が接続する任意のネットワーク等のネットワークに応じて選択してもよい。コンピュータシステム800は入力/出力(I/O)ポート809を介して周辺機器(例えばディスプレイスクリーン830、入力デバイス816)と通信してもよい。
メインメモリ804はランダムアクセスメモリ(RAM)、または当技術分野において通常既知のその他のダイナミックストレージデバイスであり得る。リードオンリメモリ806はプロセッサ802に対する命令等、静的情報を格納するプログラマブルリードオンリメモリ(PROM)チップなど、任意のスタティックストレージデバイスであり得る。情報および命令を格納するべく、大容量ストレージ807を用いることができる。例えばアダプテック(登録商標)系統のスモールコンピュータシリアルインターフェース(SCSI)ドライブ等のハードディスク、光学ディスク、アダプテック(登録商標)系統のリダンダント・アレイ・オブ・インエクスペンシブ・ディスクス(RAID)ドライブ等のRAIDなどディスクのアレイ、またはその他の大容量ストレージデバイスを使用することができる。
バス801はプロセッサ802を他のメモリ、ストレージ、および通信ブロックと通信可能に結合させる。バス801は使用するストレージデバイスに応じて、PCI/PCI−X、SCSI、ユニバーサルシリアルバス(USB)に基づくシステムバス(または他のバス)等であり得る。リムーバブルストレージ媒体805は外部ハードドライブ、フロッピー(登録商標)ディスク、アイオメガ(登録商標)Zipドライブ、コンパクトディスクリードオンリメモリ(CD‐ROM)、再書き込み可能コンパクトディスク(CD‐RW)、デジタルビデオディスク‐リードオンリメモリ(DVD‐ROM)等のうちいずれの種類でもあり得る。
本明細書の実施形態は、命令を格納した機械可読媒体を含み得るコンピュータプログラム製品として提供してもよく、命令は、コンピュータ(または他の電子デバイス)をプログラミングして処理を行うように使用してもよい。本明細書で使用するように、「機械可読媒体」という用語は任意の媒体、その複数の媒体、または異なる媒体の組み合わせを指し、これらはコンピュータ、プロセッサ、または類似のデバイスが読み取ることができるデータ(例えば命令、データ構造体)を提供するときに関与する。そのような媒体は不揮発性媒体、揮発性媒体、および伝送媒体を含むがこれらに限定されない多くの形状を取り得る。不揮発性媒体は、例えば光ディスクまたは磁気ディスク、ならびに他の永続メモリを含む。揮発性媒体はダイナミックランダムアクセスメモリを含み、ダイナミックランダムアクセスメモリは通常、コンピュータのメインメモリを構成する。伝送媒体としては、プロセッサに結合されたシステムバスを有するワイヤを含む同軸ケーブル、銅線、および光ファイバが挙げられる。伝送媒体としては、無線周波数(RF)データ通信および赤外線(IR)データ通信中に生成されるもの等の音波、光波、電磁放出が挙げられ、これらを運び得る。
機械可読媒体としては、電子命令を格納するのに好適なフロッピー(登録商標)ディスケット、光学ディスク、CD−ROM、光磁気ディスク、ROM、RAM、消去可能プログラマブルリードオンリメモリ(EPROM)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、磁気カードまたは光カード、フラッシュメモリ、または他のタイプの媒体/機械可読媒体が挙げられ得るが、これらに限定されない。更に、本明細書の実施形態はコンピュータプログラム製品としてもダウンロードすることができ、通信リンク(例えばモデムまたはネットワーク接続)を介する搬送波または他の伝播媒質において実施されるデータ信号により、遠隔のコンピュータから要求しているコンピュータへとプログラムを転送してもよい。
データ(例えば命令のシーケンス)をプロセッサに搬送するときに様々な形態のコンピュータ可読媒体を伴ってもよい。例えば、データは、(i)RAMからプロセッサに提供し、(ii)無線伝送媒体を介して搬送し、(iii)多くのフォーマット、規格、またはプロトコルに従ってフォーマットおよび/または送信し、および/または (iv)当技術分野で周知の様々な方法のいずれかで暗号化してもよい。
コンピュータ可読媒体は、(いずれの適切なフォーマットでも)この方法を行うのに適切なプログラム要素を格納することができる。
示すように、本明細書で論じるような機能性をサポートするアプリケーション850‐1を用いてメインメモリ804をエンコードしてもよい。(アプリケーション850-1は、例えば初期設定200または比較アプリケーション216であってもよい)。アプリケーション850-1(および/または本明細書で説明する他のリソース)を、データおよび/または論理命令等のソフトウェアコード(例えば、メモリ内、またはディスク等の別のコンピュータ可読媒体上に格納されたコード)として実施することができ、このソフトウェアコードは本明細書で説明する種々の実施形態に従って機能性の処理をサポートする。
一実施形態のオペレーション中に、プロセッサ802はアプリケーション850-1の論理命令を立ち上げ、走らせ、実行し、解釈し、または別の方法で実行するべく、バス801を使用することにより、メインメモリ804にアクセスする。アプリケーション850-1の実行により、処理850-2における処理の機能性が生成される。換言すれば、処理850-2は、コンピュータシステム800のプロセッサ802内またはプロセッサ802上で実行するアプリケーション850-1の1または複数の部分を表す。
本明細書で論じるオペレーションを実行する処理850−2に加えて、本明細書の他の実施形態はアプリケーション850-1自体(すなわち実行されていないまたは動作していない論理命令および/またはデータ)を含むことに留意されたい。アプリケーション850−1は、ディスク、ハードディスク等のコンピュータ可読媒体(例えばレポジトリ)上、または光媒体内に格納してもよい。また、他の実施形態によれば、アプリケーション850‐1は、ファームウェア、リードオンリメモリ(ROM)等のメモリタイプシステム内に、またはこの例におけるようにメインメモリ804内(例えばランダムアクセスメモリまたはRAM内)に実行可能なコードとして格納することができる。例えば、アプリケーション850‐1を、リムーバブルストレージ媒体805、リードオンリメモリ806、および/または大容量ストレージデバイス807内にも格納してもよい。
コンピュータシステム800によりサポートされる例示的な機能性、より具体的にはアプリケーション850‐1に関連する機能性を図2(a)〜2(d)および4(a)〜4(b)を参照して上述している。
当業者はコンピュータシステム800が他の処理、ならびに/またはハードウェアリソースの割り当ておよび使用を制御するオペレーティングシステム等のソフトウェアおよびハードウェアコンポーネントを含み得ることを理解するであろう。
本明細書で論じるように、本発明の実施形態は様々な段階またはオペレーションを含む。様々なこれらの段階は、ハードウェアコンポーネントにより実行してもよく、または機械実行可能な命令において実施してもよく、機械実行可能な命令は、命令を用いてプログラミングした汎用プロセッサまたは特定目的のプロセッサによりオペレーションを実行するべく使用してもよい。あるいは、段階をハードウェア、ソフトウェア、および/またはファームウェアを組み合わせることにより実行してもよい。「モジュール」という用語は、ハードウェア、ソフトウェア、ファームウェア、またはそれらのいずれかの組み合わせを含み得る自己完結型の機能的なコンポーネントを指す。
当業者は本明細書を読めば、装置の実施形態が説明した処理のうちいくつか(しかし必ずしも全てではない)を実行するように動作するコンピュータ/コンピューティングデバイスを含み得ることを理解するであろう。
プログラムまたはデータ構造体を格納するコンピュータ可読媒体の実施形態は実行されると、プロセッサに説明した処理のうちいくつか(しかし必ずしも全てではない)を実行させるプログラムを格納するコンピュータ可読媒体を含む。
本明細書において処理を説明する限りにおいて、当業者は処理がユーザがいかなる介入もすることなく動作し得ることを理解するであろう。別の実施形態において、処理はいくらかの人間による介入(例えば、段階は人間の支援により実行される)を含む。
特許請求の範囲における「第1」および「第2」という語は区別または特定するべく用いられるのであって、連続的または数値的な限定を示すべく用いられるものではないことを理解されたい。同様に、文字または数値的表示(「(a)」、「(b)」等)を使用しても、区別および/または特定するのに役立つように用いられるのであって、いかなる連続的または数値的な限定、もしくは順序も示すものではない。
最も実際的かつ好ましい実施形態であると現在考えられるものに関連して本発明を説明したが、本発明は開示した実施形態に限定されるものではなく、むしろ添付の特許請求の趣旨および範囲内に含まれる様々な変更形態および均等な配置を包含することを意図することを理解されたい。
[項目1]
ソフトウェアと組み合わせたハードウェアにより実装されるコンピュータ実装方法であって、前記方法は、
データ項目における複数の同期ポイントを判定する段階と、
前記複数の同期ポイントのそれぞれについて、前記データ項目中の複数のビットのブロックを判定する段階と、
ビットの各ブロックについて、複数のビットの前記ブロックにハッシュ関数またはメッセージダイジェスト関数を適用して対応するブロックシグネチャを判定する段階と、
前記複数の同期ポイントのそれぞれを、複数のビットの前記対応するブロックの前記対応するブロックシグネチャに関連付けてデータ項目シグネチャを形成する段階とを備え、
前記データ項目は、複数のビットの任意のシーケンスからなり、各同期ポイントは前記データ項目中の複数のビットのシーケンスからなる方法。
[項目2]
各特定の同期ポイントの複数のビットの前記対応するブロックは、前記特定の同期ポイントに直接に隣接する、項目1に記載の方法。
[項目3]
前記ハッシュ関数は、SHAおよびMD5を含む複数の関数から選択される、項目1または2に記載の方法。
[項目4]
各同期ポイントは、32ビットからなる、項目1〜3のいずれか一項に記載の方法。
[項目5]
複数のビットの各ブロックは、256バイトからなる、項目1〜4のいずれか一項に記載の方法。
[項目6]
項目1〜5のいずれか一項に記載の方法を実装するためのハードウェアおよびソフトウェアを備えるデバイス。
[項目7]
ソフトウェアと組み合わせたハードウェアにより実装されるコンピュータ実装方法であって、前記方法は、
(A)第1のデータ項目に対する第1のデータ項目シグネチャを取得する段階と、
(B)第2のデータ項目において複数の同期ポイントのうち1つの同期ポイントを発見することを試みる段階と、
(C)前記第2のデータ項目において前記複数の同期ポイントのうち1つの同期ポイントを発見した場合に、
(C)(1)前記第2のデータ項目において複数のビットの対応するブロックのブロックシグネチャを判定する段階と、
(C)(2)前記第2のデータ項目の前記同期ポイントおよび前記対応するブロックシグネチャが前記第1のデータ項目シグネチャにおける同期ポイントおよびブロックシグネチャに対応するか否かを確認する段階と、
(C)(3)前記第2のデータ項目の前記同期ポイントおよび前記対応するブロックシグネチャが前記第1のデータ項目シグネチャ中のある同期ポイントおよびブロックシグネチャに対応する場合に、対応関係を示す情報を保持する段階と、
(D)前記第2のデータ項目のうち少なくともいくつかが依然として未処理である間、前記第2のデータ項目の予め定められた数の複数の同期ポイントおよび対応する複数のブロックシグネチャが前記第1のデータ項目シグネチャ中の複数の同期ポイントおよび対応する複数のブロックシグネチャに一致するまで、段階(B)および(C)を反復する段階と、
(E)前記第2のデータ項目の前記予め定められた数の複数の同期ポイントおよび前記対応する複数のブロックシグネチャが前記第1のデータ項目シグネチャ中の複数の同期ポイントおよび対応する複数のブロックシグネチャに一致する場合に、前記第1のデータ項目と前記第2のデータ項目との間の一致を示す段階とを備え、
前記第1のデータ項目シグネチャは、前記第1のデータ項目における複数の同期ポイントと対応する複数のブロックシグネチャとの間の関連性を含み、
前記第2のデータ項目における複数のビットの前記対応するブロックにハッシュ関数またはメッセージダイジェスト関数を適用して前記ブロックシグネチャを判定する方法。
[項目8]
前記第2のデータ項目の複数の異なる部分について段階(B)および(C)を並行して反復する、項目7に記載の方法。
[項目9]
(F)段階(E)において判定したとき前記第1のデータ項目と前記第2のデータ項目との間で一致する場合に、前記第2のデータ項目へのアクセスを選択的に拒否する段階を更に備える、
項目7または8に記載の方法。
[項目10]
(G)段階(E)において判定したとき前記第1のデータ項目と前記第2のデータ項目との間で一致する場合、前記第2のデータ項目についての情報を保持する段階を更に備える、
項目7〜9のいずれか一項に記載の方法。
[項目11]
処理の少なくともいくつかは、特定のデバイスにおいて行われ、保持される前記情報は前記特定のデバイスについての情報を含む、項目10に記載の方法。
[項目12]
前記デバイスは、ネットワーク内のルータである、項目11に記載の方法。
[項目13]
複数のパケットを取得する段階と、
前記複数のパケットからペイロード情報を抽出して前記第2のデータ項目の少なくともいくつかを取得する段階とを更に備える、
項目7〜12のいずれか一項に記載の方法。
[項目14]
(H)段階(E)において判定したとき前記第1のデータ項目と前記第2のデータ項目との間で一致する場合、前記第1のデータ項目と同一であるかを判定するべく、前記第2のデータ項目に追加のチェックを受けさせる段階を更に備える、
項目7〜13のいずれか一項に記載の方法。
[項目15]
それぞれの特定の同期ポイントの複数のビットの前記対応するブロックは、前記特定の同期ポイントに直接隣接する、項目7〜14のいずれか一項に記載の方法。
[項目16]
前記ハッシュ関数は、SHAおよびMD5を含む複数の関数から選択される、項目7〜15のいずれか一項に記載の方法。
[項目17]
各同期ポイントは、32ビットからなる、項目7〜16のいずれか一項に記載の方法。
[項目18]
複数のビットの各ブロックは、256バイトからなる、項目7〜17のいずれか一項に記載の方法。
[項目19]
ソフトウェアと組み合わせたハードウェアにより実装されるコンピュータ実装方法であって、前記方法は、
(A)複数のデータ項目のそれぞれに対する少なくとも1つのシグネチャである複数のデータ項目シグネチャを取得する段階と、
(B)第2のデータ項目において複数のデータ項目シグネチャの同期ポイントを発見することを試みる段階と、
(C)前記第2のデータ項目において前記複数のデータ項目シグネチャの同期ポイントを発見した場合に、
(C)(1)前記第2のデータ項目において複数のビットの対応するブロックのブロックシグネチャを判定する段階と、
(C)(2)前記第2のデータ項目の前記同期ポイントおよび前記対応するブロックシグネチャが前記複数のデータ項目シグネチャのいずれかにおける同期ポイントおよびブロックシグネチャに対応するか否かを確認する段階と、
(C)(3)前記第2のデータ項目の前記同期ポイントおよび前記対応するブロックシグネチャが前記複数のデータ項目シグネチャの1または複数における同期ポイントおよびブロックシグネチャに対応する場合に、対応関係を示す情報を保持する段階と、
(D)前記第2のデータ項目のうち少なくともいくつかが依然として未処理である間、前記第2のデータ項目の予め定められた数の複数の同期ポイントおよび対応する複数のブロックシグネチャが前記複数のデータ項目シグネチャのうち少なくとも1つにおける複数の同期ポイントおよび対応する複数のブロックシグネチャに一致するまで、段階(B)および(C)を反復する段階と、
(E)前記第2のデータ項目の前記予め定められた数の複数の同期ポイントおよび前記対応する複数のブロックシグネチャが前記複数のデータ項目の第1のデータ項目シグネチャにおいて前記予め定められた数の同期ポイントおよび前記複数のブロックシグネチャに一致する場合に、前記第1のデータ項目と前記第2のデータ項目との間の一致を示す段階とを備え、
前記データ項目のそれぞれの特定のデータ項目に対する前記複数のデータ項目シグネチャは、前記特定のデータ項目における複数の同期ポイントと前記特定のデータ項目に対する対応する複数のブロックシグネチャとの間の関連性を含み、
前記第2のデータ項目における複数のビットの前記対応するブロックにハッシュ関数またはメッセージダイジェスト関数を適用して前記ブロックシグネチャを判定する方法。

Claims (19)

  1. 格納媒体内のソフトウェアからの1つ又は複数のソフトウェア命令と組み合わせた、少なくとも1つのプロセッサおよび前記格納媒体を含むハードウェアにより実装されるコンピュータ実装方法であって、前記コンピュータ実装方法は、前記1つ又は複数のソフトウェア命令を実行する前記少なくとも1つのプロセッサにより、
    データストリームおける複数の同期ポイントを判定し、
    前記複数の同期ポイントのそれぞれについて、前記データストリーム中の複数のビットの対応するブロックを判定し、
    複数のビットの各ブロックについて、複数のビットの前記ブロックにハッシュ関数またはメッセージダイジェスト関数を適用して対応するブロックシグネチャを判定し、
    前記複数の同期ポイントのそれぞれを、複数のビットの前記対応するブロックの前記対応するブロックシグネチャに関連付けてデータストリームシグネチャを前記格納媒体内に形成すること
    を備え、
    前記データストリームは、複数のビットの任意のシーケンスからなり、各同期ポイントは前記データストリーム中の複数のビットのシーケンスからなり、
    前記データストリームにおける各同期ポイントの位置は、前記データストリームにおける複数のビットの各ブロックの位置とは異なり、
    前記データストリームシグネチャが前記複数の同期ポイントおよび前記対応する複数のブロックシグネチャを含前記データストリームシグネチャ内の前記複数の同期ポイントおよび前記対応する複数のブロックシグネチャは、前記データストリームに他のデータストリームが一致するか否かを判断するために用いられる
    方法。
  2. 格納媒体内のソフトウェアからの1つ又は複数のソフトウェア命令と組み合わせた、少なくとも1つのプロセッサおよび前記格納媒体を含むハードウェアにより実装されるコンピュータ実装方法であって、前記コンピュータ実装方法は、前記1つ又は複数のソフトウェア命令を実行する前記少なくとも1つのプロセッサにより、
    (A)(1)第1のデータストリームにおける複数の同期ポイントを判定し、
    (A)(2)前記複数の同期ポイントのそれぞれについて、前記第1のデータストリーム中の複数のビットの対応するブロックを判定し、
    (A)(3)複数のビットの各ブロックについて、複数のビットの前記ブロックにハッシュ関数またはメッセージダイジェスト関数を適用して対応するブロックシグネチャを判定し、
    (A)(4)前記第1のデータストリームにおける前記複数の同期ポイントのそれぞれを、複数のビットの前記対応するブロックの前記対応するブロックシグネチャに関連付けて、前記第1のデータストリームに対する第1のデータストリームシグネチャを前記格納媒体内に形成し、
    (A)(5)前記第1のデータストリームに対する前記第1のデータストリームシグネチャを取得し、
    (B)第2のデータストリームにおいて複数の同期ポイントのうち1つの同期ポイントを発見することを試み、
    (C)前記第2のデータストリームにおいて前記複数の同期ポイントのうち1つの同期ポイントを発見した場合に、
    (C)(1)前記第2のデータストリームにおいて複数のビットの対応するブロックのブロックシグネチャを判定し、
    (C)(2)前記第2のデータストリームの前記同期ポイントおよび前記対応するブロックシグネチャが前記第1のデータストリームシグネチャ中の同期ポイントおよびブロックシグネチャに対応するか否かを確認し、
    (C)(3)前記第2のデータストリームの前記同期ポイントおよび前記対応するブロックシグネチャが前記第1のデータストリームシグネチャ中の同期ポイントおよびブロックシグネチャに対応する場合に、対応関係を示す情報を保持し、
    (D)前記第2のデータストリームのうち少なくともいくつかが依然として未処理である間、前記第2のデータストリームの予め定められた数の複数の同期ポイントおよび対応する複数のブロックシグネチャが前記第1のデータストリームシグネチャ中の複数の同期ポイントおよび対応する複数のブロックシグネチャに一致するまで、段階(B)および(C)を反復し、
    (E)前記第2のデータストリームの前記予め定められた数の複数の同期ポイントおよび前記対応する複数のブロックシグネチャが前記第1のデータストリームシグネチャ中の複数の同期ポイントおよび対応する複数のブロックシグネチャに一致する場合に、前記第1のデータストリームと前記第2のデータストリームとの間の一致を示すこと
    を備え、
    前記第1のデータストリームシグネチャは、前記第1のデータストリームにおける前記複数の同期ポイントおよび前記対応するブロックの前記対応する複数のブロックシグネチャを含み、
    前記第2のデータストリームにおける複数のビットの前記対応するブロックにハッシュ関数またはメッセージダイジェスト関数を適用して前記ブロックシグネチャが判定され、
    前記第1のデータストリームが複数のビットの任意のシーケンスからなり、各同期ポイントが前記第1のデータストリーム中の複数のビットのシーケンスからな
    前記第1のデータストリームにおける各同期ポイントの位置は、前記第1のデータストリームにおける複数のビットの各ブロックの位置とは異なる、
    方法。
  3. 前記第2のデータストリームの複数の異なる部分について段階(B)および(C)を並行して反復する、
    請求項2に記載の方法。
  4. 前記1つ又は複数のソフトウェア命令を実行する前記少なくとも1つのプロセッサにより、(F) (E)において判定したとき前記第1のデータストリームと前記第2のデータストリームとの間で一致する場合に、前記第2のデータストリームへのアクセスを選択的に拒否することを更に備える、
    請求項2または3に記載の方法。
  5. 前記1つ又は複数のソフトウェア命令を実行する前記少なくとも1つのプロセッサにより、(G) (E)において判定したとき前記第1のデータストリームと前記第2のデータストリームとの間で一致する場合、前記第2のデータストリームについての情報を保持すること
    を更に備える、請求項2から4のいずれか一項に記載の方法。
  6. 処理の少なくともいくつかは、特定のデバイスにおいて行われ、保持される前記情報は前記特定のデバイスについての情報を含む、
    請求項5に記載の方法。
  7. 前記デバイスは、ネットワーク内のルータである、
    請求項6に記載の方法。
  8. 前記1つ又は複数のソフトウェア命令を実行する前記少なくとも1つのプロセッサにより、
    複数のパケットを取得し、
    前記複数のパケットからペイロード情報を抽出して前記第2のデータストリームの少なくともいくつかを取得すること
    を更に備える、請求項2から7のいずれか一項に記載の方法。
  9. 前記1つ又は複数のソフトウェア命令を実行する前記少なくとも1つのプロセッサにより、(H) (E)において判定したとき前記第1のデータストリームと前記第2のデータストリームとの間で一致する場合、前記第1のデータストリームと同一であるかを判定するべく、前記第2のデータストリームに追加のチェックを受けさせることを更に備える、
    請求項2から8のいずれか一項に記載の方法。
  10. 格納媒体内のソフトウェアからの1つ又は複数のソフトウェア命令と組み合わせた、少なくとも1つのプロセッサおよび前記格納媒体を含むハードウェアにより実装されるコンピュータ実装方法であって、前記コンピュータ実装方法は、前記1つ又は複数のソフトウェア命令を実行する前記少なくとも1つのプロセッサにより、
    (A)(1)複数のデータストリームにおける複数の同期ポイントを判定し、
    (A)(2)前記複数の同期ポイントのそれぞれについて、前記複数のデータストリーム中の複数のビットの対応するブロックを判定し、
    (A)(3)複数のビットの各ブロックについて、複数のビットの前記ブロックにハッシュ関数またはメッセージダイジェスト関数を適用して対応するブロックシグネチャを判定し、
    (A)(4)前記複数のデータストリームにおける前記複数の同期ポイントのそれぞれを、複数のビットの前記対応するブロックの前記対応するブロックシグネチャに関連付けて、前記複数のデータストリームに対する複数のデータストリームシグネチャを前記格納媒体内に形成し、
    (A)(5)前記複数のデータストリームシグネチャを取得し、
    (B)第2のデータストリームにおいて前記複数のデータストリームシグネチャの同期ポイントを発見することを試み、
    (C)前記第2のデータストリームにおいて前記複数のデータストリームシグネチャの同期ポイントを発見した場合に、
    (C)(1)前記第2のデータストリームにおいて複数のビットの対応するブロックのブロックシグネチャを判定し、
    (C)(2)前記第2のデータストリームの前記同期ポイントおよび前記対応するブロックシグネチャが前記複数のデータストリームシグネチャのいずれかの中の同期ポイントおよびブロックシグネチャに対応するか否かを確認し、
    (C)(3)前記第2のデータストリームの前記同期ポイントおよび前記対応するブロックシグネチャが前記複数のデータストリームシグネチャの1または複数の中の同期ポイントおよびブロックシグネチャに対応する場合に、対応関係を示す情報を保持し、
    (D)前記第2のデータストリームのうち少なくともいくつかが依然として未処理である間、前記第2のデータストリームの予め定められた数の複数の同期ポイントおよび対応する複数のブロックシグネチャが前記複数のデータストリームシグネチャのうち少なくとも1つの中の複数の同期ポイントおよび対応する複数のブロックシグネチャに一致するまで、段階(B)および(C)を反復し、
    (E)前記第2のデータストリームの前記予め定められた数の複数の同期ポイントおよび前記対応する複数のブロックシグネチャが前記複数のデータストリームのうちの第1のデータストリームに対する第1のデータストリームシグネチャ中の前記予め定められた数の同期ポイントおよび前記複数のブロックシグネチャに一致する場合に、前記第1のデータストリームと前記第2のデータストリームとの間の一致を示すこと
    を備え、
    前記複数のデータストリームに対する前記複数のデータストリームシグネチャは、前記複数のデータストリームにおける前記複数の同期ポイントおよび前記対応する複数のブロックシグネチャを含み、
    前記第2のデータストリームにおける複数のビットの前記対応するブロックにハッシュ関数またはメッセージダイジェスト関数を適用して前記ブロックシグネチャが判定され、
    前記複数のデータストリームが複数のビットの任意のシーケンスからなり、各同期ポイントが前記複数のデータストリーム中の複数のビットのシーケンスからなり、
    前記複数のデータストリームのそれぞれにおいて、各同期ポイントの位置が、複数のビットの各ブロックの位置とは異なり、
    前記複数のデータストリームのそれぞれに対して少なくとも1つのデータストリームシグネチャがある、
    方法。
  11. それぞれの特定の同期ポイントの複数のビットの前記対応するブロックは、前記特定の同期ポイントに直接隣接する、
    請求項1から10のいずれか一項に記載の方法。
  12. 前記ハッシュ関数は、SHAおよびMD5を含む複数の関数から選択される、
    請求項1から11のいずれか一項に記載の方法。
  13. 各同期ポイントは、32ビットからなる、
    請求項1から12のいずれか一項に記載の方法。
  14. 複数のビットの各ブロックは、256バイトからなる、
    請求項1から13のいずれか一項に記載の方法。
  15. 請求項1から14のいずれか一項に記載の方法を実装するためのハードウェアおよびソフトウェアを備えるデバイス。
  16. 少なくとも1つのプロセッサおよび格納媒体を含むデバイスであって、前記格納媒体内のソフトウェアからの1つ又は複数のソフトウェア命令を実行する前記少なくとも1つのプロセッサにより、
    データストリームおける複数の同期ポイントを判定し、
    前記複数の同期ポイントのそれぞれについて、前記データストリーム中の複数のビットの対応するブロックを判定し、
    複数のビットの各ブロックについて、複数のビットの前記ブロックにハッシュ関数またはメッセージダイジェスト関数を適用して対応するブロックシグネチャを判定し、
    前記複数の同期ポイントのそれぞれを、複数のビットの前記対応するブロックの前記対応するブロックシグネチャに関連付けてデータストリームシグネチャを形成することを実行し、
    前記データストリームは、複数のビットの任意のシーケンスからなり、各同期ポイントは前記データストリーム中の複数のビットのシーケンスからなり、
    前記データストリームにおける各同期ポイントの位置は、前記データストリームにおける複数のビットの各ブロックの位置とは異なり、
    前記データストリームシグネチャが前記複数の同期ポイントおよび複数の前記対応するブロックシグネチャを含前記データストリームシグネチャ内の前記複数の同期ポイントおよび前記対応する複数のブロックシグネチャは、前記データストリームに他のデータストリームが一致するか否かを判断するために用いられる
    デバイス。
  17. 少なくとも1つのプロセッサおよび格納媒体を含むデバイスであって、前記格納媒体内のソフトウェアからの1つ又は複数のソフトウェア命令を実行する前記少なくとも1つのプロセッサにより、
    (A)(1)第1のデータストリームにおける複数の同期ポイントを判定し、
    (A)(2)前記複数の同期ポイントのそれぞれについて、前記第1のデータストリーム中の複数のビットの対応するブロックを判定し、
    (A)(3)複数のビットの各ブロックについて、複数のビットの前記ブロックにハッシュ関数またはメッセージダイジェスト関数を適用して対応するブロックシグネチャを判定し、
    (A)(4)前記第1のデータストリームにおける前記複数の同期ポイントのそれぞれを、複数のビットの前記対応するブロックの前記対応するブロックシグネチャに関連付けて、前記第1のデータストリームに対する第1のデータストリームシグネチャを前記格納媒体内に形成し、
    (A)(5)前記第1のデータストリームに対する前記第1のデータストリームシグネチャを取得し、
    (B)第2のデータストリームにおいて複数の同期ポイントのうち1つの同期ポイントを発見することを試み、
    (C)前記第2のデータストリームにおいて前記複数の同期ポイントのうち1つの同期ポイントを発見した場合に、
    (C)(1)前記第2のデータストリームにおいて複数のビットの対応するブロックのブロックシグネチャを判定し、
    (C)(2)前記第2のデータストリームの前記同期ポイントおよび前記対応するブロックシグネチャが前記第1のデータストリームシグネチャ中の同期ポイントおよびブロックシグネチャに対応するか否かを確認し、
    (C)(3)前記第2のデータストリームの前記同期ポイントおよび前記対応するブロックシグネチャが前記第1のデータストリームシグネチャ中の同期ポイントおよびブロックシグネチャに対応する場合に、対応関係を示す情報を保持し、
    (D)前記第2のデータストリームのうち少なくともいくつかが依然として未処理である間、前記第2のデータストリームの予め定められた数の複数の同期ポイントおよび対応する複数のブロックシグネチャが前記第1のデータストリームシグネチャ中の複数の同期ポイントおよび対応する複数のブロックシグネチャに一致するまで、(B)および(C)を反復し、
    (E)前記第2のデータストリームの前記予め定められた数の複数の同期ポイントおよび前記対応する複数のブロックシグネチャが前記第1のデータストリームシグネチャ中の複数の同期ポイントおよび対応する複数のブロックシグネチャに一致する場合に、前記第1のデータストリームと前記第2のデータストリームとの間の一致を示すことを実行し、
    前記第1のデータストリームシグネチャは、前記第1のデータストリームにおける前記複数の同期ポイントおよび前記対応するブロックの前記対応する複数のブロックシグネチャを含み、
    前記第2のデータストリームにおける複数のビットの前記対応するブロックにハッシュ関数またはメッセージダイジェスト関数を適用して前記ブロックシグネチャが判定され、
    前記第1のデータストリームが複数のビットの任意のシーケンスからなり、各同期ポイントが前記第1のデータストリーム中の複数のビットのシーケンスからな
    前記第1のデータストリームにおける各同期ポイントの位置は、前記第1のデータストリームにおける複数のビットの各ブロックの位置とは異なる、
    デバイス。
  18. 少なくとも1つのプロセッサおよび格納媒体を含むデバイスであって、前記格納媒体内のソフトウェアからの1つ又は複数のソフトウェア命令を実行する前記少なくとも1つのプロセッサにより、
    (A)(1)複数のデータストリームにおける複数の同期ポイントを判定し、
    (A)(2)前記複数の同期ポイントのそれぞれについて、前記複数のデータストリーム中の複数のビットの対応するブロックを判定し、
    (A)(3)複数のビットの各ブロックについて、複数のビットの前記ブロックにハッシュ関数またはメッセージダイジェスト関数を適用して対応するブロックシグネチャを判定し、
    (A)(4)前記複数のデータストリームにおける前記複数の同期ポイントのそれぞれを、複数のビットの前記対応するブロックの前記対応するブロックシグネチャに関連付けて、前記複数のデータストリームに対する複数のデータストリームシグネチャを前記格納媒体内に形成し、
    (A)(5)前記複数のデータストリームシグネチャを取得し、
    (B)第2のデータストリームにおいて前記複数のデータストリームシグネチャの同期ポイントを発見することを試み、
    (C)前記第2のデータストリームにおいて前記複数のデータストリームシグネチャの同期ポイントを発見した場合に、
    (C)(1)前記第2のデータストリームにおいて複数のビットの対応するブロックのブロックシグネチャを判定し、
    (C)(2)前記第2のデータストリームの前記同期ポイントおよび前記対応するブロックシグネチャが前記複数のデータストリームシグネチャのいずれかの中の同期ポイントおよびブロックシグネチャに対応するか否かを確認し、
    (C)(3)前記第2のデータストリームの前記同期ポイントおよび前記対応するブロックシグネチャが前記複数のデータストリームシグネチャの1または複数の中の同期ポイントおよびブロックシグネチャに対応する場合に、対応関係を示す情報を保持し、
    (D)前記第2のデータストリームのうち少なくともいくつかが依然として未処理である間、前記第2のデータストリームの予め定められた数の複数の同期ポイントおよび対応する複数のブロックシグネチャが前記複数のデータストリームシグネチャのうち少なくとも1つの中の複数の同期ポイントおよび対応する複数のブロックシグネチャに一致するまで、(B)および(C)を反復し、
    (E)前記第2のデータストリームの前記予め定められた数の複数の同期ポイントおよび前記対応する複数のブロックシグネチャが前記複数のデータストリームのうちの第1のデータストリームに対する第1のデータストリームシグネチャ中の前記予め定められた数の同期ポイントおよび前記複数のブロックシグネチャに一致する場合に、前記第1のデータストリームと前記第2のデータストリームとの間の一致を示すことを実行し、
    前記複数のデータストリームに対する前記複数のデータストリームシグネチャは、前記複数のデータストリームにおける前記複数の同期ポイントおよび前記対応する複数のブロックシグネチャを含み、
    前記第2のデータストリームにおける複数のビットの前記対応するブロックにハッシュ関数またはメッセージダイジェスト関数を適用して前記ブロックシグネチャが判定され、
    前記複数のデータストリームが複数のビットの任意のシーケンスからなり、各同期ポイントが前記複数のデータストリーム中の複数のビットのシーケンスからなり、
    前記複数のデータストリームのそれぞれにおいて、各同期ポイントの位置が、複数のビットの各ブロックの位置とは異なり、
    前記複数のデータストリームのそれぞれに対して少なくとも1つのデータストリームシグネチャがある、
    デバイス。
  19. コンピュータに、請求項1から14のいずれか一項に記載の方法を実行させるためのプログラム。
JP2014559914A 2012-02-29 2013-02-15 ストリーム認識およびフィルタリング Expired - Fee Related JP6340668B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261604859P 2012-02-29 2012-02-29
US61/604,859 2012-02-29
US201261607021P 2012-03-06 2012-03-06
US61/607,021 2012-03-06
PCT/US2013/026264 WO2013130281A1 (en) 2012-02-29 2013-02-15 Stream recognition and filtering

Publications (2)

Publication Number Publication Date
JP2015515770A JP2015515770A (ja) 2015-05-28
JP6340668B2 true JP6340668B2 (ja) 2018-06-13

Family

ID=49083160

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014559914A Expired - Fee Related JP6340668B2 (ja) 2012-02-29 2013-02-15 ストリーム認識およびフィルタリング

Country Status (8)

Country Link
US (2) US9703869B2 (ja)
EP (1) EP2820564B1 (ja)
JP (1) JP6340668B2 (ja)
KR (1) KR20140131333A (ja)
CN (1) CN104205089B (ja)
AU (1) AU2013226430A1 (ja)
TW (1) TWI594626B (ja)
WO (1) WO2013130281A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9444726B2 (en) 2012-07-31 2016-09-13 At&T Intellectual Property I, L.P. Distributing communication of a data stream among multiple devices
US9356980B2 (en) 2012-07-31 2016-05-31 At&T Intellectual Property I, L.P. Distributing communication of a data stream among multiple devices
US9491093B2 (en) 2012-07-31 2016-11-08 At&T Intellectual Property I, L.P. Distributing communication of a data stream among multiple devices
US10567489B2 (en) * 2013-03-15 2020-02-18 Time Warner Cable Enterprises Llc System and method for seamless switching between data streams
FR3010606A1 (fr) * 2013-12-27 2015-03-13 Thomson Licensing Procede de synchronisation de metadonnees avec un document audiovisuel en utilisant des parties de trames et dispositif de production de telles metadonnees
EP3356961B1 (en) 2015-10-02 2020-05-27 Google LLC Peer-to-peer syncable storage system
US10437829B2 (en) 2016-05-09 2019-10-08 Level 3 Communications, Llc Monitoring network traffic to determine similar content
CN108021580A (zh) * 2016-11-04 2018-05-11 广东亿迅科技有限公司 一种数据同步更新方法及其系统
JP2019047331A (ja) * 2017-09-01 2019-03-22 株式会社リコー データ生成装置、データ生成方法、プログラム及びデータ記録システム

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4658093A (en) 1983-07-11 1987-04-14 Hellman Martin E Software distribution system
WO1995001599A1 (en) 1993-07-01 1995-01-12 Legent Corporation System and method for distributed storage management on networked computer systems
WO1996032685A1 (en) 1995-04-11 1996-10-17 Kinetech, Inc. Identifying data in a data processing system
JP3312105B2 (ja) * 1997-02-05 2002-08-05 株式会社東芝 動画像インデックス生成方法および生成装置
US6807632B1 (en) 1999-01-21 2004-10-19 Emc Corporation Content addressable information encapsulation, representation, and transfer
US6717694B1 (en) * 1998-07-31 2004-04-06 Canon Kabushiki Kaisha Data transmission apparatus, system and method, and recording medium
US6574657B1 (en) * 1999-05-03 2003-06-03 Symantec Corporation Methods and apparatuses for file synchronization and updating using a signature list
US6819337B2 (en) * 2000-06-28 2004-11-16 Sun Microsystems, Inc. Initializing a series of video routers that employ source-synchronous signaling
JP4219086B2 (ja) * 2000-12-21 2009-02-04 株式会社リコー 抄本データ作成方法、抄本データ作成装置、そのための装置、及び記録媒体
US20040199786A1 (en) * 2002-12-02 2004-10-07 Walmsley Simon Robert Randomisation of the location of secret information on each of a series of integrated circuits
JP2004234641A (ja) * 2003-01-08 2004-08-19 Kddi Corp コンテンツファイル制作者の認証方式およびそのプログラム
US7809154B2 (en) 2003-03-07 2010-10-05 Technology, Patents & Licensing, Inc. Video entity recognition in compressed digital video streams
US7373520B1 (en) * 2003-06-18 2008-05-13 Symantec Operating Corporation Method for computing data signatures
US7519726B2 (en) 2003-12-12 2009-04-14 International Business Machines Corporation Methods, apparatus and computer programs for enhanced access to resources within a network
US8549177B2 (en) * 2004-03-02 2013-10-01 Divinetworks Ltd. Communication server, method and systems, for reducing transportation volumes over communication networks
JP4901164B2 (ja) * 2005-09-14 2012-03-21 ソニー株式会社 情報処理装置、情報記録媒体、および方法、並びにコンピュータ・プログラム
US8271403B2 (en) 2005-12-09 2012-09-18 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Method and apparatus for automatic comparison of data sequences using local and global relationships
US7627641B2 (en) * 2006-03-09 2009-12-01 Watchguard Technologies, Inc. Method and system for recognizing desired email
JP5022025B2 (ja) * 2006-12-27 2012-09-12 インターナショナル・ビジネス・マシーンズ・コーポレーション コンテンツのデータ・ストリームとメタデータを同期するための方法および装置。
JP2008211022A (ja) * 2007-02-27 2008-09-11 Toshiba Corp 不揮発性半導体記憶装置及びその製造方法
CN101796835B (zh) * 2007-07-02 2012-08-08 Lg电子株式会社 数字广播系统和数据处理方法
US8732236B2 (en) * 2008-12-05 2014-05-20 Social Communications Company Managing network communications between network nodes and stream transport protocol
US20090109840A1 (en) 2007-10-31 2009-04-30 Hallse Brian L Fault-resistant digital-content-stream AV packet switch
US7925708B2 (en) 2008-01-04 2011-04-12 Yahoo! Inc. System and method for delivery of augmented messages
JP5337411B2 (ja) 2008-06-13 2013-11-06 京セラドキュメントソリューションズ株式会社 情報秘匿化方法および情報秘匿化装置
US8135930B1 (en) * 2008-07-14 2012-03-13 Vizioncore, Inc. Replication systems and methods for a virtual computing environment
US8400566B2 (en) * 2008-08-21 2013-03-19 Dolby Laboratories Licensing Corporation Feature optimization and reliability for audio and video signature generation and detection
US20100138414A1 (en) * 2008-12-01 2010-06-03 Andrew Newman Methods and systems for associative search
JP2009151798A (ja) * 2009-01-19 2009-07-09 Sony Corp 画像処理装置および方法
JP5291523B2 (ja) * 2009-04-21 2013-09-18 株式会社データ変換研究所 類似データ検索装置及びそのプログラム
US9419801B2 (en) * 2009-05-12 2016-08-16 Infrascale Inc. System and method for transmitting needed portions of a data file between networked computers
JP5297297B2 (ja) * 2009-08-11 2013-09-25 Kddi株式会社 動画コンテンツ検出装置
US8325276B2 (en) * 2009-08-26 2012-12-04 Samsung Electronics Co., Ltd. System and method for real-time video content sharing with synchronization via closed-caption metadata
US8910202B2 (en) * 2009-12-08 2014-12-09 Harmonic, Inc. Modification and distribution of video content
US20120176386A1 (en) * 2011-01-10 2012-07-12 Hutchins Edward A Reducing recurrent computation cost in a data processing pipeline

Also Published As

Publication number Publication date
WO2013130281A1 (en) 2013-09-06
US20140351280A1 (en) 2014-11-27
CN104205089A (zh) 2014-12-10
US20150248485A1 (en) 2015-09-03
US9703869B2 (en) 2017-07-11
KR20140131333A (ko) 2014-11-12
AU2013226430A1 (en) 2014-09-04
EP2820564A4 (en) 2015-11-25
US10068017B2 (en) 2018-09-04
EP2820564B1 (en) 2019-04-10
EP2820564A1 (en) 2015-01-07
TWI594626B (zh) 2017-08-01
TW201340689A (zh) 2013-10-01
JP2015515770A (ja) 2015-05-28
CN104205089B (zh) 2018-10-16

Similar Documents

Publication Publication Date Title
JP6340668B2 (ja) ストリーム認識およびフィルタリング
US8954392B2 (en) Efficient de-duping using deep packet inspection
US8078593B1 (en) Dictionary architecture and methodology for revision-tolerant data de-duplication
US7504969B2 (en) Locality-based stream segmentation for data deduplication
NL2011817C2 (en) A method of generating a reference index data structure and method for finding a position of a data pattern in a reference data structure.
WO2005101292A3 (fr) Procédé de recherche de contenu, notamment d'extraits communs entre deux fichiers informatiques
CN111767364B (zh) 数据处理方法、装置和设备
US10339124B2 (en) Data fingerprint strengthening
AU2021287730A1 (en) Systems and methods for compression and encryption of data
WO2017171574A1 (en) Backup server selection based on data commonality
US8868584B2 (en) Compression pattern matching
JP2012164130A (ja) データ分割プログラム
WO2014089802A1 (zh) 一种数据处理方法及装置
US20170048303A1 (en) On the fly statistical delta differencing engine
KR102187938B1 (ko) Ip 주소의 국가 정보를 처리하는 데이터 처리 방법 및 장치
US20170039212A1 (en) Method and system for managing client data replacement
US9189488B2 (en) Determination of landmarks
NL2015248B1 (en) Method and system for managing client data replacement.
Lei Forensic analysis of unallocated space
KR20210002066A (ko) Ip 주소의 국가 정보를 처리하는 데이터 처리 방법 및 장치
CN111880970A (zh) 一种快捷远程文件备份方法
JP2021057887A (ja) データ構造
US20170048302A1 (en) Static statistical delta differencing engine
JP2009521756A (ja) 階層式セグメント化巡回冗長検査による遠隔地でのファイルの修復
JP2008211524A (ja) パケット制御装置、パケット制御方法及びパケット制御プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160215

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20160215

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20160314

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160510

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160720

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170511

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170808

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171208

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20180126

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180403

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20180425

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180425

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20180426

R150 Certificate of patent or registration of utility model

Ref document number: 6340668

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees