JPWO2016035194A1 - 情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラム - Google Patents

情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラム Download PDF

Info

Publication number
JPWO2016035194A1
JPWO2016035194A1 JP2016546266A JP2016546266A JPWO2016035194A1 JP WO2016035194 A1 JPWO2016035194 A1 JP WO2016035194A1 JP 2016546266 A JP2016546266 A JP 2016546266A JP 2016546266 A JP2016546266 A JP 2016546266A JP WO2016035194 A1 JPWO2016035194 A1 JP WO2016035194A1
Authority
JP
Japan
Prior art keywords
data
transmission
reception
unit
storage unit
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.)
Granted
Application number
JP2016546266A
Other languages
English (en)
Other versions
JP6304385B2 (ja
Inventor
真一 佐沢
真一 佐沢
裕亮 亀山
裕亮 亀山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2016035194A1 publication Critical patent/JPWO2016035194A1/ja
Application granted granted Critical
Publication of JP6304385B2 publication Critical patent/JP6304385B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

重複データの除去において、送信側装置の処理負荷を低減する。受信側装置は、受信実績のある第1のデータを記憶する第1の記憶部と、送信側装置からの受信データの少なくとも一部と重複するデータが第1の記憶部に記憶されているかを判定する重複検出部と、重複するデータが第1の記憶部に記憶されている場合に、送信側装置に第1のデータの重複受信の予測情報を通知する通知部とを備え、送信側装置は、送信実績のある第1のデータを記憶する第2の記憶部と、受信側装置から予測情報を受信している場合に、重複受信の予測情報に基づいて送信予定データと第1のデータの一部とを比較し、送信予定データに合致する第2の記憶部内の第1のデータの一部の有無を判定する判定部と、送信予定データに合致する第1のデータの一部が第2の記憶部内にある場合に、該送信予定データの概要情報を送信する送信部と、を備える、情報処理システムである。

Description

本発明は、情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラムに関する。
通信の高速化を実現する方法の一つに、転送データ量を削減する方法がある。転送データ量を削減する方法は、使用帯域が減るため、低帯域の回線に対して有効である。転送データ量を削減する方法として、例えば、重複して送信されるデータを除去する方法、送信データを圧縮する方法がある。
重複して送信されるデータを除去する方法では、例えば、送信側ネットワーク及び受信側ネットワークにそれぞれ送信側装置と受信側装置とが配置されるシステム構成がとられることが多い。送信側装置及び受信側装置は予め処理実績のあるデータをキャッシュしておき、送信側装置は、キャッシュされるデータを用いて送信データの重複の確認を行い、送信データが重複している場合には、送信データの代わりに送信データの概要情報を送信する。受信側装置は、データの概要情報を受信すると、キャッシュから該当のデータを読出し、宛先に転送する。送信データのサイズに比べて送信データの概要情報のサイズは小さいため、転送データ量を削減することができ、送信側装置と受信側装置との間の使用帯域を抑えることができる。
特開2009−21906号公報 特開2001−331661号公報 特開2000−357121号公報
しかしながら、送信側装置で行われる送信データの重複判定処理は、負荷が大きく、オーバヘッドとなる。送信データの重複がある場合には、送信データの重複判定処理による負荷や遅延は、送信データの重複判定処理のオーバヘッドはデータ削減による使用帯域の削減効果によって相殺される。しかしながら、送信データの重複がない場合には、送信データの重複判定処理は無視できないオーバヘッドとなる。
本発明の一態様は、重複データの除去において、送信側装置の処理負荷を低減することが可能な情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラムを提供することを目的とする。
本発明の態様の一つは、送信側装置と受信側装置とを含む情報処理システムである。受信側装置は、受信実績のある第1のデータを記憶する第1の記憶部と、送信側装置からデータを受信する受信部と、受信データの少なくとも一部と重複するデータが第1の記憶部に記憶されているか否かを判定する重複検出部と、受信データの少なくとも一部と重複するデータが第1の記憶部に記憶されている場合に、送信側装置に、第1のデータの重複受信の予測情報を通知する通知部と、を備える。送信側装置は、送信実績のある第1のデータを記憶する第2の記憶部と、受信側装置から第1のデータの重複受信の予測情報を受信している場合に、該重複受信の予測情報に基づいて送信予定データと第1のデータの一部とを比較し、送信予定データに合致する第2の記憶部内の第1のデータの一部の有無を判定する判定部と、送信予定データに合致する第1のデータの一部が第2の記憶部内にある場合に、該送信予定データの代わりに送信予定データの概要情報を送信する送信部と、を備える。
開示の情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラムによれば、重複データの除去において、送信側装置の処理負荷を低減することができる。
データ重複除去システムの一例を示す図である。 第1実施形態のデータ重複除去システムの構成の一例を示す図である。 第1実施形態の処理の一例を示す図である。 送信側装置のハードウェア構成の一例を示す図である。 送信側装置の機能構成の一例を示す図である。 送信側キャッシュ内のデータ構造の一例を示す図である。 受信側装置の機能構成の一例を示す図である。 受信側キャッシュのデータ構造の一例を示す図である。 重複予測情報の一例を示す図である。 送信側装置の処理のフローチャートの一例である。 受信側装置の処理のフローチャートの一例である。 具体例における処理対象データの設定を示す図である。 具体例におけるシーケンス図の一例である。 具体例におけるシーケンス図の一例である。 第1実施形態に係るデータ重複除去システムの効果を示す図である。
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
<データ重複除去の一例>
図1は、データ重複除去システムの一例を示す図である。データ重複除去システムP100は、送信側装置P1と受信側装置P2とを含む。送信側装置P1及び受信側装置P2は、それぞれ、例えば、ネットワークの境界に位置する装置である。
送信側装置P1は、例えば、アプリケーションからデータを受信すると、チャンクと呼ばれる1〜4KBの可変長ブロックに該データを分割する。送信側装置P1は、各チャンクについてSHA1(Secure Hash Algorithm)の計算をしてハッシュ値を取得し、該ハッシュ値をキーとして、キャッシュ内のハッシュ探索を行う。送信側装置P1のキャッシュには、送信実績のあるデータのチャンクとSHA1の計算結果とが保持されている。
ハッシュ探索の結果、SHA1の計算結果が一致するチャンクが検出されない場合には、すなわち、チャンクが重複していない場合には、送信側装置P1は、該チャンクをキャッシュに保存し、実データを送信する。ハッシュ探索の結果、SHA1の計算結果が一致するチャンクが検出された場合には、すなわち、チャンクが重複している場合には、送信側装置P1は、該チャンクのIDデータを送信する。チャンクのIDデータには、例えば、アプリケーションIDと、該チャンクの位置情報と、該チャンクのサイズとが含まれている。
受信側装置P2は、実データを受信した場合には、該実データを宛先に転送するとともに、キャッシュに該実データを保存する。受信側装置P2は、チャンクのIDを受信した場合には、キャッシュから該当する実データを読み出してデータを復元し、宛先に送信する。
図1に示されるデータ重複除去システムP100では、送信側装置がチャンク分割、SHA1計算、ハッシュ探索の処理を行い、チャンクが重複している場合には、該チャンクのIDデータを送信することで、データ転送量を削減する。しかしながら、チャンク分割、SHA1計算、ハッシュ探索の処理負荷が大きいので、例えば、送信側装置P1が端末装置等の比較的性能の低い装置である場合には、データ重複除去の処理が通信の高速化に寄与しない可能性がある。
<第1実施形態>
図2は、第1実施形態のデータ重複除去システム100の構成の一例を示す図である。例えば、データ重複除去システム100は、重複除去クライアント1と、重複除去サーバ2とを含む。重複除去クライアント1は、例えば、スマートフォン1A、PC(Personal Computer)1B、等の端末装置である。また、重複除去クライアント1は、サーバ等の専用のコンピュータであってもよい。重複除去クライアント1は、送信側装置1ともいう。重複除去サーバ2は、受信側装置2ともいう。
第1実施形態では、受信側装置2は、送信側装置1からの受信実績のあるデータをキャッシュしており、該キャッシュを用いて受信データの重複の開始を検出する。受信側装置2は、受信データの重複の開始を検出すると、送信側装置1に重複予測情報を通知する。送信側装置1は、受信側装置2から重複予測情報を受信すると、動作モードを切り替えて、送信予定データに対して、該重複予測情報に基づいて、比較的負荷の軽いメモリ比較による重複判定処理を行って、データを送信する。
図3は、第1実施形態の処理の一例を示す図である。送信側装置1は、通常モードと重複予測モードとの2つの動作モードを有する。通常モードでは、送信側装置1は、送信予定データをキャッシュに格納し、実データを送信する。
送信側装置1が受信側装置2から重複予測情報の通知を受けると、動作モードが重複予測モードに切り替わる。重複予測モードでは、送信側装置1は、重複予測情報に基づいてキャッシュデータから部分データをプリフェッチし、送信予定データとメモリの比較を行って、重複の有無を判定する。部分データと送信予定データとが不一致の場合には、送信予定データは重複しているデータではないので、送信側装置1は、実データを送信する。部分データと送信予定データとが一致する場合には、送信予定データが重複しているので、送信側装置1は、送信予定データのインデックスを送信する。
受信側装置2は、実データを受信した場合には、実データをチャンクに分割し、各チャンクについてSHA1を計算し、SHA1の計算結果をキーとしてキャッシュを探索する。キャッシュ内に重複するチャンクが検出された場合には、受信側装置2は、重複受信の開始を検出し、重複予測情報を生成して送信側装置1に通知する。
受信側装置2は、インデックスを受信した場合には、インデックスに示されるチャンクをキャッシュから読み出し、データを復元して、宛先の装置に送信する。
第1実施形態では、受信側装置2が、チャンク分割、SHA1計算、ハッシュ探索等の負荷の高い処理を行い、送信側装置1は、プリフェッチされたデータと送信予定データとの比較という比較的負荷の軽い処理を行う。これによって、送信側装置1に係る処理負荷を軽減することができる。
<装置構成>
<送信側装置>
図4は、送信側装置1のハードウェア構成の一例を示す図である。送信側装置1は、例えば、携帯電話端末、スマートフォン、タブレット端末、汎用又は専用のコンピュータである。
送信側装置1は、CPU(Central Processing Unit)101、主記憶装置102、入力装置103、出力装置104、補助記憶装置105、ネットワークインタフェース107を備える。また、これらはバス109により互いに接続されている。
入力装置103は、例えば、操作ボタン、タッチパネル、キーボード、キーパッド等である。入力装置103から入力されたデータは、CPU 101に出力される。入力装置は、例えば、マイクロフォンのような音声入力装置を含んでもよい。
補助記憶装置105は、様々なプログラムや、各プログラムの実行に際してCPU 101が使用するデータを格納する。補助記憶装置105は、例えば、EPROM(Erasable Programmable ROM)、フラッシュメモリ、又はハードディスクドライブ(Hard Disk Drive)等の不揮発性のメモリである。補助記憶装置105は、例えば、オペレーティングシステム(OS)、重複除去クライアントプログラム、その他様々なアプリケーションプログラムを保持する。重複除去クライアントプログラムは、送信側装置1を重複除去クライアントとして動作させるためのプログラムである。
主記憶装置102は、CPU 101に、補助記憶装置105に格納されているプログラムをロードする記憶領域および作業領域を提供したり、バッファとして用いられたりする。主記憶装置102は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)のような半導体メモリを含む。
CPU 101は、補助記憶装置105に保持されたOSや様々なアプリケーションプログラムを主記憶装置102にロードして実行することによって、様々な処理を実行する。CPU 101は、1つに限られず、複数備えられてもよい。
ネットワークインタフェース107は、ネットワークとの情報の入出力を行うインタフェースである。ネットワークインタフェース107は、有線のネットワークと接続するインタフェース、無線のネットワークと接続するインタフェースを含む。ネットワークインタフェース107は、例えば、NIC(Network Interface Card)、無線LAN(Local Area Network)カード等である。ネットワークインタフェース107で受信されたデータ等は、CPU 101に出力される。
出力装置104は、CPU 101の処理の結果を出力する。出力装置104は、スピーカ等の音声出力装置、ディスプレイ、プリンタを含む。
なお、図4に示される送信側装置1のハードウェア構成は、一例であり、上記に限られず、実施の形態に応じて適宜構成要素の省略や置換、追加が可能である。例えば、送信側装置1は、可搬記録媒体駆動装置を備え、可搬記録媒体に記録されたプログラムを実行してもよい。可搬記録媒体は、例えば、SDカード、miniSDカード、microSDカード、USB(Universal Serial Bus)フラッシュメモリ、CD(Compact Disc)、DVD(Digital Versatile Disc)、Blu−ray(登録商標) Disc、又はフラッシュメモリカードのような記録媒体である。
また、送信側装置1がサーバである場合には、例えば、送信側装置1は、入力装置103、出力装置104を備えていなくてもよい。
図5は、送信側装置1の機能構成の一例を示す図である。送信側装置1は、機能構成として、データ受信部11、重複判定部12、キャッシュ保存部13、データ送信部14、重複予測受信部15を備える。これらの機能構成は、CPU 101が補助記憶装置105に格納されている重複除去クライアントプログラムを実行することによって実現される機能構成である。また、重複除去クライアントプログラムが実行されることによって、補助記憶装置105の記憶領域に送信側キャッシュ16用の領域が確保される。また、主記憶装置102の記憶領域には重複予測テーブル17を格納する領域が確保される。重複除去クライアントプログラムは、例えば、アプリケーション層のプログラムである。
データ受信部11は、データの送信元となるアプリケーションからデータを受信し、該アプリケーションのセッションを終端する。例えば、データの送信元であるアプリケーションがTCP(Transmission Control Protocol)で通信を行うアプリケーションである場合には、データ受信部11は、データの送信元から接続要求を受信すると、該データの送信元とTCPセッションを確立する。データ受信部11は、データの送信元と、IPアドレスとポート番号との組み合わせであるソケットを用いて通信を行う。そのため、データ受信部11は、ソケットからアプリケーションを識別可能である。
なお、データの送信元となるアプリケーションを実行する実体は、送信側装置1自身であってもよいし、他の装置であってもよい。例えば、送信側装置1がサーバである場合には、データの送信元となるアプリケーションを実行する実体は他の装置であり、データ受信部11は、ネットワークインタフェース107を通じて、該他の装置からデータを受信する。例えば、送信側装置1が端末装置である場合には、データの送信元となるアプリケーションを実行する実体は送信側装置1自身となる。第1実施形態では、以降、データの送信元となるアプリケーションを実行する実体を特定することなく、単に、「送信元」と称する。
データ受信部11は、動作モードが通常モードの場合には、送信予定データをデータ送信部14に出力する。送信予定データは送信元のアプリケーションから受信したデータのことである。データ受信部11は、動作モードが重複予測モードの場合には、送信予定データを重複判定部12に出力する。
データ受信部11は、例えば、所定サイズの処理バッファを保持している。送信元のアプリケーションから受信したデータは、送信側装置1においては該処理バッファのサイズの単位で処理される。処理バッファのサイズは、例えば、50〜100KBである。ただし、処理バッファのサイズはこれに限定されない。すなわち、送信予定データは、処理バッファと同じ又はそれ未満のサイズのデータブロックである。
また、データ受信部11は、送信元のアプリケーションとの通信開始からの送信予定データのオフセットを監視する。送信元のアプリケーションとの通信開始からの送信予定データのオフセットは、送信予定データの先頭の位置を示す値である。例えば、オフセットは、0から始まり、データのサイズ1バイトごとに1増加する値とする。例えば、通信開始後、最初の送信予定データのサイズが80KBである場合には、該最初の送信予定データのオフセットは0、次の送信予定データのオフセットは80000となる。
重複判定部12には、動作モードが重複予測モードである場合に、データ受信部11から送信予定データが入力される。なお、動作モードの初期値は、通常モードである。重複判定部12は、送信予定データのアプリケーションの重複予測テーブル17を参照して、重複予測テーブル17に示されるアプリケーションの送信側キャッシュ16から該当の部分データをプリフェッチして送信予定データとの比較を行う。なお、送信予定データのアプリケーションと重複予測テーブル17に示されるアプリケーションとは、一致する場合もあるし、一致しない場合もある。部分データの取得方法の詳細については、後述される。
該部分データと送信予定データとが不一致の場合には、重複判定部12は、送信予定データが重複のない新規データであることを判定する。この場合、重複判定部12は、送信予定データ自体を、キャッシュ保存部13と、データ送信部14とに出力する。
部分データと送信予定データとが一致する場合には、重複判定部12は、送信予定データが重複して送信されるデータであることを判定する。送信予定データと一致する部分データを重複データと称する。重複データが存在する場合には、重複判定部12は、送信予定データのインデックスをデータ送信部14に出力する。重複判定部12は、「判定部」の一例である。
送信予定データのインデックスには、例えば、インデックスであることを示すフラグ、送信予定データのアプリケーションの識別情報、通信開始からの送信予定データのオフセット、重複データのアプリケーションの識別情報、重複データのアプリケーションの送信側キャッシュ16内における重複データのオフセット、送信予定データのサイズが含まれる。また、重複データのオフセットは、該当アプリケーションの送信側キャッシュ16から取得される。送信予定データのインデックスは、「送信予定データの概要情報」の一例である。
キャッシュ保存部13は、送信予定データが新規データである場合に重複判定部12から該送信予定データの入力を受ける。キャッシュ保存部13は、該送信予定データを、該送信予定データのアプリケーションの送信側キャッシュ16内に格納されるデータの最後尾に追加する。
データ送信部14は、例えば、データの送信元からの接続要求を受信側装置2に転送するとともに、受信側装置2との間にTCPのセッションを確立する。データ送信部14は、該セッションを用いて入力されたデータを受信側装置2に送信する。
例えば、重複判定部12から送信予定データ自体の入力を受けた場合には、データ送信部14は、送信予定データを受信側装置2に送信する。例えば、重複判定部12から送信予定データのインデックスの入力を受けた場合には、データ送信部14は、送信予定データのインデックスを受信側装置2に送信する。なお、データ送信部14から送信されるデータには、アプリケーションの識別情報と、データの本来の宛先の情報、すなわち、ソケットの情報が添付されている。データ送信部14は、「送信部」の一例である。
重複予測受信部15は、受信側装置2から重複予測情報を受信する。重複予測受信部15は、データ送信部14と同じセッションを利用する。重複予測受信部15は、受信した重複予測情報を該当アプリケーションの重複予測テーブル17に反映させる。
重複予測テーブル17は、例えば、主記憶装置102の記憶領域に格納される。重複予測テーブル17に含まれる情報は、重複予測情報に含まれる情報と同じである。重複予測テーブル17は、重複予測受信部15によって、新たに受信された重複予測情報で上書きされる。重複予測テーブル17及び重複予測情報の詳細については、後述される。
図6は、送信側キャッシュ16内のデータ構造の一例を示す図である。送信側キャッシュ16は、アプリケーションごとに補助記憶装置105内の記憶領域に作成される。例えば、キャッシュ保存部13は、新規アプリケーションの送信予定データの入力を受けると、補助記憶装置105の送信側キャッシュ16用に確保された記憶領域に該新規アプリケーションの送信側キャッシュ16を作成する。
送信側キャッシュ16は、送信実績のあるデータについて、送信オフセットと送信データとを含む。送信データは、データ受信部11の処理バッファのサイズ又はそれ未満のサイズのデータブロックである。送信オフセットは、データの該当アプリケーションの送信側キャッシュ16内におけるデータブロックの先頭位置である。例えば、オフセットは、0から始まり、該当アプリケーションの送信側キャッシュ16内に既に80KBのデータが格納されている場合には、新たに格納されるデータのオフセットは、80000となる。送信予定データのインデックスに含まれる重複データのオフセットは、送信側キャッシュ16内の該当データの送信オフセットである。送信側キャッシュ16は、「第2の記憶部」の一例である。
<受信側装置>
受信側装置2は、例えば、専用のサーバである。受信側装置2のハードウェア構成は、送信側装置1のハードウェア構成と類似しており、図示を省略する。すなわち、受信側装置2は、CPU、主記憶装置、補助記憶装置、ネットワークインタフェースを備える。また、受信側装置2は、入力装置、出力装置、可搬記録媒体駆動装置等を備えてもよい。
受信側装置2の補助記憶装置には、OS、重複除去サーバプログラム、その他アプリケーション等が格納されている。重複除去サーバプログラムは、受信側装置2を重複除去サーバとして動作させるためのプログラムである。
図7は、受信側装置2の機能構成の一例を示す図である。受信側装置2は、機能構成として、データ受信部21、チャンク分割部22A、SHA1計算部22B、ハッシュ探索部22C、キャッシュ読出部23、キャッシュ保存部24、テーブル管理部25、データ送信部26、重複予測送信部27を備える。これらの機能構成は、例えば、CPUが補助記憶装置に格納されている重複除去サーバプログラムを実行することによって実現される機能構成である。また、重複除去サーバプログラムが実行されることによって、補助記憶装置の記憶領域に受信側キャッシュ28用の領域が確保される。また、主記憶装置の記憶領域には重複予測テーブルを格納するための領域が確保される。なお、重複除去サーバプログラムは、例えば、アプリケーション層のプログラムである。
データ受信部21は、例えば、送信側装置1から接続要求を受信すると、TCPセッションを確立し、該TCPセッションを通じてデータを受信する。受信データが実データである場合には、データ受信部21は、チャンク分割部22Aに受信データを出力する。受信データがインデックスである場合には、データ受信部21は、キャッシュ読出部23に受信データを出力する。例えば、インデックス内にはインデックスであることを示すフラグが含まれており、データ受信部21は、該フラグによって受信データがインデックスであることを判定する。
なお、データ受信部21は、所定サイズの処理バッファを保持しており、受信データは、受信側装置2においては該処理バッファのサイズの単位で処理される。処理バッファのサイズは、例えば、50〜100KBである。ただし、処理バッファのサイズはこれに限定されない。また、データ受信部21は、受信データのアプリケーションごとに、受信開始からのデータのオフセットを監視している。データ受信部21は、「受信部」の一例である。
チャンク分割部22Aは、受信データをチャンクに分割する。チャンクのサイズは、所定のアルゴリズムによって決定される。チャンク分割部22Aは、受信データから作成された複数のチャンクをSHA1算出部22Bに出力する。チャンク分割部22Aは、「分割部」の一例である。
SHA1算出部22Bは、受信データから作成された複数のチャンクそれぞれについてSHA1の計算を行う。SHA1算出部22Bは、各チャンクのSAH1の計算結果をハッシュ探索部22Cに出力する。SHA1算出部22Bは、「算出部」の一例である。
ハッシュ探索部22Cは、受信した各チャンクのSHA1の計算結果(ハッシュ値)をキーとして、全アプリケーションの受信側キャッシュ28を探索する。ハッシュ探索部22Cは、探索結果をキャッシュ保存部24、テーブル管理部25に出力する。ハッシュ探索部22Cは、「探索部」の一例である。チャンク分割部22A、SHA1算出部22B、ハッシュ探索部22Cは、まとめて、「重複検出部」の一例である。
テーブル管理部25は、受信データのチャンクのうち少なくとも1つのチャンクについて、SHA1の計算結果が一致するチャンクが受信側キャッシュ28に検出された場合には、受信データのアプリケーションの重複予測テーブル29を上書き更新する。このときの更新内容の一例は、動作モードの重複予測モードへの変更である。
テーブル管理部25は、受信データのチャンクのいずれについても、SHA1の計算結果が一致するチャンクが受信側キャッシュ28にない場合には、受信データのアプリケーションの重複予測テーブル29の更新は行わない。
キャッシュ保存部24は、受信データのチャンクのうち、新規のチャンクを該当アプリケーションの受信側キャッシュ28の最後尾に追加する。なお、受信データのチャンクのすべてが新規データである場合もあるし、一部のチャンクが新規データである場合もある。
キャッシュ読出部23は、データ受信部21からインデックスの入力を受ける。キャッシュ読出部23は、該インデックスの情報に基づいて、該当するアプリケーションの受信側キャッシュ28から該当のチャンクを読出し、データを復元してデータ送信部26に出力する。キャッシュ読出部23は、「転送部」の一例である。
データ送信部26は、受信データ又は復元されたデータを宛先のアプリケーションに送信する。データ送信部26は、送信側装置1から受信した接続要求を宛先に転送し、宛先のアプリケーションと、例えば、TCPセッションを確立し、該TCPセッションを通じてデータを送信する。宛先のアプリケーションは、受信側装置2内に存在してもよいし、別の装置内に存在していてもよい。第1実施形態では、宛先のアプリケーションの実行実体を特定せずに、単に、「宛先」と称する。データ送信部26は、「送信部」の一例である。
重複予測送信部27は、重複予測テーブルが作成又は更新された場合に、該重複予測テーブルを重複予測情報として送信側装置1に送信する。重複予測送信部27は、「送信部」の一例である。
図8は、受信側キャッシュ28のデータ構造の一例を示す図である。受信側キャッシュ28は、例えば、アプリケーションごとに用意される。受信側キャッシュ28では、各チャンクについて、ハッシュ値、アプリケーションID、受信オフセット、受信データが格納される。ハッシュ値は、SHA1の計算結果の値である。受信オフセットは、該当チャンクの先頭のアプリケーションにおける位置である。受信側キャッシュは、「第1の記憶部」の一例である。
図9は、重複予測情報の一例を示す図である。上述の通り、送信側装置1で保持される重複予測テーブル17と、受信側装置2で保持される重複予測テーブルと29のフォーマットは、同一であり、重複予測情報のフォーマットと同様である。受信側装置2の重複予測テーブル29は、受信側装置2のテーブル管理部25によって作成及び更新される。
重複予測情報は、例えば、現アプリケーション種別、重複予測モード、重複アプリケーション種別、現アプリケーション重複開始位置、重複アプリケーション開始位置、重複予測長さの項目を含む。
現アプリケーション種別の項目には、受信側装置2の受信データのアプリケーションの識別情報が格納される。重複予測モードの項目には、「on」、「off」のいずれかが設定される。重複予測モードの項目に「on」が設定されている場合には、送信側装置1の動作モードが重複予測モードに指定されていることが示される。重複予測モードの項目に「off」が設定されている場合には、送信側装置1の動作モードが通常モードに指定されていることが示される。
重複アプリケーション種別の項目には、受信側装置2の受信データのチャンクと重複する受信側キャッシュ28内のチャンクのアプリケーションの識別情報が格納される。同じデータが異なるアプリケーションによって用いられることもあるため、受信データのアプリケーションと、受信データと重複するデータが格納されているキャッシュのアプリケーションとが一致するとは限らない。以降、受信データ又は送信予定データと重複するデータを格納するキャッシュのアプリケーションを重複アプリケーションと称する。
現アプリケーション重複開始位置の項目には、受信側装置2における受信データのアプリケーションとの通信開始からの、重複が検出された受信データのチャンクのオフセットが格納される。現アプリケーション重複開始位置の項目に格納される値は、例えば、データ受信部21から取得される。
重複アプリケーション重複開始位置の項目には、重複アプリケーションの受信側キャッシュ28内における、受信データのチャンクに一致するチャンクの受信オフセットが格納される。重複アプリケーション重複開始位置の項目に格納される値は、重複アプリケーションの受信側キャッシュ28から取得される。
重複予測長さの項目には、重複受信されるデータの予測されるデータの長さが格納される。重複予測長さの項目に格納される値は、例えば、重複アプリケーションの受信側キャッシュ28に格納されるデータの量から受信データのチャンクに一致するチャンクの受信オフセットを減じた値である。
重複アプリケーション種別、現アプリケーション重複開始位置、重複アプリケーション重複開始位置、重複予測長さの項目は、重複予測モードの項目の値が「on」以外の場合には、無効となる。なお、図9に示される重複予測情報のフォーマットは一例であって、これに限られない。例えば、重複予測情報は、重複予測長さの項目を含んでいなくてもよい。
例えば、アプリケーションAの通信開始からのオフセット80000の受信データのチャンクが、アプリケーションBの受信側キャッシュ内の受信オフセット100000のチャンクと重複することが検出された場合に作成される重複予測情報は以下のようになる。なお、重複予測長さの項目については、以下の重複予測情報では省略されている。
(作成される重複予測情報)
アプリケーション種別:アプリケーションA
重複予測モード:on
重複アプリケーション種別:アプリケーションB
現アプリケーション重複開始位置:80000
重複アプリケーション重複開始位置:100000
次に、送信側装置1が上記重複予測情報を受信した後に、アプリケーションAの通信開始からのオフセット90000の送信予定データを送信する場合には、例えば、以下の処理が行われる。重複判定部12は、アプリケーション種別の項目がアプリケーションAである重複予測テーブル17を参照し、重複アプリケーション種別の項目が示すアプリケーションBの送信側キャッシュ16を参照する。
重複判定部12は、重複予測テーブル17に基づいて、アプリケーションBの送信側キャッシュ16から、部分データを読み出し、該部分データと送信予定データとの比較を行う。部分データは、重複アプリケーション重複開始位置の項目の値に、アプリケーションAの通信開始からの送信予定データのオフセットから現アプリケーション重複開始位置の項目の値を引いた値を加算した値を受信オフセットに持つデータである。この場合には、部分データの受信オフセット=重複アプリケーション重複開始位置100000+(90000−80000)=110000となる。
アプリケーションAの送信予定データとアプリケーションBの部分データとが一致する場合、送信側装置1のデータ送信部14は、送信予定データのインデックスを送信する。送信予定データのインデックスには以下の情報が含まれる。
(送信予定データのインデックスの情報)
インデックスフラグ:on
現アプリケーション種別:アプリケーションA
現アプリケーション送信オフセット:90000
重複アプリケーション種別:アプリケーションB
重複アプリケーションオフセット:110000
データ長:80KB
上記送信予定データのインデックスを受信側装置2が受信すると、キャッシュ読出部23は、インデックスに含まれる情報に基づいて処理を行う。具体的には、キャッシュ読出部23は、アプリケーションBの受信側キャッシュ28から、オフセット11000から19000に含まれるチャンクを読出し、データを復元する。
<処理の流れ>
図10は、送信側装置1の処理のフローチャートの一例である。図10に示される処理は、例えば、データ送信元のアプリケーションとのTCPセッションが確立すると開始される。
OP1では、キャッシュ保存部13は、セッションが確立されたアプリケーションの送信側キャッシュ16の送信オフセットを0に設定して、初期化する。また、重複予測受信部15は、重複予測テーブル17を初期化する。次に処理がOP2に進む。
OP2では、送信側装置1はデータを受信する。受信データが重複予測情報である場合には(OP3:YES)、処理がOP4に進む。受信データが重複予測情報でない場合には(OP3:NO)、すなわち、受信データがアプリケーションからの送信予定データである場合には、処理がOP5に進む。
OP4では、重複予測受信部15は、重複予測情報を受信したので、該重複予測情報を重複予測テーブル17にコピーする。その後、図10に示される処理が終了する。なお、次に、送信側装置1がデータを受信した場合には、処理がOP2から開始される。
OP5では、データ受信部11は、重複予測テーブル17を参照して、動作モードが重複予測モードであるか否かを判定する。データ受信部11は、送信元のアプリケーションとソケット通信しているため、受信データのアプリケーションの識別情報を取得可能であり、受信データのアプリケーションに該当する重複予測テーブル17を参照する。
動作モードが重複予測モードである場合には(OP5:YES)、処理がOP6に進む。動作モードが重複予測モードでない場合には(OP5:NO)、処理がOP9に進む。
OP6〜OP9は、動作モードが重複予測モードである場合の処理である。OP6では、重複判定部12は、重複予測テーブル17に基づいて、重複アプリケーションの送信側キャッシュ16から送信予定データと比較する部分データを読み出す。部分データの読出し方法については、上述の通りである。次に処理がOP7に進む。
OP7では、重複判定部12は、送信予定データと部分データとのメモリを比較し、重複の有無を判定する。送信予定データと部分データとが一致している場合には(OP7:YES)、処理がOP8に進む。送信予定データと部分データとが一致していない場合には(OP7:NO)、処理がOP9に進む。
OP8では、送信予定データと部分データとが一致しているので、データ送信部14は、送信予定データのインデックスを受信側装置2に送信する。その後、図10に示される処理が終了し、次に同じアプリケーションからデータが受信されるとOP2から処理が開始される。
OP9〜OP11は、動作モードが通常モードである場合、及び、動作モードが重複予測モードであり、且つ、送信予定データと部分データとが一致しない場合の処理である。OP9では、キャッシュ保存部13は、送信予定データを、該当アプリケーションの送信側キャッシュ16に格納する。次に処理がOP10に進む。
OP10では、キャッシュ保存部13は、該当の送信側キャッシュ16内の次に格納されるデータの送信オフセットを、送信予定データの送信オフセットに送信予定データのサイズを加えた値に更新する。次に処理がOP11に進む。
OP11では、データ送信部14は、送信予定データの実データを受信側装置2に送信する。その後、図10に示される処理が終了し、次に同じアプリケーションからデータが受信されるとOP2から処理が開始される。
図11は、受信側装置2の処理のフローチャートの一例である。図11に示される処理は、送信側装置1と受信側装置2との間で、例えば、TCPのセッションが確立されると開始される。
OP21では、受信側装置2では、初期化処理が行われる。具体的には、キャッシュ保存部24は、セッションが確立されたアプリケーションの受信側キャッシュ28の受信オフセットを0に設定する。テーブル管理部25は、重複予測テーブル29を初期化する。なお、動作モードの初期値は通常モードであるため、重複予測テーブル29内の重複予測モードの項目はoffとなる。次に処理がOP22に進む。
OP22では、データ受信部21は、データを受信する。受信データがインデックスの場合には(OP23:YES)、処理がOP24に進む。受信データが実データである場合には(OP23:NO)、処理がOP26に進む。
OP24では、キャッシュ読出部23は、受信したインデックスに含まれる情報に基づいて、重複アプリケーションの受信側キャッシュ28から該当のチャンクを読み込み、データを復元する。次に処理がOP25に進む。
OP25では、データ送信部26は、宛先にデータを送信する。その後、図11に示される処理が終了し、次のデータを受信した場合には、OP22から処理が開始される。
OP26以降の処理は、受信データが実データである場合の処理である。OP26では、チャンク分割部22Aは、受信データをチャンクに分割する。次に処理がOP27に進む。
OP27では、SHA1算出部22Bは、各チャンクについて、SHA1の計算を行う。次に処理がOP28に進む。
OP28では、ハッシュ探索部22Cは、各チャンクについて、各アプリケーションの受信側キャッシュ28を探索する。受信側キャッシュ28に格納されるチャンクの中にSHA1の計算結果が一致するチャンクが少なくとも1つある場合には(OP29:YES)、処理がOP33に進む。受信側キャッシュ28に格納されるチャンクの中にSHA1の計算結果が一致するチャンクがない場合には(OP29:NO)、処理がOP30に進む。
OP30、OP31の処理は、受信側キャッシュ28に格納されるチャンクの中にSHA1の計算結果が一致するチャンクがない、すなわち、受信データが新規のデータである場合の処理である。OP30では、テーブル管理部25は、受信データのアプリケーションの重複予測テーブル29を参照し、重複予測モードの項目が「on」であるか否かを判定する。重複予測モードの項目が「on」の場合には(OP30:YES)、処理がOP31に進む。重複予測モードの項目が「off」の場合には(OP30:NO)、処理がOP32に進む。
OP31では、受信データが新規のデータであって、且つ、重複予測モードの項目の値が「on」であるので、テーブル管理部25は、データの重複受信の終了を検出し、受信データのアプリケーションの重複予測テーブル29の重複予測モードの項目を「off」に設定する。この重複予測テーブル29の更新によって、重複予測送信部27は、送信側装置1に、重複予測モードの項目が「off」の重複予測情報を送信する。次に処理がOP32に進む。
OP32では、キャッシュ保存部24は、受信データのチャンクを該当の受信側キャッシュ28に格納し、次の受信オフセットを設定する。次の受信オフセットは、格納されたチャンクのオフセットに該チャンクのサイズを加算した値となる。次に処理がOP25に進み、受信データが宛先に送信される。その後、図11に示される処理が終了し、次のデータを受信した場合には、OP22から処理が開始される。
OP33〜OP35は、受信側キャッシュ28に格納されるチャンクの中にSHA1の計算結果が一致するチャンクが少なくとも1つある場合、すなわち、受信データの一部又は全部が重複している場合の処理である。OP33では、テーブル管理部25は、受信データのアプリケーションの重複予測テーブル29を参照し、重複予測モードの項目が「off」であるか否かを判定する。
重複予測モードの項目が「on」の場合には(OP33:NO)、処理がOP32に進む。OP32では、受信データのチャンクの中に新規のものがある場合に、キャッシュ保存部24は、該新規のチャンクを受信側キャッシュ28に格納して、次の受信オフセットを設定する。その後、処理がOP25に進み、受信データが宛先に送信される。
重複予測モードの項目が「off」の場合には(OP33:YES)、処理がOP34に進む。OP34では、テーブル管理部25が受信データのアプリケーションの重複予測テーブル29を更新する。具体的には、テーブル管理部25は、予測重複モードの項目を「on」に設定する。また、重複アプリケーションの項目、重複アプリケーション重複開始位置の項目、現アプリケーション重複開始位置、の項目も適宜更新される。次に処理がOP35に進む。
OP35では、重複予測送信部27は、更新された重複予測テーブルの内容を重複予測テーブルとして送信側装置1に送信する。次に処理がOP32に進む。OP32では、受信データのチャンクの中に新規のものがある場合に、キャッシュ保存部24は、該新規のチャンクを受信側キャッシュ28に格納して、次の受信オフセットを設定する。その後、処理がOP25に進み、受信データが宛先に送信される。
なお、図11に示されるフローチャートは、一例であり、各処理の実行順等はこれに限られず、適宜、実行順を変更してもよい。例えば、OP25の宛先に受信データを送信する処理は、OP31やOP35の重複予測情報の送信処理の前に行われてもよい。
<具体例>
図12は、具体例における処理対象データの設定を示す図である。具体例では、送信側装置1及び受信側装置2は、ともに、アプリケーションXのキャッシュにデータA、データB、データCを保持している。データA、データB、データCは、それぞれ、100KBとする。送信側装置1及び受信側装置2において、データA、データB、データCのオフセットは、それぞれ、0、100000(100K)、200000(200K)である。なお、受信側装置2は、各データをチャンクの形式で保持するが(図8参照)、図12では、便宜上、送信側装置1と同様に示されている。
具体例は、送信側装置1が、アプリケーションYのデータXの送信後に、データA、データBを送信した場合を想定する。データXのサイズは、100KBとする。この通信においてデータX、データA、データBのオフセットは、それぞれ、0、100000(100K)、200000(200K)である。
図13A及び図13Bは、具体例におけるシーケンス図の一例である。図13Aでは、送信側装置1が、アプリケーションYのデータXの後にデータAを送信する場合が示される。なお、クライアント装置からサーバ装置へ接続要求が送信され、該接続要求を送信側装置1が受信すると、送信側装置1から受信側装置2へ接続要求が送信されることによって送信側装置1と受信側装置2との間のセッションの確立処理が行われる。また、これとともに、クライアント装置と送信側装置1、受信側装置2とサーバ装置との間にもセッションが確立される。
S1では、クライアント装置がアプリケーションYのデータAを送信する。S2では、送信側装置1がアプリケーションYのデータAを受信する(図10、OP2)。
S3では、動作モードが初期値の通常モードであるので(図10、OP5:NO)、送信側装置1は、データAを受信側装置2に送信する(図10、OP11)。
S4では、受信側装置2は、データAを受信する(図11、OP22)。S5では、受信データが実データAであるので(図11、OP23:NO)、受信側装置2は、データAをチャンクに分割し、各チャンクのSHA1を計算し、キャッシュを探索して、データAの重複受信を検出する(図11、OP26〜OP29)。
このとき、データAは、アプリケーションXの受信側キャッシュ28で検出される(図12参照)。すなわち、重複アプリケーションは、アプリケーションXであり、重複アプリケーション重複開始位置は、アプリケーションXの受信側キャッシュ28内の受信オフセット0となる。
S6では、受信側装置2は、重複予測テーブルを更新する(図11、OP33〜OP34)。重複予測モードは、offからonに変更される。S7では、受信側装置2は、重複予測情報を受信側装置2に送信する(図11、OP35)。重複予測情報に含まれる情報は以下の通りである。
(重複予測情報)
現アプリケーション種別:アプリケーションX
重複予測モード:on
現アプリケーション重複開始位置:100000
重複アプリケーション種別:アプリケーションY
重複アプリケーション重複開始位置:0
S8では、送信側装置1は重複予測情報を受信する(図10、OP2、OP3:YES)。S9では、送信側装置1は、重複予測情報を重複予測テーブル17にコピーする(図10、OP4)。S10では、受信側装置2は、宛先にデータAを送信する(図11、OP25)。
図13Bは、図13Aの処理に続いて、送信側装置1がアプリケーションYのデータBを送信する場合が示される。S11では、クライアント装置がアプリケーションYのデータBを送信する。S12では、送信側装置1は、アプリケーションYのデータBを受信する(図10、OP2)。
S13では、送信側装置1は、動作モードが重複予測モードであるので(図10、OP5:YES)、データBについて、重複判定を行う。このとき、重複予測テーブル内の重複アプリケーション種別であるアプリケーションXの送信側キャッシュ16から部分データが取得される。
重複予測情報では、重複アプリケーション種別:アプリケーションX、重複アプリケーション重複開始位置:0、現アプリケーション重複開始位置:100000、である。また、アプリケーションYにおいてデータBのオフセットは200000である。したがって、アプリケーションXの送信側キャッシュ16における部分データのオフセットは、0+(200000−100000)=100000となる。
すなわち、部分データとして、アプリケーションXの送信側キャッシュ16の送信オフセット100000のデータが取得される。部分データはデータBであるので(図12参照)、送信側装置1は、重複送信を検出する(図10、OP7:YES)。
S14では、送信側装置1はデータBのインデックスを送信する。データBのインデックスには、以下の情報が含まれる。
(データBのインデックス)
現アプリケーション種別:Y
重複アプリケーション種別:X
重複アプリケーション重複開始位置:100000
データの長さ:100KB
S15では、受信側装置2はデータBのインデックスを受信する(図11、OP22、OP23:YES)。S16では、受信側装置2は、インデックスに含まれる情報に基づいて、アプリケーションXの受信側キャッシュ28の受信オフセット100000〜200000に含まれるチャンクを読み込む(図11、OP24)。S17では、チャンクからデータBを復元し、宛先に送信する(図11、OP25)。
<第1実施形態の作用効果>
第1実施形態では、受信側装置2がデータの重複受信を検出し、送信側装置1に重複予測情報を通知し、送信側装置1が重複予測情報に基づいて、送信予定データと部分データとの比較という比較的負荷の軽い重複判定処理を行う。したがって、第1実施形態では、重複データの除去処理において、送信側装置1に係る負荷を軽減することができる。
チャンク分割、SHA1計算、ハッシュ探索等を、送信側装置1ではなく受信側装置2が行うことによって、例えば、送信側装置1のCPUの利用率を、およそ4分の1にすることができる。
重複予測情報には、重複アプリケーションと、重複アプリケーションにおける重複開始位置等の情報が含まれているため、送信側装置1は、それらの情報を参照することによって、送信予定データの比較対象となる部分データを容易に取得することができる。これによって、送信側装置1の処理負荷をより軽減することができる。
また、送信側装置1は、重複予測モードで動作している場合でも、送信予定データと重複アプリケーションの部分データとで重複検出処理を行う。送信予定データ内に新規な部分が含まれている場合には、送信側装置1は、重複予測モードで動作していても、送信予定データを受信側装置2に送信する。受信側装置2が該送信予定データ(受信側装置2にとっては受信データ)を受信した場合には、該受信データは、そのまま宛先に転送される(図11、OP25)。したがって、送信側装置1が重複予測モードで動作している際に送信予定データに新規のデータが含まれている場合でも、該新規データは正しく宛先に送信される。
また、受信側装置2が新規データを含む受信データを受信し、該受信データに対して重複するチャンクが見つからない場合には、受信側装置2は重複予測モードを「off」に設定して重複予測情報を送信側装置1に送信する。この重複予測情報を送信側装置1が受信すると、送信側装置1は通常モードで動作を開始する。これによって、受信側装置2が送信側装置1の動作モードを制御することができる。
以上より、送信側装置1に係る負荷が軽減されることによって、送信側装置1として、例えば、スマートフォン、タブレット端末、PC等の比較的性能の低い端末装置を採用することができる。言い換えると、第1実施形態に係るデータ重複除去クライアントプログラムを、端末装置に搭載することができる。
図14は、第1実施形態に係るデータ重複除去システム100の効果を示す図である。図14では、100MbitのトラフィックデータXを転送速度10Mbpsの物理回線bwを用いて転送する場合の、図1に示されるデータ重複除去システムP100と第1実施形態に係るデータ重複除去システム100との転送時間が示される。
送信側装置P1におけるデータ重複除去処理に係る速度(重複除去速度)dvを10Mbpsとする。送信側装置1における重複除去速度dwを40Mbpsとする。送信側装置1のCPUの利用率は、送信側装置がチャンク分割、SHA1計算、ハッシュ探索等を行う場合に比べて、およそ4分の1になるからである。
また、トラフィックデータ100Mbitのうち90%が重複していることとする。この場合、データ重複除去処理によって、実データで送信されるデータの割合は10%にまで削減される。すなわち、データ重複除去処理による実データの削減率(重複除去削減率)rは、0.1であるとする。
上記前提において、(1)データ重複除去処理が行われない場合には、転送時間は、X/bw=100M/10Mbps=10sとなる。(2)データ重複除去システムP100では、X/dv+X*r/bw=100M/10Mbps+100M*0.1/10Mbps=11sとなる。(3)データ重複除去システム100では、X/dw+X*r/bw=100M/40Mbps+100M*0.1/10Mbps=3.5sとなる。
すなわち、第1実施形態に係るデータ重複除去システム100のデータ転送時間が最も短くなる。したがって、第1実施形態によれば、10Mbps等の低速な回線での通信において、送信側装置1の処理負荷が軽減されることによって、データ転送に係る時間を短縮することができる。
また、送信側装置1及び受信側装置2は、いずれの処理を行う場合にも、送信又は受信されるデータの内容に関知しない。すなわち、送信側装置1及び受信側装置2は、アプリケーションがどのようなデータを取り扱っていたとしても、データの内容にかかわらず、データ重複除去処理を行うことができる。したがって、第1実施形態のデータ重複除去システム100は、いずれのアプリケーションの通信を行うシステムについて適用することができる。
<変形例>
例えば、受信側装置2のCPUに係る処理負荷が所定の閾値よりも高い場合には、送信側装置1がチャンク分割、SHA1計算、ハッシュ探索の処理を行うようにしてもよい。例えば、送信側装置1に、チャンク分割部、SHA1算出部、ハッシュ探索部を備え、重複予測情報の重複予測モードに「オフロード」を追加することで実現可能である。
受信側装置2は、CPU負荷が所定閾値を超えた場合に、重複予測モードに「オフロード」が設定された重複予測情報を送信側装置1に送信する。送信側装置1は、該重複予測情報を受信すると、チャンク分割部、SHA1算出部、ハッシュ探索部に送信予定データを出力し、例えば、図1の送信側装置P1と同様に処理を行う。
これによって、受信側装置2の処理負荷が高くなった場合に、受信側装置2の処理負荷を軽減させることができる。
また、第1実施形態では、アプリケーションのユーザを識別することについては言及していないが、アプリケーションのユーザが複数存在する場合には、送信側キャッシュ16及び受信側キャッシュ28は、それぞれ、ユーザ毎且つアプリケーション毎に作成される。すなわち、アプリケーションのユーザが複数存在する場合には、送信側キャッシュ16及び受信側キャッシュ28は、ユーザ識別情報とアプリケーション識別情報との組み合わせで識別される。
<記録媒体>
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる非一時的な記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD−ROM、CD−R/W、DVD、ブルーレイディスク、DAT、8mmテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ROM(リードオンリーメモリ)等がある。さらに、SSD(Solid State Drive)は、コンピュータ等から取り外し可能な記録媒体としても、コンピュータ等に固定された記録媒体としても利用可能である。
1 送信側装置
2 受信側装置
11、21 データ受信部
12 重複判定部
13 キャッシュ保存部
14、26 データ送信部
15 重複予測受信部
16 送信側キャッシュ
17、29 重複予測テーブル
22A チャンク分割部
22B SHA1算出部
22C ハッシュ探索部
23 キャッシュ読出部
24 キャッシュ保存部
25 テーブル管理部
27 重複予測送信部
28 送信側キャッシュ
101 CPU
102 主記憶装置
105 補助記憶装置
107 ネットワークインタフェース
しかしながら、送信側装置で行われる送信データの重複判定処理は、負荷が大きく、オーバヘッドとなる。送信データの重複がある場合には、送信データの重複判定処理のオーバヘッドはデータ削減による使用帯域の削減効果によって相殺される。しかしながら、送信データの重複がない場合には、送信データの重複判定処理は無視できないオーバヘッドとなる。
SHA1算出部22Bは、受信データから作成された複数のチャンクそれぞれについてSHA1の計算を行う。SHA1算出部22Bは、各チャンクのSHA1の計算結果をハッシュ探索部22Cに出力する。SHA1算出部22Bは、「算出部」の一例である。
図9は、重複予測情報の一例を示す図である。上述の通り、送信側装置1で保持される重複予測テーブル17と、受信側装置2で保持される重複予測テーブル29とのフォーマットは、同一であり、重複予測情報のフォーマットと同様である。受信側装置2の重複予測テーブル29は、受信側装置2のテーブル管理部25によって作成及び更新される。
上記送信予定データのインデックスを受信側装置2が受信すると、キャッシュ読出部23は、インデックスに含まれる情報に基づいて処理を行う。具体的には、キャッシュ読出部23は、アプリケーションBの受信側キャッシュ28から、オフセット11000から19000に含まれるチャンクを読出し、データを復元する。
S6では、受信側装置2は、重複予測テーブルを更新する(図11、OP33〜OP34)。重複予測モードは、offからonに変更される。S7では、受信側装置2は、重複予測情報を送信側装置1に送信する(図11、OP35)。重複予測情報に含まれる情報は以下の通りである。
(重複予測情報)
現アプリケーション種別:アプリケーション
重複予測モード:on
現アプリケーション重複開始位置:100000
重複アプリケーション種別:アプリケーション
重複アプリケーション重複開始位置:0

Claims (14)

  1. 送信側装置と受信側装置とを含む情報処理システムであって、
    前記受信側装置は、
    受信実績のある第1のデータを記憶する第1の記憶部と、
    前記送信側装置からデータを受信する受信部と、
    前記受信データの少なくとも一部と重複するデータが前記第1の記憶部に記憶されているか否かを判定する重複検出部と、
    前記受信データの少なくとも一部と重複するデータが前記第1の記憶部に記憶されている場合に、前記送信側装置に、前記第1のデータの重複受信の予測情報を通知する通知部と、
    を備え、
    前記送信側装置は、
    送信実績のある前記第1のデータを記憶する第2の記憶部と、
    前記受信側装置から前記予測情報を受信している場合に、前記重複受信の予測情報に基づいて前記送信予定データと前記第1のデータの一部とを比較し、前記送信予定データに合致する前記第2の記憶部内の前記第1のデータの一部の有無を判定する判定部と、
    前記送信予定データに合致する前記第1のデータの一部が前記第2の記憶部内にある場合に、該送信予定データの代わりに前記送信予定データの概要情報を送信する送信部と、
    を備える、
    情報処理システム。
  2. 前記第1の記憶部は、前記第1のデータの所定長に分割された複数の第1のデータブロックと、該複数の第1のデータブロックの識別情報とを記憶し、
    前記重複検出部は、
    前記受信データを前記所定長の複数の第2のデータブロックに分割する分割部と、
    前記第2のデータブロックの前記識別情報を算出する算出部と、
    前記第2のデータブロックの前記識別情報に一致する前記第1のデータブロックの探索を行う探索部と、
    を備える請求項1に記載の情報処理システム。
  3. 前記受信側装置の前記通知部は、前記予測情報に、受信開始からの前記受信データの位置と、前記受信データの前記第1のデータにおける位置とを含めて通知する、
    請求項1又は2に記載の情報処理システム。
  4. 前記受信側装置は、
    前記送信側装置から前記送信予定データの概要情報を受信した場合に、前記第1の記憶部から前記送信予定データに該当する分の第1のデータブロックを読出し、読み出した第1のデータブロックから前記送信予定データを復元する読出部と、
    該復元された前記送信予定データを宛先に転送する転送部と、
    をさらに備える請求項2又は3に記載の情報処理システム。
  5. 前記送信側装置の前記送信部は、前記送信予定データと一致する前記第1のデータの一部が前記第2の記憶部に存在しない場合に、前記送信予定データを送信する、
    請求項1から4のいずれか一項に記載の情報処理システム。
  6. 前記受信側装置の前記通知部は、前記受信データの少なくとも一部に一致する前記第1のデータの一部が前記第1の記憶部に記憶されていない場合に、前記第1のデータの重複受信の終了の予測情報を前記送信側装置に通知し、
    前記送信側装置の前記送信部は、前記第1のデータの重複受信の終了の予測情報を受信している場合には、前記送信予定データを送信する、
    請求項5に記載の情報処理システム。
  7. 受信実績のある第1のデータを記憶する記憶部と、
    送信側装置からデータを受信する受信部と、
    前記受信データの少なくとも一部と重複するデータが前記記憶部に記憶されているか否かを判定する重複検出部と、
    前記受信データの少なくとも一部と重複するデータが前記記憶部に記憶されている場合に、前記送信側装置に、前記第1のデータの重複受信の予測情報を通知する通知部と、
    を備える情報処理装置。
  8. 送信実績のある第1のデータを記憶する記憶部と、
    受信側装置から前記第1のデータの重複受信の予測情報を受信している場合に、前記重複受信の予測情報に基づく前記送信予定データと前記第1のデータの一部とを比較し、前記送信予定データに合致する前記記憶部内の前記第1のデータの一部の有無を判定する判定部と、
    前記送信予定データに合致する前記第1のデータの一部が前記記憶部内にある場合に、該送信予定データの代わりに前記送信予定データの概要情報を送信する送信部と、
    を備える情報処理装置。
  9. それぞれプロセッサとメモリとを備える送信側装置と受信側装置とを含む情報処理システムにおいて、
    前記受信側装置のプロセッサが、
    受信実績のある第1のデータを前記受信側装置のメモリに記憶し、
    前記送信側装置からデータを受信し、
    前記受信データの少なくとも一部と重複するデータが前記メモリに記憶されているか否かを判定し、
    前記受信データの少なくとも一部と重複するデータが前記メモリに記憶されている場合に、前記送信側装置に、前記第1のデータの重複受信の予測情報を通知し、
    前記送信側装置のプロセッサが、
    送信実績のある前記第1のデータを前記送信側装置のメモリに記憶し、
    前記受信側装置から前記予測情報を受信している場合に、前記重複受信の予測情報に基づいて前記送信予定データと前記第1のデータの一部とを比較し、前記送信予定データに合致する前記メモリ内の前記第1のデータの一部の有無を判定し、
    前記送信予定データに合致する前記第1のデータの一部が前記メモリ内にある場合に、該送信予定データの代わりに前記送信予定データの概要情報を送信する、
    情報処理方法。
  10. プロセッサとメモリとを含む情報処理装置において、前記プロセッサが、
    受信実績のある第1のデータを前記メモリに記憶し、
    送信側装置からデータを受信し、
    前記受信データの少なくとも一部と重複するデータが前記メモリに記憶されているか否かを判定し、
    前記受信データの少なくとも一部と重複するデータが前記メモリに記憶されている場合に、前記送信側装置に、前記第1のデータの重複受信の予測情報を通知する、
    情報処理方法。
  11. プロセッサとメモリとを含む情報処理装置において、前記プロセッサが、
    送信実績のある第1のデータを前記メモリに記憶し、
    受信側装置から前記第1のデータの重複受信の予測情報を受信している場合に、前記重複受信の予測情報に基づく前記送信予定データと前記第1のデータの一部とを比較し、前記送信予定データに合致する前記メモリ内の前記第1のデータの一部の有無を判定し、
    前記送信予定データに合致する前記第1のデータの一部が前記メモリ内にある場合に、該送信予定データの代わりに前記送信予定データの概要情報を送信する、
    情報処理方法。
  12. 送信側装置と受信側装置とを含む情報処理システムにおいて、
    前記受信側装置に、
    受信実績のある第1のデータを第1の記憶部に記憶させ、
    前記送信側装置からデータを受信させ、
    前記受信データの少なくとも一部と重複するデータが前記第1の記憶部に記憶されているか否かを判定させ、
    前記受信データの少なくとも一部と重複するデータが前記第1の記憶部に記憶されている場合に、前記送信側装置に、前記第1のデータの重複受信の予測情報を通知させ、
    前記送信側装置に、
    送信実績のある前記第1のデータを第2の記憶部に記憶させ、
    前記受信側装置から前記予測情報を受信している場合に、前記重複受信の予測情報に基づいて前記送信予定データと前記第1のデータの一部とを比較させ、前記送信予定データに合致する前記第2の記憶部内の前記第1のデータの一部の有無を判定させ、
    前記送信予定データに合致する前記第1のデータの一部が前記第2の記憶部内にある場合に、該送信予定データの代わりに前記送信予定データの概要情報を送信させる、
    ための情報処理プログラム。
  13. 情報処理装置に、
    受信実績のある第1のデータを記憶部に記憶させ、
    送信側装置からデータを受信させ、
    前記受信データの少なくとも一部と重複するデータが前記記憶部に記憶されているか否かを判定させ、
    前記受信データの少なくとも一部と重複するデータが前記記憶部に記憶されている場合に、前記送信側装置に、前記第1のデータの重複受信の予測情報を通知させる、
    ための情報処理プログラム。
  14. 情報処理装置に、
    送信実績のある第1のデータを記憶部に記憶させ、
    前記受信側装置から前記第1のデータの重複受信の予測情報を受信している場合に、前記重複受信の予測情報に基づく前記送信予定データと前記第1のデータの一部とを比較させ、前記送信予定データに合致する前記記憶部内の前記第1のデータの一部の有無を判定させ、
    前記送信予定データに合致する前記第1のデータの一部が前記記憶部にある場合に、該送信予定データの代わりに前記送信予定データの概要情報を送信させる、
    情報処理プログラム。
JP2016546266A 2014-09-04 2014-09-04 情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラム Active JP6304385B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/073379 WO2016035194A1 (ja) 2014-09-04 2014-09-04 情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラム

Publications (2)

Publication Number Publication Date
JPWO2016035194A1 true JPWO2016035194A1 (ja) 2017-06-29
JP6304385B2 JP6304385B2 (ja) 2018-04-04

Family

ID=55439293

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016546266A Active JP6304385B2 (ja) 2014-09-04 2014-09-04 情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラム

Country Status (5)

Country Link
US (1) US10185496B2 (ja)
EP (1) EP3190521A4 (ja)
JP (1) JP6304385B2 (ja)
CN (1) CN106663064A (ja)
WO (1) WO2016035194A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6900833B2 (ja) * 2017-08-10 2021-07-07 日本電信電話株式会社 通信システム、通信方法および通信処理プログラム
US10461950B2 (en) * 2018-02-21 2019-10-29 Microsoft Technology Licensing, Llc Preventing transmission of duplicate notifications to multiple applications on a client device
US11669495B2 (en) * 2019-08-27 2023-06-06 Vmware, Inc. Probabilistic algorithm to check whether a file is unique for deduplication
US11372813B2 (en) 2019-08-27 2022-06-28 Vmware, Inc. Organize chunk store to preserve locality of hash values and reference counts for deduplication
US11775484B2 (en) 2019-08-27 2023-10-03 Vmware, Inc. Fast algorithm to find file system difference for deduplication
US11461229B2 (en) 2019-08-27 2022-10-04 Vmware, Inc. Efficient garbage collection of variable size chunking deduplication

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003108464A (ja) * 2001-09-27 2003-04-11 Toshiba Corp データ転送装置およびデータ転送方法
JP2011175421A (ja) * 2010-02-24 2011-09-08 Nec Corp ストレージシステム
JP2011221733A (ja) * 2010-04-08 2011-11-04 Nec Corp オンラインストレージシステム、及びオンラインストレージサービスの提供方法
US20120011101A1 (en) * 2010-07-12 2012-01-12 Computer Associates Think, Inc. Integrating client and server deduplication systems
WO2014089767A1 (zh) * 2012-12-12 2014-06-19 华为技术有限公司 集群系统中数据处理方法及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000357121A (ja) 1999-06-16 2000-12-26 Sharp Corp 情報取得装置及び方法並びにこれに利用される記憶媒体
JP2001331661A (ja) 2000-05-22 2001-11-30 Sony Corp 情報配信方法、情報配信システム、通信端末、情報配信装置および重複配信防止方法
US7453936B2 (en) * 2001-11-09 2008-11-18 Sony Corporation Transmitting apparatus and method, receiving apparatus and method, program and recording medium, and transmitting/receiving system
US8386871B2 (en) * 2007-02-09 2013-02-26 Ntt Docomo, Inc. Retransmission control method and receiving side apparatus
JP5115067B2 (ja) 2007-07-13 2013-01-09 ソニー株式会社 通信処理装置、および情報処理方法、並びにコンピュータ・プログラム
US8060715B2 (en) * 2009-03-31 2011-11-15 Symantec Corporation Systems and methods for controlling initialization of a fingerprint cache for data deduplication
CN101556573A (zh) * 2009-05-21 2009-10-14 成都市华为赛门铁克科技有限公司 一种基于pcie的数据传输方法和装置
US9047301B2 (en) * 2010-04-19 2015-06-02 Greenbytes, Inc. Method for optimizing the memory usage and performance of data deduplication storage systems
US9811532B2 (en) * 2010-05-03 2017-11-07 Panzura, Inc. Executing a cloud command for a distributed filesystem
KR102140792B1 (ko) * 2013-12-24 2020-08-03 삼성전자주식회사 데이터 중복 제거를 수행할 수 있는 데이터 저장 장치의 동작 방법들

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003108464A (ja) * 2001-09-27 2003-04-11 Toshiba Corp データ転送装置およびデータ転送方法
JP2011175421A (ja) * 2010-02-24 2011-09-08 Nec Corp ストレージシステム
JP2011221733A (ja) * 2010-04-08 2011-11-04 Nec Corp オンラインストレージシステム、及びオンラインストレージサービスの提供方法
US20120011101A1 (en) * 2010-07-12 2012-01-12 Computer Associates Think, Inc. Integrating client and server deduplication systems
WO2014089767A1 (zh) * 2012-12-12 2014-06-19 华为技术有限公司 集群系统中数据处理方法及装置

Also Published As

Publication number Publication date
JP6304385B2 (ja) 2018-04-04
US10185496B2 (en) 2019-01-22
CN106663064A (zh) 2017-05-10
WO2016035194A1 (ja) 2016-03-10
EP3190521A1 (en) 2017-07-12
EP3190521A4 (en) 2017-09-27
US20170160950A1 (en) 2017-06-08

Similar Documents

Publication Publication Date Title
JP6304385B2 (ja) 情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラム
CN108427539B (zh) 缓存设备数据的离线去重压缩方法、装置及可读存储介质
US9268711B1 (en) System and method for improving cache performance
US10656858B1 (en) Deduplication featuring variable-size duplicate data detection and fixed-size data segment sharing
WO2015046645A1 (en) Deduplication of parity data in ssd based raid systems
US9268693B1 (en) System and method for improving cache performance
US20140195499A1 (en) Real-time classification of data into data compression domains
US9645759B2 (en) Apparatus and method for monitoring communication
JP6254293B2 (ja) データ重複排除方法及びストレージアレイ
WO2013107029A1 (zh) 一种基于块存储的数据处理方法、装置及系统
US9952933B1 (en) Fingerprint change during data operations
US10637969B2 (en) Data transmission method and data transmission device
US9268696B1 (en) System and method for improving cache performance
CN113296709A (zh) 用于去重的方法和设备
JPWO2017006675A1 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
US10915260B1 (en) Dual-mode deduplication based on backup history
US20180113874A1 (en) Information processing apparatus, information processing method and recording medium with information processing program
JP2010170475A (ja) ストレージシステム、ストレージシステムにおけるデータ書込方法及びデータ書込プログラム
WO2016132538A1 (ja) 通信システム、通信装置、情報処理方法、及び、情報処理プログラム
JP5494817B2 (ja) ストレージシステム、データ管理装置、方法及びプログラム
PREDICTON DUPLICATON PREDICTON INFORMATION TRANSMION
WO2015176249A1 (zh) 无线以太接口硬盘传输方法和相关设备及系统
CN114174978B (zh) 密钥可压缩加密的方法和系统
JP6344520B2 (ja) 通信装置、情報処理方法、及び、情報処理プログラム
US9208098B1 (en) System and method for improving cache performance

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170308

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171017

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171121

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: 20180206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180219

R150 Certificate of patent or registration of utility model

Ref document number: 6304385

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150