(57)【要約】重複データの除去において、送信側装置の処理負荷を低減する。受信側装置は、受信実績のある第１のデータを記憶する第１の記憶部と、送信側装置からの受信データの少なくとも一部と重複するデータが第１の記憶部に記憶されているかを判定する重複検出部と、重複するデータが第１の記憶部に記憶されている場合に、送信側装置に第１のデータの重複受信の予測情報を通知する通知部とを備え、送信側装置は、送信実績のある第１のデータを記憶する第２の記憶部と、受信側装置から予測情報を受信している場合に、重複受信の予測情報に基づいて送信予定データと第１のデータの一部とを比較し、送信予定データに合致する第２の記憶部内の第１のデータの一部の有無を判定する判定部と、送信予定データに合致する第１のデータの一部が第２の記憶部内にある場合に、該送信予定データの概要情報を送信する送信部と、を備える、情報処理システムである。
2016035194.tif 000002
【特許請求の範囲】
【請求項１】
送信側装置と受信側装置とを含む情報処理システムであって、
前記受信側装置は、
受信実績のある第１のデータを記憶する第１の記憶部と、
前記送信側装置からデータを受信する受信部と、
前記受信データの少なくとも一部と重複するデータが前記第１の記憶部に記憶されているか否かを判定する重複検出部と、
前記受信データの少なくとも一部と重複するデータが前記第１の記憶部に記憶されている場合に、前記送信側装置に、前記第１のデータの重複受信の予測情報を通知する通知部と、
を備え、
前記送信側装置は、
送信実績のある前記第１のデータを記憶する第２の記憶部と、
前記受信側装置から前記予測情報を受信している場合に、前記重複受信の予測情報に基づいて前記送信予定データと前記第１のデータの一部とを比較し、前記送信予定データに合致する前記第２の記憶部内の前記第１のデータの一部の有無を判定する判定部と、
前記送信予定データに合致する前記第１のデータの一部が前記第２の記憶部内にある場合に、該送信予定データの代わりに前記送信予定データの概要情報を送信する送信部と、
を備える、
情報処理システム。
【請求項２】
前記第１の記憶部は、前記第１のデータの所定長に分割された複数の第１のデータブロックと、該複数の第１のデータブロックの識別情報とを記憶し、
前記重複検出部は、
前記受信データを前記所定長の複数の第２のデータブロックに分割する分割部と、
前記第２のデータブロックの前記識別情報を算出する算出部と、
前記第２のデータブロックの前記識別情報に一致する前記第１のデータブロックの探索を行う探索部と、
を備える請求項１に記載の情報処理システム。
【請求項３】
前記受信側装置の前記通知部は、前記予測情報に、受信開始からの前記受信データの位置と、前記受信データの前記第１のデータにおける位置とを含めて通知する、
請求項１又は２に記載の情報処理システム。
【請求項４】
前記受信側装置は、
前記送信側装置から前記送信予定データの概要情報を受信した場合に、前記第１の記憶部から前記送信予定データに該当する分の第１のデータブロックを読出し、読み出した第１のデータブロックから前記送信予定データを復元する読出部と、
該復元された前記送信予定データを宛先に転送する転送部と、
をさらに備える請求項２又は３に記載の情報処理システム。
【請求項５】
前記送信側装置の前記送信部は、前記送信予定データと一致する前記第１のデータの一部が前記第２の記憶部に存在しない場合に、前記送信予定データを送信する、
請求項１から４のいずれか一項に記載の情報処理システム。
【請求項６】
前記受信側装置の前記通知部は、前記受信データの少なくとも一部に一致する前記第１のデータの一部が前記第１の記憶部に記憶されていない場合に、前記第１のデータの重複受信の終了の予測情報を前記送信側装置に通知し、
前記送信側装置の前記送信部は、前記第１のデータの重複受信の終了の予測情報を受信している場合には、前記送信予定データを送信する、
請求項５に記載の情報処理システム。
【請求項７】
受信実績のある第１のデータを記憶する記憶部と、
送信側装置からデータを受信する受信部と、
前記受信データの少なくとも一部と重複するデータが前記記憶部に記憶されているか否かを判定する重複検出部と、
前記受信データの少なくとも一部と重複するデータが前記記憶部に記憶されている場合に、前記送信側装置に、前記第１のデータの重複受信の予測情報を通知する通知部と、
を備える情報処理装置。
【請求項８】
送信実績のある第１のデータを記憶する記憶部と、
受信側装置から前記第１のデータの重複受信の予測情報を受信している場合に、前記重複受信の予測情報に基づく前記送信予定データと前記第１のデータの一部とを比較し、前記送信予定データに合致する前記記憶部内の前記第１のデータの一部の有無を判定する判定部と、
前記送信予定データに合致する前記第１のデータの一部が前記記憶部内にある場合に、該送信予定データの代わりに前記送信予定データの概要情報を送信する送信部と、
を備える情報処理装置。
【請求項９】
それぞれプロセッサとメモリとを備える送信側装置と受信側装置とを含む情報処理システムにおいて、
前記受信側装置のプロセッサが、
受信実績のある第１のデータを前記受信側装置のメモリに記憶し、
前記送信側装置からデータを受信し、
前記受信データの少なくとも一部と重複するデータが前記メモリに記憶されているか否かを判定し、
前記受信データの少なくとも一部と重複するデータが前記メモリに記憶されている場合に、前記送信側装置に、前記第１のデータの重複受信の予測情報を通知し、
前記送信側装置のプロセッサが、
送信実績のある前記第１のデータを前記送信側装置のメモリに記憶し、
前記受信側装置から前記予測情報を受信している場合に、前記重複受信の予測情報に基づいて前記送信予定データと前記第１のデータの一部とを比較し、前記送信予定データに合致する前記メモリ内の前記第１のデータの一部の有無を判定し、
前記送信予定データに合致する前記第１のデータの一部が前記メモリ内にある場合に、該送信予定データの代わりに前記送信予定データの概要情報を送信する、
情報処理方法。
【請求項１０】
プロセッサとメモリとを含む情報処理装置において、前記プロセッサが、
受信実績のある第１のデータを前記メモリに記憶し、
送信側装置からデータを受信し、
前記受信データの少なくとも一部と重複するデータが前記メモリに記憶されているか否かを判定し、
前記受信データの少なくとも一部と重複するデータが前記メモリに記憶されている場合に、前記送信側装置に、前記第１のデータの重複受信の予測情報を通知する、
情報処理方法。
【請求項１１】
プロセッサとメモリとを含む情報処理装置において、前記プロセッサが、
送信実績のある第１のデータを前記メモリに記憶し、
受信側装置から前記第１のデータの重複受信の予測情報を受信している場合に、前記重複受信の予測情報に基づく前記送信予定データと前記第１のデータの一部とを比較し、前記送信予定データに合致する前記メモリ内の前記第１のデータの一部の有無を判定し、
前記送信予定データに合致する前記第１のデータの一部が前記メモリ内にある場合に、該送信予定データの代わりに前記送信予定データの概要情報を送信する、
情報処理方法。
【請求項１２】
送信側装置と受信側装置とを含む情報処理システムにおいて、
前記受信側装置に、
受信実績のある第１のデータを第１の記憶部に記憶させ、
前記送信側装置からデータを受信させ、
前記受信データの少なくとも一部と重複するデータが前記第１の記憶部に記憶されているか否かを判定させ、
前記受信データの少なくとも一部と重複するデータが前記第１の記憶部に記憶されている場合に、前記送信側装置に、前記第１のデータの重複受信の予測情報を通知させ、
前記送信側装置に、
送信実績のある前記第１のデータを第２の記憶部に記憶させ、
前記受信側装置から前記予測情報を受信している場合に、前記重複受信の予測情報に基づいて前記送信予定データと前記第１のデータの一部とを比較させ、前記送信予定データに合致する前記第２の記憶部内の前記第１のデータの一部の有無を判定させ、
前記送信予定データに合致する前記第１のデータの一部が前記第２の記憶部内にある場合に、該送信予定データの代わりに前記送信予定データの概要情報を送信させる、
ための情報処理プログラム。
【請求項１３】
情報処理装置に、
受信実績のある第１のデータを記憶部に記憶させ、
送信側装置からデータを受信させ、
前記受信データの少なくとも一部と重複するデータが前記記憶部に記憶されているか否かを判定させ、
前記受信データの少なくとも一部と重複するデータが前記記憶部に記憶されている場合に、前記送信側装置に、前記第１のデータの重複受信の予測情報を通知させる、
ための情報処理プログラム。
【請求項１４】
情報処理装置に、
送信実績のある第１のデータを記憶部に記憶させ、
前記受信側装置から前記第１のデータの重複受信の予測情報を受信している場合に、前記重複受信の予測情報に基づく前記送信予定データと前記第１のデータの一部とを比較させ、前記送信予定データに合致する前記記憶部内の前記第１のデータの一部の有無を判定させ、
前記送信予定データに合致する前記第１のデータの一部が前記記憶部にある場合に、該送信予定データの代わりに前記送信予定データの概要情報を送信させる、
情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【０００２】
通信の高速化を実現する方法の一つに、転送データ量を削減する方法がある。転送データ量を削減する方法は、使用帯域が減るため、低帯域の回線に対して有効である。転送データ量を削減する方法として、例えば、重複して送信されるデータを除去する方法、送信データを圧縮する方法がある。【０００３】
重複して送信されるデータを除去する方法では、例えば、送信側ネットワーク及び受信側ネットワークにそれぞれ送信側装置と受信側装置とが配置されるシステム構成がとられることが多い。送信側装置及び受信側装置は予め処理実績のあるデータをキャッシュしておき、送信側装置は、キャッシュされるデータを用いて送信データの重複の確認を行い、送信データが重複している場合には、送信データの代わりに送信データの概要情報を送信する。受信側装置は、データの概要情報を受信すると、キャッシュから該当のデータを読出し、宛先に転送する。送信データのサイズに比べて送信データの概要情報のサイズは小さいため、転送データ量を削減することができ、送信側装置と受信側装置との間の使用帯域を抑えることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２１９０６号公報
【特許文献２】特開２００１−３３１６６１号公報
【特許文献３】特開２０００−３５７１２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、送信側装置で行われる送信データの重複判定処理は、負荷が大きく、オーバヘッドとなる。送信データの重複がある場合には、送信データの重複判定処理による負荷や遅延は、送信データの重複判定処理のオーバヘッドはデータ削減による使用帯域の削減効果によって相殺される。しかしながら、送信データの重複がない場合には、送信データの重複判定処理は無視できないオーバヘッドとなる。【０００６】
本発明の一態様は、重複データの除去において、送信側装置の処理負荷を低減することが可能な情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の態様の一つは、送信側装置と受信側装置とを含む情報処理システムである。受信側装置は、受信実績のある第１のデータを記憶する第１の記憶部と、送信側装置からデータを受信する受信部と、受信データの少なくとも一部と重複するデータが第１の記憶部に記憶されているか否かを判定する重複検出部と、受信データの少なくとも一部と重複するデータが第１の記憶部に記憶されている場合に、送信側装置に、第１のデータの重複受信の予測情報を通知する通知部と、を備える。送信側装置は、送信実績のある第１のデータを記憶する第２の記憶部と、受信側装置から第１のデータの重複受信の予測情報を受信している場合に、該重複受信の予測情報に基づいて送信予定データと第１のデータの一部とを比較し、送信予定データに合致する第２の記憶部内の第１のデータの一部の有無を判定する判定部と、送信予定データに合致する第１のデータの一部が第２の記憶部内にある場合に、該送信予定データの代わりに送信予定データの概要情報を送信する送信部と、を備える。
【発明の効果】
【０００８】
開示の情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラムによれば、重複データの除去において、送信側装置の処理負荷を低減することができる。
【図面の簡単な説明】
【０００９】
【図１】データ重複除去システムの一例を示す図である。
【図２】第１実施形態のデータ重複除去システムの構成の一例を示す図である。
【図３】第１実施形態の処理の一例を示す図である。
【図４】送信側装置のハードウェア構成の一例を示す図である。
【図５】送信側装置の機能構成の一例を示す図である。
【図６】送信側キャッシュ内のデータ構造の一例を示す図である。
【図７】受信側装置の機能構成の一例を示す図である。
【図８】受信側キャッシュのデータ構造の一例を示す図である。
【図９】重複予測情報の一例を示す図である。
【図１０】送信側装置の処理のフローチャートの一例である。
【図１１】受信側装置の処理のフローチャートの一例である。
【図１２】具体例における処理対象データの設定を示す図である。
【図１３Ａ】具体例におけるシーケンス図の一例である。
【図１３Ｂ】具体例におけるシーケンス図の一例である。
【図１４】第１実施形態に係るデータ重複除去システムの効果を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００１１】
＜データ重複除去の一例＞
図１は、データ重複除去システムの一例を示す図である。データ重複除去システムＰ１００は、送信側装置Ｐ１と受信側装置Ｐ２とを含む。送信側装置Ｐ１及び受信側装置Ｐ２は、それぞれ、例えば、ネットワークの境界に位置する装置である。
【００１２】
送信側装置Ｐ１は、例えば、アプリケーションからデータを受信すると、チャンクと呼ばれる１〜４ＫＢの可変長ブロックに該データを分割する。送信側装置Ｐ１は、各チャンクについてＳＨＡ１（Secure Hash Algorithm）の計算をしてハッシュ値を取得し、該ハッシュ値をキーとして、キャッシュ内のハッシュ探索を行う。送信側装置Ｐ１のキャッシュには、送信実績のあるデータのチャンクとＳＨＡ１の計算結果とが保持されている。
【００１３】
ハッシュ探索の結果、ＳＨＡ１の計算結果が一致するチャンクが検出されない場合には、すなわち、チャンクが重複していない場合には、送信側装置Ｐ１は、該チャンクをキャッシュに保存し、実データを送信する。ハッシュ探索の結果、ＳＨＡ１の計算結果が一致するチャンクが検出された場合には、すなわち、チャンクが重複している場合には、送信側装置Ｐ１は、該チャンクのＩＤデータを送信する。チャンクのＩＤデータには、例えば、アプリケーションＩＤと、該チャンクの位置情報と、該チャンクのサイズとが含まれている。
【００１４】
受信側装置Ｐ２は、実データを受信した場合には、該実データを宛先に転送するとともに、キャッシュに該実データを保存する。受信側装置Ｐ２は、チャンクのＩＤを受信した場合には、キャッシュから該当する実データを読み出してデータを復元し、宛先に送信する。
【００１５】
図１に示されるデータ重複除去システムＰ１００では、送信側装置がチャンク分割、ＳＨＡ１計算、ハッシュ探索の処理を行い、チャンクが重複している場合には、該チャンクのＩＤデータを送信することで、データ転送量を削減する。しかしながら、チャンク分割、ＳＨＡ１計算、ハッシュ探索の処理負荷が大きいので、例えば、送信側装置Ｐ１が端末装置等の比較的性能の低い装置である場合には、データ重複除去の処理が通信の高速化に寄与しない可能性がある。
【００１６】
＜第１実施形態＞
図２は、第１実施形態のデータ重複除去システム１００の構成の一例を示す図である。例えば、データ重複除去システム１００は、重複除去クライアント１と、重複除去サーバ２とを含む。重複除去クライアント１は、例えば、スマートフォン１Ａ、ＰＣ（Personal Computer）１Ｂ、等の端末装置である。また、重複除去クライアント１は、サーバ等の専用のコンピュータであってもよい。重複除去クライアント１は、送信側装置１ともいう。重複除去サーバ２は、受信側装置２ともいう。
【００１７】
第１実施形態では、受信側装置２は、送信側装置１からの受信実績のあるデータをキャッシュしており、該キャッシュを用いて受信データの重複の開始を検出する。受信側装置２は、受信データの重複の開始を検出すると、送信側装置１に重複予測情報を通知する。送信側装置１は、受信側装置２から重複予測情報を受信すると、動作モードを切り替えて、送信予定データに対して、該重複予測情報に基づいて、比較的負荷の軽いメモリ比較による重複判定処理を行って、データを送信する。
【００１８】
図３は、第１実施形態の処理の一例を示す図である。送信側装置１は、通常モードと重複予測モードとの２つの動作モードを有する。通常モードでは、送信側装置１は、送信予定データをキャッシュに格納し、実データを送信する。
【００１９】
送信側装置１が受信側装置２から重複予測情報の通知を受けると、動作モードが重複予測モードに切り替わる。重複予測モードでは、送信側装置１は、重複予測情報に基づいてキャッシュデータから部分データをプリフェッチし、送信予定データとメモリの比較を行って、重複の有無を判定する。部分データと送信予定データとが不一致の場合には、送信予定データは重複しているデータではないので、送信側装置１は、実データを送信する。部分データと送信予定データとが一致する場合には、送信予定データが重複しているので、送信側装置１は、送信予定データのインデックスを送信する。
【００２０】
受信側装置２は、実データを受信した場合には、実データをチャンクに分割し、各チャンクについてＳＨＡ１を計算し、ＳＨＡ１の計算結果をキーとしてキャッシュを探索する。キャッシュ内に重複するチャンクが検出された場合には、受信側装置２は、重複受信の開始を検出し、重複予測情報を生成して送信側装置１に通知する。
【００２１】
受信側装置２は、インデックスを受信した場合には、インデックスに示されるチャンクをキャッシュから読み出し、データを復元して、宛先の装置に送信する。
【００２２】
第１実施形態では、受信側装置２が、チャンク分割、ＳＨＡ１計算、ハッシュ探索等の負荷の高い処理を行い、送信側装置１は、プリフェッチされたデータと送信予定データとの比較という比較的負荷の軽い処理を行う。これによって、送信側装置１に係る処理負荷を軽減することができる。
【００２３】
＜装置構成＞
＜送信側装置＞
図４は、送信側装置１のハードウェア構成の一例を示す図である。送信側装置１は、例えば、携帯電話端末、スマートフォン、タブレット端末、汎用又は専用のコンピュータである。
【００２４】
送信側装置１は、ＣＰＵ（Central Processing Unit）１０１、主記憶装置１０２、入力装置１０３、出力装置１０４、補助記憶装置１０５、ネットワークインタフェース１０７を備える。また、これらはバス１０９により互いに接続されている。
【００２５】
入力装置１０３は、例えば、操作ボタン、タッチパネル、キーボード、キーパッド等である。入力装置１０３から入力されたデータは、ＣＰＵ  １０１に出力される。入力装置は、例えば、マイクロフォンのような音声入力装置を含んでもよい。
【００２６】
補助記憶装置１０５は、様々なプログラムや、各プログラムの実行に際してＣＰＵ  １０１が使用するデータを格納する。補助記憶装置１０５は、例えば、ＥＰＲＯＭ（Erasable Programmable ROM）、フラッシュメモリ、又はハードディスクドライブ（Hard Disk Drive）等の不揮発性のメモリである。補助記憶装置１０５は、例えば、オペレーティングシステム（ＯＳ）、重複除去クライアントプログラム、その他様々なアプリケーションプログラムを保持する。重複除去クライアントプログラムは、送信側装置１を重複除去クライアントとして動作させるためのプログラムである。
【００２７】
主記憶装置１０２は、ＣＰＵ  １０１に、補助記憶装置１０５に格納されているプログラムをロードする記憶領域および作業領域を提供したり、バッファとして用いられたりする。主記憶装置１０２は、例えば、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）のような半導体メモリを含む。
【００２８】
ＣＰＵ  １０１は、補助記憶装置１０５に保持されたＯＳや様々なアプリケーションプログラムを主記憶装置１０２にロードして実行することによって、様々な処理を実行する。ＣＰＵ  １０１は、１つに限られず、複数備えられてもよい。
【００２９】
ネットワークインタフェース１０７は、ネットワークとの情報の入出力を行うインタフェースである。ネットワークインタフェース１０７は、有線のネットワークと接続するインタフェース、無線のネットワークと接続するインタフェースを含む。ネットワークインタフェース１０７は、例えば、ＮＩＣ（Network Interface Card）、無線ＬＡＮ（Local Area Network）カード等である。ネットワークインタフェース１０７で受信されたデータ等は、ＣＰＵ  １０１に出力される。
【００３０】
出力装置１０４は、ＣＰＵ  １０１の処理の結果を出力する。出力装置１０４は、スピーカ等の音声出力装置、ディスプレイ、プリンタを含む。
【００３１】
なお、図４に示される送信側装置１のハードウェア構成は、一例であり、上記に限られず、実施の形態に応じて適宜構成要素の省略や置換、追加が可能である。例えば、送信側装置１は、可搬記録媒体駆動装置を備え、可搬記録媒体に記録されたプログラムを実行してもよい。可搬記録媒体は、例えば、ＳＤカード、ｍｉｎｉＳＤカード、ｍｉｃｒｏＳＤカード、ＵＳＢ（Universal Serial Bus）フラッシュメモリ、ＣＤ（Compact Disc）、ＤＶＤ(Digital Versatile Disc)、Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ、又はフラッシュメモリカードのような記録媒体である。
【００３２】
また、送信側装置１がサーバである場合には、例えば、送信側装置１は、入力装置１０３、出力装置１０４を備えていなくてもよい。
【００３３】
図５は、送信側装置１の機能構成の一例を示す図である。送信側装置１は、機能構成として、データ受信部１１、重複判定部１２、キャッシュ保存部１３、データ送信部１４、重複予測受信部１５を備える。これらの機能構成は、ＣＰＵ  １０１が補助記憶装置１０５に格納されている重複除去クライアントプログラムを実行することによって実現される機能構成である。また、重複除去クライアントプログラムが実行されることによって、補助記憶装置１０５の記憶領域に送信側キャッシュ１６用の領域が確保される。また、主記憶装置１０２の記憶領域には重複予測テーブル１７を格納する領域が確保される。重複除去クライアントプログラムは、例えば、アプリケーション層のプログラムである。
【００３４】
データ受信部１１は、データの送信元となるアプリケーションからデータを受信し、該アプリケーションのセッションを終端する。例えば、データの送信元であるアプリケーションがＴＣＰ（Transmission Control Protocol）で通信を行うアプリケーションである場合には、データ受信部１１は、データの送信元から接続要求を受信すると、該データの送信元とＴＣＰセッションを確立する。データ受信部１１は、データの送信元と、ＩＰアドレスとポート番号との組み合わせであるソケットを用いて通信を行う。そのため、データ受信部１１は、ソケットからアプリケーションを識別可能である。
【００３５】
なお、データの送信元となるアプリケーションを実行する実体は、送信側装置１自身であってもよいし、他の装置であってもよい。例えば、送信側装置１がサーバである場合には、データの送信元となるアプリケーションを実行する実体は他の装置であり、データ受信部１１は、ネットワークインタフェース１０７を通じて、該他の装置からデータを受信する。例えば、送信側装置１が端末装置である場合には、データの送信元となるアプリケーションを実行する実体は送信側装置１自身となる。第１実施形態では、以降、データの送信元となるアプリケーションを実行する実体を特定することなく、単に、「送信元」と称する。
【００３６】
データ受信部１１は、動作モードが通常モードの場合には、送信予定データをデータ送信部１４に出力する。送信予定データは送信元のアプリケーションから受信したデータのことである。データ受信部１１は、動作モードが重複予測モードの場合には、送信予定データを重複判定部１２に出力する。
【００３７】
データ受信部１１は、例えば、所定サイズの処理バッファを保持している。送信元のアプリケーションから受信したデータは、送信側装置１においては該処理バッファのサイズの単位で処理される。処理バッファのサイズは、例えば、５０〜１００ＫＢである。ただし、処理バッファのサイズはこれに限定されない。すなわち、送信予定データは、処理バッファと同じ又はそれ未満のサイズのデータブロックである。
【００３８】
また、データ受信部１１は、送信元のアプリケーションとの通信開始からの送信予定データのオフセットを監視する。送信元のアプリケーションとの通信開始からの送信予定データのオフセットは、送信予定データの先頭の位置を示す値である。例えば、オフセットは、０から始まり、データのサイズ１バイトごとに１増加する値とする。例えば、通信開始後、最初の送信予定データのサイズが８０ＫＢである場合には、該最初の送信予定データのオフセットは０、次の送信予定データのオフセットは８００００となる。
【００３９】
重複判定部１２には、動作モードが重複予測モードである場合に、データ受信部１１から送信予定データが入力される。なお、動作モードの初期値は、通常モードである。重複判定部１２は、送信予定データのアプリケーションの重複予測テーブル１７を参照して、重複予測テーブル１７に示されるアプリケーションの送信側キャッシュ１６から該当の部分データをプリフェッチして送信予定データとの比較を行う。なお、送信予定データのアプリケーションと重複予測テーブル１７に示されるアプリケーションとは、一致する場合もあるし、一致しない場合もある。部分データの取得方法の詳細については、後述される。
【００４０】
該部分データと送信予定データとが不一致の場合には、重複判定部１２は、送信予定データが重複のない新規データであることを判定する。この場合、重複判定部１２は、送信予定データ自体を、キャッシュ保存部１３と、データ送信部１４とに出力する。
【００４１】
部分データと送信予定データとが一致する場合には、重複判定部１２は、送信予定データが重複して送信されるデータであることを判定する。送信予定データと一致する部分データを重複データと称する。重複データが存在する場合には、重複判定部１２は、送信予定データのインデックスをデータ送信部１４に出力する。重複判定部１２は、「判定部」の一例である。
【００４２】
送信予定データのインデックスには、例えば、インデックスであることを示すフラグ、送信予定データのアプリケーションの識別情報、通信開始からの送信予定データのオフセット、重複データのアプリケーションの識別情報、重複データのアプリケーションの送信側キャッシュ１６内における重複データのオフセット、送信予定データのサイズが含まれる。また、重複データのオフセットは、該当アプリケーションの送信側キャッシュ１６から取得される。送信予定データのインデックスは、「送信予定データの概要情報」の一例である。
【００４３】
キャッシュ保存部１３は、送信予定データが新規データである場合に重複判定部１２から該送信予定データの入力を受ける。キャッシュ保存部１３は、該送信予定データを、該送信予定データのアプリケーションの送信側キャッシュ１６内に格納されるデータの最後尾に追加する。
【００４４】
データ送信部１４は、例えば、データの送信元からの接続要求を受信側装置２に転送するとともに、受信側装置２との間にＴＣＰのセッションを確立する。データ送信部１４は、該セッションを用いて入力されたデータを受信側装置２に送信する。
【００４５】
例えば、重複判定部１２から送信予定データ自体の入力を受けた場合には、データ送信部１４は、送信予定データを受信側装置２に送信する。例えば、重複判定部１２から送信予定データのインデックスの入力を受けた場合には、データ送信部１４は、送信予定データのインデックスを受信側装置２に送信する。なお、データ送信部１４から送信されるデータには、アプリケーションの識別情報と、データの本来の宛先の情報、すなわち、ソケットの情報が添付されている。データ送信部１４は、「送信部」の一例である。
【００４６】
重複予測受信部１５は、受信側装置２から重複予測情報を受信する。重複予測受信部１５は、データ送信部１４と同じセッションを利用する。重複予測受信部１５は、受信した重複予測情報を該当アプリケーションの重複予測テーブル１７に反映させる。
【００４７】
重複予測テーブル１７は、例えば、主記憶装置１０２の記憶領域に格納される。重複予測テーブル１７に含まれる情報は、重複予測情報に含まれる情報と同じである。重複予測テーブル１７は、重複予測受信部１５によって、新たに受信された重複予測情報で上書きされる。重複予測テーブル１７及び重複予測情報の詳細については、後述される。
【００４８】
図６は、送信側キャッシュ１６内のデータ構造の一例を示す図である。送信側キャッシュ１６は、アプリケーションごとに補助記憶装置１０５内の記憶領域に作成される。例えば、キャッシュ保存部１３は、新規アプリケーションの送信予定データの入力を受けると、補助記憶装置１０５の送信側キャッシュ１６用に確保された記憶領域に該新規アプリケーションの送信側キャッシュ１６を作成する。
【００４９】
送信側キャッシュ１６は、送信実績のあるデータについて、送信オフセットと送信データとを含む。送信データは、データ受信部１１の処理バッファのサイズ又はそれ未満のサイズのデータブロックである。送信オフセットは、データの該当アプリケーションの送信側キャッシュ１６内におけるデータブロックの先頭位置である。例えば、オフセットは、０から始まり、該当アプリケーションの送信側キャッシュ１６内に既に８０ＫＢのデータが格納されている場合には、新たに格納されるデータのオフセットは、８００００となる。送信予定データのインデックスに含まれる重複データのオフセットは、送信側キャッシュ１６内の該当データの送信オフセットである。送信側キャッシュ１６は、「第２の記憶部」の一例である。
【００５０】
＜受信側装置＞
受信側装置２は、例えば、専用のサーバである。受信側装置２のハードウェア構成は、送信側装置１のハードウェア構成と類似しており、図示を省略する。すなわち、受信側装置２は、ＣＰＵ、主記憶装置、補助記憶装置、ネットワークインタフェースを備える。また、受信側装置２は、入力装置、出力装置、可搬記録媒体駆動装置等を備えてもよい。
【００５１】
受信側装置２の補助記憶装置には、ＯＳ、重複除去サーバプログラム、その他アプリケーション等が格納されている。重複除去サーバプログラムは、受信側装置２を重複除去サーバとして動作させるためのプログラムである。
【００５２】
図７は、受信側装置２の機能構成の一例を示す図である。受信側装置２は、機能構成として、データ受信部２１、チャンク分割部２２Ａ、ＳＨＡ１計算部２２Ｂ、ハッシュ探索部２２Ｃ、キャッシュ読出部２３、キャッシュ保存部２４、テーブル管理部２５、データ送信部２６、重複予測送信部２７を備える。これらの機能構成は、例えば、ＣＰＵが補助記憶装置に格納されている重複除去サーバプログラムを実行することによって実現される機能構成である。また、重複除去サーバプログラムが実行されることによって、補助記憶装置の記憶領域に受信側キャッシュ２８用の領域が確保される。また、主記憶装置の記憶領域には重複予測テーブルを格納するための領域が確保される。なお、重複除去サーバプログラムは、例えば、アプリケーション層のプログラムである。
【００５３】
データ受信部２１は、例えば、送信側装置１から接続要求を受信すると、ＴＣＰセッションを確立し、該ＴＣＰセッションを通じてデータを受信する。受信データが実データである場合には、データ受信部２１は、チャンク分割部２２Ａに受信データを出力する。受信データがインデックスである場合には、データ受信部２１は、キャッシュ読出部２３に受信データを出力する。例えば、インデックス内にはインデックスであることを示すフラグが含まれており、データ受信部２１は、該フラグによって受信データがインデックスであることを判定する。
【００５４】
なお、データ受信部２１は、所定サイズの処理バッファを保持しており、受信データは、受信側装置２においては該処理バッファのサイズの単位で処理される。処理バッファのサイズは、例えば、５０〜１００ＫＢである。ただし、処理バッファのサイズはこれに限定されない。また、データ受信部２１は、受信データのアプリケーションごとに、受信開始からのデータのオフセットを監視している。データ受信部２１は、「受信部」の一例である。
【００５５】
チャンク分割部２２Ａは、受信データをチャンクに分割する。チャンクのサイズは、所定のアルゴリズムによって決定される。チャンク分割部２２Ａは、受信データから作成された複数のチャンクをＳＨＡ１算出部２２Ｂに出力する。チャンク分割部２２Ａは、「分割部」の一例である。
【００５６】
ＳＨＡ１算出部２２Ｂは、受信データから作成された複数のチャンクそれぞれについてＳＨＡ１の計算を行う。ＳＨＡ１算出部２２Ｂは、各チャンクのＳＡＨ１の計算結果をハッシュ探索部２２Ｃに出力する。ＳＨＡ１算出部２２Ｂは、「算出部」の一例である。
【００５７】
ハッシュ探索部２２Ｃは、受信した各チャンクのＳＨＡ１の計算結果（ハッシュ値）をキーとして、全アプリケーションの受信側キャッシュ２８を探索する。ハッシュ探索部２２Ｃは、探索結果をキャッシュ保存部２４、テーブル管理部２５に出力する。ハッシュ探索部２２Ｃは、「探索部」の一例である。チャンク分割部２２Ａ、ＳＨＡ１算出部２２Ｂ、ハッシュ探索部２２Ｃは、まとめて、「重複検出部」の一例である。
【００５８】
テーブル管理部２５は、受信データのチャンクのうち少なくとも１つのチャンクについて、ＳＨＡ１の計算結果が一致するチャンクが受信側キャッシュ２８に検出された場合には、受信データのアプリケーションの重複予測テーブル２９を上書き更新する。このときの更新内容の一例は、動作モードの重複予測モードへの変更である。
【００５９】
テーブル管理部２５は、受信データのチャンクのいずれについても、ＳＨＡ１の計算結果が一致するチャンクが受信側キャッシュ２８にない場合には、受信データのアプリケーションの重複予測テーブル２９の更新は行わない。
【００６０】
キャッシュ保存部２４は、受信データのチャンクのうち、新規のチャンクを該当アプリケーションの受信側キャッシュ２８の最後尾に追加する。なお、受信データのチャンクのすべてが新規データである場合もあるし、一部のチャンクが新規データである場合もある。
【００６１】
キャッシュ読出部２３は、データ受信部２１からインデックスの入力を受ける。キャッシュ読出部２３は、該インデックスの情報に基づいて、該当するアプリケーションの受信側キャッシュ２８から該当のチャンクを読出し、データを復元してデータ送信部２６に出力する。キャッシュ読出部２３は、「転送部」の一例である。
【００６２】
データ送信部２６は、受信データ又は復元されたデータを宛先のアプリケーションに送信する。データ送信部２６は、送信側装置１から受信した接続要求を宛先に転送し、宛先のアプリケーションと、例えば、ＴＣＰセッションを確立し、該ＴＣＰセッションを通じてデータを送信する。宛先のアプリケーションは、受信側装置２内に存在してもよいし、別の装置内に存在していてもよい。第１実施形態では、宛先のアプリケーションの実行実体を特定せずに、単に、「宛先」と称する。データ送信部２６は、「送信部」の一例である。
【００６３】
重複予測送信部２７は、重複予測テーブルが作成又は更新された場合に、該重複予測テーブルを重複予測情報として送信側装置１に送信する。重複予測送信部２７は、「送信部」の一例である。
【００６４】
図８は、受信側キャッシュ２８のデータ構造の一例を示す図である。受信側キャッシュ２８は、例えば、アプリケーションごとに用意される。受信側キャッシュ２８では、各チャンクについて、ハッシュ値、アプリケーションＩＤ、受信オフセット、受信データが格納される。ハッシュ値は、ＳＨＡ１の計算結果の値である。受信オフセットは、該当チャンクの先頭のアプリケーションにおける位置である。受信側キャッシュは、「第１の記憶部」の一例である。
【００６５】
図９は、重複予測情報の一例を示す図である。上述の通り、送信側装置１で保持される重複予測テーブル１７と、受信側装置２で保持される重複予測テーブルと２９のフォーマットは、同一であり、重複予測情報のフォーマットと同様である。受信側装置２の重複予測テーブル２９は、受信側装置２のテーブル管理部２５によって作成及び更新される。
【００６６】
重複予測情報は、例えば、現アプリケーション種別、重複予測モード、重複アプリケーション種別、現アプリケーション重複開始位置、重複アプリケーション開始位置、重複予測長さの項目を含む。
【００６７】
現アプリケーション種別の項目には、受信側装置２の受信データのアプリケーションの識別情報が格納される。重複予測モードの項目には、「ｏｎ」、「ｏｆｆ」のいずれかが設定される。重複予測モードの項目に「ｏｎ」が設定されている場合には、送信側装置１の動作モードが重複予測モードに指定されていることが示される。重複予測モードの項目に「ｏｆｆ」が設定されている場合には、送信側装置１の動作モードが通常モードに指定されていることが示される。
【００６８】
重複アプリケーション種別の項目には、受信側装置２の受信データのチャンクと重複する受信側キャッシュ２８内のチャンクのアプリケーションの識別情報が格納される。同じデータが異なるアプリケーションによって用いられることもあるため、受信データのアプリケーションと、受信データと重複するデータが格納されているキャッシュのアプリケーションとが一致するとは限らない。以降、受信データ又は送信予定データと重複するデータを格納するキャッシュのアプリケーションを重複アプリケーションと称する。
【００６９】
現アプリケーション重複開始位置の項目には、受信側装置２における受信データのアプリケーションとの通信開始からの、重複が検出された受信データのチャンクのオフセットが格納される。現アプリケーション重複開始位置の項目に格納される値は、例えば、データ受信部２１から取得される。
【００７０】
重複アプリケーション重複開始位置の項目には、重複アプリケーションの受信側キャッシュ２８内における、受信データのチャンクに一致するチャンクの受信オフセットが格納される。重複アプリケーション重複開始位置の項目に格納される値は、重複アプリケーションの受信側キャッシュ２８から取得される。
【００７１】
重複予測長さの項目には、重複受信されるデータの予測されるデータの長さが格納される。重複予測長さの項目に格納される値は、例えば、重複アプリケーションの受信側キャッシュ２８に格納されるデータの量から受信データのチャンクに一致するチャンクの受信オフセットを減じた値である。
【００７２】
重複アプリケーション種別、現アプリケーション重複開始位置、重複アプリケーション重複開始位置、重複予測長さの項目は、重複予測モードの項目の値が「ｏｎ」以外の場合には、無効となる。なお、図９に示される重複予測情報のフォーマットは一例であって、これに限られない。例えば、重複予測情報は、重複予測長さの項目を含んでいなくてもよい。
【００７３】
例えば、アプリケーションＡの通信開始からのオフセット８００００の受信データのチャンクが、アプリケーションＢの受信側キャッシュ内の受信オフセット１０００００のチャンクと重複することが検出された場合に作成される重複予測情報は以下のようになる。なお、重複予測長さの項目については、以下の重複予測情報では省略されている。
（作成される重複予測情報）
アプリケーション種別：アプリケーションＡ
重複予測モード：ｏｎ
重複アプリケーション種別：アプリケーションＢ
現アプリケーション重複開始位置：８００００
重複アプリケーション重複開始位置：１０００００
【００７４】
次に、送信側装置１が上記重複予測情報を受信した後に、アプリケーションＡの通信開始からのオフセット９００００の送信予定データを送信する場合には、例えば、以下の処理が行われる。重複判定部１２は、アプリケーション種別の項目がアプリケーションＡである重複予測テーブル１７を参照し、重複アプリケーション種別の項目が示すアプリケーションＢの送信側キャッシュ１６を参照する。
【００７５】
重複判定部１２は、重複予測テーブル１７に基づいて、アプリケーションＢの送信側キャッシュ１６から、部分データを読み出し、該部分データと送信予定データとの比較を行う。部分データは、重複アプリケーション重複開始位置の項目の値に、アプリケーションＡの通信開始からの送信予定データのオフセットから現アプリケーション重複開始位置の項目の値を引いた値を加算した値を受信オフセットに持つデータである。この場合には、部分データの受信オフセット＝重複アプリケーション重複開始位置１０００００＋（９００００−８００００）＝１１００００となる。
【００７６】
アプリケーションＡの送信予定データとアプリケーションＢの部分データとが一致する場合、送信側装置１のデータ送信部１４は、送信予定データのインデックスを送信する。送信予定データのインデックスには以下の情報が含まれる。
（送信予定データのインデックスの情報）
インデックスフラグ：ｏｎ
現アプリケーション種別：アプリケーションＡ
現アプリケーション送信オフセット：９００００
重複アプリケーション種別：アプリケーションＢ
重複アプリケーションオフセット：１１００００
データ長：８０ＫＢ
【００７７】
上記送信予定データのインデックスを受信側装置２が受信すると、キャッシュ読出部２３は、インデックスに含まれる情報に基づいて処理を行う。具体的には、キャッシュ読出部２３は、アプリケーションＢの受信側キャッシュ２８から、オフセット１１０００から１９０００に含まれるチャンクを読出し、データを復元する。
【００７８】
＜処理の流れ＞
図１０は、送信側装置１の処理のフローチャートの一例である。図１０に示される処理は、例えば、データ送信元のアプリケーションとのＴＣＰセッションが確立すると開始される。
【００７９】
ＯＰ１では、キャッシュ保存部１３は、セッションが確立されたアプリケーションの送信側キャッシュ１６の送信オフセットを０に設定して、初期化する。また、重複予測受信部１５は、重複予測テーブル１７を初期化する。次に処理がＯＰ２に進む。
【００８０】
ＯＰ２では、送信側装置１はデータを受信する。受信データが重複予測情報である場合には（ＯＰ３：ＹＥＳ）、処理がＯＰ４に進む。受信データが重複予測情報でない場合には（ＯＰ３：ＮＯ）、すなわち、受信データがアプリケーションからの送信予定データである場合には、処理がＯＰ５に進む。
【００８１】
ＯＰ４では、重複予測受信部１５は、重複予測情報を受信したので、該重複予測情報を重複予測テーブル１７にコピーする。その後、図１０に示される処理が終了する。なお、次に、送信側装置１がデータを受信した場合には、処理がＯＰ２から開始される。
【００８２】
ＯＰ５では、データ受信部１１は、重複予測テーブル１７を参照して、動作モードが重複予測モードであるか否かを判定する。データ受信部１１は、送信元のアプリケーションとソケット通信しているため、受信データのアプリケーションの識別情報を取得可能であり、受信データのアプリケーションに該当する重複予測テーブル１７を参照する。
【００８３】
動作モードが重複予測モードである場合には（ＯＰ５：ＹＥＳ）、処理がＯＰ６に進む。動作モードが重複予測モードでない場合には（ＯＰ５：ＮＯ）、処理がＯＰ９に進む。
【００８４】
ＯＰ６〜ＯＰ９は、動作モードが重複予測モードである場合の処理である。ＯＰ６では、重複判定部１２は、重複予測テーブル１７に基づいて、重複アプリケーションの送信側キャッシュ１６から送信予定データと比較する部分データを読み出す。部分データの読出し方法については、上述の通りである。次に処理がＯＰ７に進む。
【００８５】
ＯＰ７では、重複判定部１２は、送信予定データと部分データとのメモリを比較し、重複の有無を判定する。送信予定データと部分データとが一致している場合には（ＯＰ７：ＹＥＳ）、処理がＯＰ８に進む。送信予定データと部分データとが一致していない場合には（ＯＰ７：ＮＯ）、処理がＯＰ９に進む。
【００８６】
ＯＰ８では、送信予定データと部分データとが一致しているので、データ送信部１４は、送信予定データのインデックスを受信側装置２に送信する。その後、図１０に示される処理が終了し、次に同じアプリケーションからデータが受信されるとＯＰ２から処理が開始される。
【００８７】
ＯＰ９〜ＯＰ１１は、動作モードが通常モードである場合、及び、動作モードが重複予測モードであり、且つ、送信予定データと部分データとが一致しない場合の処理である。ＯＰ９では、キャッシュ保存部１３は、送信予定データを、該当アプリケーションの送信側キャッシュ１６に格納する。次に処理がＯＰ１０に進む。
【００８８】
ＯＰ１０では、キャッシュ保存部１３は、該当の送信側キャッシュ１６内の次に格納されるデータの送信オフセットを、送信予定データの送信オフセットに送信予定データのサイズを加えた値に更新する。次に処理がＯＰ１１に進む。
【００８９】
ＯＰ１１では、データ送信部１４は、送信予定データの実データを受信側装置２に送信する。その後、図１０に示される処理が終了し、次に同じアプリケーションからデータが受信されるとＯＰ２から処理が開始される。
【００９０】
図１１は、受信側装置２の処理のフローチャートの一例である。図１１に示される処理は、送信側装置１と受信側装置２との間で、例えば、ＴＣＰのセッションが確立されると開始される。
【００９１】
ＯＰ２１では、受信側装置２では、初期化処理が行われる。具体的には、キャッシュ保存部２４は、セッションが確立されたアプリケーションの受信側キャッシュ２８の受信オフセットを０に設定する。テーブル管理部２５は、重複予測テーブル２９を初期化する。なお、動作モードの初期値は通常モードであるため、重複予測テーブル２９内の重複予測モードの項目はｏｆｆとなる。次に処理がＯＰ２２に進む。
【００９２】
ＯＰ２２では、データ受信部２１は、データを受信する。受信データがインデックスの場合には（ＯＰ２３：ＹＥＳ）、処理がＯＰ２４に進む。受信データが実データである場合には（ＯＰ２３：ＮＯ）、処理がＯＰ２６に進む。
【００９３】
ＯＰ２４では、キャッシュ読出部２３は、受信したインデックスに含まれる情報に基づいて、重複アプリケーションの受信側キャッシュ２８から該当のチャンクを読み込み、データを復元する。次に処理がＯＰ２５に進む。
【００９４】
ＯＰ２５では、データ送信部２６は、宛先にデータを送信する。その後、図１１に示される処理が終了し、次のデータを受信した場合には、ＯＰ２２から処理が開始される。
【００９５】
ＯＰ２６以降の処理は、受信データが実データである場合の処理である。ＯＰ２６では、チャンク分割部２２Ａは、受信データをチャンクに分割する。次に処理がＯＰ２７に進む。
【００９６】
ＯＰ２７では、ＳＨＡ１算出部２２Ｂは、各チャンクについて、ＳＨＡ１の計算を行う。次に処理がＯＰ２８に進む。
【００９７】
ＯＰ２８では、ハッシュ探索部２２Ｃは、各チャンクについて、各アプリケーションの受信側キャッシュ２８を探索する。受信側キャッシュ２８に格納されるチャンクの中にＳＨＡ１の計算結果が一致するチャンクが少なくとも１つある場合には（ＯＰ２９：ＹＥＳ）、処理がＯＰ３３に進む。受信側キャッシュ２８に格納されるチャンクの中にＳＨＡ１の計算結果が一致するチャンクがない場合には（ＯＰ２９：ＮＯ）、処理がＯＰ３０に進む。
【００９８】
ＯＰ３０、ＯＰ３１の処理は、受信側キャッシュ２８に格納されるチャンクの中にＳＨＡ１の計算結果が一致するチャンクがない、すなわち、受信データが新規のデータである場合の処理である。ＯＰ３０では、テーブル管理部２５は、受信データのアプリケーションの重複予測テーブル２９を参照し、重複予測モードの項目が「ｏｎ」であるか否かを判定する。重複予測モードの項目が「ｏｎ」の場合には（ＯＰ３０：ＹＥＳ）、処理がＯＰ３１に進む。重複予測モードの項目が「ｏｆｆ」の場合には（ＯＰ３０：ＮＯ）、処理がＯＰ３２に進む。
【００９９】
ＯＰ３１では、受信データが新規のデータであって、且つ、重複予測モードの項目の値が「ｏｎ」であるので、テーブル管理部２５は、データの重複受信の終了を検出し、受信データのアプリケーションの重複予測テーブル２９の重複予測モードの項目を「ｏｆｆ」に設定する。この重複予測テーブル２９の更新によって、重複予測送信部２７は、送信側装置１に、重複予測モードの項目が「ｏｆｆ」の重複予測情報を送信する。次に処理がＯＰ３２に進む。
【０１００】
ＯＰ３２では、キャッシュ保存部２４は、受信データのチャンクを該当の受信側キャッシュ２８に格納し、次の受信オフセットを設定する。次の受信オフセットは、格納されたチャンクのオフセットに該チャンクのサイズを加算した値となる。次に処理がＯＰ２５に進み、受信データが宛先に送信される。その後、図１１に示される処理が終了し、次のデータを受信した場合には、ＯＰ２２から処理が開始される。
【０１０１】
ＯＰ３３〜ＯＰ３５は、受信側キャッシュ２８に格納されるチャンクの中にＳＨＡ１の計算結果が一致するチャンクが少なくとも１つある場合、すなわち、受信データの一部又は全部が重複している場合の処理である。ＯＰ３３では、テーブル管理部２５は、受信データのアプリケーションの重複予測テーブル２９を参照し、重複予測モードの項目が「ｏｆｆ」であるか否かを判定する。
【０１０２】
重複予測モードの項目が「ｏｎ」の場合には（ＯＰ３３：ＮＯ）、処理がＯＰ３２に進む。ＯＰ３２では、受信データのチャンクの中に新規のものがある場合に、キャッシュ保存部２４は、該新規のチャンクを受信側キャッシュ２８に格納して、次の受信オフセットを設定する。その後、処理がＯＰ２５に進み、受信データが宛先に送信される。
【０１０３】
重複予測モードの項目が「ｏｆｆ」の場合には（ＯＰ３３：ＹＥＳ）、処理がＯＰ３４に進む。ＯＰ３４では、テーブル管理部２５が受信データのアプリケーションの重複予測テーブル２９を更新する。具体的には、テーブル管理部２５は、予測重複モードの項目を「ｏｎ」に設定する。また、重複アプリケーションの項目、重複アプリケーション重複開始位置の項目、現アプリケーション重複開始位置、の項目も適宜更新される。次に処理がＯＰ３５に進む。
【０１０４】
ＯＰ３５では、重複予測送信部２７は、更新された重複予測テーブルの内容を重複予測テーブルとして送信側装置１に送信する。次に処理がＯＰ３２に進む。ＯＰ３２では、受信データのチャンクの中に新規のものがある場合に、キャッシュ保存部２４は、該新規のチャンクを受信側キャッシュ２８に格納して、次の受信オフセットを設定する。その後、処理がＯＰ２５に進み、受信データが宛先に送信される。
【０１０５】
なお、図１１に示されるフローチャートは、一例であり、各処理の実行順等はこれに限られず、適宜、実行順を変更してもよい。例えば、ＯＰ２５の宛先に受信データを送信する処理は、ＯＰ３１やＯＰ３５の重複予測情報の送信処理の前に行われてもよい。
【０１０６】
＜具体例＞
図１２は、具体例における処理対象データの設定を示す図である。具体例では、送信側装置１及び受信側装置２は、ともに、アプリケーションＸのキャッシュにデータＡ、データＢ、データＣを保持している。データＡ、データＢ、データＣは、それぞれ、１００ＫＢとする。送信側装置１及び受信側装置２において、データＡ、データＢ、データＣのオフセットは、それぞれ、０、１０００００（１００Ｋ）、２０００００（２００Ｋ）である。なお、受信側装置２は、各データをチャンクの形式で保持するが（図８参照）、図１２では、便宜上、送信側装置１と同様に示されている。
【０１０７】
具体例は、送信側装置１が、アプリケーションＹのデータＸの送信後に、データＡ、データＢを送信した場合を想定する。データＸのサイズは、１００ＫＢとする。この通信においてデータＸ、データＡ、データＢのオフセットは、それぞれ、０、１０００００（１００Ｋ）、２０００００（２００Ｋ）である。
【０１０８】
図１３Ａ及び図１３Ｂは、具体例におけるシーケンス図の一例である。図１３Ａでは、送信側装置１が、アプリケーションＹのデータＸの後にデータＡを送信する場合が示される。なお、クライアント装置からサーバ装置へ接続要求が送信され、該接続要求を送信側装置１が受信すると、送信側装置１から受信側装置２へ接続要求が送信されることによって送信側装置１と受信側装置２との間のセッションの確立処理が行われる。また、これとともに、クライアント装置と送信側装置１、受信側装置２とサーバ装置との間にもセッションが確立される。
【０１０９】
Ｓ１では、クライアント装置がアプリケーションＹのデータＡを送信する。Ｓ２では、送信側装置１がアプリケーションＹのデータＡを受信する（図１０、ＯＰ２）。
【０１１０】
Ｓ３では、動作モードが初期値の通常モードであるので（図１０、ＯＰ５：ＮＯ）、送信側装置１は、データＡを受信側装置２に送信する（図１０、ＯＰ１１）。
【０１１１】
Ｓ４では、受信側装置２は、データＡを受信する（図１１、ＯＰ２２）。Ｓ５では、受信データが実データＡであるので（図１１、ＯＰ２３：ＮＯ）、受信側装置２は、データＡをチャンクに分割し、各チャンクのＳＨＡ１を計算し、キャッシュを探索して、データＡの重複受信を検出する（図１１、ＯＰ２６〜ＯＰ２９）。
【０１１２】
このとき、データＡは、アプリケーションＸの受信側キャッシュ２８で検出される（図１２参照）。すなわち、重複アプリケーションは、アプリケーションＸであり、重複アプリケーション重複開始位置は、アプリケーションＸの受信側キャッシュ２８内の受信オフセット０となる。
【０１１３】
Ｓ６では、受信側装置２は、重複予測テーブルを更新する（図１１、ＯＰ３３〜ＯＰ３４）。重複予測モードは、ｏｆｆからｏｎに変更される。Ｓ７では、受信側装置２は、重複予測情報を受信側装置２に送信する（図１１、ＯＰ３５）。重複予測情報に含まれる情報は以下の通りである。
（重複予測情報）
現アプリケーション種別：アプリケーションＸ
重複予測モード：ｏｎ
現アプリケーション重複開始位置：１０００００
重複アプリケーション種別：アプリケーションＹ
重複アプリケーション重複開始位置：０
【０１１４】
Ｓ８では、送信側装置１は重複予測情報を受信する（図１０、ＯＰ２、ＯＰ３：ＹＥＳ）。Ｓ９では、送信側装置１は、重複予測情報を重複予測テーブル１７にコピーする（図１０、ＯＰ４）。Ｓ１０では、受信側装置２は、宛先にデータＡを送信する（図１１、ＯＰ２５）。
【０１１５】
図１３Ｂは、図１３Ａの処理に続いて、送信側装置１がアプリケーションＹのデータＢを送信する場合が示される。Ｓ１１では、クライアント装置がアプリケーションＹのデータＢを送信する。Ｓ１２では、送信側装置１は、アプリケーションＹのデータＢを受信する（図１０、ＯＰ２）。
【０１１６】
Ｓ１３では、送信側装置１は、動作モードが重複予測モードであるので（図１０、ＯＰ５：ＹＥＳ）、データＢについて、重複判定を行う。このとき、重複予測テーブル内の重複アプリケーション種別であるアプリケーションＸの送信側キャッシュ１６から部分データが取得される。
【０１１７】
重複予測情報では、重複アプリケーション種別：アプリケーションＸ、重複アプリケーション重複開始位置：０、現アプリケーション重複開始位置：１０００００、である。また、アプリケーションＹにおいてデータＢのオフセットは２０００００である。したがって、アプリケーションＸの送信側キャッシュ１６における部分データのオフセットは、０＋（２０００００−１０００００）＝１０００００となる。
【０１１８】
すなわち、部分データとして、アプリケーションＸの送信側キャッシュ１６の送信オフセット１０００００のデータが取得される。部分データはデータＢであるので（図１２参照）、送信側装置１は、重複送信を検出する（図１０、ＯＰ７：ＹＥＳ）。
【０１１９】
Ｓ１４では、送信側装置１はデータＢのインデックスを送信する。データＢのインデックスには、以下の情報が含まれる。
（データＢのインデックス）
現アプリケーション種別：Ｙ
重複アプリケーション種別：Ｘ
重複アプリケーション重複開始位置：１０００００
データの長さ：１００ＫＢ
【０１２０】
Ｓ１５では、受信側装置２はデータＢのインデックスを受信する（図１１、ＯＰ２２、ＯＰ２３：ＹＥＳ）。Ｓ１６では、受信側装置２は、インデックスに含まれる情報に基づいて、アプリケーションＸの受信側キャッシュ２８の受信オフセット１０００００〜２０００００に含まれるチャンクを読み込む（図１１、ＯＰ２４）。Ｓ１７では、チャンクからデータＢを復元し、宛先に送信する（図１１、ＯＰ２５）。
【０１２１】
＜第１実施形態の作用効果＞
第１実施形態では、受信側装置２がデータの重複受信を検出し、送信側装置１に重複予測情報を通知し、送信側装置１が重複予測情報に基づいて、送信予定データと部分データとの比較という比較的負荷の軽い重複判定処理を行う。したがって、第１実施形態では、重複データの除去処理において、送信側装置１に係る負荷を軽減することができる。
【０１２２】
チャンク分割、ＳＨＡ１計算、ハッシュ探索等を、送信側装置1ではなく受信側装置２が行うことによって、例えば、送信側装置１のＣＰＵの利用率を、およそ４分の１にすることができる。
【０１２３】
重複予測情報には、重複アプリケーションと、重複アプリケーションにおける重複開始位置等の情報が含まれているため、送信側装置１は、それらの情報を参照することによって、送信予定データの比較対象となる部分データを容易に取得することができる。これによって、送信側装置１の処理負荷をより軽減することができる。
【０１２４】
また、送信側装置１は、重複予測モードで動作している場合でも、送信予定データと重複アプリケーションの部分データとで重複検出処理を行う。送信予定データ内に新規な部分が含まれている場合には、送信側装置１は、重複予測モードで動作していても、送信予定データを受信側装置２に送信する。受信側装置２が該送信予定データ（受信側装置２にとっては受信データ）を受信した場合には、該受信データは、そのまま宛先に転送される（図１１、ＯＰ２５）。したがって、送信側装置１が重複予測モードで動作している際に送信予定データに新規のデータが含まれている場合でも、該新規データは正しく宛先に送信される。
【０１２５】
また、受信側装置２が新規データを含む受信データを受信し、該受信データに対して重複するチャンクが見つからない場合には、受信側装置２は重複予測モードを「ｏｆｆ」に設定して重複予測情報を送信側装置１に送信する。この重複予測情報を送信側装置１が受信すると、送信側装置１は通常モードで動作を開始する。これによって、受信側装置２が送信側装置１の動作モードを制御することができる。
【０１２６】
以上より、送信側装置１に係る負荷が軽減されることによって、送信側装置１として、例えば、スマートフォン、タブレット端末、ＰＣ等の比較的性能の低い端末装置を採用することができる。言い換えると、第１実施形態に係るデータ重複除去クライアントプログラムを、端末装置に搭載することができる。
【０１２７】
図１４は、第１実施形態に係るデータ重複除去システム１００の効果を示す図である。図１４では、１００ＭｂｉｔのトラフィックデータＸを転送速度１０Ｍｂｐｓの物理回線ｂｗを用いて転送する場合の、図１に示されるデータ重複除去システムＰ１００と第１実施形態に係るデータ重複除去システム１００との転送時間が示される。
【０１２８】
送信側装置Ｐ１におけるデータ重複除去処理に係る速度（重複除去速度）ｄｖを１０Ｍｂｐｓとする。送信側装置１における重複除去速度ｄｗを４０Ｍｂｐｓとする。送信側装置１のＣＰＵの利用率は、送信側装置がチャンク分割、ＳＨＡ１計算、ハッシュ探索等を行う場合に比べて、およそ４分の１になるからである。
【０１２９】
また、トラフィックデータ１００Ｍｂｉｔのうち９０％が重複していることとする。この場合、データ重複除去処理によって、実データで送信されるデータの割合は１０％にまで削減される。すなわち、データ重複除去処理による実データの削減率（重複除去削減率）ｒは、０．１であるとする。
【０１３０】
上記前提において、（１）データ重複除去処理が行われない場合には、転送時間は、Ｘ／ｂｗ＝１００Ｍ／１０Ｍｂｐｓ＝１０ｓとなる。（２）データ重複除去システムＰ１００では、Ｘ／ｄｖ＋Ｘ＊ｒ／ｂｗ＝１００Ｍ／１０Ｍｂｐｓ＋１００Ｍ＊０．１／１０Ｍｂｐｓ＝１１ｓとなる。（３）データ重複除去システム１００では、Ｘ／ｄｗ＋Ｘ＊ｒ／ｂｗ＝１００Ｍ／４０Ｍｂｐｓ＋１００Ｍ＊０．１／１０Ｍｂｐｓ＝３．５ｓとなる。
【０１３１】
すなわち、第１実施形態に係るデータ重複除去システム１００のデータ転送時間が最も短くなる。したがって、第１実施形態によれば、１０Ｍｂｐｓ等の低速な回線での通信において、送信側装置１の処理負荷が軽減されることによって、データ転送に係る時間を短縮することができる。
【０１３２】
また、送信側装置１及び受信側装置２は、いずれの処理を行う場合にも、送信又は受信されるデータの内容に関知しない。すなわち、送信側装置１及び受信側装置２は、アプリケーションがどのようなデータを取り扱っていたとしても、データの内容にかかわらず、データ重複除去処理を行うことができる。したがって、第１実施形態のデータ重複除去システム１００は、いずれのアプリケーションの通信を行うシステムについて適用することができる。
【０１３３】
＜変形例＞
例えば、受信側装置２のＣＰＵに係る処理負荷が所定の閾値よりも高い場合には、送信側装置１がチャンク分割、ＳＨＡ１計算、ハッシュ探索の処理を行うようにしてもよい。例えば、送信側装置１に、チャンク分割部、ＳＨＡ１算出部、ハッシュ探索部を備え、重複予測情報の重複予測モードに「オフロード」を追加することで実現可能である。
【０１３４】
受信側装置２は、ＣＰＵ負荷が所定閾値を超えた場合に、重複予測モードに「オフロード」が設定された重複予測情報を送信側装置１に送信する。送信側装置１は、該重複予測情報を受信すると、チャンク分割部、ＳＨＡ１算出部、ハッシュ探索部に送信予定データを出力し、例えば、図１の送信側装置Ｐ１と同様に処理を行う。
【０１３５】
これによって、受信側装置２の処理負荷が高くなった場合に、受信側装置２の処理負荷を軽減させることができる。
【０１３６】
また、第１実施形態では、アプリケーションのユーザを識別することについては言及していないが、アプリケーションのユーザが複数存在する場合には、送信側キャッシュ１６及び受信側キャッシュ２８は、それぞれ、ユーザ毎且つアプリケーション毎に作成される。すなわち、アプリケーションのユーザが複数存在する場合には、送信側キャッシュ１６及び受信側キャッシュ２８は、ユーザ識別情報とアプリケーション識別情報との組み合わせで識別される。
【０１３７】
＜記録媒体＞
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【０１３８】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる非一時的な記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ＲＯＭ（リードオンリーメモリ）等がある。さらに、ＳＳＤ（Solid State Drive）は、コンピュータ等から取り外し可能な記録媒体としても、コンピュータ等に固定された記録媒体としても利用可能である。
【符号の説明】
【０１３９】
１        送信側装置
２        受信側装置
１１、２１    データ受信部
１２      重複判定部
１３      キャッシュ保存部
１４、２６    データ送信部
１５      重複予測受信部
１６      送信側キャッシュ
１７、２９    重複予測テーブル
２２Ａ    チャンク分割部
２２Ｂ    ＳＨＡ１算出部
２２Ｃ    ハッシュ探索部
２３      キャッシュ読出部
２４      キャッシュ保存部
２５      テーブル管理部
２７      重複予測送信部
２８      送信側キャッシュ
１０１    ＣＰＵ
１０２    主記憶装置
１０５    補助記憶装置
１０７    ネットワークインタフェース
【図１】
2016035194.tif 000003
【図２】
2016035194.tif 000004
【図３】
2016035194.tif 000005
【図４】
2016035194.tif 000006
【図５】
2016035194.tif 000007
【図６】
2016035194.tif 000008
【図７】
2016035194.tif 000009
【図８】
2016035194.tif 000010
【図９】
2016035194.tif 000011
【図１０】
2016035194.tif 000012
【図１１】
2016035194.tif 000013
【図１２】
2016035194.tif 000014
【図１３Ａ】
2016035194.tif 000015
【図１３Ｂ】
2016035194.tif 000016
【図１４】
2016035194.tif 000017
【手続補正書】
【提出日】平成29年3月8日(2017.3.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
送信側装置と受信側装置とを含む情報処理システムであって、
前記受信側装置は、
受信実績のある第１のデータを記憶する第１の記憶部と、
前記送信側装置からデータを受信する受信部と、
前記受信データの少なくとも一部と重複するデータが前記第１の記憶部に記憶されているか否かを判定する重複検出部と、
前記受信データの少なくとも一部と重複するデータが前記第１の記憶部に記憶されている場合に、前記送信側装置に、前記第１のデータの重複受信の予測情報を通知する通知部と、
を備え、
前記送信側装置は、
送信実績のある前記第１のデータを記憶する第２の記憶部と、
前記受信側装置から前記予測情報を受信している場合に、前記重複受信の予測情報に基づいて送信予定データと前記第１のデータの一部とを比較し、前記送信予定データに合致する前記第２の記憶部内の前記第１のデータの一部の有無を判定する判定部と、
前記送信予定データに合致する前記第１のデータの一部が前記第２の記憶部内にある場合に、該送信予定データの代わりに前記送信予定データの概要情報を送信する送信部と、
を備える、
情報処理システム。
【請求項２】
前記第１の記憶部は、前記第１のデータの所定長に分割された複数の第１のデータブロックと、該複数の第１のデータブロックの識別情報とを記憶し、
前記重複検出部は、
前記受信データを前記所定長の複数の第２のデータブロックに分割する分割部と、
前記第２のデータブロックの前記識別情報を算出する算出部と、
前記第２のデータブロックの前記識別情報に一致する前記第１のデータブロックの探索を行う探索部と、
を備える請求項１に記載の情報処理システム。
【請求項３】
前記受信側装置の前記通知部は、前記予測情報に、受信開始からの前記受信データの位置と、前記受信データの前記第１のデータにおける位置とを含めて通知する、
請求項１又は２に記載の情報処理システム。
【請求項４】
前記受信側装置は、
前記送信側装置から前記送信予定データの概要情報を受信した場合に、前記第１の記憶部から前記送信予定データに該当する分の第１のデータブロックを読出し、読み出した第１のデータブロックから前記送信予定データを復元する読出部と、
該復元された前記送信予定データを宛先に転送する転送部と、
をさらに備える請求項２又は３に記載の情報処理システム。
【請求項５】
前記送信側装置の前記送信部は、前記送信予定データと一致する前記第１のデータの一部が前記第２の記憶部に存在しない場合に、前記送信予定データを送信する、
請求項１から４のいずれか一項に記載の情報処理システム。
【請求項６】
前記受信側装置の前記通知部は、前記受信データの少なくとも一部に一致する前記第１のデータの一部が前記第１の記憶部に記憶されていない場合に、前記第１のデータの重複受信の終了の予測情報を前記送信側装置に通知し、
前記送信側装置の前記送信部は、前記第１のデータの重複受信の終了の予測情報を受信している場合には、前記送信予定データを送信する、
請求項５に記載の情報処理システム。
【請求項７】
受信実績のある第１のデータを記憶する記憶部と、
送信側装置からデータを受信する受信部と、
前記受信データの少なくとも一部と重複するデータが前記記憶部に記憶されているか否かを判定する重複検出部と、
前記受信データの少なくとも一部と重複するデータが前記記憶部に記憶されている場合に、前記送信側装置に、前記第１のデータの重複受信の予測情報を通知する通知部と、
を備える情報処理装置。
【請求項８】
送信実績のある第１のデータを記憶する記憶部と、
受信側装置から前記第１のデータの重複受信の予測情報を受信している場合に、前記重複受信の予測情報に基づいて送信予定データと前記第１のデータの一部とを比較し、前記送信予定データに合致する前記記憶部内の前記第１のデータの一部の有無を判定する判定部と、
前記送信予定データに合致する前記第１のデータの一部が前記記憶部内にある場合に、該送信予定データの代わりに前記送信予定データの概要情報を送信する送信部と、
を備える情報処理装置。
【請求項９】
それぞれプロセッサとメモリとを備える送信側装置と受信側装置とを含む情報処理システムにおいて、
前記受信側装置のプロセッサが、
受信実績のある第１のデータを前記受信側装置のメモリに記憶し、
前記送信側装置からデータを受信し、
前記受信データの少なくとも一部と重複するデータが前記メモリに記憶されているか否かを判定し、
前記受信データの少なくとも一部と重複するデータが前記メモリに記憶されている場合に、前記送信側装置に、前記第１のデータの重複受信の予測情報を通知し、
前記送信側装置のプロセッサが、
送信実績のある前記第１のデータを前記送信側装置のメモリに記憶し、
前記受信側装置から前記予測情報を受信している場合に、前記重複受信の予測情報に基づいて送信予定データと前記第１のデータの一部とを比較し、前記送信予定データに合致する前記メモリ内の前記第１のデータの一部の有無を判定し、
前記送信予定データに合致する前記第１のデータの一部が前記メモリ内にある場合に、該送信予定データの代わりに前記送信予定データの概要情報を送信する、
情報処理方法。
【請求項１０】
プロセッサとメモリとを含む情報処理装置において、前記プロセッサが、
受信実績のある第１のデータを前記メモリに記憶し、
送信側装置からデータを受信し、
前記受信データの少なくとも一部と重複するデータが前記メモリに記憶されているか否かを判定し、
前記受信データの少なくとも一部と重複するデータが前記メモリに記憶されている場合に、前記送信側装置に、前記第１のデータの重複受信の予測情報を通知する、
情報処理方法。
【請求項１１】
プロセッサとメモリとを含む情報処理装置において、前記プロセッサが、
送信実績のある第１のデータを前記メモリに記憶し、
受信側装置から前記第１のデータの重複受信の予測情報を受信している場合に、前記重複受信の予測情報に基づいて送信予定データと前記第１のデータの一部とを比較し、前記送信予定データに合致する前記メモリ内の前記第１のデータの一部の有無を判定し、
前記送信予定データに合致する前記第１のデータの一部が前記メモリ内にある場合に、該送信予定データの代わりに前記送信予定データの概要情報を送信する、
情報処理方法。
【請求項１２】
送信側装置と受信側装置とを含む情報処理システムにおいて、
前記受信側装置に、
受信実績のある第１のデータを第１の記憶部に記憶させ、
前記送信側装置からデータを受信させ、
前記受信データの少なくとも一部と重複するデータが前記第１の記憶部に記憶されているか否かを判定させ、
前記受信データの少なくとも一部と重複するデータが前記第１の記憶部に記憶されている場合に、前記送信側装置に、前記第１のデータの重複受信の予測情報を通知させ、
前記送信側装置に、
送信実績のある前記第１のデータを第２の記憶部に記憶させ、
前記受信側装置から前記予測情報を受信している場合に、前記重複受信の予測情報に基づいて送信予定データと前記第１のデータの一部とを比較させ、前記送信予定データに合致する前記第２の記憶部内の前記第１のデータの一部の有無を判定させ、
前記送信予定データに合致する前記第１のデータの一部が前記第２の記憶部内にある場合に、該送信予定データの代わりに前記送信予定データの概要情報を送信させる、
ための情報処理プログラム。
【請求項１３】
情報処理装置に、
受信実績のある第１のデータを記憶部に記憶させ、
送信側装置からデータを受信させ、
前記受信データの少なくとも一部と重複するデータが前記記憶部に記憶されているか否かを判定させ、
前記受信データの少なくとも一部と重複するデータが前記記憶部に記憶されている場合に、前記送信側装置に、前記第１のデータの重複受信の予測情報を通知させる、
ための情報処理プログラム。
【請求項１４】
情報処理装置に、
送信実績のある第１のデータを記憶部に記憶させ、
前記受信側装置から前記第１のデータの重複受信の予測情報を受信している場合に、前記重複受信の予測情報に基づいて送信予定データと前記第１のデータの一部とを比較させ、前記送信予定データに合致する前記記憶部内の前記第１のデータの一部の有無を判定させ、
前記送信予定データに合致する前記第１のデータの一部が前記記憶部にある場合に、該送信予定データの代わりに前記送信予定データの概要情報を送信させる、
情報処理プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００５
【補正方法】変更
【補正の内容】
【０００５】
しかしながら、送信側装置で行われる送信データの重複判定処理は、負荷が大きく、オーバヘッドとなる。送信データの重複がある場合には、送信データの重複判定処理のオーバヘッドはデータ削減による使用帯域の削減効果によって相殺される。しかしながら、送信データの重複がない場合には、送信データの重複判定処理は無視できないオーバヘッドとなる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００５６
【補正方法】変更
【補正の内容】
【００５６】
ＳＨＡ１算出部２２Ｂは、受信データから作成された複数のチャンクそれぞれについてＳＨＡ１の計算を行う。ＳＨＡ１算出部２２Ｂは、各チャンクのＳＨＡ１の計算結果をハッシュ探索部２２Ｃに出力する。ＳＨＡ１算出部２２Ｂは、「算出部」の一例である。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００６５
【補正方法】変更
【補正の内容】
【００６５】
図９は、重複予測情報の一例を示す図である。上述の通り、送信側装置１で保持される重複予測テーブル１７と、受信側装置２で保持される重複予測テーブル２９とのフォーマットは、同一であり、重複予測情報のフォーマットと同様である。受信側装置２の重複予測テーブル２９は、受信側装置２のテーブル管理部２５によって作成及び更新される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００７７
【補正方法】変更
【補正の内容】
【００７７】
上記送信予定データのインデックスを受信側装置２が受信すると、キャッシュ読出部２３は、インデックスに含まれる情報に基づいて処理を行う。具体的には、キャッシュ読出部２３は、アプリケーションＢの受信側キャッシュ２８から、オフセット１１００００から１９００００に含まれるチャンクを読出し、データを復元する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１１３
【補正方法】変更
【補正の内容】
【０１１３】
Ｓ６では、受信側装置２は、重複予測テーブルを更新する（図１１、ＯＰ３３〜ＯＰ３４）。重複予測モードは、ｏｆｆからｏｎに変更される。Ｓ７では、受信側装置２は、重複予測情報を送信側装置１に送信する（図１１、ＯＰ３５）。重複予測情報に含まれる情報は以下の通りである。
（重複予測情報）
現アプリケーション種別：アプリケーションＹ
重複予測モード：ｏｎ
現アプリケーション重複開始位置：１０００００
重複アプリケーション種別：アプリケーションＸ
重複アプリケーション重複開始位置：０
【国際調査報告】
2016035194.tif 000018
2016035194.tif 000019
2016035194.tif 000020