JP6282293B2 - ネットワーク・パラメータに基づく、完全性点検および選択的な重複排除を実施する方法、コンピュータ・システムおよびコンピュータ・プログラム - Google Patents
ネットワーク・パラメータに基づく、完全性点検および選択的な重複排除を実施する方法、コンピュータ・システムおよびコンピュータ・プログラム Download PDFInfo
- Publication number
- JP6282293B2 JP6282293B2 JP2015558563A JP2015558563A JP6282293B2 JP 6282293 B2 JP6282293 B2 JP 6282293B2 JP 2015558563 A JP2015558563 A JP 2015558563A JP 2015558563 A JP2015558563 A JP 2015558563A JP 6282293 B2 JP6282293 B2 JP 6282293B2
- Authority
- JP
- Japan
- Prior art keywords
- computer
- hash
- digest
- hash digest
- data package
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
本発明は、通信トラフィックを管理するためのデータ処理の方法およびシステムに関し、さらに具体的には、メッセージ・パケットのストリームに対して完全性点検および選択的重複排除を実施するための技法に関する。
暗号化ハッシュ関数は、入力としてデータの任意のブロックを取り、ハッシュ・ダイジェスト((別名)ハッシュ値、暗号ハッシュ値、またはダイジェストとしても知られる)を生成して返すアルゴリズムであり、ハッシュ・ダイジェストは固定サイズのビット・ストリングである。暗号化ハッシュ関数は、入力データへの偶発的または意図的変更が、非常に高い確率でハッシュ・ダイジェストを変化させ得るように、ハッシュ・ダイジェストを生成する。さらに、暗号化ハッシュ関数は、該関数への入力中のごく小さい差異が(例えば、1ビットの差異でさえも)、ダイジェストにおける相当に大きい差異をもたらす(すなわち、高度に非線形である)ので雪崩関数である。暗号化ハッシュ関数は、セキュア・ハッシュ・アルゴリズム(SHA:Secure Hash Algorithm)関数およびメッセージ・ダイジェスト(MD:Message Digest)関数を含む。暗号化ハッシュ関数およびそれらのそれぞれのハッシュ・ダイジェストのサイズが表1に含まれている。
ネットワーク通信デバイスは、通信プロトコルを用いて、通信(すなわちデータ)パッケージを、送信するネットワーク・デバイス(以下、送信側と言う)から受信するデバイス(以下、受信側と言う)に送信する。伝送制御プロトコル・オーバー・インターネット・プロトコル(TCP/IP:Transmission Control Protocol over Internet Protocol)、ファイバー・チャネル・オーバー・イーサネット(FCoE:Fibre Channel over Ethernet)、小型コンピュータ用周辺機器インターフェース(SCSI:Small Computer System Interface)、インターネットSCSI(iSCSI:Internet SCSI)、シリアル接続SCSI(SAS:Serial−Attached−SCSI)、インフィニバンド(R)、およびイーサネット(R)など、周知の通信プロトコルによれば、通信パッケージは、メタデータとペイロード・データとのためのフィールドを含む。メタデータおよびペイロード・データのフィールドは、開放型システム間相互接続(OSI:Open Systems Interconnection)ネットワーク階層モデルに準じるプロトコル規格によって定義される。特定のメタデータ・フィールドが、ペイロード・データのチェックサムの格納のために用いられ、これによって完全性点検の実施が可能になる。送信側ネットワーク・デバイスは、チェックサムを計算してメタデータに加え、ペイロード・データとチェックサムを含むメタデータとを受信側ネットワーク・デバイスに送信する。受信側ネットワーク・デバイスは、ペイロード・データとチェックサムを含むメタデータとを受信した後、受信したペイロード・データのチェックサムを計算し、その結果を受信したメタデータ中に含まれるチェックサムと対比してデータの完全性を保証する。周知のチェックサムは、周期的冗長検査(CRC:Cyclic Redundancy Check)などの循環コードに基づいている。
ネットワークの利用度が利用度閾値に達したまたはこれを超過したときに、暗号化ハッシュ関数を適用して通信トラフィックにハッシュ・ダイジェストを組み込み、データの完全性点検およびデータの重複排除を提供し、これによって、送信側ネットワーク・デバイスと受信側ネットワーク・デバイスとの間で伝送されるデータの量を低減する。
第一実施形態において、本発明はデータ・パッケージを管理する方法を提供する。本方法は、第一コンピュータが、ネットワークの利用度がネットワーク利用度閾値を上回ることを判定するステップを含む。該ネットワークは、第一コンピュータと第二コンピュータとを含む。本方法は、ネットワークの利用度がネットワーク利用度閾値を上回るのに基づいて、第一コンピュータが重複排除モードに入り、続いてその重複排除モードにおいて諸ステップを実施するステップをさらに含む。重複排除モードにおけるこれらステップは、第一コンピュータが、第二コンピュータに、第一コンピュータが重複排除モードに入ったことの通知を送信するステップを含む。重複排除モードにおけるこれらステップは、第一コンピュータが、第一コンピュータ中に含まれる中央処理ユニット(CPU:central processing unit)の利用度がCPU利用度閾値を上回るかどうかを判定するステップをさらに含む。重複排除モードにおけるこれらステップは、CPUの利用度がCPU利用度閾値を上回る場合、第一コンピュータが、第二ハッシュ関数の代わりに第一ハッシュ関数を選択するステップをさらに含む。重複排除モードにおけるこれらステップは、CPUの利用度がCPU利用度閾値以下の場合、第一コンピュータが、第一ハッシュ関数の代わりに第二ハッシュ関数を選択するステップをさらに含む。重複排除モードにおけるこれらステップは、第一コンピュータが、選択された第一または第二ハッシュ関数を用いてデータ・パッケージのハッシュ・ダイジェストを算定するステップをさらに含む。重複排除モードにおけるこれらステップは、第一コンピュータが、該第一コンピュータに連結された送信側ハッシュ・テーブル中に、そのハッシュ・ダイジェストが在るかどうかを判定するステップをさらに含む。重複排除モードにおけるこれらステップは、そのハッシュ・ダイジェストが送信側ハッシュ・テーブル中に在る場合、第一コンピュータは第二コンピュータにデータ・パッケージを送信せずに、第一コンピュータが、第二コンピュータに、ハッシュ・ダイジェスト、送信側ハッシュ・テーブル中および第二コンピュータに連結された受信側ハッシュ・テーブル中の該ハッシュ・ダイジェスを参照するインデックス、並びに随意的に、選択された第一または第二ハッシュ関数の識別子を送信するステップをさらに含む。重複排除モードにおけるこれらステップは、そのハッシュ・ダイジェストが送信側ハッシュ・テーブル中にない場合、第一コンピュータは、当該データ・パッケージおよびそのハッシュ・ダイジェストを送信側ハッシュ・テーブルに追加し、ハッシュ・ダイジェストに基づいてデータ・パッケージが完全性を有するかどうかを判定するため、第二コンピュータに、該データ・パッケージ、ハッシュ・ダイジェスト、および選択された第一または第二ハッシュ関数の識別子を送信するステップをさらに含む。
第二実施形態において、本発明は、中央処理ユニット(CPU)と、CPUに連結されたメモリと、CPUに連結されたコンピュータ可読の有形ストレージ・デバイスと、を含む第一コンピュータ・システムを提供し、該ストレージ・デバイスは、メモリを介してCPUに実行されてデータ・パッケージを管理する方法を実装する命令を包含する。この方法は、第一コンピュータ・システムが、ネットワークの利用度がネットワーク利用度閾値を上回ることを判定するステップを含む。該ネットワークは第一コンピュータ・システムと第二コンピュータ・システムとを含む。本方法は、ネットワークの利用度がネットワーク利用度閾値を上回るのに基づいて、第一コンピュータ・システムが重複排除モードに入り、続いてその重複排除モードにおいて諸ステップを実施するステップをさらに含む。重複排除モードにおけるこれらステップは、第一コンピュータ・システムが、第二コンピュータ・システムに、第一コンピュータ・システムが重複排除モードに入ったことの通知を送信するステップを含む。重複排除モードにおけるこれらステップは、第一コンピュータ・システムが、第一コンピュータ・システム中に含まれるCPUの利用度がCPU利用度閾値を上回るかどうかを判定するステップをさらに含む。重複排除モードにおけるこれらステップは、第一コンピュータ・システムが、CPUの利用度がCPU利用度閾値を上回る場合、第二ハッシュ関数の代わりに第一ハッシュ関数を選択するステップをさらに含む。重複排除モードにおけるこれらステップは、第一コンピュータ・システムが、CPUの利用度がCPU利用度閾値以下の場合、第一ハッシュ関数の代わりに第二ハッシュ関数を選択するステップをさらに含む。重複排除モードにおけるこれらステップは、第一コンピュータ・システムが、選択された第一または第二ハッシュ関数を用いてデータ・パッケージのハッシュ・ダイジェストを算定するステップをさらに含む。重複排除モードにおけるこれらステップは、第一コンピュータ・システムが、そのハッシュ・ダイジェストが該第一コンピュータ・システムに連結された送信側ハッシュ・テーブル中に在るかどうかを判定するステップをさらに含む。重複排除モードにおけるこれらステップは、そのハッシュ・ダイジェストが送信側ハッシュ・テーブル中に在る場合、第一コンピュータ・システムは第二コンピュータ・システムにデータ・パッケージを送信せずに、第一コンピュータ・システムが、第二コンピュータ・システムに、ハッシュ・ダイジェスト、送信側ハッシュ・テーブル中および第二コンピュータ・システムに連結された受信側ハッシュ・テーブル中の該ハッシュ・ダイジェストを参照するインデックス、並びに随意的に、選択された第一または第二ハッシュ関数の識別子を送信するステップをさらに含む。重複排除モードにおけるこれらステップは、そのハッシュ・ダイジェストが送信側ハッシュ・テーブル中にない場合、第一コンピュータ・システムが、データ・パッケージおよびそのハッシュ・ダイジェストを送信側ハッシュ・テーブルに追加し、ハッシュ・ダイジェストに基づいてデータ・パッケージが完全性を有するかどうかを判定するために、第二コンピュータ・システムに、該データ・パッケージ、ハッシュ・ダイジェスト、および選択された第一または第二ハッシュ関数の識別子を送信するステップをさらに含む。
第三実施形態において、本発明は、コンピュータ可読の有形ストレージ・デバイスと、該コンピュータ可読の有形ストレージ・デバイス中に格納されたコンピュータ可読プログラム・コードと、を含むコンピュータ・プログラム製品を提供する。本コンピュータ・プログラム・コードは、第一コンピュータ・システムのCPUによって実行されてデータ・パッケージを管理する方法を実装する命令を包含する。この方法は、第一コンピュータ・システムが、ネットワークの利用度がネットワーク利用度閾値を上回ることを判定するステップを含む。該ネットワークは第一コンピュータ・システムと第二コンピュータ・システムとを含む。本方法は、ネットワークの利用度がネットワーク利用度閾値を上回るのに基づいて、第一コンピュータ・システムが重複排除モードに入り、続いてその重複排除モードにおいて諸ステップを実施するステップをさらに含む。重複排除モードにおけるこれらステップは、第一コンピュータ・システムが、第二コンピュータ・システムに、第一コンピュータ・システムが重複排除モードに入ったことの通知を送信するステップを含む。重複排除モードにおけるこれらステップは、第一コンピュータ・システムが、第一コンピュータ・システム中に含まれるCPUの利用度がCPU利用度閾値を上回るかどうかを判定するステップをさらに含む。重複排除モードにおけるこれらステップは、第一コンピュータ・システムが、CPUの利用度がCPU利用度閾値を上回る場合、第二ハッシュ関数の代わりに第一ハッシュ関数を選択するステップをさらに含む。重複排除モードにおけるこれらステップは、第一コンピュータ・システムが、CPUの利用度がCPU利用度閾値以下の場合、第一ハッシュ関数の代わりに第二ハッシュ関数を選択するステップをさらに含む。重複排除モードにおけるこれらステップは、第一コンピュータ・システムが、選択された第一または第二ハッシュ関数を用いてデータ・パッケージのハッシュ・ダイジェストを算定するステップをさらに含む。重複排除モードにおけるこれらステップは、第一コンピュータ・システムが、そのハッシュ・ダイジェストが該第一コンピュータ・システムに連結された送信側ハッシュ・テーブル中に在るかどうかを判定するステップをさらに含む。重複排除モードにおけるこれらステップは、そのハッシュ・ダイジェストが送信側ハッシュ・テーブル中に在る場合、第一コンピュータ・システムは第二コンピュータ・システムにデータ・パッケージを送信せずに、第一コンピュータ・システムが、第二コンピュータ・システムに、ハッシュ・ダイジェスト、送信側ハッシュ・テーブル中および第二コンピュータ・システムに連結された受信側ハッシュ・テーブル中の該ハッシュ・ダイジェストを参照するインデックス、並びに随意的に、選択された第一または第二ハッシュ関数の識別子を送信するステップをさらに含む。重複排除モードにおけるこれらステップは、そのハッシュ・ダイジェストが送信側ハッシュ・テーブル中にない場合、第一コンピュータ・システムが、データ・パッケージおよびそのハッシュ・ダイジェストを送信側ハッシュ・テーブルに追加し、ハッシュ・ダイジェストに基づいてデータ・パッケージが完全性を有するかどうかを判定するために、第二コンピュータ・システムに、該データ・パッケージ、ハッシュ・ダイジェスト、および選択された第一または第二ハッシュ関数の識別子を送信するステップをさらに含む。
第四実施形態において、本発明は、コンピューティング・インフラストラクチャをサポートするためのプロセスを提供する。本プロセスは、第一コンピュータ・システムにおいて、コンピュータ可読コードを生成すること、統合すること、ホストすること、維持すること、および展開することのうちの少なくとも一つに対し、少なくとも一つのサポート・サービスを提供するステップを含む。コンピュータ可読コードは、第一コンピュータ・システムのプロセッサによって実行されたとき、データ・パッケージを管理する方法を実装する命令を包含する。この方法は、第一コンピュータ・システムが、ネットワークの利用度がネットワーク利用度閾値を上回ることを判定するステップを含む。該ネットワークは第一コンピュータ・システムと第二コンピュータ・システムとを含む。本方法は、ネットワークの利用度がネットワーク利用度閾値を上回るのに基づいて、第一コンピュータ・システムが重複排除モードに入り、続いてその重複排除モードにおいて諸ステップを実施するステップをさらに含む。重複排除モードにおけるこれらステップは、第一コンピュータ・システムが、第二コンピュータ・システムに、第一コンピュータ・システムが重複排除モードに入ったことの通知を送信するステップを含む。重複排除モードにおけるこれらステップは、第一コンピュータ・システムが、第一コンピュータ・システム中に含まれるCPUの利用度がCPU利用度閾値を上回るかどうかを判定するステップをさらに含む。重複排除モードにおけるこれらステップは、第一コンピュータ・システムが、CPUの利用度がCPU利用度閾値を上回る場合、第二ハッシュ関数の代わりに第一ハッシュ関数を選択するステップをさらに含む。重複排除モードにおけるこれらステップは、第一コンピュータ・システムが、CPUの利用度がCPU利用度閾値以下の場合、第一ハッシュ関数の代わりに第二ハッシュ関数を選択するステップをさらに含む。重複排除モードにおけるこれらステップは、第一コンピュータ・システムが、選択された第一または第二ハッシュ関数を用いてデータ・パッケージのハッシュ・ダイジェストを算定するステップをさらに含む。重複排除モードにおけるこれらステップは、第一コンピュータ・システムが、そのハッシュ・ダイジェストが該第一コンピュータ・システムに連結された送信側ハッシュ・テーブル中に在るかどうかを判定するステップをさらに含む。重複排除モードにおけるこれらステップは、そのハッシュ・ダイジェストが送信側ハッシュ・テーブル中に在る場合、第一コンピュータ・システムは第二コンピュータ・システムにデータ・パッケージを送信せずに、第一コンピュータ・システムが、第二コンピュータ・システムに、ハッシュ・ダイジェスト、送信側ハッシュ・テーブル中および第二コンピュータ・システムに連結された受信側ハッシュ・テーブル中の該ハッシュ・ダイジェストを参照するインデックス、並びに随意的に、選択された第一または第二ハッシュ関数の識別子を送信するステップをさらに含む。重複排除モードにおけるこれらステップは、そのハッシュ・ダイジェストが送信側ハッシュ・テーブル中にない場合、第一コンピュータ・システムが、データ・パッケージおよびそのハッシュ・ダイジェストを送信側ハッシュ・テーブルに追加し、ハッシュ・ダイジェストに基づいてデータ・パッケージが完全性を有するかどうかを判定するために、第二コンピュータ・システムに、該データ・パッケージ、ハッシュ・ダイジェスト、および選択された第一または第二ハッシュ関数の識別子を送信するステップをさらに含む。
第五実施形態において、本発明は、データ・パッケージを管理する方法を提供する。本方法は、第二コンピュータが反復使用モードにおいて諸ステップを実施するステップを含む。反復使用モードにおけるこれらステップは:ネットワークの利用度がネットワーク利用度閾値を上回るとの判定がされることであって、該ネットワークは第一コンピュータと第二コンピュータとを含む、該判定がされることと;第一コンピュータによって重複排除モードに入ることと;第一コンピュータによって、第一コンピュータが重複排除モードに入ったことを第二コンピュータに通知することと;第一コンピュータによって、第一コンピュータ中に含まれるCPUの利用度がCPU利用度閾値を上回るかどうかを判定することと;CPUの利用度がCPU利用度閾値を上回る場合、第二ハッシュ関数の代わりに第一ハッシュ関数を選択することと;CPUの利用度がCPU利用度閾値以下の場合、第一ハッシュ関数の代わりに第二ハッシュ関数を選択することであって、第一ハッシュ関数の使用は第二ハッシュ関数の使用よりCPUの利用度が少ない、該選択することと;選択された第一または第二ハッシュ関数を用いて、データ・パッケージのハッシュ・ダイジェストを算定することと;第一コンピュータに連結された送信側ハッシュ・テーブル中に該ハッシュ・ダイジェストが在ることを判定することと;第二コンピュータにデータ・パッケージを送信しないで、第一コンピュータによって、ハッシュ・ダイジェスト、送信側ハッシュ・テーブル中および第二コンピュータに連結された受信側ハッシュ・テーブル中のハッシュ・ダイジェストを参照するインデックス、並びに選択された第一または第二ハッシュ関数の識別子を、第二コンピュータに送信することと;に後続して実施される。反復使用モードにおけるこれらステップは、第一コンピュータが重複排除モードに入ったとの第一コンピュータによる第二コンピュータへの通知に基づいて、第二コンピュータが、データ・パッケージは、ハッシュ・ダイジェスト、インデックス、および識別子と一緒に受信されていないことを判定するステップを含む。反復使用モードにおけるこれらステップは、第二コンピュータが、ハッシュ・ダイジェスト、送信側ハッシュ・テーブル中および受信側ハッシュ・テーブル中のハッシュ・ダイジェストを参照するインデックス、および選択された第一または第二ハッシュ関数の識別子を受信するステップをさらに含む。反復使用モードにおけるこれらステップは、第二コンピュータがデータ・パッケージは受信されていないと判定するのに応じ、インデックスに基づいて、第二コンピュータが、受信側ハッシュ・テーブル中のハッシュ・ダイジェストを見出すステップをさらに含む。反復使用モードにおけるこれらステップは、第二コンピュータが、受信側ハッシュ・テーブル中で見出されたハッシュ・ダイジェストが、受信したハッシュ・ダイジェストと一致することを判定するステップをさらに含む。反復使用モードにおけるこれらステップは、見出されたハッシュ・ダイジェスが受信したハッシュ・ダイジェストと一致するのに基づいて、第二コンピュータが、受信側ハッシュ・テーブルから見出されたハッシュ・ダイジェストに関連付けられたデータ・パッケージを読み出すステップをさらに含む。反復使用モードにおけるこれらステップは、第二コンピュータが、受信した識別子に基づいて選択された第一または第二ハッシュ関数を特定し、読み出されたデータ・パッケージに対し該選択された第一または第二ハッシュ関数を用いることによって、新規ハッシュ・ダイジェストを算定するステップをさらに含む。反復使用モードにおけるこれらステップは、第二コンピュータが、該新規ハッシュ・ダイジェストは受信したハッシュ・ダイジェストと一致するかどうかを判定するステップをさらに含む。反復使用モードにおけるこれらステップは、新規ハッシュ・ダイジェストが受信したハッシュ・ダイジェストと一致する場合、第二コンピュータが、読み出されたデータ・パッケージをアプリケーションに送るステップをさらに含む。
第六実施形態において、本発明は、データ・パッケージを管理する方法を提供する。本方法は、第一コンピュータが、ネットワークの第一利用度がネットワーク利用度閾値以下であることを判定するステップを含む。該ネットワークは、第一コンピュータと第二コンピュータとを含む。本方法は、ネットワークの利用度がネットワーク利用度閾値以下であるのに基づいて、第一コンピュータが、非重複排除モードにおいて諸ステップを実施するステップをさらに含む。非重複排除モードにおけるこれらステップは、第一コンピュータが、第一コンピュータに含まれるCPUの利用度がCPU利用度閾値を上回るかどうかを判定するステップを含む。非重複排除モードにおけるこれらステップは、第一コンピュータが、CPUの利用度がCPU利用度閾値を上回る場合、第二ハッシュ関数の代わりに第一ハッシュ関数を選択するステップをさらに含む。非重複排除モードにおけるこれらステップは、第一コンピュータが、CPUの利用度がCPU利用度閾値以下の場合、第一ハッシュ関数の代わりに第二ハッシュ関数を選択するステップをさらに含む。非重複排除モードにおけるこれらステップは、第一コンピュータが、選択された第一または第二ハッシュ関数を用いてデータ・パッケージのハッシュ・ダイジェストを算定するステップをさらに含む。本方法は、第一コンピュータが非重複排除モードにおいて上記ステップを実施するのに基づいて、第一コンピュータが、第一コンピュータに連結された送信側ハッシュ・テーブルにハッシュ・ダイジェストを追加するステップと、第一コンピュータが、第二コンピュータに、ハッシュ・ダイジェストに基づいてデータ・パッケージが完全性を有するかどうかを判定するため、データ・パッケージ、ハッシュ・ダイジェスト、および選択された第一または第二ハッシュ関数の識別子を送信するステップと、を含む。第一コンピュータが、第二コンピュータに、データ・パッケージ、ハッシュ・ダイジェスト、および選択された第一または第二ハッシュ関数の識別子を送信するステップの結果は、第二コンピュータによって、データ・パッケージ、ハッシュ・ダイジェスト、および選択された第一または第二ハッシュ関数の識別子を受信することを含む。第一コンピュータが、第二コンピュータに、データ・パッケージ、ハッシュ・ダイジェスト、および選択された第一または第二ハッシュ関数の識別子を送信するステップの結果は、選択された第一または第二ハッシュ関数の受信した識別子に基づいて、受信したデータ・パッケージに対し該選択された第一または第二ハッシュ関数を用いることによって、新規ハッシュ・ダイジェストを算定することをさらに含む。第一コンピュータが、第二コンピュータに、データ・パッケージ、ハッシュ・ダイジェスト、および選択された第一または第二ハッシュ関数の識別子を送信するステップの結果は、受信したハッシュ・ダイジェストが、新規ハッシュ・ダイジェストと一致するかどうかを判定することをさらに含む。受信したハッシュ・ダイジェストが新規ハッシュ・ダイジェストと一致する場合、第一コンピュータがデータ・パッケージ、ハッシュ・ダイジェスト、および識別子を送信するステップの結果は、データ・パッケージが完全性を有するのを判定することと、データ・パッケージおよびハッシュ・ダイジェストを、第二コンピュータに連結された受信側ハッシュ・テーブルに追加することと、データ・パッケージをアプリケーションに送ることとを含む。受信したハッシュ・ダイジェストが新規ハッシュ・ダイジェストと一致しない場合、第一コンピュータがデータ・パッケージ、ハッシュ・ダイジェスト、および識別子を送信するステップの結果は、データ・パッケージが完全性を有さないことを第一コンピュータに通知することと、それに応じて、第一コンピュータが、第二コンピュータにデータ・パッケージおよびハッシュ・ダイジェストを再送信することとを含む。本方法は、データ・パッケージ、ハッシュ・ダイジェスト、および選択された第一または第二ハッシュ関数の識別子を第二コンピュータに送信するステップに続いて、第一コンピュータが、ネットワークの第二利用度がネットワーク利用度閾値を上回ることを判定するステップをさらに含む。本方法は、ネットワークの利用度がネットワーク利用度閾値を上回るのに基づいて、第一コンピュータが重複排除モードに入り、続いてその重複排除モードにおいて諸ステップを実施するステップをさらに含む。重複排除モードにおけるこれらステップは、第一コンピュータが、第二コンピュータに第一コンピュータが重複排除モードに入ったことを通知するステップを含む。重複排除モードにおけるこれらステップは、第一コンピュータが、選択された第一または第二ハッシュ関数を用いて、第二データ・パッケージの第二ハッシュ・ダイジェストを算定するステップをさらに含む。重複排除モードにおけるこれらステップは、第一コンピュータが、第二データ・パッケージの第二ハッシュ・ダイジェストは送信側ハッシュ・テーブルに加えられたハッシュ・ダイジェストと一致することを判定するステップを含む。重複排除モードにおけるこれらステップは、第二データ・パッケージの第二ハッシュ・ダイジェスが送信側ハッシュ・テーブルに加えられたハッシュ・ダイジェストと一致するのに基づいて、第一コンピュータは第二コンピュータにデータ・パッケージを送信せずに、第一コンピュータが、第二コンピュータに、第二ハッシュ・ダイジェスト、送信側ハッシュ・テーブルに追加されたハッシュ・ダイジェストを参照するインデックス、および選択された第一または第二ハッシュ関数の識別子を送信するステップをさらに含む。第一コンピュータが、第二コンピュータに、第二ハッシュ・ダイジェスト、インデックス、および識別子を送信するステップの結果は、第二コンピュータが第一コンピュータは重複排除モードに入ったことを通知されたのに基づいて、第二コンピュータが、データ・パッケージは、第二ハッシュ・ダイジェスト、インデックス、および識別子と一緒に受信されていないのを判定することを含む。第一コンピュータが第二コンピュータに第二ハッシュ・ダイジェスト、そのインデックス、および識別子を送信するステップの結果は、第二コンピュータが、第二ハッシュ・ダイジェスト、そのインデックス、および選択された第一または第二ハッシュ関数の識別子を受信することをさらに含む。第一コンピュータが第二コンピュータに第二ハッシュ・ダイジェスト、そのインデックス、および識別子を送信するステップの結果は、第二コンピュータが、データ・パッケージが受信されていないとの判定に応じて、該インデックスに基づいて、受信側ハッシュ・テーブルに追加されたハッシュ・ダイジェストを見出すことをさらに含む。第一コンピュータが第二コンピュータに第二ハッシュ・ダイジェスト、インデックス、および識別子を送信するステップの結果は、第二コンピュータが、受信側ハッシュ・テーブル中で見出されたハッシュ・ダイジェストが受信した第二ハッシュ・ダイジェストと一致するのを判定することをさらに含む。第一コンピュータが第二コンピュータに第二ハッシュ・ダイジェスト、インデックス、および識別子を送信するステップの結果は、受信側ハッシュ・テーブル中で見出されたハッシュ・ダイジェストが受信した第二ハッシュ・ダイジェストと一致するのに基づいて、第二コンピュータが、受信側ハッシュ・テーブル中で見出されたハッシュ・ダイジェストに関連付けられたデータ・パッケージを読み出すことをさらに含む。第一コンピュータが第二コンピュータに第二ハッシュ・ダイジェスト、インデックス、および識別子を送信するステップの結果は、識別子の受信に基づいて、第二コンピュータが選択された第一または第二ハッシュ関数を特定することと、第二コンピュータが、受信側ハッシュ・テーブル中で見出されたハッシュ・ダイジェストに関連付けられた読み出されたデータ・パッケージに対し選択された第一または第二ハッシュ関数を用いて、第二新規ハッシュ・ダイジェストを算定することとをさらに含む。第一コンピュータが第二コンピュータに第二ハッシュ・ダイジェスト、インデックス、および識別子を送信するステップの結果は、第二コンピュータが、該第二新規ハッシュ・ダイジェストは受信した第二ハッシュ・ダイジェストと一致するかどうかを判定することをさらに含む。第一コンピュータが第二コンピュータに第二ハッシュ・ダイジェストおよびインデックスを送信するステップの結果は、第二新規ハッシュ・ダイジェストが受信した第二ハッシュ・ダイジェストと一致する場合、第二コンピュータが、読み出されたデータ・パッケージをアプリケーションに送ることをさらに含む。
本発明の諸実施形態は、ネットワークの利用度が利用度閾値に達しまたはこれを超過したときに、暗号化ハッシュ関数を適用して通信トラフィックにハッシュ・ダイジェストを組み込み、データの完全性点検およびデータの重複排除を提供する。本発明の諸実施形態は、データの重複排除を提供することによって、送信側ネットワーク・デバイスと受信側ネットワーク・デバイスとの間で伝送されるデータの量を低減する。
要旨
本発明の諸実施形態は、ネットワーク利用度またはスループットがユーザ定義の閾値を上回ると判定されるのに応じ、ネットワーク中の通信トラフィックに暗号化ハッシュ関数を適用し、通信トラフィックの選択的なデータ重複排除を提供することによって、送信側ネットワーク・デバイスと受信側ネットワーク・デバイスとの間で伝送されるデータの量を低減する。通信トラフィックに適用される暗号化ハッシュ関数は、データの完全性点検のためのチェックサムも提供する。
本発明の諸実施形態は、ネットワーク利用度またはスループットがユーザ定義の閾値を上回ると判定されるのに応じ、ネットワーク中の通信トラフィックに暗号化ハッシュ関数を適用し、通信トラフィックの選択的なデータ重複排除を提供することによって、送信側ネットワーク・デバイスと受信側ネットワーク・デバイスとの間で伝送されるデータの量を低減する。通信トラフィックに適用される暗号化ハッシュ関数は、データの完全性点検のためのチェックサムも提供する。
データ・パッケージを管理するためのシステム
図1は、本発明の実施形態による、データ・パッケージを管理するための或るシステムのブロック図である。システム100は第一コンピュータ・システム101を含み、第一コンピュータ・システム101は、中央処理ユニット(CPU)102と、メモリ104と、バス108と、送信側ネットワーク・インターフェース・カード(NIC:network interface card)116とを含み、該カード116は、第一コンピュータ・システム101をコンピュータ・ネットワーク130に接続する。また、第一コンピュータ・システム101は、バス108を介してCPU102に連結された入力/出力インターフェース(図示せず)を含む。送信側ネットワーク・インターフェース・カード116は、本発明の実施形態によって、ソフトウェア・ベースのモニタリング・モジュール118、ソフトウェア・ベースの重複排除モジュール120、および送信側ハッシュ・テーブル122を含むように拡張されたNICである。
図1は、本発明の実施形態による、データ・パッケージを管理するための或るシステムのブロック図である。システム100は第一コンピュータ・システム101を含み、第一コンピュータ・システム101は、中央処理ユニット(CPU)102と、メモリ104と、バス108と、送信側ネットワーク・インターフェース・カード(NIC:network interface card)116とを含み、該カード116は、第一コンピュータ・システム101をコンピュータ・ネットワーク130に接続する。また、第一コンピュータ・システム101は、バス108を介してCPU102に連結された入力/出力インターフェース(図示せず)を含む。送信側ネットワーク・インターフェース・カード116は、本発明の実施形態によって、ソフトウェア・ベースのモニタリング・モジュール118、ソフトウェア・ベースの重複排除モジュール120、および送信側ハッシュ・テーブル122を含むように拡張されたNICである。
第一コンピュータ・システム101は、コンピュータ・ネットワーク130を介して、第二コンピュータ・システム151を含む一つ以上のコンピュータ・システムと通信する。第一コンピュータ・システム101は、第二コンピュータ・システム151を含めてネットワーク130に接続された一つ以上の他の受信側コンピュータ・システムにデータ・パッケージを送信する要求、を処理する送信側コンピュータ・システムである。第一コンピュータ・システム101は、オペレーティング・システム(図示せず)および一つ以上のソフトウェア・アプリケーション(図示せず)を実行する。これらアプリケーションの一つは、ネットワーク130を介するデータの送信を開始し、該アプリケーションは、オペレーティング・システムにデータを送信するよう命令するアプリケーションを含み、それに応じて、オペレーティング・システムは送信側NIC116に対し、ネットワーク130を介してデータを送信するよう命令する。
第二コンピュータ・システム151は、CPU152と、メモリ154と、バス158と、受信側ネットワーク・インターフェース・カード166とを含み、該カード166は、第二コンピュータ・システム151をネットワーク130に接続する。また、第二コンピュータ・システム151は、バス158を介してCPU152に連結された入力/出力インターフェース(図示せず)を含む。受信側ネットワーク・インターフェース・カード166は、本発明の実施形態によって、ソフトウェア・ベースの反復使用モジュール168、および受信側ハッシュ・テーブル172を含むように拡張されたNICである。ネットワーク130中の通信トラフィックは、送信側NIC116によって受信側NIC166に送信される通信パッケージを含む。
本明細書では、第一コンピュータ・システム101がNIC116から通信パッケージを送信するとして説明し、また、本明細書では、第二コンピュータ・システム151がNIC166で通信パッケージを受信するとして説明するが、本発明の実施形態は、NIC166が送信側デバイスであり、NIC116が受信側デバイスであることも含むのは当業者には自明であろう。
送信側ハッシュ・テーブル122および受信側ハッシュ・テーブル172は、それぞれのインデックスと、それぞれのハッシュ・ダイジェストと、それぞれのデータ・パッケージと、それぞれの使用カウントを有するデータ・エントリ群を含む。送信側ハッシュ・テーブル122中または受信側ハッシュ・テーブル172中の或る特定のインデックスは、特定のデータ・パッケージと、そのデータ・パッケージにハッシュ関数を適用して生成された特定のハッシュ・ダイジェストと、特定の使用カウントとを参照する。一実施形態において、送信側ハッシュ・テーブル122中または受信側ハッシュ・テーブル172中の或るインデックスは、特定のデータ・パッケージ、ハッシュ・ダイジェスト、および使用カウントを含む、送信側ハッシュ・テーブル122(図1参照)または受信側ハッシュ・テーブル172の或る行を示す行番号である。使用カウントは、第一コンピュータ・システム101が、第二コンピュータ・システム151など、ネットワーク130に接続されている受信側コンピュータ・システム(群)にデータ・パッケージを送信する要求(群)を、何回処理したかを示す。システム100が作動するに際し、送信側ハッシュ・テーブル122の内容と受信側ハッシュ・テーブル172の内容とが一致しているか、または送信側ハッシュ・テーブル122が、受信側ハッシュ・テーブル172にまだ加えられてはいないが加える予定のデータの新規の行を有する。送信側ハッシュ・テーブル122中の利用可能なスペースおよび受信側ハッシュ・テーブル172中の利用可能なスペースの管理については、図4に関連して後記で説明する。
一実施形態において、送信側ハッシュ・テーブル122および受信側ハッシュ・テーブル172中の各行は、表2に提示された例の中で示されるように、行番号、ハッシュ・ダイジェスト、データ・パッケージ、および使用カウントを含む。表2において、第一列は、各新規の行に対し一つずつ増分される行の番号を含む。表2の第二列は、第三列中のデータ・パッケージに対するハッシュ・ダイジェストを含む。表2の第四列は、使用カウントを含み、このカウントは、当該データ・パッケージが、ネットワーク130に接続されたコンピュータ・システムによってどの位の頻度で送信されたかを示す。
モニタリング・モジュール118が、ネットワーク130の利用度がユーザ定義のネットワーク利用度閾値を超えたと判定した場合、第一コンピュータ・システム101は重複排除モードに入り、該モードは重複排除モジュール120によって実施される諸ステップを含む。このセクションでは、重複排除モードにおけるいくつかのステップを説明する。重複排除モードにおけるステップおよび重複排除モード以外のモードで実施されるステップについては、後記で提示する図2〜図3の考察において詳しく説明する。
重複排除モードにある間に、第一コンピュータ・システム101は、第二コンピュータ・システム151によってまたはネットワーク130に接続された別のコンピュータ・システム(図示せず)によって実行されているソフトウェア・アプリケーションに、データ・パッケージを送信する要求を受信し処理する。第一コンピュータ・システム101は、ハッシュ関数を適用して、そのデータ・パッケージのハッシュ・ダイジェストを算定する。当該ハッシュ・ダイジェストが送信側ハッシュ・テーブル122中に既に在る場合、第一コンピュータ・システム101は、そのハッシュ・ダイジェスト、およびハッシュ・ダイジェストのインデックスを第二コンピュータ・システム151に送信する。反復使用モジュール168は、第一コンピュータ・システム101に、データ・パッケージをネットワーク130経由で第二コンピュータ・システム151に送信させることなく、受信したインデックスを使って受信側ハッシュ・テーブル172から当該データ・パッケージを見出して読み出す。ネットワーク130を通してデータ・パッケージを送信させないことによって、ネットワーク130を介して送信されるデータの量が低減される。
当該ハッシュ・ダイジェストが、送信側ハッシュ・テーブル122中に既存しない場合、第一コンピュータ・システム101は、送信側ハッシュ・テーブル122に、当該ハッシュ・ダイジェストとデータ・パッケージとを追加し、該ハッシュ・ダイジェストとデータ・パッケージとを第二コンピュータ・システム151に送信する。反復使用モジュール168は、受信したデータ・パッケージの新規ハッシュ・ダイジェストを算定し、受信したデータ・パッケージのデータ完全性の点検として、新規ハッシュ・ダイジェストと受信したハッシュ・ダイジェストとの対比を用いる。
なお、再述するが、重複排除モードにおいて実施される諸ステップの詳細は、後記の図2〜図3の考察で説明する。
図1のコンポーネントの機能については、図2〜図3および図4に関して後記で提示する考察並びにコンピュータ・システムと題したセクションにおいて、さらに詳しく説明する。また、別の実施形態において、コンピュータ・システム101は、反復使用モジュール168の機能に合致する機能を有する反復使用モジュール(図示せず)を含み、コンピュータ・システム151は、モニタリング・モジュール118および重複排除モジュール120の機能にそれぞれ合致する機能を有するモニタリング・モジュール(図示せず)および機能を有する重複排除モジュール(図示せず)を含む。この別の実施形態において、コンピュータ・システム101(図1参照)中の反復使用モジュールも、反復使用モジュール168(図1参照)によって実施されるのと同様に後記で説明する図2〜図3中のステップを実施し;コンピュータ・システム151(図1参照)中のモニタリング・モジュールも、モニタリング・モジュール118(図1参照)によって実施されるのと同様に後記で説明する図2〜図3および図4中のステップを実施し;コンピュータ・システム151(図1参照)中の重複排除モジュールも、重複排除モジュール120(図1参照)によって実施されるのと同様に、後記で説明する図2〜図3中のステップを実施する。
データ・パッケージを管理するためのプロセス
図2〜図3は、本発明の実施形態による、図1のシステムにおいてデータ・パッケージを管理するプロセスのフローチャートを表す。以下に提示する図2〜図3の説明において、モニタリング・モジュール118(図1参照)によって実施されるとして説明するどのステップも、モニタリング・モジュール118(図1参照)中に含まれるプログラム・コードを実行するコンピュータ・システム101(図1参照)によって実施され;重複排除モジュール120(図1参照)によって実施されるとして説明するどのステップも、重複排除モジュール120(図1参照)中に含まれるプログラム・コードを実行するコンピュータ・システム101(図1参照)によって実施され;反復使用モジュール168(図1参照)によって実施されるとして説明するどのステップも、反復使用モジュール168(図1参照)中に含まれるプログラム・コードを実行するコンピュータ・システム151(図1参照)によって実施される。
図2〜図3は、本発明の実施形態による、図1のシステムにおいてデータ・パッケージを管理するプロセスのフローチャートを表す。以下に提示する図2〜図3の説明において、モニタリング・モジュール118(図1参照)によって実施されるとして説明するどのステップも、モニタリング・モジュール118(図1参照)中に含まれるプログラム・コードを実行するコンピュータ・システム101(図1参照)によって実施され;重複排除モジュール120(図1参照)によって実施されるとして説明するどのステップも、重複排除モジュール120(図1参照)中に含まれるプログラム・コードを実行するコンピュータ・システム101(図1参照)によって実施され;反復使用モジュール168(図1参照)によって実施されるとして説明するどのステップも、反復使用モジュール168(図1参照)中に含まれるプログラム・コードを実行するコンピュータ・システム151(図1参照)によって実施される。
図2〜図3のプロセスは、ステップ200で開始され、第一コンピュータ・システム101(図1参照)が、データ・パッケージを第二コンピュータ・システム151(図1参照)に送信する要求を受信または生成する。ステップ202に先立って、第一コンピュータ・システム101(図1参照)は、ネットワーク利用度閾値を受信し、この閾値は、重複排除モードに入らずに第一コンピュータ・システム101(図1参照)から第二コンピュータ・システム151(図1参照)へのデータ・パッケージの送信に関して許容される、ネットワーク130(図1参照)の最大限利用度を示す。ネットワーク130の利用度は、単位時間当たりにネットワーク130(図1参照)を介して送信されるデータ・パッケージの数の測定値である。ネットワーク利用度閾値は、デフォルト値またはユーザ定義の値であってよい。一実施形態において、ネットワーク利用度閾値は、ネットワーク130(図1参照)の最大限スループットであり、この最大限スループットは、ネットワーク130(図1参照)のトポロジ、およびネットワーク130(図1参照)に用いられた特定の技術に基づく。
ステップ202で、モニタリング・モジュール118(図1参照)は、ネットワーク130(図1参照)の利用度(すなわちネットワーク利用度)がネットワーク利用度閾値を上回るかどうかを判定する。モニタリング・モジュール118(図1参照)が、ステップ202で、ネットワーク利用度がネットワーク利用度閾値を上回ると判定した場合、ステップ202の「はい」分岐が取られ、ステップ204が実施される。モニタリング・モジュール118(図1参照)が、ステップ202で、ネットワーク利用度がネットワーク利用度閾値以下であると判定した場合、ステップ202の「いいえ」分岐が取られ、次にステップ206が実施される。
別の実施形態において、ステップ202は、ネットワーク130(図1参照)を通るスループットの測定値がスループット閾値を超えているかどうかを判定し、スループットが閾値を超えていれば、次にステップ204が実行され、超えていなければ、次にステップ206が実施される。
ステップ204で、モニタリング・モジュール118(図1参照)は、重複排除モジュール120(図1参照)が既に重複排除モードにあるのでなければ、重複排除モジュール120(図1参照)に重複排除モードに入るよう命令する。それに応じ、重複排除モジュール120(図1参照)は、重複排除モジュール120(図1参照)が既に重複排除モードにあるのでなければ重複排除モードに入る。一実施形態において、図2中のステップ206〜218および図3中のステップ220〜228は、コンピュータ・システム101(図1参照)によって、重複排除モードにおいて実施される。重複排除モジュール120(図1参照)に重複排除モードに入るよう命令した後、モニタリング・モジュール118(図1参照)は、ステップ206の前に、コンピュータ・システム151(図1参照)中で作動している反復使用モジュール168(図1参照)に通知を送信し、この通知は、コンピュータ・システム151(図1参照)に、重複排除モジュール120(図1参照)が重複排除モードに入ったことを知らせるものである。モニタリング・モジュール118(図1参照)によって送信された該通知を、反復使用モジュール168(図1参照)が受信する。
ステップ206は、ステップ204の後およびステップ202の「いいえ」分岐の後に続く。ステップ206で、重複排除モジュール120(図1参照)は、送信側ハッシュ・テーブル122(図1参照)を割り当て、反復使用モジュール168(図1参照)は、反復使用モジュール168(図1参照)が重複排除モジュール120(図1参照)は重複排除モードに入ったとの前述の通知を受信するのに応じて、受信側ハッシュ・テーブル172(図1参照)を割り当てる。ステップ206が、ステップ202の「いいえ」分岐に後続する場合、ステップ206は、モニタリング・モジュール118(図1参照)が重複排除モジュール120(図1参照)に、重複排除モジュール120(図1参照)が既に重複排除モードにある場合は重複排除モードのままにしておくよう命令するステップを含む。重複排除モジュール120(図1参照)に重複排除モードのままにしておくよう命令した後、モニタリング・モジュール118(図1参照)は、コンピュータ・システム151(図1参照)中で作動している反復使用モジュール168(図1参照)に通知を送信し、この通知は、コンピュータ・システム151(図1参照)に、重複排除モジュール120(図1参照)が重複排除モードのままであることを知らせるものである。反復使用モジュール168(図1参照)が、モニタリング・モジュール118(図1参照)によって送信された該通知を受信する。
ステップ208に先立って、第一コンピュータ・システム101(図1参照)は、CPU利用度閾値を受信し、該閾値は、第一ハッシュ関数の代わりに第二ハッシュ関数が選択された場合に存続が許容される、CPU102(図1参照)の最大の現行利用度を示す。ハッシュ・ダイジェストを生成するため、データ・パッケージに第一ハッシュ関数を用いることは、ハッシュ・ダイジェストを生成するため、同じデータ・パッケージに第二ハッシュ関数を用いるよりも、CPU102(図1参照)によって提供されるリソースの使用量が少ない。但し、第二ハッシュ関数は第一ハッシュ関数よりも強力である。というのは、このハッシュ関数は、第一ハッシュ関数によって生成されるハッシュ・ダイジェストよりも長いハッシュ・ダイジェストを生成し、したがって、第一ハッシュ関数ではなく第二ハッシュ関数を用いる方が、ハッシュ衝突の可能性が低減されるからである。しかして、十分なCPU容量が利用可能な(すなわち、CPU利用度がCPU利用度閾値以下の)ときは、第一ハッシュ関数よりも第二ハッシュ関数を用いる方が望ましい。CPU利用度閾値は、デフォルト値またはユーザ定義の値であってよい。ステップ208で、モニタリング・モジュール118(図1参照)は、CPU102(図1参照)の利用度(すなわちCPU利用度)がCPU利用度閾値を上回るかどうかを判定する。ステップ208で、モニタリング・モジュール118(図1参照)が、CPU利用度はCPU利用度閾値を上回ると判定した場合、ステップ208の「はい」分岐が取られ、ステップ210が実施される。
ステップ210で、重複排除モジュール120(図1参照)は、第二ハッシュ関数の代わりに第一ハッシュ関数を選択し、選択された第一ハッシュ関数を、データ・パッケージに対するハッシュ・ダイジェストを算定するのに用いるハッシュ関数として割り当てる。
ステップ208に戻って、モニタリング・モジュール118(図1参照)が、ステップ208で、CPU利用度はCPU利用度閾値以下であると判定した場合、ステップ208の「いいえ」分岐が取られ、ステップ212が実施される。
ステップ212で、重複排除モジュール120(図1参照)は、第一ハッシュ関数の代わりに第二ハッシュ関数を選択する。重複排除モジュール(図1参照)は、選択された第二ハッシュ関数を、データ・パッケージに対するハッシュ・ダイジェストを算定するのに用いるハッシュ関数として割り当てる。
ステップ214は、ステップ210の後およびステップ212の後に続く。ステップ214で、重複排除モジュール120(図1参照)は、ステップ210で選択された第一ハッシュ関数またはステップ212で選択された第二ハッシュ関数を用いてデータ・パッケージのハッシュ・ダイジェストD1を算定する。以下、ステップ210またはステップ212のどちらで選択されたハッシュ関数も、選択されたハッシュ関数ということとする。
ステップ216で、重複排除モジュール120(図1参照)は、ステップ204において重複排除モードに入っているのかどうかを判定する。ステップ216で、重複排除モジュール120(図1参照)が、ステップ204で重複排除モードに入っていないと判定した場合、ステップ216の「いいえ」分岐が取られ、ステップ218が実施される。
ステップ218で、重複排除モジュール120(図1参照)は、ネットワーク130(図1参照)を介して第二コンピュータ・システム151(図1参照)に、通信パッケージの中のデータ・パッケージ、ハッシュ・ダイジェストD1、および選択されたハッシュ関数の識別子を送信する。一例として、表1にリストされているハッシュ関数など複数のハッシュ関数は、それぞれの番号によって一意的に識別することが可能である(例えば、MD5の識別子を1とし、SHA−256の識別子を2とし、WHIRLPOOLの識別子を3とする)。ステップ218の後に図3のステップ230が続く。
ステップ216に戻って、重複排除モジュール120(図1参照)が、重複排除モードに入っていると判定した場合、ステップ216の「はい」分岐が取られ、図2〜図3のプロセスにおける次のステップは、図3中のステップ220となる。
図3中のステップ220で、重複排除モジュール120(図1参照)は、ハッシュ・ダイジェストD1が送信側ハッシュ・テーブル122(図1参照)中に既に在るかどうかを判定する。例えば、重複排除モジュール120(図1参照)は、ハッシュ・ダイジェストD1が表2の第二列と一致するかどうか試みる。ステップ220で、重複排除モジュール120(図1参照)が、ハッシュ・ダイジェストD1が送信側ハッシュ・テーブル122(図1参照)中に在ると判定した場合、ステップ220の「はい」分岐が取られ、ステップ222が実施される。
ステップ222で、重複排除モジュール120(図1参照)は、送信側ハッシュ・テーブル122(図1参照)中のハッシュ・ダイジェストD1を参照しているインデックスを見つけ出して、重複排除モジュール120(図1参照)は送信側ハッシュ・テーブル122(図1参照)のエントリ中の使用カウントを更新し、該エントリは、インデックス、ハッシュ・ダイジェストD1、データ・パッケージ、および使用カウントを含む。一実施形態において、ステップ220の「はい」分岐とステップ222とを通って、データ・パッケージが処理される毎に、重複排除モジュール120(図1参照)は、使用カウントを1つ増分する。一実施形態において、ステップ222で見つけ出されたインデックスは、送信側ハッシュ・テーブル122(図1参照)の行番号である。
ステップ224で、重複排除モジュール120(図1参照)は、ハッシュ・ダイジェストD1、および送信側ハッシュ・テーブル122(図1参照)中のハッシュ・ダイジェストD1を参照するインデックスを含み、随意的に、選択されたハッシュ関数の識別子を含む、通信パッケージを生成し、生成された通信パッケージを第二コンピュータ・システム151(図1参照)に送信する。ステップ224で生成された通信パッケージ中には、データ・パッケージは含まれていない。ステップ224の後にステップ230が続く。
ステップ220に戻って、重複排除モジュール120(図1参照)が、ハッシュ・ダイジェストD1が送信側ハッシュ・テーブル122(図1参照)中にないと判定した場合、ステップ220の「いいえ」分岐が取られ、ステップ226が実施される。
ステップ226で、重複排除モジュール120(図1参照)は、ハッシュ・ダイジェストD1およびデータ・パッケージを新規レコード(例えば新しい行)に加え、該レコードは、送信側ハッシュ・テーブル122(図1参照)に追加される。ステップ226で、重複排除モジュール120(図1参照)は、送信側ハッシュ・テーブル122(図1参照)に追加されたハッシュ・ダイジェストD1およびデータ・パッケージを参照しているインデックス(例えば行番号)を見つけ出す。また、重複排除モジュール120(図1参照)は、新規レコード中の使用カウントの値を初期化する。例えば、使用カウントの初期化の値を1とすればよい。
ステップ228で、重複排除モジュール120(図1参照)は、データ・パッケージ、メタデータとして組み込まれたハッシュ・ダイジェストD1、およびステップ210(図2参照)またはステップ212(図2参照)で選択されたハッシュ関数の識別子を含む通信パッケージを生成し、生成された通信パッケージを第二コンピュータ・システム151(図1参照)に送信する。
ステップ224およびステップ228の後に続くステップ230で、第二コンピュータ・システム151(図1参照)中で作動している反復使用モジュール168(図1参照)が、ステップ224またはステップ228で生成された通信パッケージを受信する。
ステップ232で、反復使用モジュール168(図1参照)は、ステップ230で受信した通信パッケージがデータ・パッケージを含むかどうかを判定する。ステップ232で、反復使用モジュール168(図1参照)が、ステップ230で受信した通信パッケージはステップ228または218(図2参照)で送信されたデータ・パッケージを含むと判定した場合、ステップ232の「はい」分岐が取られ、ステップ234が実施される。一実施形態において、反復使用モジュール168(図1参照)は、反復使用モジュール168(図1参照)がステップ204(図2参照)で、重複排除モジュール120(図1参照)は重複排除モードに入っているとの通知を受信したこと基づいて、且つ、反復使用モジュール168(図1参照)がステップ230で、ハッシュ・ダイジェストD1と、送信側ハッシュ・テーブル122(図1参照)中のハッシュ・ダイジェストD1を参照するインデックスと、選択されたハッシュ関数の識別子とを含む通信パッケージを受信したことに基づいて、ステップ230で受信した通信パッケージはデータ・パッケージを含まないと判定する。
ステップ232に続いて且つステップ234に先立って、反復使用モジュール168(図1参照)は、ステップ230で受信した通信パッケージ中に含まれたハッシュ関数の識別子を使って選択されたハッシュ関数を識別する。ステップ234で、反復使用モジュール168(図1参照)は、識別されたハッシュ関数を、ステップ230で受信した通信パッケージに含まれたデータ・パッケージに適用することによってハッシュ・ダイジェストD2を算定する。
ステップ236で、反復使用モジュール168(図1参照)は、ステップ230で受信した通信パッケージ中に含まれたハッシュ・ダイジェストD1とハッシュ・ダイジェストD2とが等しいかどうかを判定し、この判定は、受信したデータ・パッケージがデータ完全性を有するかどうかを示すものである。ステップ236で、反復使用モジュール168(図1参照)がD1はD2と等しくないと判定した場合、反復使用モジュールは、受信したデータ・パッケージのデータ完全性が欠如していると判定し、ステップ236の「いいえ」分岐が取られ、ステップ238が実施される。
ステップ238で、エラー回復手順が実施される。このエラー回復手順は、反復使用モジュール168(図1参照)が、第一コンピュータ・システム101(図1参照)に、データ・パッケージにデータ完全性が欠如していることを示すメッセージを送信するステップを含む。データ完全性の欠如についてのメッセージを受信するのに応じて、第一コンピュータ・システム101(図1参照)は、別の通信パッケージを生成し、ハッシュ・ダイジェストD1および選択されたハッシュ関数と共にそのデータ・パッケージを第二コンピュータ・システム151(図1参照)に再送信する。図2〜図3のプロセスはステップ240で終了する。図示はされていないが、以下で説明するように、ステップ238で、第一コンピュータ・システム101(図1参照)がデータ・パッケージ、ハッシュ・ダイジェストD1、および選択されたハッシュ関数の識別子を再送信した後も、ステップ236でD1=D2と判定され、ステップ236の「はい」分岐が取られるまで、ステップ230、232、234、および236が繰り返される。ステップ230、232、234、および236を繰り返しても、D1がD2に等しくない場合、ステップ238のエラー回復手順を繰り返すことができる。
ステップ236に戻って、反復使用モジュール168(図1参照)がD1=D2と判定した場合、ステップ236の「はい」分岐が取られ、ステップ242が実施される。
ステップ242で、反復使用モジュール168(図1参照)は、受信したデータ・パッケージがデータ完全性を有すると判定し、受信したハッシュ・ダイジェストD1およびデータ・パッケージを新規レコード(例えば新しい行)に加え、該レコードは、受信側ハッシュ・テーブル172(図1参照)に追加される。しかして、ステップ242で受信側ハッシュ・テーブル172(図1参照)に追加された新規レコードは、ステップ226の直近前の実施状況において、送信側ハッシュ・テーブル122(図1参照)に追加された新規レコードと一致する。受信側ハッシュ・テーブル172(図1参照)に新規レコードを追加した後は、受信側ハッシュ・テーブル172(図1参照)の内容は、送信側ハッシュ・テーブル122(図1参照)の内容と再び一致する。
ステップ244で、反復使用モジュール168(図1参照)は、データ・パッケージを要求したアプリケーションに、当該データ・パッケージを送信する。ステップ244の後、図2〜図3のプロセスはステップ240で終了する。
ステップ232に戻って、反復使用モジュール168(図1参照)が、ステップ230で受信した通信パッケージはデータ・パッケージを含まない(すなわち、ステップ224で、ハッシュ・ダイジェストD1およびD1のインデックスだけを有する通信パッケージが送信された)と判定した場合、ステップ232の「いいえ」分岐が取られ、ステップ246が実施される。
ステップ246で、反復使用モジュール168(図1参照)は、受信側ハッシュ・テーブル172(図1参照)中で、ステップ230で受信したインデックスを探索し、該インデックスの探索に基づいて、受信側ハッシュ・テーブル172(図1参照)中の該インデックスで参照されたエントリのハッシュ・ダイジェストを見出して読み出す。
ステップ248で、反復使用モジュール168(図1参照)は、ステップ246で受信側ハッシュ・テーブル172(図1参照)から読み出されたハッシュ・ダイジェストが、ステップ230で受信した通信パッケージ中に含まれていたハッシュ・ダイジェストD1と等しいかどうか判定する。ステップ248で、反復使用モジュール168(図1参照)が、受信側ハッシュ・テーブル172(図1参照)から読み出されたハッシュ・ダイジェストはハッシュ・ダイジェストD1と等しいと判定した場合、ステップ248の「はい」分岐が取られ、ステップ250が実施される。
ステップ250で、反復使用モジュール168(図1参照)は、ステップ230で受信した通信パッケージ中に含まれたインデックスによって参照されているデータ・パッケージに基づいて、受信側ハッシュ・テーブル172(図1参照)からデータ・パッケージを読み出す。選択されたハッシュ関数の識別子が、ステップ224で送信されていてステップ230で受信した通信パッケージに含まれていた場合、ステップ250は、反復使用モジュール168(図1参照)が、(1)ステップ230で受信した通信パッケージ中に含まれた選択されたハッシュ関数の識別子に基づいて、どちらのハッシュ関数が選択されたハッシュ関数であるかを特定するステップと;(2)ステップ250で読み出されたデータ・パッケージに対し、該選択されたハッシュ関数を用いることによって新規ハッシュ・ダイジェストを算定するステップと;(3)その新規ハッシュ・ダイジェストが受信したハッシュ・ダイジェストと一致するかどうかを判定するステップと;を実施することも含む。
ステップ250に後続するステップ244で、選択されたハッシュ関数の識別子がステップ230で受信した通信パッケージ中に含まれていなかった場合、反復使用モジュール168(図1参照)は、当該データ・パッケージを要求してきたアプリケーションにデータ・パッケージを送信し、この送信されるデータ・パッケージは、ステップ250で読み出されたデータ・パッケージである。ステップ244で、選択されたハッシュ関数の識別子がステップ230で受信した通信パッケージ中に含まれていた場合で、且つ、ステップ250で算定された新規ハッシュ・ダイジェストが、ステップ230で受信した通信パッケージ中に含まれたハッシュ・ダイジェストと一致する場合、反復使用モジュール168(図1参照)は、データ・パッケージを要求してきたアプリケーションにデータ・パッケージを送信し、該送信されるデータ・パッケージは、ステップ250で読み出されたデータ・パッケージである。前述のように、ステップ224で送信されたハッシュ・ダイジェストD1およびD1のインデックスだけに応じて(すなわち、ステップ224で、第一コンピュータ・システム101(図1参照)からネットワーク130(図1参照)を介して第二コンピュータ・システム151(図1参照)にデータ・パッケージを送信することなく)、データ・パッケージが、受信側ハッシュ・テーブル172(図1参照)から読み出されてアプリケーションに送信され、これにより、同じデータ・パッケージが複数回要求されるのに応じてネットワークを介しデータ・パッケージを送信および再送信する既知の技法に比べて、ネットワーク130(図1参照)を介して送信されるデータの量が低減される。ステップ244の後、図2〜図3のプロセスはステップ240で終了する。
ステップ248に戻って、反復使用モジュール168(図1参照)が、ステップ246で受信側ハッシュ・テーブル172(図1参照)から読み出されたハッシュ・ダイジェストはハッシュ・ダイジェストD1と等しくないと判定した場合、ステップ248の「いいえ」分岐が取られ、ステップ252が実施される。
ステップ252で、エラー回復手順が実施される。ステップ252におけるエラー回復手順は、反復使用モジュール168(図1参照)が、ハッシュ・ダイジェストD1と一致するハッシュ・ダイジェストについて、受信側ハッシュ・テーブル172(図1参照)の他のエントリを検索するステップを含む。この検索の結果が、反復使用モジュール168(図1参照)がハッシュ・ダイジェストD1と一致するハッシュ・ダイジェストを含む、受信側ハッシュ・テーブル172(図1参照)中のエントリを見出したことである場合、反復使用モジュール168(図1参照)は、見出されたエントリ中に在るデータ・パッケージを読み出し、読み出されたデータ・パッケージをそのデータ・パッケージを要求してきたアプリケーションに送信し、受信側ハッシュ・テーブル172(図1参照)中で見出されたエントリを、該エントリのインデックスが、ステップ230で受信した通信パッケージ中に含まれていたインデックスと一致するように移動し、これをもってエラー回復手順を終了する。
選択されたハッシュ関数の識別子が、ステップ230で受信した通信パッケージ中に含まれていた場合、読み出だれたデータ・パッケージをアプリケーションに送信する前に、反復使用モジュール168(図1参照)は、随意的に、(1)ステップ230で受信した通信パッケージ中に含まれている選択されたハッシュ関数の識別子に基づいて、どのハッシュ関数が選択されたハッシュ関数であるかを特定するステップと;(2)読み出されたデータ・パッケージに対し、選択されたハッシュ関数を用いることによって新規ハッシュ・ダイジェストを算定するステップと;(3)その新規ハッシュ・ダイジェストが受信したハッシュ・ダイジェストと一致するかどうかを判定するステップと;を実施する。上記に続き、新規ハッシュ・ダイジェストが、受信したハッシュ・ダイジェストと一致する場合、反復使用モジュール168(図1参照)は、読み出されたデータ・パッケージを、そのデータ・パッケージを要求してきたアプリケーションに送信し、次いで、受信側ハッシュ・テーブル172(図1参照)中で見出されたエントリを、該エントリのインデックスが、ステップ230で受信した通信パッケージ中に含まれていたインデックスと一致するように移動し、これをもってエラー回復手順を終了する。
反復使用モジュール168(図1参照)が、ハッシュ・ダイジェストD1と等しいハッシュ・ダイジェストを含むエントリを受信側ハッシュ・テーブル172(図1参照)中に見出すことができない場合、反復使用モジュール168(図1参照)は、第一コンピュータ・システム101(図1参照)に、ハッシュ・ダイジェストD1に相当するデータ・パッケージが受信側ハッシュ・テーブル172(図1参照)中に見出されなかったことを示すメッセージを送信し、これをもってエラー回復手順を完了する。ステップ252でのエラー回復手順が完了した後、図2〜図3のプロセスはステップ240で終了する。
一実施形態において、一つ以上の他のデータ・パッケージを、第一コンピュータ・システム101(図1参照)から第二コンピュータ・システム151(図1参照)に送信する追加の要求(群)を処理するために、それら他のデータ・パッケージの各々に対し、図2〜図3のプロセスがステップ214(図2参照)から繰り返され、ネットワーク利用度がネットワーク利用度閾値を超え続けている間は、重複排除モジュール120(図1参照)は重複排除モードに留まり、コンピュータ・システム101(図1参照)からコンピュータ・システム151(図1参照)への重複排除モジュール120(図1参照)が重複排除モードにあるとの通知の再送信は行われない。別の実施形態では、ステップ202(図2参照)でのネットワーク利用度のチェックの前に、ステップ208におけるCPU利用度のチェック、並びにステップ210、212、および214(図2参照)が実施される。
別の実施形態において、モニタリング・プログラム・コード518(図6参照)を実行するコンピュータ・システム101−1(図6参照)は、ステップ202、204、および208(図2参照)を実施し、重複排除プログラム・コード520(図6参照)を実行するコンピュータ・システム101−1(図6参照)は、ステップ206(図2参照)での送信側ハッシュ・テーブル122(図1参照)の割り当てと、ステップ210、212、214、216、および218(図2参照)と、ステップ220、222、224、226、および228(図3参照)と、を実施する。さらに、この段落で説明した実施形態において、反復使用プログラム・コード568(図6参照)を実行するコンピュータ・システム151−1(図6参照)は、ステップ206(図2参照)での受信側ハッシュ・テーブル172(図1参照)の割り当てと、ステップ230、232、234、236、238、242、244、246、248、250、および252(図3参照)と、を実施する。
ハッシュ・テーブル・スペースを管理するプロセス
図4は、本発明の実施形態による、図1のシステムにおいてハッシュ・テーブル・スペースを管理するプロセスのフローチャートである。一実施形態において、図4のプロセスは、重複排除モードにある間、複数のデータ・パッケージに対し図2〜図3のプロセスが繰り返される際に定期的に実施される。図4のプロセスは、ステップ300で開始される。ステップ302で、モニタリング・モジュール118(図1参照)は、送信側ハッシュ・テーブル122(図1参照)中の利用可能なスペースの量(すなわち利用可能スペース)を測定する。ステップ304に先立って、モニタリング・モジュール118(図1参照)は、利用可能スペース閾値を受信し、該閾値は、利用可能スペースを増やすため送信側ハッシュ・テーブル122(図1参照)中の一つ以上のエントリの削除を求めないで、送信側ハッシュ・テーブル122(図1参照)中の利用可能なスペースの量をどこまで低くできるかを示す。
図4は、本発明の実施形態による、図1のシステムにおいてハッシュ・テーブル・スペースを管理するプロセスのフローチャートである。一実施形態において、図4のプロセスは、重複排除モードにある間、複数のデータ・パッケージに対し図2〜図3のプロセスが繰り返される際に定期的に実施される。図4のプロセスは、ステップ300で開始される。ステップ302で、モニタリング・モジュール118(図1参照)は、送信側ハッシュ・テーブル122(図1参照)中の利用可能なスペースの量(すなわち利用可能スペース)を測定する。ステップ304に先立って、モニタリング・モジュール118(図1参照)は、利用可能スペース閾値を受信し、該閾値は、利用可能スペースを増やすため送信側ハッシュ・テーブル122(図1参照)中の一つ以上のエントリの削除を求めないで、送信側ハッシュ・テーブル122(図1参照)中の利用可能なスペースの量をどこまで低くできるかを示す。
ステップ304で、モニタリング・モジュール118(図1参照)は、ステップ302で測定された利用可能なスペースが、利用可能スペース閾値を下回るかどうかを判定する。モニタリング・モジュール118(図1参照)が、ステップ302で測定された利用可能なスペースが利用可能スペース閾値以上であると判定した場合、ステップ304の「いいえ」分岐が取られ、図4のプロセスは、ステップ302にループ・バックする。モニタリング・モジュール118(図1参照)が、ステップ302で測定された利用可能なスペースが利用可能スペース閾値を下回ると判定した場合、「はい」分岐が取られ、ステップ306が実施される。あるいは、受信側(すなわち、図1のコンピュータ・システム151)が利用可能なスペースをチェックし、利用可能スペースが閾値を下回って低下している場合、受信側が、送信側(すなわち、図1のコンピュータ・システム101)に、受信側ハッシュ・テーブル172のクリーンアップを要求するメッセージを送信する。上記のメッセージが送信された後、ステップ304の「はい」分岐が取られる。
ステップ306で、送信側ハッシュ・テーブル122(図1参照)中の利用可能なスペースが利用可能スペース閾値を下回るのに基づいて、モニタリング・モジュール118(図1参照)は、送信側ハッシュ・テーブル122(図1参照)中の、それぞれの使用カウント(群)が最低数の使用カウントまたはその次に最低数の使用カウントに等しい一つ以上のエントリのインデックス(群)(例えば行番号)を見つけ出す。ステップ306の最初の実施において、モニタリング・モジュール118(図1参照)は、送信側ハッシュ・テーブル122(図1参照)中の他の全ての使用カウントと比べて、最低数の使用カウントと等しい使用カウントを有する、送信側ハッシュ・テーブル122(図1参照)中のエントリ(群)のインデックス(群)を見つけ出す。以下で説明するように、ステップ314の「はい」分岐で始まるループに由来する、ステップ306の後続する実行において、モニタリング・モジュール118(図1参照)は、ステップ306の直近前の実施において用いられた特定の使用カウントに関し、次に最低数の使用カウントに等しい使用カウントを有する、送信側ハッシュ・テーブル122(図1参照)のエントリ(群)のインデックス(群)を見つけ出す。
ステップ308で、モニタリング・モジュール118(図1参照)は、ステップ306で見つけ出したインデックス(群)を(例えばリストとして)受信側コンピュータ・システム151(図1参照)に送信する。ステップ308の後且つステップ310の前に、受信側コンピュータ・システム151(図1参照)は、モニタリング・モジュール118(図1参照)によって送信されたインデックス(群)を受信する。
ステップ310で、モニタリング・モジュール118(図1参照)、または送信側コンピュータ・システム101(図1参照)中で作動している別のソフトウェア・ベースのモジュールが、ステップ306で見つけ出したインデックス(群)に対応する、送信側ハッシュ・テーブル122(図1参照)中の一つ以上のデータ・エントリを削除する。また、ステップ310では、受信側コンピュータ・システム151(図1参照)中で作動しているソフトウェア・ベースのモジュールが、ステップ306で送信され続いて受信側コンピュータ・システム151(図1参照)によって受信されたインデックス(群)に対応する、受信側ハッシュ・テーブル172(図1参照)中の一つ以上のデータ・エントリを削除する。
ステップ312で、モニタリング・モジュール118(図1参照)は、送信側ハッシュ・テーブル122(図1参照)中の利用可能なスペースを再測定する。
ステップ314で、モニタリング・モジュール118(図1参照)は、送信側ハッシュ・テーブル122(図1参照)中の利用可能スペースが未だ利用可能スペース閾値を下回っているかどうかを判定する。ステップ314で、モニタリング・モジュール118(図1参照)が、利用可能スペースは利用可能スペース閾値を下回っていると判定した場合、ステップ314の「はい」分岐が取られ、図4のプロセスはステップ306にループ・バックして、送信側ハッシュ・テーブル122(図1参照)中および受信側ハッシュ・テーブル172(図1参照)中の利用可能スペースを増やすため、削除対象とする他一つ以上の他のハッシュ・テーブル・データ・エントリのインデックス(群)を見つけ出す。他方、ステップ314で、モニタリング・モジュール118(図1参照)が、利用可能スペースが利用可能スペース閾値以上であると判定した場合、ステップ314の「いいえ」分岐が取られ、ステップ316が行われる。図4のプロセスは、ステップ316で終了する。
例えば、送信側ハッシュ・テーブル122(図1参照)が、行1から行10まで、それぞれ、1、2、1、5、2、4、5、2、4、4の使用カウントを有する(すなわち、第一行は1の使用カウントを有し、第二行は2の使用カウントを有し、第三行は1の使用カウントを有し、以下同様に、最大、第十行の4の使用カウントまでを有する)と仮定しよう。この例において、ステップ306の第一の実行は、最低数の使用カウントが1であり第一および第三行がこの最低数の使用カウント1を有するので、送信側ハッシュ・テーブル122(図1参照)中および受信側ハッシュ・テーブル172(図1参照)中の利用可能なスペースを増やすために、行番号1および3を削除対象に決めることである。ステップ310で行番号1および3を削除した後、ステップ314で、利用可能スペースが未だ閾値を下回ると判定された場合、ステップ306の第二の実行は、ステップ306の第一の実行において用いられた使用カウント1の次に最低数の使用カウントが2であり第二、第五、および第八行がこの次に最低数のカウント2を有するので、行番号2、5、および8を削除対象に決めることである。第二、第五、および第八行を削除した後、ステップ314で、利用可能スペースが未だ閾値を下回ると判定された場合、ステップ306の第三の実行は、ステップ306の第二の実行において用いられた使用カウント2の次に最低数のカウントが4であり第六、第九、および第十行がこの次に最低数のカウント4を有するので、行番号6、9、および10を削除対象に決めることである。
図5は、本発明の実施形態による、図2〜図3のプロセスによって管理されるデータ・パッケージを含む、例示的な通信パッケージである。通信パッケージ402は、ヘッダ404およびデータ・パッケージ406を含む。ヘッダ404は、ハッシュ関数識別子408、ハッシュ・ダイジェストD1 410、および他のメタデータ412を含む。通信パッケージ402は、周知の通信パッケージの延長であり、その中のヘッダ404は、ハッシュ関数識別子408およびハッシュ・ダイジェストD1 410に対する追加メタデータを含む。周知のメタデータは、他のメタデータ412中に含まれる。
通信パッケージ402は、ステップ218(図2参照)またはステップ228(図3参照)で送信される通信パッケージの一例である。ハッシュ関数識別子408は、ステップ210(図2参照)またはステップ212(図2参照)で選択されるハッシュ関数の例示的な識別子である。利用可能なハッシュ関数の例については表1を参照されたい。データ・パッケージ406は、ステップ214(図2参照)でハッシュ・ダイジェストD1が算定される対象のデータ・パッケージの一例であり、該パッケージは、ステップ218(図2参照)またはステップ228(図3参照)で第二コンピュータ・システム151(図1参照)に送信され、ステップ244(図3参照)でアプリケーションに送信される。ハッシュ・ダイジェストD1 410は、ステップ214(図2参照)で算定されるハッシュ・ダイジェストの一例であり、該ハッシュ・ダイジェストは、ステップ218(図2参照)またはステップ228(図3参照)で受信側コンピュータ・システム151(図1参照)に送信される。
データ・パッケージ406を含まない、またはデータ・パッケージ406中にデータを含まない通信パッケージ402の変形も、ステップ224(図3参照)で送信される通信パッケージの一例である。ステップ224(図3参照)で通信パッケージ402が送信される場合、ハッシュ・ダイジェストD1 410は、ステップ214(図2参照)で算定されるハッシュ・ダイジェストD1を含み、他のメタデータ412は、ステップ224(図3参照)で送信されるインデックスを含む。
コンピュータ・システム
図6は、本発明の実施形態による、図2〜図3、および図4のプロセスを実装するコンピュータ・システムのブロック図である。システム500は、コンピュータ・ネットワーク130−1を介し相互に通信している、第一コンピュータ・システム101−1および第二コンピュータ・システム151−1を含む。
図6は、本発明の実施形態による、図2〜図3、および図4のプロセスを実装するコンピュータ・システムのブロック図である。システム500は、コンピュータ・ネットワーク130−1を介し相互に通信している、第一コンピュータ・システム101−1および第二コンピュータ・システム151−1を含む。
第一コンピュータ・システム101−1は、一般に、中央処理ユニット(CPU)102−1と、メモリ104−1と、入力/出力(I/O:input/output)インターフェース106−1と、バス108−1と、送信側NIC116−1とを含む。さらに、コンピュータ・システム101−1は、I/Oデバイス110−1およびコンピュータ・データ・ストレージ・ユニット112−1に連結されている。同様に、コンピュータ・システム151−1は、一般に、CPU152−1と、メモリ154−1と、I/Oインターフェース156−1と、バス158−1と、受信側NIC166−1とを含み、さらに、コンピュータ・システム151−1は、I/Oデバイス160−1およびコンピュータ・データ・ストレージ・ユニット162−1に連結されている。
CPU102−1および152−1は;CPU102−1がモニタリング・プログラム・コード518および重複排除プログラム・コード520中に含まれる命令を実行し、CPU152−1が反復使用プログラム・コード568中に含まれる命令を実行して、メモリ104−1中の送信側ハッシュ・テーブル522およびメモリ154−1中の受信側ハッシュ・テーブル572を用い、データ・パッケージを管理する方法を実施することを含め;それぞれ、コンピュータ・システム101−1および151−1の計算および制御機能を実施する。コード518および520中に含まれる命令は、メモリ104−1を介しCPU102−1によって実行される。コード568中に含まれる命令は、メモリ154−1を介しCPU152−1によって実行される。CPU102−1および152−1は、各々単一の処理ユニットを含むこともでき、または一つ以上の場所(例えば、クライアントおよびサーバ上)の一つ以上の処理ユニットにまたがって分散させることもできる。
また、別の実施形態において、コンピュータ・システム101−1は、反復使用プログラム・コード568の機能と一致する機能を持つ反復使用プログラム・コードも含み、コンピュータ・システム151−1は、それぞれ、モニタリング・プログラム・コード518および重複排除プログラム・コード520の機能と一致する機能を持つモニタリング・プログラム・コードおよび重複排除プログラム・コードも含む。
メモリ104−1およびメモリ154−1は、各々任意の周知のコンピュータ可読ストレージ媒体を含んでもよいが、これについては後で説明する。一実施形態において、メモリ104−1およびメモリ154−1のキャッシュ・メモリ・エレメントは、プログラム・コードの命令が実行される間に大容量ストレージからコードを読み出す必要のある回数を低減するために、少なくとも一部のプログラム・コード(例えば、プログラム・コード518およびプログラム・コード520)の一時的なストレージを提供する。さらに、メモリ104−1およびメモリ154−1は、各々、一種類以上のデータ・ストレージを含む、それぞれの単一の物理的場所に所在してもよく、あるいは様々な形で複数の物理システムにまたがって分散されてもよい。さらに、メモリ104−1およびメモリ154−1は、各々、例えば、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)に亘って分散されたデータを含むことができる。
I/Oインターフェース106−1およびI/Oインターフェース156−1は、各々外部リソースとやり取りして情報を交換するための任意のシステムを含む。I/Oデバイス110−1およびI/Oデバイス160−1は、ディスプレイ・デバイス(例えばモニタ)、キーボード、マウス、プリンタ、スピーカ、携帯デバイス、ファクシミリなどを含め、任意の周知の種類の外部デバイスを含む。バス108−1およびバス158−1は、それぞれ、第一コンピュータ・システム101−1および第二コンピュータ・システム151−1中の各コンポーネントの間の通信リンクを提供し、各々のバスは、電気的、光学的、無線などによるものを含め任意の種類の送信リンクを含んでもよい。
また、I/Oインターフェース106−1およびI/Oインターフェース156−1は、コンピュータ・システム101−1およびコンピュータ・システム151−1が、それぞれ、コンピュータ・データ・ストレージ・ユニット112−1およびコンピュータ・データ・ストレージ・ユニット162−1、または別のコンピュータ・データ・ストレージ・ユニット(図示せず)に、情報(例えば、データ、またはプログラム・コード518およびプログラム・コード520などのプログラム命令)を格納し、これらユニットから情報を読み出すことを可能にする。コンピュータ・データ・ストレージ・ユニット112−1およびコンピュータ・データ・ストレージ・ユニット162−1は、各々任意の周知のコンピュータ可読ストレージ媒体を含み得、これについては後で説明する。例えば、コンピュータ・データ・ストレージ・ユニット112−1またはコンピュータ・データ・ストレージ・ユニット162−1は、磁気ディスク・ドライブ(すなわちハード・ディスク・ドライブ)または光ディスク・ドライブ(例えば、CD−ROMディスクを収受するCD−ROMドライブ)などの不揮発性データ・ストレージ・デバイスとすることができる。
送信側NIC116−1は、第一コンピュータ・システム101−1をネットワーク130−1に接続するコンポーネントである。受信側NIC166−1は、第二コンピュータ・システム151−1をネットワーク130−1に接続するコンポーネントである。
メモリ104−1もしくはストレージ・ユニット112−1またはその両方は、データ・パッケージを管理するためメモリ104−1を介してCPU102−1によって実行される命令を含む、コンピュータ・プログラム・コード518およびプログラム・コード520を格納することができる。メモリ154−1もしくはストレージ・ユニット162−1またはその両方は、データ・パッケージを管理するためメモリ154−1を介してCPU152−1によって実行される命令を含む、コンピュータ・プログラム・コード568を格納することができる。図6には、メモリ104−1がプログラム・コード518およびプログラム・コード520を含むとして示されているが、本発明は、メモリ104−1がコード518およびコード520の全てを同時には含まないが、代わりに、コード518の一部だけもしくはコード520の一部だけまたはその両方を同時に含む実施形態をも意図している。図6には、メモリ154−1がプログラム・コード568を含むとして示されているが、本発明は、メモリ154−1がコード568の全てを同時には含まないが、代わりに、コード568の一部だけを同時に含む実施形態をも意図している。
さらに、メモリ104−1およびメモリ154−1には、例えば、それぞれ、CPU102−1上で実行され、コンピュータ・システム101−1内のもしくはこれに接続されたまたはその両方の様々なコンポーネントの制御を提供するオペレーティング・システム、およびCPU152−1上で実行され、コンピュータ・システム151−1内のもしくはこれに接続されたまたはその両方の様々なコンポーネントの制御を提供するオペレーティング・システムなど、図6に示されていない他のシステムを含めることが可能である。
一実施形態において、ストレージ・ユニット112−1、もしくはコンピュータ・システム101−1に連結された一つ以上の他のコンピュータ・データ・ストレージ・ユニット(図示せず)またはこれらの両方によって、送信側ハッシュ・テーブル522が格納される。一実施形態において、ストレージ・ユニット162−1、もしくはコンピュータ・システム151−1に連結された一つ以上の他のコンピュータ・データ・ストレージ・ユニット(図示せず)またはその両方によって、受信側ハッシュ・テーブル572が格納される。
当業者には当然のことながら、本発明は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。したがって、本発明の実施形態の態様は、全体がハードウェアの態様、全体がソフトウェアの態様(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、あるいは、ソフトウェアおよびハードウェアの態様を組み合わせた態様の形を取ることができ、これらは、一般に本明細書では全て「モジュール」と称し得る。さらに、本発明の実施形態は、コンピュータ可読プログラム・コード(例えば、プログラム・コード518および520;例えば、プログラム・コード568)が具現化または格納されている一つ以上のコンピュータ可読媒体(群)(例えば、メモリ104−1もしくはコンピュータ・データ・ストレージ・ユニット112−1またはその両方;例えば、メモリ154−1もしくはコンピュータ・データ・ストレージ・ユニット162−1またはその両方)中に具現化されたコンピュータ・プログラム製品の形を取ることも可能である。
一つ以上のコンピュータ可読媒体(例えば、メモリ104−1およびコンピュータ・データ・ストレージ・ユニット112−1;例えば、メモリ154−1もしくはコンピュータ・データ・ストレージ・ユニット162−1またはその両方)の任意の組み合わせを用いることが可能である。コンピュータ可読媒体は、コンピュータ可読ストレージ媒体またはコンピュータ可読信号媒体とすることができる。一実施形態において、コンピュータ可読ストレージ媒体は、コンピュータ可読ストレージ・デバイスまたはコンピュータ可読ストレージ装置である。コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、または半導体の、システム、装置、デバイス、またはこれらの任意の適切な組み合わせであり得る。コンピュータ可読ストレージ媒体のさらに具体的な例の非包括的リストには、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read−only memory)、消去可能プログラムの可能読み取り専用メモリ(EPROM:erasable programmable read−only memoryまたはフラッシュ・メモリ)、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ(CD−ROM:compact disc read−only memory)、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述の任意の適切な組み合わせが含まれる。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令を実行するためのシステム、装置、もしくはデバイスによって、またはこれらに接続して使用するためのプログラム(例えば、プログラム518および520;例えば、プログラム568)を、包含または格納できる有形の媒体である。但し、用語「コンピュータ可読ストレージ媒体」および「コンピュータ可読ストレージ・デバイス」には伝播媒体は含まれない。
コンピュータ可読信号媒体には、例えばベースバンド中にまたは搬送波の一部として具現化されたコンピュータ可読プログラム・コードを有する、伝播データ信号を含んでもよい。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の適切な組み合わせを含め、さまざまな形態の任意の形を取ることが可能である。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、命令を実行するためのシステム、装置、もしくはデバイスによって、またはこれらに接続して使用するためのプログラムを通信、伝播、または伝送できる任意のコンピュータ可読媒体であり得る。
コンピュータ可読媒体上に具現化されたプログラム・コード(例えば、プログラム・コード518、520、および568)は、以下に限らないが、無線、有線、光ファイバ・ケーブル、電波周波数(RF:radio frequency)など、または前述の任意の適した組み合わせを含め、任意の適切な媒体を用いて送信することができる。
本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コード(例えば、プログラム・コード518、520、および568)は、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および、“C”プログラミング言語または類似のプログラミング言語など従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合わせで記述することができる。プログラム・コードの命令は、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで専ら実行することも可能であって、上記のユーザのコンピュータ、遠隔コンピュータ、およびサーバは、例えば、コンピュータ・システム101−1、コンピュータ・システム151−1、もしくは、図6に含まれたコンピュータ・システム101−1またはコンピュータ・システム151−1のコンポーネントと類似のコンポーネントを有する別のコンピュータ・システム(図示せず)であってよい。上記の後者の場合は、LANまたはWANを含め任意の種類のネットワーク(図示せず)を介して、遠隔コンピュータをユーザのコンピュータに接続することができ、あるいは(例えばインターネット・サービス・プロバイダを使いインターネットを介し)外部のコンピュータへの接続を行うことも可能である。
本明細書において、本発明の実施形態による方法、(例えば図1および図6の)装置(システム)、およびコンピュータ・プログラム製品のフローチャート図(例えば、図2〜図3および図4)もしくはブロック図またはその両方を参照しながら、本発明の態様を説明してきた。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方中のブロックの組み合わせは、コンピュータ・プログラム命令(例えば、プログラム・コード518、520、および568)によって実装することが可能である。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置の一つ以上のハードウェア・プロセッサ(例えば、CPU102−1またはCPU152−1)に提供し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサ(群)を介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能/動作を実装するための手段を生成するようにすることができる。
また、これらのコンピュータ・プログラム命令を、コンピュータ(例えば、コンピュータ・システム101−1またはコンピュータ・システム151−1)、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令することができるコンピュータ可読デバイス(例えば、メモリ104−1またはコンピュータ・データ・ストレージ・ユニット112−1;例えば、メモリ154−1またはコンピュータ・データ・ストレージ・ユニット162−1)に格納し、そのコンピュータ可読デバイスに格納された命令(例えば、プログラム・コード518および520;例えば、プログラム・コード568)が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に特定されている機能/動作を実装する命令群を包含する製造品を作り出せるようにすることができる。
また、コンピュータ・プログラム命令を、コンピュータ(例えば、コンピュータ・システム101−1またはコンピュータ・システム151−1)、他のプログラム可能データ処理装置、または他のデバイスにロードし、そのコンピュータ上、他のプログラム可能装置上、または他のデバイス上で一連のオペレーション・ステップを実行させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上、他のプログラム可能装置上、または他のデバイス上で実行される命令(例えば、プログラム・コード518および520;例えば、プログラム・コード568)が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能/動作を実装するためのプロセスを提供するようにすることも可能である。
本発明の実施形態のどのコンポーネントも、データ・パッケージの管理に関しコンピューティング・インフラストラクチャの展開または統合を提供するサービス・プロバイダによって、展開し、管理し、サービスなどをすることができる。しかして、本発明の実施形態は、コンピュータ・インフラストラクチャをサポートするためのプロセスを開示し、該プロセスは、第一のコンピュータ・システムが、一つ以上のプロセッサ(例えば、CPU102−1またはCPU152−1)を含む第二のコンピュータ・システム(例えば、コンピュータ・システム101−1またはコンピュータ・システム151−1)において、コンピュータ可読コード(例えば、プログラム・コード518および520;例えば、プログラム・コード568)を統合すること、ホストすること、維持すること、および展開することの少なくとも一つに対する少なくとも一つのサポート・サービスを提供するステップを含み、このプロセッサ(群)が、該コード中に包含される命令を実行し、第二コンピュータ・システムにデータ・パッケージを管理させる。
別の実施形態において、本発明は、予約申し込み、広告、もしくは料金ベースまたはこれらの組み合わせに対し、本発明のプロセス・ステップを実施する方法を提供する。すなわち、ソリューション・インテグレータなどのサービス・プロバイダは、データ・パッケージを管理するプロセスの生成、維持、サポートなどを売り出すことができる。この場合、サービス・プロバイダは、一人以上の顧客のために、本発明のプロセス・ステップを実施する、コンピュータ・インフラストラクチャを生成、維持、サポートなどすることができる。サービス・プロバイダは、見返りとして、予約申し込みもしくは自由契約またはその両方の下で顧客(群)から支払いを受けることができ、もしくはサービス・プロバイダは、一人以上の第三者に対するコンテントの広告の販売による支払いを受けることができ、またはこれらの両方の支払いを受けることができる。
図2〜図3および図4中のフローチャート並びに図1および図6中のブロック図は、本発明のさまざまな実施形態による、システム、方法、およびコンピュータ・プログラム製品から可能となる実装のアーキテクチャ、機能性、およびオペレーションを示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、特定の論理機能(群)を実装するための一つ以上の実行可能命令を含む、モジュール、セグメント、またはコード(例えば、プログラム・コード518および520;例えばプログラム・コード568)の部分を表し得る。また、一部の別の実装においては、ブロック中に記載された機能が、図面に記載された順序から外れて行われ得ることに留意すべきである。例えば、連続して示された2つのブロックが、関与する機能性に応じ、実際にはほぼ同時に実施されることがあり、時にはこれらのブロックが逆の順序で実施されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロック群の組み合わせは、特定の機能または動作を実施する特殊用途ハードウェア・ベースのシステム、または特殊用途ハードウェアとコンピュータ命令との組み合わせによって実装可能なことにも留意すべきである。
図1に戻って、一実施形態において、第一コンピュータ・システム101は、I/Oデバイス(図示せず)およびコンピュータ・データ・ストレージ・ユニット(図示せず)に連結されており、これらI/Oデバイスおよびコンピュータ・データ・ストレージ・ユニットは、それぞれ、I/Oデバイス110−1(図6参照)およびコンピュータ・データ・ストレージ・ユニット112−1(図6参照)の機能性を有する。一実施形態において、第二コンピュータ・システム151は、I/Oデバイス(図示せず)およびコンピュータ・データ・ストレージ・ユニット(図示せず)に連結されており、これらI/Oデバイスおよびコンピュータ・データ・ストレージ・ユニットは、それぞれ、I/Oデバイス160−1(図6参照)およびコンピュータ・データ・ストレージ・ユニット162−1(図6参照)の機能性を有する。
CPU102は、データ・パッケージを管理する方法を実施するためのモニタリング・モジュール118および重複排除モジュール120を含むプログラム・コードに含まれる命令を実行することを含め、第一コンピュータ・システム101の計算および制御機能を実施する。一実施形態において、モニタリング・モジュール118および重複排除モジュール120中に含まれる命令は、送信側NIC116中のメモリ(図示せず)を介して送信側NIC116中のプロセッサ(図示せず)によって、または、メモリ104を介してCPU102によって実行される。別の実施形態において、モニタリング・モジュール118および重複排除モジュール120中に含まれる命令は、メモリ104を介してCPU102によって実行される。
CPU152は、データ・パッケージを管理する方法を実施するための反復使用モジュール168を含むプログラム・コードに含まれる命令を実行することを含め、第二コンピュータ・システム151の計算および制御機能を実施する。一実施形態において、反復使用モジュール168中に含まれる命令は、受信側NIC166中のメモリ(図示せず)を介して受信側NIC166中のプロセッサ(図示せず)によって実行される。別の実施形態において、反復使用モジュール168中に含まれる命令は、メモリ154を介してCPU152によって実行される。
CPU102およびCPU152は、各々単一の処理ユニットを含むこともでき、または一つ以上の場所(例えば、クライアントおよびサーバ上)の一つ以上の処理ユニットにまたがって分散させることもできる。
メモリ104およびメモリ154は、各々任意の周知のコンピュータ可読ストレージ媒体を含み得、これについては前述した。前述のように、メモリ104およびメモリ154は、それぞれ、メモリ104−1(図6参照)およびメモリ154−1(図6参照)の特徴と制約とを有する。
一実施形態において、モニタリング・モジュール118の機能性は、モニタリング・プログラム・コード518(図6参照)の機能性に等しく、重複排除モジュール120の機能性は、重複排除プログラム・コード520(図6参照)の機能性に等しく、送信側ハッシュ・テーブル122の機能性は、送信側ハッシュ・テーブル522(図6参照)の機能性に等しく、反復使用モジュール168の機能性は、反復使用プログラム・コード568(図6参照)の機能性に等しく、受信側ハッシュ・テーブル172の機能性は、受信側ハッシュ・テーブル572(図6参照)の機能性に等しい。
別の実施形態において、モニタリング・モジュール118、重複排除モジュール120、および反復使用モジュール168によって実施される、図2〜図3、および図4中のステップは、代わりに、それぞれ、モニタリング・プログラム・コード518(図6参照)を実行するコンピュータ・システム101−1、重複排除プログラム・コード520(図6参照)を実行するコンピュータ・システム101−1、および反復使用プログラム・コード568(図6参照)を実行するコンピュータ・システム151−1によって実施される。
本明細書において、例示を目的として本発明の諸実施形態を説明してきたが、当業者には多くの修改および変更が明らかであろう。したがって、添付の特許請求の範囲は、本発明の真の趣意および範囲に含まれる、全てのかかる修改および変更を含むことが意図されている。
Claims (11)
- データ・パッケージを管理する方法であって、前記方法は、
第一コンピュータが、ネットワークの利用度がネットワーク利用度閾値を上回ることを判定するステップであって、前記ネットワークは前記第一コンピュータと第二コンピュータとを含む、前記判定するステップ、および
前記ネットワークの前記利用度が前記ネットワーク利用度閾値を上回るのに基づいて、前記第一コンピュータは重複排除モードに入り、続いて前記重複排除モードにおいて諸ステップを実施するステップ、
を含み、前記諸ステップには、
前記第一コンピュータが、前記第二コンピュータに、前記第一コンピュータが前記重複排除モードに入ったことの通知を送信するステップと、
前記第一コンピュータが、前記第一コンピュータに含まれる中央処理ユニット(CPU)の利用度がCPU利用度閾値を上回っているかどうかを判定するステップと、
前記CPUの前記利用度が前記CPU利用度閾値を上回る場合は、前記第一コンピュータが第二ハッシュ関数の代わりに第一ハッシュ関数を選択し、前記CPUの前記利用度が前記CPU利用度閾値以下の場合は、前記第一ハッシュ関数の代わりに前記第二ハッシュ関数を選択するステップと、
前記第一コンピュータが、前記選択された第一または第二ハッシュ関数を用いて前記データ・パッケージのハッシュ・ダイジェストを算定するステップと、
前記第一コンピュータが、前記ハッシュ・ダイジェストが前記第一コンピュータに連結された送信側ハッシュ・テーブル中に在るかどうかを判定するステップと、
前記ハッシュ・ダイジェストが前記送信側ハッシュ・テーブル中に在る場合、前記第一コンピュータは前記第二コンピュータに前記データ・パッケージを送信せずに、前記第一コンピュータが、前記第二コンピュータに、前記ハッシュ・ダイジェスト、前記送信側ハッシュ・テーブル中および前記第二コンピュータに連結された受信側ハッシュ・テーブル中の前記ハッシュ・ダイジェスを参照するインデックス、並びに随意的に、前記選択された第一または第二ハッシュ関数の識別子を送信するステップと、
前記ハッシュ・ダイジェストが前記送信側ハッシュ・テーブル中にない場合、前記第一コンピュータは、前記データ・パッケージおよび前記ハッシュ・ダイジェストを前記送信側ハッシュ・テーブルに追加し、前記ハッシュ・ダイジェストに基づいて前記データ・パッケージが完全性を有するかどうかを判定するために、前記データ・パッケージ、前記ハッシュ・ダイジェスト、および前記選択された第一または第二ハッシュ関数の前記識別子を前記第二コンピュータに送信するステップと、
が含まれる、
方法。 - 前記第二コンピュータが、前記第一コンピュータが前記重複排除モードに入ったことの前記通知を受信するステップであって、前記第一コンピュータは前記ハッシュ・ダイジェストが前記送信側ハッシュ・テーブル中に在ると判定し、前記第一コンピュータが、前記第二コンピュータに、前記ハッシュ・ダイジェスト、前記送信側ハッシュ・テーブル中および前記受信側ハッシュ・テーブル中の前記ハッシュ・ダイジェストを参照する前記インデックス、および前記選択された第一または第二ハッシュ関数の識別子を送信し、これに応じて、
前記第一コンピュータが前記重複排除モードに入ったとの前記受信された通知に基づいて、前記第二コンピュータが、前記データ・パッケージは、前記ハッシュ・ダイジェスト、前記インデックス、および前記識別子と一緒に受信されていないと判定するステップと、
前記第二コンピュータが、前記ハッシュ・ダイジェスト、前記インデックス、および前記選択された第一または第二ハッシュ関数の前記識別子を受信するステップと、
前記第二コンピュータが前記データ・パッケージは受信されていないと判定するのに応じ、前記インデックスに基づいて、前記第二コンピュータが、前記受信側ハッシュ・テーブル中の前記ハッシュ・ダイジェストを見出すステップと、
前記第二コンピュータが、前記受信側ハッシュ・テーブル中で見出された前記ハッシュ・ダイジェストが前記受信したハッシュ・ダイジェストと一致することを判定するステップと、
前記見出されたハッシュ・ダイジェストが前記受信したハッシュ・ダイジェストと一致するのに基づいて、前記第二コンピュータが、前記受信側ハッシュ・テーブル中の前記見出されたハッシュ・ダイジェストに関連付けられた前記データ・パッケージを読み出すステップと、
前記受信した識別子に基づいて、前記第二コンピュータが、前記選択された第一または第二ハッシュ関数を特定し、前記読み出されたデータ・パッケージに対し前記選択された第一または第二ハッシュ関数を用いることによって、新規ハッシュ・ダイジェストを算定するステップと、
前記第二コンピュータが、前記新規ハッシュ・ダイジェストが前記受信したハッシュ・ダイジェストと一致するかどうかを判定するステップと、
前記新規ハッシュ・ダイジェストが前記受信したハッシュ・ダイジェストと一致する場合、前記第二コンピュータが、前記読み出されたデータ・パッケージをアプリケーションに送るステップと、
をさらに含む、請求項1に記載の方法。 - 前記第一コンピュータが、前記ハッシュ・ダイジェストが前記送信側ハッシュ・テーブル中にないと判定し、前記方法が、
前記ハッシュ・ダイジェストが前記送信側ハッシュ・テーブル中にないと判定する前記ステップに続いて、前記第一コンピュータが、前記ハッシュ・ダイジェストおよび前記選択された第一または第二ハッシュ関数の前記識別子を、通信パッケージに含まれるメタデータ中に組み込み、前記データ・パッケージを前記通信パッケージに組み込み、前記通信パッケージを前記第二コンピュータに送信するステップと、
前記第一コンピュータが、前記第二コンピュータに、前記通信パッケージを送信する前記ステップに応じ、前記第二コンピュータが、前記通信パッケージを受信することによって、前記ハッシュ・ダイジェスト、前記選択された第一または第二ハッシュ関数の前記識別子、および前記データ・パッケージを受信するステップと、
前記選択された第一または第二ハッシュ関数の前記受信した識別子に基づいて、前記第二コンピュータが、前記受信したデータ・パッケージに対し前記選択された第一または第二ハッシュ関数を用いることによって、新規ハッシュ・ダイジェストを算定するステップと、
前記第二コンピュータが、前記受信したハッシュ・ダイジェストが前記新規ハッシュ・ダイジェストと一致するかどうかを判定し、前記受信したハッシュ・ダイジェストが前記新規ハッシュ・ダイジェストと一致する場合にあっては、前記第二コンピュータは前記データ・パッケージが完全性を有すると判定し、これに応じて、前記第二コンピュータが、前記データ・パッケージおよび前記ハッシュ・ダイジェストを前記受信側ハッシュ・テーブルに追加し、前記データ・パッケージをアプリケーションに送り、前記受信したハッシュ・ダイジェストが前記新規ハッシュ・ダイジェストと一致しない場合にあっては、前記第二コンピュータは前記第一コンピュータに、前記データ・パッケージが完全性を有さないことを通知し、これに応じて、前記第一コンピュータが、前記第二コンピュータに、前記データ・パッケージおよび前記ハッシュ・ダイジェストを再送信するステップと、
をさらに含む、請求項1に記載の方法。 - 前記第二コンピュータが前記受信したハッシュ・ダイジェストは前記新規ハッシュ・ダイジェストと一致すると判定し、前記第二コンピュータが、前記データ・パッケージおよび前記ハッシュ・ダイジェストを前記受信側ハッシュ・テーブルに追加し、前記方法は、
前記第一コンピュータが前記データ・パッケージおよび前記ハッシュ・ダイジェストを前記送信側ハッシュ・テーブルに追加した後に、前記第二コンピュータが、前記データ・パッケージおよび前記ハッシュ・ダイジェストを前記受信側ハッシュ・テーブルに追加した後、前記送信側ハッシュ・テーブルに追加されている前記データ・パッケージに基づいて、前記第一コンピュータが前記第二コンピュータに前記データ・パッケージを送信せずに、前記第一コンピュータは、前記第二コンピュータに、第二ハッシュ・ダイジェスト、および前記送信側ハッシュ・テーブル中および前記受信側ハッシュ・テーブル中の前記ハッシュ・ダイジェストを参照する前記インデックスを送信するステップと、
前記第二コンピュータが、前記第一コンピュータによって送信された前記第二ハッシュ・ダイジェストおよび前記インデックスを受信するステップと、
前記インデックスに基づいて、前記第二コンピュータが、前記受信側ハッシュ・テーブル中の前記ハッシュ・ダイジェストを見出すステップと、
前記第二コンピュータが、前記受信側ハッシュ・テーブル中で見出された前記ハッシュ・ダイジェストが前記受信した第二ハッシュ・ダイジェストと一致すると判定するステップと、
前記見出されたハッシュ・ダイジェストが前記受信した第二ハッシュ・ダイジェストと一致するのに基づいて、前記第二コンピュータが、前記受信側ハッシュ・テーブル中の前記見出されたハッシュ・ダイジェストに関連付けられた前記データ・パッケージを読み出すステップと、
前記選択された第一または第二ハッシュ関数の前記受信した識別子に基づいて、前記第二コンピュータが、前記選択された第一または第二ハッシュ関数を特定し、前記受信側ハッシュ・テーブル中の前記見出されたハッシュ・ダイジェストに関連付けられた前記読み出されたデータ・パッケージに対し、前記選択された第一または第二ハッシュ関数を用いることによって新規ハッシュ・ダイジェストを算定するステップと、
前記第二コンピュータが、前記第二新規ハッシュ・ダイジェストが前記受信した第二ハッシュ・ダイジェストと一致するかどうかを判定するステップと、
前記第二新規ハッシュ・ダイジェストが前記受信した第二ハッシュ・ダイジェストと一致する場合、前記第二コンピュータが、前記読み出されたデータ・パッケージを前記アプリケーションに送るステップと、
をさらに含む、請求項3に記載の方法。 - 前記第一コンピュータが、前記ハッシュ・ダイジェストは前記送信側ハッシュ・テーブル中に在ると判定し、それに応じて、前記第一コンピュータが前記送信側ハッシュ・テーブル中の複数のカウント中の或るカウントを更新し、前記カウントは、前記第一コンピュータが、前記インデックスおよび前記データ・パッケージの前記ハッシュ・ダイジェストを、前記ネットワーク中のいずれかの他のコンピュータに何回送信したかを示すものであって、前記方法は、
前記第一コンピュータが、他のデータ・パッケージに対し前記重複排除モードにおける前記ステップを繰り返すステップと、
前記第一コンピュータが、前記送信側ハッシュ・テーブル中の前記複数のカウントに含まれる他のカウントを更新するステップであって、前記他のカウントは、前記第一コンピュータが、他のインデックスおよび前記データ・パッケージの他のハッシュ・ダイジェストを、前記ネットワーク中のいずれかの他のコンピュータに何回送信したかを示す、前記更新するステップと、
前記重複排除モードの間に、前記第一コンピュータが、前記送信側ハッシュ・テーブル中の利用可能なスペースを測定するステップと、
前記第一コンピュータが、前記送信側ハッシュ・テーブル中の利用可能な前記スペースはスペース閾値を下回ると判定するステップと、
前記送信側ハッシュ・テーブル中の前記利用可能なスペースが前記スペース閾値を下回るのに基づいて、前記第一コンピュータが、前記送信側ハッシュ・テーブル中の前記複数のカウントに含まれる最低数のカウントを参照する前記送信側ハッシュ・テーブル中の一つ以上のインデックスを見つけ出すステップと、
前記第一コンピュータが、前記送信側ハッシュ・テーブル中の利用可能な前記スペースが前記スペース閾値を上回るように、前記一つ以上のインデックスに対応し、前記最低数のカウントを含む、前記送信側ハッシュ・テーブル中の一つ以上のエントリを削除するステップと、
前記第一コンピュータが、前記第二コンピュータに、前記最低数のカウントを参照する前記一つ以上のインデックスを送信するステップと、
をさらに含む、請求項1に記載の方法。 - 前記第二コンピュータが、前記第一コンピュータから、前記最低数のカウントを参照する前記一つ以上のインデックスを受信するステップと、
前記第二コンピュータが、前記受信側ハッシュ・テーブル中の利用可能なスペースが、前記スペース閾値を下回る状態から前記スペース閾値を上回る状態に変わるように、前記一つ以上のインデックスに対応する、前記受信側ハッシュ・テーブル中の前記最低数のカウントを含む一つ以上のエントリを削除するステップと、
をさらに含む、請求項5に記載の方法。 - 中央処理ユニット(CPU)と、
前記CPUに連結されたメモリと、
前記CPUに連結されたコンピュータ可読の有形のストレージ・デバイスであって、前記ストレージ・デバイスは、前記メモリを介して前記CPUに実行され、データ・パッケージを管理する方法を実装する、前記ストレージ・デバイスと、
を含む、第一コンピュータ・システムであって、
請求項1乃至請求項4のいずれかに記載の方法のすべてのステップを実行する前記第一コンピュータ・システム。 - コンピュータ・プログラムであって、
前記コンピュータ・プログラムは、第一コンピュータ・システムの中央処理ユニット(CPU)によって実行されてデータ・パッケージを管理する方法を実装する命令を包含し、前記方法は、
請求項1乃至請求項4のいずれかに記載の方法のすべてのステップを実行するものである前記コンピュータ・プログラム。 - データ・パッケージを管理する方法であって、前記方法は、第二コンピュータが、反復使用モードにおいて、
ネットワークの利用度がネットワーク利用度閾値を上回るとの判定がされることであって、前記ネットワークは第一コンピュータと前記第二コンピュータとを含む、前記判定されることと、
前記第一コンピュータが重複排除モードに入ることと、
前記第一コンピュータによって、前記第一コンピュータが前記重複排除モードに入ったことを前記第二コンピュータに通知することと、
前記第一コンピュータによって、前記第一コンピュータ中に含まれるCPUの利用度がCPU利用度閾値を上回るかどうかを判定することと、
前記CPUの前記利用度が前記CPU利用度閾値を上回る場合に、第二ハッシュ関数の代わりに第一ハッシュ関数を選択することと、
前記CPUの前記利用度が前記CPU利用度閾値以下の場合に、前記第一ハッシュ関数の代わりに前記第二ハッシュ関数を選択することであって、前記第一ハッシュ関数の使用は前記第二ハッシュ関数の使用より前記CPUの利用度が少ない、前記選択することと、
前記選択された第一または第二ハッシュ関数を用いて、前記データ・パッケージのハッシュ・ダイジェストを算定することと、
前記第一コンピュータに連結された送信側ハッシュ・テーブル中に前記ハッシュ・ダイジェストが在ることを判定することと、
前記第二コンピュータに前記データ・パッケージを送信しないで、前記第一コンピュータによって、前記ハッシュ・ダイジェスト、前記送信側ハッシュ・テーブル中および前記第二コンピュータに連結された受信側ハッシュ・テーブル中の前記ハッシュ・ダイジェストを参照するインデックス、並びに前記選択された第一または第二ハッシュ関数の識別子を、前記第二コンピュータに送信することと、
に後続して、諸ステップを実施するステップを含み、
前記反復使用モードにおける前記諸ステップが、
前記第一コンピュータが前記重複排除モードモードに入ったとの前記第一コンピュータによる前記第二コンピュータへの前記通知に基づいて、前記第二コンピュータが、前記データ・パッケージが、前記ハッシュ・ダイジェスト、前記インデックス、および前記識別子と一緒に受信されていないことを判定するステップと、
前記第二コンピュータが、前記ハッシュ・ダイジェスト、前記送信側ハッシュ・テーブル中および前記受信側ハッシュ・テーブル中の前記ハッシュ・ダイジェストを参照する前記インデックス、および前記選択された第一または第二ハッシュ関数の前記識別子を受信するステップと、
前記第二コンピュータが前記データ・パッケージは受信されていないと判定するのに応じ、前記インデックスに基づいて、前記第二コンピュータが、前記受信側ハッシュ・テーブル中の前記ハッシュ・ダイジェストを見出すステップと、
前記第二コンピュータが、前記受信側ハッシュ・テーブル中で見出された前記ハッシュ・ダイジェストが前記受信したハッシュ・ダイジェストと一致することを判定するステップと、
前記見出されたハッシュ・ダイジェスが前記受信したハッシュ・ダイジェストと一致するのに基づいて、前記第二コンピュータが、前記受信側ハッシュ・テーブルから前記見出されたハッシュ・ダイジェストに関連付けられた前記データ・パッケージを読み出すステップと、
前記受信した識別子に基づいて、前記第二コンピュータが、前記選択された第一または第二ハッシュ関数を特定し、前記読み出されたデータ・パッケージに対し前記選択された第一または第二ハッシュ関数を用いることによって、新規ハッシュ・ダイジェストを算定するステップと、
前記第二コンピュータが、前記新規ハッシュ・ダイジェストが前記受信したハッシュ・ダイジェストと一致するかどうかを判定するステップと、
前記新規ハッシュ・ダイジェストが前記受信したハッシュ・ダイジェストと一致する場合、前記第二コンピュータが、前記読み出されたデータ・パッケージをアプリケーションに送るステップと、
を含む、
方法。 - 前記第二コンピュータが、前記反復使用モードにおいて、
前記送信側ハッシュ・テーブル中の複数のカウント中の或るカウントを更新することであって、前記カウントは、前記第一コンピュータが、前記インデックスおよび前記データ・パッケージの前記ハッシュ・ダイジェストを、前記ネットワーク中のいずれかの他のコンピュータに何回送信したかを示す、前記更新することと、
他のデータ・パッケージに対し前記重複排除モードにおける前記諸ステップを繰り返すことと、
前記送信側ハッシュ・テーブル中の前記複数のカウントに含まれる他のカウントを更新することであって、前記他のカウントは、前記第一コンピュータが、他のインデックスおよび前記他のデータ・パッケージの他のハッシュ・ダイジェストを、前記ネットワーク中のいずれかの他のコンピュータに何回送信したかを示す、前記更新することと、
前記重複排除モードの間に、前記送信側ハッシュ・テーブル中の利用可能なスペースを測定することと、
前記送信側ハッシュ・テーブル中の利用可能な前記スペースが、スペース閾値を下回っているのに基づいて、前記送信側ハッシュ・テーブル中の利用可能な前記スペースは前記スペース閾値を下回ると判定することと、
前記送信側ハッシュ・テーブル中の前記複数のカウント中に含まれる最低数のカウントを参照する、前記送信側ハッシュ・テーブルの一つ以上のインデックスを見つけ出すことと、
前記送信側ハッシュ・テーブル中の利用可能な前記スペースが前記スペース閾値を上回るように、前記一つ以上のインデックスに対応する前記最低数のカウントを含む、前記送信側ハッシュ・テーブル中の一つ以上のエントリを削除することと、
前記第二コンピュータに、前記最低数のカウントを参照する前記一つ以上のインデックスを送信することと、
に後続して、さらなる諸ステップを実施するステップをさらに含み、
前記反復使用モードにおける前記さらなる諸ステップが、
前記第二コンピュータが、前記第一コンピュータから、前記最低数のカウントを参照する前記一つ以上のインデックスを受信するステップと、
前記第二コンピュータが、前記受信側ハッシュ・テーブル中の利用可能なスペースが前記スペース閾値を下回る状態から前記スペース閾値を上回る状態に変わるように、前記一つ以上のインデックスに対応する、前記受信側ハッシュ・テーブル中の前記最低数のカウントを含む一つ以上のエントリを削除するステップと、
を含む、
請求項9に記載の方法。 - データ・パッケージを管理する方法であって、前記方法は、
第一コンピュータが、ネットワークの第一利用度がネットワーク利用度閾値以下であることを判定するステップあって、前記ネットワークは前記第一コンピュータと第二コンピュータとを含む、前記判定するステップ、および
前記ネットワークの前記利用度が前記ネットワーク利用度閾値以下であるのに基づいて、前記第一コンピュータが、非重複排除モードにおいて諸ステップを実施するステップ、
を含み、前記諸ステップは、
前記第一コンピュータが、前記第一コンピュータに含まれるCPUの利用度がCPU利用度閾値を上回るかどうかを判定するステップと、
前記第一コンピュータが、前記CPUの前記利用度が前記CPU利用度閾値を上回る場合は、第二ハッシュ関数の代わりに第一ハッシュ関数を選択し、前記CPUの前記利用度が前記CPU利用度閾値以下の場合は、前記第一ハッシュ関数の代わりに前記第二ハッシュ関数を選択するステップと、
前記第一コンピュータが、前記選択された第一または第二ハッシュ関数を用いて前記データ・パッケージのハッシュ・ダイジェストを算定するステップと、
を含み、
前記第一コンピュータが非重複排除モードにおいて前記諸ステップを実施するのに基づいて、前記第一コンピュータは、前記第一コンピュータに連結された送信側ハッシュ・テーブルに前記ハッシュ・ダイジェストを追加し、前記第一コンピュータが前記第二コンピュータに、前記ハッシュ・ダイジェストに基づいて前記データ・パッケージが完全性を有するかどうかを判定するため、前記データ・パッケージ、前記ハッシュ・ダイジェスト、および前記選択された第一または第二ハッシュ関数の識別子を送信し、
前記第一コンピュータが前記第二コンピュータに、前記データ・パッケージ、前記ハッシュ・ダイジェスト、および前記選択された第一または第二ハッシュ関数の前記識別子を送信するステップの結果は、
前記第二コンピュータによって、前記データ・パッケージ、前記ハッシュ・ダイジェスト、および前記選択された第一または第二ハッシュ関数の前記識別子を受信することと、
前記第一または第二ハッシュ関数の前記受信した識別子に基づいて、前記受信したデータ・パッケージに対し前記選択された第一または第二ハッシュ関数を用いることによって、新規ハッシュ・ダイジェストを算定することと、
前記受信したハッシュ・ダイジェストが、前記新規ハッシュ・ダイジェストと一致するかどうかを判定し、前記受信したハッシュ・ダイジェストが前記新規ハッシュ・ダイジェストと一致する場合にあっては、前記第一コンピュータが前記データ・パッケージ、前記ハッシュ・ダイジェスト、および前記識別子を送信するステップの結果は、データ・パッケージが完全性を有することを判定することと、前記データ・パッケージおよび前記ハッシュ・ダイジェストを前記第二コンピュータに連結された受信側ハッシュ・テーブルに追加することと、前記データ・パッケージをアプリケーションに送ることと、前記受信したハッシュ・ダイジェストが前記新規ハッシュ・ダイジェストと一致しない場合にあっては、前記第一コンピュータが前記データ・パッケージ、前記ハッシュ・ダイジェスト、および前記識別子を送信するステップの結果は、前記データ・パッケージが完全性を有さないことを前記第一コンピュータに通知することと、それに応じて、前記第一コンピュータが、前記第二コンピュータに前記データ・パッケージおよび前記ハッシュ・ダイジェストを再送信することと、
を含み、
前記データ・パッケージ、前記ハッシュ・ダイジェスト、および前記選択された第一または第二ハッシュ関数の前記識別子を前記第二コンピュータに送信する前記ステップに続いて、前記第一コンピュータが、ネットワークの第二利用度が前記ネットワーク利用度閾値を上回ることを判定し、
前記ネットワークの前記利用度が前記ネットワーク利用度閾値を上回るのに基づいて、前記第一コンピュータは、前記重複排除モードに入り、続いて前記重複排除モードにおいて諸ステップを実施し、前記諸ステップには、
前記第一コンピュータが前記第二コンピュータに、前記第一コンピュータが前記重複排除モードに入ったことを通知するステップと、
前記第一コンピュータが、前記選択された第一または第二ハッシュ関数を用いて、第二データ・パッケージの第二ハッシュ・ダイジェストを算定するステップと、
前記第一コンピュータが、前記第二データ・パッケージの前記第二ハッシュ・ダイジェストが、前記送信側ハッシュ・テーブルに追加された前記ハッシュ・ダイジェストと一致することを判定するステップと、
前記第二データ・パッケージの前記第二ハッシュ・ダイジェスが前記送信側ハッシュ・テーブルに追加された前記ハッシュ・ダイジェストと一致するのに基づいて、前記第一コンピュータは前記第二コンピュータに前記データ・パッケージを送信せずに、前記第一コンピュータが、前記第二コンピュータに、前記第二ハッシュ・ダイジェスト、前記送信側ハッシュ・テーブルに追加された前記ハッシュ・ダイジェストを参照するインデックス、および前記選択された第一または第二ハッシュ関数の前記識別子を送信するステップと、
が含まれ、
前記第一コンピュータが、前記第二コンピュータに、前記第二ハッシュ・ダイジェスト、前記インデックス、および前記識別子を送信するステップの結果は、
前記第二コンピュータが、前記第二コンピュータが前記第一コンピュータは前記重複排除モードに入ったことを通知されたのに基づいて、前記データ・パッケージは、前記第二ハッシュ・ダイジェスト、前記インデックス、および前記識別子と一緒に受信されていないと判定することと、
前記第二コンピュータが、前記第二ハッシュ・ダイジェスト、前記インデックス、および前記選択された第一または第二ハッシュ関数の前記識別子を受信することと、
前記データ・パッケージが受信されていないとの前記判定に応じて、前記第二コンピュータが、前記インデックスに基づいて前記受信側ハッシュ・テーブルに追加された前記ハッシュ・ダイジェストを見出すことと、
前記受信側ハッシュ・テーブル中で見出された前記ハッシュ・ダイジェストが前記受信した第二ハッシュ・ダイジェストと一致することを判定することと、
前記受信側ハッシュ・テーブル中で見出された前記ハッシュ・ダイジェストが前記受信した第二ハッシュ・ダイジェストと一致するのに基づいて、前記第二コンピュータが、前記受信側ハッシュ・テーブル中で見出された前記ハッシュ・ダイジェストに関連付けられた前記データ・パッケージを読み出すことと、
前記識別子の前記受信に基づいて、前記第二コンピュータが前記選択された第一または第二ハッシュ関数を特定することと、前記第二コンピュータが、前記受信側ハッシュ・テーブル中で見出された前記ハッシュ・ダイジェストに関連付けられた前記読み出されたデータ・パッケージに対し、前記選択された第一または第二ハッシュ関数を用いて第二新規ハッシュ・ダイジェストを算定することと、
前記第二コンピュータが、前記第二新規ハッシュ・ダイジェストが前記受信した第二ハッシュ・ダイジェストと一致するかどうかを判定することと、
前記第二新規ハッシュ・ダイジェストが前記受信した第二ハッシュ・ダイジェストと一致する場合、前記第二コンピュータが、前記読み出されたデータ・パッケージをアプリケーションに送ることと、
が含まれる、
方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/773,680 US8938417B2 (en) | 2013-02-22 | 2013-02-22 | Integrity checking and selective deduplication based on network parameters |
US13/773,680 | 2013-02-22 | ||
PCT/IB2013/060969 WO2014128540A1 (en) | 2013-02-22 | 2013-12-16 | Integrity checking and selective deduplication based on network parameters |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016517551A JP2016517551A (ja) | 2016-06-16 |
JP6282293B2 true JP6282293B2 (ja) | 2018-02-21 |
Family
ID=51389252
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015558563A Active JP6282293B2 (ja) | 2013-02-22 | 2013-12-16 | ネットワーク・パラメータに基づく、完全性点検および選択的な重複排除を実施する方法、コンピュータ・システムおよびコンピュータ・プログラム |
Country Status (6)
Country | Link |
---|---|
US (2) | US8938417B2 (ja) |
JP (1) | JP6282293B2 (ja) |
CN (1) | CN105009508B (ja) |
DE (1) | DE112013006723B4 (ja) |
GB (1) | GB2525346B (ja) |
WO (1) | WO2014128540A1 (ja) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8656160B2 (en) * | 2006-06-21 | 2014-02-18 | Ebay Inc. | Computer system authentication using security indicator |
US8938417B2 (en) | 2013-02-22 | 2015-01-20 | International Business Machines Corporation | Integrity checking and selective deduplication based on network parameters |
US9251160B1 (en) * | 2013-06-27 | 2016-02-02 | Symantec Corporation | Data transfer between dissimilar deduplication systems |
US9442941B1 (en) * | 2014-03-28 | 2016-09-13 | Emc Corporation | Data structure for hash digest metadata component |
US9426136B2 (en) | 2014-03-31 | 2016-08-23 | EXILANT Technologies Private Limited | Increased communication security |
US9602486B2 (en) | 2014-03-31 | 2017-03-21 | EXILANT Technologies Private Limited | Increased communication security |
US9419949B2 (en) | 2014-03-31 | 2016-08-16 | EXILANT Technologies Private Limited | Increased communication security |
US10389714B2 (en) * | 2014-03-31 | 2019-08-20 | Idaax Technologies Private Limited | Increased communication security |
WO2016057670A1 (en) * | 2014-10-07 | 2016-04-14 | Google Inc. | Hardware-assisted memory compression management using page filter and system mmu |
US10255287B2 (en) * | 2015-07-31 | 2019-04-09 | Hiveio Inc. | Method and apparatus for on-disk deduplication metadata for a deduplication file system |
US10044583B2 (en) * | 2015-08-21 | 2018-08-07 | Barefoot Networks, Inc. | Fast detection and identification of lost packets |
US10169358B2 (en) | 2015-10-08 | 2019-01-01 | International Business Machines Corporation | Data deduplication using a small hash table |
CN105530372A (zh) * | 2015-12-03 | 2016-04-27 | 小米科技有限责任公司 | 消息显示方法、装置及终端设备 |
US10152527B1 (en) | 2015-12-28 | 2018-12-11 | EMC IP Holding Company LLC | Increment resynchronization in hash-based replication |
US10255288B2 (en) | 2016-01-12 | 2019-04-09 | International Business Machines Corporation | Distributed data deduplication in a grid of processors |
US10261946B2 (en) | 2016-01-12 | 2019-04-16 | International Business Machines Corporation | Rebalancing distributed metadata |
US10242021B2 (en) | 2016-01-12 | 2019-03-26 | International Business Machines Corporation | Storing data deduplication metadata in a grid of processors |
US10324782B1 (en) | 2016-03-24 | 2019-06-18 | Emc Corporation | Hiccup management in a storage array |
US10101934B1 (en) | 2016-03-24 | 2018-10-16 | Emc Corporation | Memory allocation balancing for storage systems |
US10705907B1 (en) | 2016-03-24 | 2020-07-07 | EMC IP Holding Company LLC | Data protection in a heterogeneous random access storage array |
US9857990B1 (en) | 2016-03-24 | 2018-01-02 | EMC IP Holding Company LLC | Fast startup for modular storage systems |
US10152371B1 (en) | 2016-09-30 | 2018-12-11 | EMC IP Holding Company LLC | End-to-end data protection for distributed storage |
US10255172B1 (en) | 2016-09-30 | 2019-04-09 | EMC IP Holding Company LLC | Controlled testing using code error injection |
US10223008B1 (en) | 2016-09-30 | 2019-03-05 | EMC IP Holding Company LLC | Storage array sizing for compressed applications |
CN106708927B (zh) * | 2016-11-18 | 2021-01-05 | 北京二六三企业通信有限公司 | 文件的去重处理方法和装置 |
KR101968389B1 (ko) * | 2016-11-30 | 2019-04-11 | 성균관대학교산학협력단 | 비트 시퀀스 발생 확률 기반 위상 회전 변조 방법 및 장치, 직교 진폭 위상 회전 변조 방법 및 장치 |
US10915498B2 (en) * | 2017-03-30 | 2021-02-09 | International Business Machines Corporation | Dynamically managing a high speed storage tier of a data storage system |
US20190044809A1 (en) * | 2017-08-30 | 2019-02-07 | Intel Corporation | Technologies for managing a flexible host interface of a network interface controller |
JP2019159812A (ja) | 2018-03-13 | 2019-09-19 | 東芝メモリ株式会社 | 制御装置、制御方法、プログラムおよび通信システム |
US11514001B2 (en) * | 2018-04-17 | 2022-11-29 | EMC IP Holding Company LLC | Concurrent computations operating on same data for CPU cache efficiency |
CN108984662B (zh) * | 2018-06-28 | 2021-02-09 | 杭州复杂美科技有限公司 | 一种区块链数据同步方法 |
US11159327B2 (en) * | 2018-08-06 | 2021-10-26 | Tyson York Winarski | Blockchain augmentation of a material exchange format MXF file |
KR101981013B1 (ko) * | 2018-10-15 | 2019-05-21 | 성균관대학교산학협력단 | 직교 진폭 위상 회전 변조 방법 및 장치 |
US10942654B2 (en) * | 2018-11-01 | 2021-03-09 | EMC IP Holding Company LLC | Hash-based data recovery from remote storage system |
US10789003B1 (en) * | 2019-03-28 | 2020-09-29 | Western Digital Technologies, Inc. | Selective deduplication based on data storage device controller status and media characteristics |
US11093292B2 (en) * | 2019-09-27 | 2021-08-17 | International Business Machines Corporation | Identifying recurring actions in a hybrid integration platform to control resource usage |
US10997072B1 (en) * | 2019-10-16 | 2021-05-04 | EMC IP Holding Company LLC | Host-based acceleration of a content addressable storage system |
CN111200609B (zh) * | 2020-01-02 | 2022-08-12 | 苏州盛科通信股份有限公司 | 一种INT Metadata数据处理方法及装置 |
US11593028B2 (en) * | 2021-03-11 | 2023-02-28 | EMC IP Holding Company LLC | Adaptive turbo toggling |
US11811877B2 (en) | 2021-05-13 | 2023-11-07 | Agora Lab, Inc. | Universal transport framework for heterogeneous data streams |
US20220368765A1 (en) * | 2021-05-13 | 2022-11-17 | Agora Lab, Inc. | Universal Transport Framework For Heterogeneous Data Streams |
CN114244781B (zh) * | 2021-12-20 | 2023-12-22 | 苏州盛科通信股份有限公司 | 一种基于dpdk的报文去重处理方法和装置 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6976168B1 (en) * | 1999-07-23 | 2005-12-13 | Mcafee, Inc. | System and method for adaptive cryptographically synchronized authentication |
KR100949420B1 (ko) | 2002-10-31 | 2010-03-24 | 파나소닉 주식회사 | 통신장치, 통신 시스템 및 알고리즘 선택방법 |
US7995465B2 (en) * | 2007-05-18 | 2011-08-09 | Nvidia Corporation | Intelligent load balancing and failover of network traffic |
US8179792B1 (en) * | 2008-06-06 | 2012-05-15 | Sprint Communications Company L.P. | Packet de-duplication |
US8984628B2 (en) * | 2008-10-21 | 2015-03-17 | Lookout, Inc. | System and method for adverse mobile application identification |
US9009429B2 (en) * | 2009-03-30 | 2015-04-14 | Hewlett-Packard Development Company, L.P. | Deduplication of data stored in a copy volume |
US8050251B2 (en) | 2009-04-10 | 2011-11-01 | Barracuda Networks, Inc. | VPN optimization by defragmentation and deduplication apparatus and method |
US8539199B2 (en) * | 2010-03-12 | 2013-09-17 | Lsi Corporation | Hash processing in a network communications processor architecture |
JP2011018491A (ja) * | 2009-07-08 | 2011-01-27 | Canon Inc | 電子放出素子とこれを用いた電子線装置、画像表示装置 |
US8750370B2 (en) | 2009-09-04 | 2014-06-10 | Brocade Communications Systems, Inc. | Congestion-adaptive compression |
JP5595701B2 (ja) | 2009-09-16 | 2014-09-24 | 株式会社日立製作所 | ファイル管理方法及びストレージシステム |
US8548012B2 (en) | 2010-01-15 | 2013-10-01 | Alcatel Lucent | Method and apparatus for reducing redundant traffic in communication networks |
US8340039B2 (en) | 2010-05-04 | 2012-12-25 | International Business Machines Corporation | Deduplicated data processing congestion control |
US9678688B2 (en) | 2010-07-16 | 2017-06-13 | EMC IP Holding Company LLC | System and method for data deduplication for disk storage subsystems |
US8799226B2 (en) * | 2010-09-28 | 2014-08-05 | International Business Machines Corporation | Prioritization of data items for backup in a computing environment |
US8462781B2 (en) * | 2011-04-06 | 2013-06-11 | Anue Systems, Inc. | Systems and methods for in-line removal of duplicate network packets |
US8938417B2 (en) | 2013-02-22 | 2015-01-20 | International Business Machines Corporation | Integrity checking and selective deduplication based on network parameters |
-
2013
- 2013-02-22 US US13/773,680 patent/US8938417B2/en active Active
- 2013-12-16 WO PCT/IB2013/060969 patent/WO2014128540A1/en active Application Filing
- 2013-12-16 DE DE112013006723.4T patent/DE112013006723B4/de active Active
- 2013-12-16 GB GB1513161.8A patent/GB2525346B/en active Active
- 2013-12-16 JP JP2015558563A patent/JP6282293B2/ja active Active
- 2013-12-16 CN CN201380073497.3A patent/CN105009508B/zh active Active
-
2015
- 2015-01-05 US US14/589,264 patent/US9158806B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2016517551A (ja) | 2016-06-16 |
DE112013006723B4 (de) | 2016-10-13 |
CN105009508A (zh) | 2015-10-28 |
GB2525346A (en) | 2015-10-21 |
GB201513161D0 (en) | 2015-09-09 |
GB2525346B (en) | 2017-02-08 |
WO2014128540A1 (en) | 2014-08-28 |
DE112013006723T5 (de) | 2015-11-12 |
US9158806B2 (en) | 2015-10-13 |
US8938417B2 (en) | 2015-01-20 |
US20140244598A1 (en) | 2014-08-28 |
US20150154244A1 (en) | 2015-06-04 |
CN105009508B (zh) | 2017-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6282293B2 (ja) | ネットワーク・パラメータに基づく、完全性点検および選択的な重複排除を実施する方法、コンピュータ・システムおよびコンピュータ・プログラム | |
US7702917B2 (en) | Data transfer using hyper-text transfer protocol (HTTP) query strings | |
KR101781339B1 (ko) | 클라이언트를 갱신하기 위한 방법 및 디바이스 | |
US10862672B2 (en) | Witness blocks in blockchain applications | |
US9641598B1 (en) | Contextually unique identifier generation service | |
CN1458590A (zh) | 用网络栈同步和上载已卸载网络栈连接的方法 | |
KR20170031618A (ko) | 콘텐트 중심 네트워크에서의 네트워크 명명된 단편들 | |
WO2019005239A1 (en) | HYBRID DATA STORAGE SYSTEM WITH PRIVATE STORAGE CLOUD AND PUBLIC STORAGE CLOUD | |
CN106453474A (zh) | 在不稳定网络环境中的大文件的网络传输 | |
US9053114B1 (en) | Extensible data path | |
US10203986B2 (en) | Distributed storage data repair air via partial data rebuild within an execution path | |
US20140156687A1 (en) | Identifying duplicate files | |
CN110263001A (zh) | 文件管理方法、装置、系统、设备及计算机可读存储介质 | |
WO2019005240A1 (en) | HYBRID DATA STORAGE SYSTEM WITH PRIVATE STORAGE CLOUD AND PUBLIC STORAGE CLOUD | |
WO2023091903A1 (en) | Scalable media file transfer | |
US20200336432A1 (en) | Methods for dynamically controlling transmission control protocol push functionality and devices thereof | |
WO2018000647A1 (zh) | 文件下载方法、装置、终端及服务器 | |
CN116743785A (zh) | 基于雾计算的云网数据存储方法、装置、设备及介质 | |
CN104601707A (zh) | 网盘数据处理方法及装置 | |
US20220141279A1 (en) | Client-side measurement of computer network conditions | |
CN110912969B (zh) | 一种文件高速传输源节点、目的节点装置及系统 | |
WO2005006123A2 (en) | Sparse and non-sparse data management method and system | |
Shimano et al. | An information propagation scheme for an autonomous distributed storage system in iSCSI environment | |
US10892990B1 (en) | Systems and methods for transmitting data to a remote storage device | |
KR102337119B1 (ko) | 컨텐츠 중심 네트워크에서 노드의 통신 방법 및 그 노드 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20161129 |
|
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: 20180105 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180123 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6282293 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |