(57)【要約】【課題】データ転送時間を短縮する装置および方法を提供する。【解決手段】通信装置は、受信部、測定部、削減部、送信部を備える。受信部は、通信データを受信する。測定部は、相手装置との間の通信において使用可能な通信帯域を測定する。削減部は、測定部により測定された通信帯域に基づいてデータ量の削減率に係わるパラメータを決定し、決定したパラメータに応じて通信データのデータ量を削減する。送信部は、削減部によりデータ量が削減された通信データを相手装置に送信する。【選択図】図２
2019193092.tif 000002
【特許請求の範囲】
【請求項１】
通信データを受信する受信部と、
相手装置との間の通信において使用可能な通信帯域を測定する測定部と、
前記測定部により測定された通信帯域に基づいてデータ量の削減率に係わるパラメータを決定し、前記パラメータに応じて前記通信データのデータ量を削減する削減部と、
前記削減部によりデータ量が削減された通信データを前記相手装置に送信する送信部と
を備える通信装置。
【請求項２】
前記削減部は、前記削減部において前記通信データのデータ量を削減する処理に要する処理時間および前記データ量が削減された通信データを前記通信装置から前記相手装置に伝送するために要するネットワーク転送時間の和を最小化するように前記パラメータを決定し、決定したパラメータに応じて前記通信データのデータ量を削減する
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記削減部は、
前記通信データを圧縮する圧縮部と、
前記測定部により測定された通信帯域に基づいて前記パラメータを決定するパラメータ決定部と、を備え、
前記圧縮部は、前記パラメータ決定部により決定されるパラメータに従って前記通信データを圧縮する
ことを特徴とする請求項１に記載の通信装置。
【請求項４】
前記通信データは文字データであり、
前記圧縮部は、
前記文字データから対象文字列を抽出する処理、
前記対象文字列を基準として最大探索範囲内で前記対象文字列または前記対象文字列の一部と一致する文字列を探索する処理、
前記対象文字列または前記対象文字列の一部と一致する文字列が見つかったときに、前記対象文字列を前記対象文字列よりもデータ量が少ない代替データに置き換えることにより前記通信データのデータ量を削減する処理、を実行し、
前記パラメータ決定部は、前記パラメータとして、前記測定部により測定された通信帯域に基づいて前記最大探索範囲を決定する
ことを特徴とする請求項３に記載の通信装置。
【請求項５】
前記削減部は、
前記通信データの重複を除去する重複除去部と、
前記測定部により測定された通信帯域に基づいて前記パラメータを決定するパラメータ決定部と、を備え、
前記重複除去部は、前記パラメータ決定部により決定されるパラメータに従って前記通信データの重複を除去する
ことを特徴とする請求項１に記載の通信装置。
【請求項６】
前記重複除去部は、
前記通信データを複数のデータブロックに分割する処理、
各データブロックのハッシュ値を計算する処理、
第１のデータブロックのハッシュ値と第２のデータブロックのハッシュ値とが一致するときに、前記第２のデータブロックを前記第２のデータブロックよりもデータ量が少ない代替データに置き換えることにより前記通信データのデータ量を削減する処理、を実行し、
前記パラメータ決定部は、前記パラメータとして、前記測定部により測定された通信帯域に基づいて、前記複数のデータブロックの平均サイズを指定する値を決定する
ことを特徴とする請求項５に記載の通信装置。
【請求項７】
通信データを受信し、
相手装置との間の通信において使用可能な通信帯域を測定し、
測定された通信帯域に基づいてデータ量の削減率に係わるパラメータを決定し、
前記パラメータに応じて前記通信データのデータ量を削減し、
データ量が削減された通信データを前記相手装置に送信する
ことを特徴とする通信制御方法。
【請求項８】
通信データを受信し、
相手装置との間の通信において使用可能な通信帯域を測定し、
測定された通信帯域に基づいてデータ量の削減率に係わるパラメータを決定し、
前記パラメータに応じて前記通信データのデータ量を削減し、
データ量が削減された通信データを前記相手装置に送信する
処理をプロセッサに実行させる通信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、通信制御方法、および通信制御プログラムに係わる。
【背景技術】
【０００２】
近年、クラウドコンピューティングの普及およびモバイル通信の拡大などに伴い、広域ネットワーク（ＷＡＮ：wide area network）を介して伝送されるデータ量が急激に増大している。このため、通信の高速化を実現するための技術が開発されている。
【０００３】
例えば、データ伝送の高速化を実現するプロトコルの１つとして、パケットロスに対する再送を制御するＵＮＡＰ（Universal Network Acceleration Protocol）が実用化されている。また、送信データを最適化してデータ伝送量を削減する技術が普及している。例えば、送信データを圧縮する技術および送信データの重複を除去する技術によりデータ伝送量が削減される。
【０００４】
尚、長い文字列および短い文字列の双方に対して効率のよい圧縮を行う技術が提案されている（例えば、特許文献１）。また、重複データを削除する技術が提案されている（例えば、特許文献２）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−１２４８１０号公報
【特許文献２】特開２０１５−２０１０５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来技術においては、データ伝送量を削減する処理（圧縮、重複除去など）は、ネットワークの状態を考慮することなく実行される。例えば、予め指定されるパラメータに応じてデータ圧縮および／またはデータ重複除去が行われる。このため、エンド・エンド間でのデータ転送時間が最適化されないことがある。
【０００７】
本発明の１つの側面に係わる目的は、データ転送時間を短縮する装置および方法を提供することである。
【課題を解決するための手段】
【０００８】
本発明の１つの態様の通信装置は、通信データを受信する受信部と、相手装置との間の通信において使用可能な通信帯域を測定する測定部と、前記測定部により測定された通信帯域に基づいてデータ量の削減率に係わるパラメータを決定し、前記パラメータに応じて前記通信データのデータ量を削減する削減部と、前記削減部によりデータ量が削減された通信データを前記相手装置に送信する送信部と、を備える。
【発明の効果】
【０００９】
上述の態様によれば、データ転送時間を短縮することができる。
【図面の簡単な説明】
【００１０】
【図１】通信システムの一例を示す図である。
【図２】ＷＡＮ高速化装置の一例を示す図である。
【図３】データ圧縮の一例を示す図である。
【図４】重複除去の一例を示す図である。
【図５】入力データを複数のチャンクに分割する方法について説明する図である。
【図６】深度パラメータを決定する方法の一例を示す図である。
【図７】深度パラメータを決定する処理の一例を示すフローチャートである。
【図８】深度パラメータと圧縮性能との関係を記録するテーブルの一例を示す図である。
【図９】圧縮部の処理の一例を示すフローチャートである。
【図１０】圧縮部が参照するハッシュ値テーブルの一例を示す図である。
【図１１】重複除去部の処理の一例を示すフローチャートである。
【図１２】重複除去部が参照するハッシュ値テーブルの一例を示す図である。
【図１３】ＷＡＮ高速化装置のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１１】
図１は、本発明の実施形態に係わる通信システムの一例を示す。この実施例では、通信システム１００は、ＷＡＮ４を利用して拠点Ｘと拠点Ｙとを接続する。各拠点には、ローカルエリアネットワーク（ＬＡＮ）が設けられている。各ＬＡＮには、複数の端末装置が接続されている。具体的には、拠点ＸにはＬＡＮ２Ｘが設けられており、拠点ＹにはＬＡＮ２Ｙが設けられている。また、ＬＡＮ２Ｘには複数の端末装置１Ｘが接続されており、ＬＡＮ２Ｙには複数の端末装置１Ｙが接続されている。各端末装置１Ｘ、１Ｙは、たとえば、サーバコンピュータである。
【００１２】
ＬＡＮ２Ｘ、２Ｙと比較すると、ＷＡＮ４の伝送速度は大幅に低速である。図１に示す例では、ＬＡＮ２Ｘ、２Ｙの伝送速度は１０Ｇｂｐｓであり、ＷＡＮ４の伝送速度は１００Ｍｂｐｓである。よって、各拠点において、ＷＡＮ高速化装置が設けられている。すなわち、拠点Ｘにおいては、ＬＡＮ２ＸとＷＡＮ４との間にＷＡＮ高速化装置３Ｘが実装されており、拠点Ｙにおいては、ＬＡＮ２ＹとＷＡＮ４との間にＷＡＮ高速化装置３Ｙが実装されている。
【００１３】
ＷＡＮ高速化装置３Ｘ、３Ｙは、通信データのデータ量を削減する機能および通信プロトコルを変換する機能を備える。例えば、端末装置１Ｘから端末装置１Ｙに通信データが送信されるケースでは、ＷＡＮ高速化装置３Ｘは、端末装置１ＸからＬＡＮ２Ｘを介して受信する通信データのデータ量を削減する。以下の記載では、ＷＡＮ高速化装置によりデータ量が削減された通信データを「圧縮データ」と呼ぶことがある。なお、「圧縮」は、後で記載するが、重複除去を含むものとする。そして、ＷＡＮ高速化装置３Ｘは、圧縮データに対してプロトコル変換を実行する。例えば、ＷＡＮ高速化装置３Ｘは、端末装置１ＸからＴＣＰパケットを受信したときに、そのＴＣＰパケットをＵＤＰパケットに変換してＷＡＮ４に送出する。この場合、ＵＤＰパケット内に圧縮データが格納されている。
【００１４】
ＷＡＮ高速化装置３Ｙは、ＷＡＮ４を介して受信した圧縮データに対してプロトコル変換を実行する。上述の例では、ＷＡＮ高速化装置３Ｙは、ＷＡＮ４を介して受信したＵＤＰパケットをＴＣＰパケットに変換する。また、ＷＡＮ高速化装置３Ｙは、ＴＣＰパケットから抽出した圧縮データを伸張して通信データを復元する。そして、復元された通信データは、ＬＡＮ２Ｙを介して、宛先として指定された端末装置１Ｙに転送される。
【００１５】
図２は、本発明の実施形態に係わるＷＡＮ高速化装置の一例を示す。なお、図２においては、通信データを送信するための回路および機能が描かれている。すなわち、図２においては、通信データを受信するための回路および機能は省略されている。
【００１６】
ＷＡＮ高速化装置１０は、ＴＣＰ受信部１１、測定部１２、削減部１３、データ送信部１８を備える。なお、ＷＡＮ高速化装置１０は、図２に示していない他の回路または機能を備えていてもよい。また、ＷＡＮ高速化装置１０は、図１に示す例では、例えば、拠点Ｘに実装されるＷＡＮ高速化装置３Ｘとして動作する。
【００１７】
ＴＣＰ受信部１１は、ＬＡＮ２を介して受信するＴＣＰパケットを終端する。このＴＣＰパケットは、ＬＡＮ２に接続される端末装置から送信される。また、このＴＣＰパケットのペイロードには、宛先端末に転送すべき通信データが格納されている。すなわち、ＴＣＰ受信部１１は、ＬＡＮ２を介して通信データを受信する。
【００１８】
測定部１２は、ＷＡＮ４に接続される相手装置との間の通信において使用可能な通信帯域を測定する。例えば、ＷＡＮ高速化装置１０が図１に示すＷＡＮ高速化装置３Ｘとして動作するときは、測定部１２は、図１に示すＷＡＮ高速化装置３Ｙとの間の通信において使用可能な通信帯域を測定する。
【００１９】
測定部１２は、例えば、所定のデータ量の通信データを、ＷＡＮ４を介して相手装置に送信する。相手装置は、この通信データを受信するために要する時間を測定し、その測定結果を測定部１２に通知する。そして、測定部１２は、通信データのデータ量および相手装置から通知される測定結果に基づいて、使用可能な通信帯域を計算する。この場合、例えば、通信データのデータ量が１０Ｍビットであり、相手装置が通信データを受信するために要する時間が１秒であれば、使用可能な通信帯域は１０Ｍｂｐｓである。ただし、使用可能な通信帯域を測定する方法は特に限定されるものではなく、測定部１２は、任意の方法で使用可能な通信帯域を測定することができる。
【００２０】
削減部１３は、測定部１２により測定された通信帯域に基づいて、データ量の削減率に係わるパラメータを決定する。そして、削減部１３は、このパラメータに応じて通信データのデータ量を削減する。なお、このパラメータについては、後で詳しく説明する。
【００２１】
削減部１３は、圧縮部１４、パラメータ決定部１５、重複除去部１６、パラメータ決定部１７を備える。なお、削除部１３は、図２に示していない他の回路または機能を備えていてもよい。
【００２２】
圧縮部１４は、ＬＡＮ２を介して受信する通信データを圧縮し、そのデータ量を削減する。パラメータ決定部１５は、測定部１２により測定された通信帯域に基づいて圧縮部１４の処理を制御するパラメータを決定する。そして、圧縮部１４は、パラメータ決定部１５により決定されるパラメータに従って通信データを圧縮する。
【００２３】
重複除去部１６は、ＬＡＮ２を介して受信する通信データの重複を除去し、そのデータ量を削減する。パラメータ決定部１７は、測定部１２により測定された通信帯域に基づいて重複除去部１６の処理を制御するパラメータを決定する。そして、重複除去部１６は、パラメータ決定部１５により決定されるパラメータに従って通信データの重複を除去する。なお、データの重複を除去する処理は、データ圧縮の１つの形態である。
【００２４】
削減部１３は、圧縮部１４または重複除去部１６の一方のみを使用して通信データのデータ量を削減してもよい。或いは、削減部１３は、圧縮部１４または重複除去部１６の双方を使用して通信データのデータ量を削減してもよい。この場合、圧縮部１４による処理の後に重複除去部１６による処理を実行してもよい。また、圧縮部１４による処理の前に重複除去部１６による処理を実行してもよい。
【００２５】
データ送信部１８は、削減部１３によりデータ量が削減された通信データを相手装置に送信する。なお、データ送信部１８は、プロトコル変換機能を備えていてもよい。たとえば、データ送信部１８は、ＴＣＰパケットをＵＤＰパケットに変換してＷＡＮ４に送出してもよい。
【００２６】
図３は、圧縮部１４により実行されるデータ圧縮の一例を示す。この実施例では、通信データは文字データである。そして、圧縮部１４は、文字データ内で同一の文字列を検出したときは、その文字列を「出現位置」および「長さ」に置き換える。
【００２７】
例えば、２行目の「ＶＥＲＹ」に対してデータ圧縮が行われるときは、圧縮部１４は、「ＶＥＲＹ」またはその一部と一致する文字列を探索する。ここで、前方探索が行われるものとすると、２行目の「ＶＥＲＹ」よりも前に「ＶＥＲＹ」またはその一部と一致する文字列が存在するか否かが判定される。この実施例では、１行目に「ＶＥＲＹ」が存在する。よって、この場合、２行目の「ＶＥＲＹ」は、１行目の「ＶＥＲＹ」が出現する位置を表す位置情報および一致した文字列の長さを表す長さ情報に置き換えられる。なお、位置は、文字データの先頭を基準として表されてもよいし、探索対象の文字列（即ち、２行目の「ＶＥＲＹ」）を基準として表されてもよい。長さは、一致した文字列のバイト数または文字数で表される。「ＶＥＲＹ」は、例えば、６バイトで表される。したがって、６バイトよりも少ない情報量で位置および長さを表すことができれば、通信データのデータ量が削減される。
【００２８】
７行目の「ｔｈｅ Ｒａｂｂｉｔ」に対してデータ圧縮が行われるときは、圧縮部１４は、７行目の「ｔｈｅ Ｒａｂｂｉｔ」よりも前に「ｔｈｅ Ｒａｂｂｉｔ」またはその一部と一致する文字列が存在するか否かを判定する。この例では、例えば、６行目の「ｔｈｅ」が抽出される。この場合、７行目の「ｔｈｅ Ｒａｂｂｉｔ」の中の「ｔｈｅ」が６行目の「ｔｈｅ」の位置を表す位置情報および長さを表す長さ情報に置き換えられる。また、３行目の「ｔｈｅ Ｒａｂｂｉｔ」が抽出される。この場合、７行目の「ｔｈｅ Ｒａｂｂｉｔ」が３行目の「ｔｈｅ Ｒａｂｂｉｔ」の位置を表す位置情報および長さを表す長さ情報に置き換えられる。ここで、７行目の「ｔｈｅ Ｒａｂｂｉｔ」の一部を６行目の「ｔｈｅ」の位置および長さに置き換えるデータ圧縮よりも、７行目の「ｔｈｅ Ｒａｂｂｉｔ」を３行目の「ｔｈｅ Ｒａｂｂｉｔ」の位置および長さに置き換えるデータ圧縮の方が、圧縮率が高くなる（圧縮率の値は小さくなる）。なお、この実施例では、圧縮率は、圧縮前の文字列の情報量に対する圧縮後の文字列の情報量の割合を表す。
【００２９】
上述のデータ圧縮では、探索対象と一致する文字列の文字数が多いときに、圧縮率が高くなる。ところが、探索対象と一致する、文字数の多い文字列を発見するためには、より広い範囲で文字列の探索を行う必要がある。そして、圧縮率を高くするために探索範囲を広くすると、文字列探索に要する処理時間が長くなる。
【００３０】
そこで、上述のデータ圧縮を行う場合、必要に応じて、最大探索範囲を表すパラメータmax_distが調整される。例えば、高い圧縮率が要求されるケースでは、最大探索範囲を広くするために、大きなmax_distが使用される。一方、短い処理時間が要求されるケースでは、最大探索範囲を狭くするために、小さいmax_distが使用される。なお、図２に示すＷＡＮ高速化装置１０においては、パラメータmax_distは、使用可能な通信帯域に基づいて、パラメータ決定部１５により決定される。
【００３１】
図４は、重複除去方法の一例を示す。この実施例では、重複除去クライアント２０において通信データの重複が除去される。重複データが除去された通信データは、ネットワークを介して重複除去クライアント２０から重複除去サーバ３０に伝送される。そして、重複除去サーバ３０において通信データが復元される。
【００３２】
重複除去クライアント２０において、通信データは「チャンク」と呼ばれるデータブロックに分割される。チャンクは、１〜４Ｋバイトの可変長ブロックである。続いて、重複除去クライアント２０は、チャンク毎に、ＳＨＡ（Secure Hash Algorism）を用いてハッシュ値を計算する。そして、重複除去クライアント２０は、互いに一致するハッシュ値を検索することにより、重複するチャンク（すなわち、互いに一致するデータブロック）を発見する。
【００３３】
処理対象のチャンクと重複するチャンクが見つからないときは、重複除去クライアント２０は、処理対象のチャンク中のデータを相手装置（図４では、重複除去サーバ３０）に送信する。このとき、重複除去クライアント２０は、相手装置に送信したデータ（図４では、生データ）をキャッシュメモリに保存する。一方、処理対象のチャンクと重複するチャンクが見つかったときは、重複除去クライアント２０は、処理対象のチャンク中のデータを表すインデックス（図４では、ＩＤデータ）を相手装置に送信する。
【００３４】
重複除去サーバ３０は、生データを受信したときは、その生データを出力すると共に、その生データをキャッシュメモリに保存する。一方、重複除去サーバ３０は、ＩＤデータを受信したときは、そのＩＤデータでキャッシュメモリを検索して対応するデータを復元する。ここで、生データのデータ量と比較して、ＩＤデータのデータ量は大幅に少ない。したがって、データ転送量の削減が実現される。
【００３５】
次に、入力データを複数のチャンクに分割する方法について説明する。ここでは、図５に示すように、入力データに対して抽出ウィンドウを１バイトずつスライドさせながら、ウィンドウデータが取得される。この実施例では、ウィンドウサイズは８バイトであり、ウィンドウデータＷＤ１、ＷＤ２、ＷＤ３、．．．が抽出されている。そして、各ウィンドウデータに対してRabin fingerprintアルゴリズムでハッシュ値が計算される。なお、Rabin fingerprintアルゴリズムで計算されるハッシュ値を「fingerprint」と呼ぶことがある、また、ウィンドウサイズは、実際には８バイトよりも十分に大きく、例えば６４バイトである。
【００３６】
Rabin fingerprintアルゴリズムによるハッシュ値ｆは、（１）式で計算される。ｎはウィンドウサイズを表す。ｗ0〜ｗn-1は、抽出ウィンドウ内のデータを表す。ｐは、例えば、比較的大きな素数である。
【００３７】
【数１】
2019193092.tif 000003
【００３８】
この計算は、ｎ回の乗算を必要とする。よって、ウィンドウサイズが大きいときは、ハッシュ値を得るための計算量が大きくなる。ただし、各抽出ウィンドウに対応するハッシュ値は、隣接する抽出ウィンドウに対して先に得られているハッシュ値を利用して計算することができる。具体的には、（２）式によりハッシュ値が計算される。（２）式においては、３回の乗算でハッシュ値が得られるので、その計算量は小さい。
【００３９】
【数２】
2019193092.tif 000004
【００４０】
続いて、各ハッシュ値の先頭のｍビットの値が予め決められた参照パターンと比較される。参照パターンは、特に限定されるものではなく、所望のビット列を使用することができる。ここで、ハッシュ値がランダムな値であるものとすると、ハッシュ値の先頭のｍビットが参照パターンと一致する確率は、１／２mである。よって、例えば、ｍが１０であるときは、平均して２10バイト（すなわち、約１Ｋバイト）ごとに、先頭のｍビットが参照パターンと一致するハッシュ値が得られる。
【００４１】
チャンクは、上述のようにして計算されるハッシュ値の先頭のｍビットが参照パターンと一致するタイミングで入力データを区切ることで得られる。よって、ｍが１０であるときは、チャンクの平均サイズは、約１Ｋバイトである。また、ｍの値を大きくすると、チャンクの平均サイズも大きくなる。例えば、ｍが１１であるときは、チャンクの平均サイズは、約２Ｋバイトである。
【００４２】
重複除去クライアント２０は、上述したように、チャンク毎にハッシュ値を計算し、それらのハッシュ値を用いて重複データを探索する。よって、チャンクの平均サイズが大きくなると、生成されるハッシュ値の個数が少なくなり、重複データを探索する回数が削減される。すなわち、重複除去のために要する処理時間が短くなる。ところが、この場合、重複データの検出精度が低下し、重複データの除去によるデータ圧縮効果が低くなる。
【００４３】
一方、チャンクの平均サイズを小さくすれば、重複データの検出精度が改善し、重複データの除去によるデータ圧縮効果が高くなる。しかし、この場合、重複データを探索する回数が増加するので、重複除去のために要する処理時間が長くなる。
【００４４】
そこで、上述の重複除去を行う場合、必要に応じて、参照パターンの長さを表すパラメータｍの値が調整される。ここで、パラメータｍは、実質的に、チャンクの平均サイズを指定する。例えば、高い圧縮率が要求されるケースでは、チャンクの平均サイズを小さくするために、パラメータｍとして小さい値が使用される。一方、短い処理時間が要求されるケースでは、チャンクの平均サイズを大きくするために、パラメータｍとして大きい値が使用される。なお、図２に示すＷＡＮ高速化装置１０においては、パラメータｍは、使用可能な通信帯域に基づいて、パラメータ決定部１７により決定される。
【００４５】
図６は、削減部１３において深度パラメータを決定する方法の一例を示す。直、以下の実施例では、１００Ｍバイトのデータが伝送されるものとする。また、ある圧縮アルゴリズムについて事前に評価を行った結果、「深度パラメータ＝１０」に対して「処理速度＝３００Ｍバイト／秒、圧縮率＝５０パーセント（高速処理、低圧縮率）」が得られ、「深度パラメータ＝２０」に対して「処理速度＝１００Ｍバイト／秒、圧縮率＝１０パーセント（低速処理、高圧縮率）」が得られているものとする。
【００４６】
図６において、帯域は、使用可能な通信帯域を表し、図２に示す測定部１２により測定される。深度は、削減部１３の処理を制御するパラメータを表す。なお、図３に示す例では、深度は、最大探索範囲を指定するパラメータmax_distに相当する。また、図４〜図５に示す例では、深度は、参照パターンの長さを指定するパラメータｍに相当する。
【００４７】
処理速度は、単位時間内に処理可能なデータ量を表す。圧縮率は、圧縮前のデータ量に対する圧縮後のデータ量の割合を表す。例えば、「圧縮率＝０．５」は、圧縮によりデータ量が２分の１に削減されることを表す。
【００４８】
ネットワーク転送時間は、通信データを転送するために要する時間を表す。図１に示す例では、ネットワーク転送時間は、ＷＡＮ高速化装置３Ｘ、３Ｙ間で通信データを転送するために要する時間を表す。なお、ネットワーク転送時間は、データ量の比例するものとする。また、ネットワーク転送時間は、通信帯域に反比例するものとする。圧縮時間は、削減部１３においてデータを圧縮するために要する時間を表す。
【００４９】
転送時間は、ネットワーク転送時間および圧縮時間の和を表す。但し、「転送時間（削減あり）」は、削減部１３により圧縮されたデータについてのネットワーク転送時間および圧縮時間の和を表す。「転送時間（削減なし）」は、生データ（すなわち、削減部１３において圧縮されないデータ）についてのネットワーク転送時間を表す。
【００５０】
高速化倍率は、データ圧縮による転送時間の改善の程度を表す。すなわち、データ圧縮により転送時間が短縮されたときは、高速化倍率が１よりも大きくなる。そして、時間短縮効果が大きいほど、高速化倍率が大きくなる。なお、高速化倍率は「転送時間（削減なし）」を「転送時間（削減あり）」を割算することで得られる。
【００５１】
ケース１〜２においては、使用可能な通信帯域が大きい。通信帯域が大きいときは、ネットワーク転送時間が抑制されるので、転送時間（ネットワーク転送時間および圧縮時間の和）を短くするためには、圧縮時間が短くなるパラメータを選択することが好ましい。図６に示す例では、深度パラメータが２０であるケース２よりも、深度パラメータが１０であるケース１において高速化倍率が高くなっている。このように、通信帯域が大きいときは、転送時間を短くするためには、深度パラメータを小さくすることが好ましい。
【００５２】
ケース３〜４においては、使用可能な通信帯域が小さい。通信帯域が小さいときは、ネットワーク転送時間が大きくなりやすいので、転送時間を短くするためには、圧縮率が高くなるパラメータを選択して出来るだけデータ転送量を削減することが好ましい。図６に示す例では、深度パラメータが１０であるケース３よりも、深度パラメータが２０であるケース４において高速化倍率が高くなっている。このように、通信帯域が小さいときは、転送時間を短くするためには、大きい深度パラメータを大きくすることが好ましい。
【００５３】
図７は、深度パラメータを決定する処理の一例を示すフローチャートである。このフローチャートの処理は、定期的に実行される。例えば、このフローチャートの処理は、データ通信が行われているときに、１秒間隔で実行される。
【００５４】
Ｓ１において、測定部１２は、相手装置に受信帯域を問い合わせる。尚、相手装置は、常時、受信帯域をモニタしているものとする。そして、相手装置は、測定した受信帯域を測定部１２に通知する。
【００５５】
Ｓ２において、測定部１２は、相手装置から通知される受信帯域に基づいて、相手装置へのデータ転送において使用可能な通信帯域を計算する。このとき、使用可能な通信帯域は、相手装置から通知される受信帯域と同じであってもよい。そして、測定部１２は、使用可能な通信帯域をパラメータ決定部１５、１７に通知する。
【００５６】
Ｓ３において、パラメータ決定部１５、１７は、深度パラメータの値を変えながら予想転送時間を計算する。ここで、この実施例では、深度パラメータｉに対して「予想処理速度speed_i」および「予想圧縮率ratio_i」が予め測定され、図８に示すテーブルに記録されているものとする。このテーブルは、パラメータ決定部１５、１７が参照することができるメモリ領域に保存されている。
【００５７】
パラメータ決定部１５、１７は、例えば（３）式に従って、予想転送時間Ｔ(i)を計算する。
【００５８】
Ｔ(i)＝ratio_i／ＢＷ＋speed_i          （３）
【００５９】
ＢＷは、使用可能な通信帯域を表す。また、ｉは、深度パラメータの値を表す。たとえば、図３に示すデータ圧縮においては、深度パラメータｉは、最大探索範囲を指定するパラメータmax_distに相当する。この場合、パラメータ決定部１５は、max_distの値を変えながら、それぞれ予想転送時間を計算する。また、図４〜図５に示す重複除去においては、深度パラメータｉは、参照パターンの長さを表すｍに相当する。この場合、パラメータ決定部１７は、例えば、ｍ＝９、１０、１１、１２に対してそれぞれ予想転送時間を計算してもよい。
【００６０】
Ｓ４において、パラメータ決定部１５、１７は、予想転送時間が最小となる深度パラメータを選択する。例えば、パラメータ決定部１７は、（３）式に従って、ｍ＝９、１０、１１、１２に対してそれぞれ予想転送時間（Ｔ(9)、Ｔ(10)、Ｔ(11)、Ｔ(12)）を計算する。このとき、測定部１２から通知される通信帯域ＢＷが上記（３）式に与えられる。そして、予想転送時間Ｔ(10)が最小であったものとする。この場合、パラメータ決定部１７は、深度パラメータとして「ｍ＝１０」を選択する。
【００６１】
このように、ＷＡＮ高速化装置１０は、使用可能な通信帯域に基づいて深度パラメータを決定する。このとき、ＷＡＮ高速化装置１０は、圧縮処理時間を含む転送時間を最小化する深度パラメータを選択する。そして、ＷＡＮ高速化装置１０は、この深度パラメータに従って通信データを圧縮する。
【００６２】
図９は、圧縮部１４の処理の一例を示すフローチャートである。この例では、パラメータ決定部１５により深度パラメータとして最大探索範囲max_distが計算されるものとする。そして、最新の最大探索範囲max_distは、圧縮部１４が参照可能なメモリ領域に保存されている。
【００６３】
Ｓ１１において、圧縮部１４は、通信データを受信する。ここでは、通信データは、文字データである。
【００６４】
Ｓ１２において圧縮部１４は、パラメータ決定部１５により計算された深度パラメータを取得する。深度パラメータは、図３を参照しながら説明した最大探索範囲max_distである。すなわち、圧縮部１４は、受信した通信データの予想転送時間を最小化することが期待される最大探索範囲max_distを取得する。
【００６５】
Ｓ１３において、圧縮部１４は、受信した通信データから文字列を抽出する。抽出する文字列は、１個の単語（図３では「ＶＥＲＹ」）であってもよいし、２個以上の単語（図３では「ｔｈｅ Ｒａｂｂｉｔ」）を含んでもよい。圧縮部１４は、例えば、通信データの先頭から順番に文字列を抽出する。なお、以下の記載において、Ｓ１３で抽出される文字列を「対象文字列」と呼ぶことがある。
【００６６】
Ｓ１４において、圧縮部１４は、対象文字列のハッシュ値を計算する。ハッシュ値を計算するアルゴリズムは、特に限定されるものではない。
【００６７】
Ｓ１５〜Ｓ１６において、圧縮部１４は、対象文字列の位置を基準とする最大探索範囲の中で、対象文字列または対象文字列の一部と一致する文字列を探索する。このとき、圧縮部１４は、例えば、対象文字列のハッシュ値を利用して、対象文字列または対象文字列の一部と一致する文字列を探索してもよい。この場合、圧縮部１４は、ハッシュ値テーブルを備える。
【００６８】
図１０は、圧縮部１４が参照するハッシュ値テーブルの一例を示す。このハッシュ値テーブルは、ＷＡＮ高速化装置１０が受信した通信データから抽出される文字列、抽出された文字列のハッシュ値、および抽出された文字列の出現位置を表す位置情報を互いに関連づけて格納する。
【００６９】
圧縮部１４は、ハッシュ値テーブルにおいて、対象文字列のハッシュ値と一致するハッシュ値を有するレコードを検索する。このとき、最大探索範囲内で検索が実行される。そして、この検索により、対象文字列または対象文字列の一部と一致する文字列が存在するか否かが判定される。
【００７０】
例えば、図３に示す通信データにおいて、対象文字列として７行目の「ｔｈｅ Ｒａｂｂｉｔ」が抽出されるものとする。この場合、「ｔｈｅ」について検索が実行されると、６行目の「ｔｈｅ」が得られる。また、「ｔｈｅ Ｒａｂｂｉｔ」について検索が実行されると、３行目の「ｔｈｅ Ｒａｂｂｉｔ」が得られる。すなわち、１個の対象文字列に対して複数の文字列が発見されることがある。そして、１個の対象文字列に対して複数の文字列が発見されたときは、圧縮部１４は、それら複数の文字列の中から一致長が最大となる文字列を特定する。なお、１個の対象文字列に対して１個の文字列が発見されたときは、圧縮部１４は、その文字列を一致長が最大となる文字列として特定する。
【００７１】
Ｓ１７において、圧縮部１４は、Ｓ１５〜Ｓ１６で特定された文字列の位置情報および長さ情報を出力する。位置情報は、ハッシュ値テーブルに保存されている。長さ情報は、Ｓ１５〜Ｓ１６で特定された文字列の長さを表す。
【００７２】
なお、Ｓ１７において出力される位置情報および長さ情報は、データ送信部１８に与えられる。そして、データ送信部１８は、対象文字列の代わりに、位置情報および長さ情報を相手装置に送信する。一方、対象文字列または対象文字列の一部と一致する文字列が最大探索範囲内に存在しないときは（Ｓ１５：Ｎｏ）、圧縮部１４は、対象文字列を出力する。この場合、データ送信部１８は、その対象文字列を相手装置に送信する。
【００７３】
Ｓ１８において、圧縮部１４は、対象文字列の位置を表す位置情報をハッシュ値テーブルに保存する。このとき、圧縮部１４は、対象文字列のハッシュ値も合わせて保存する。
【００７４】
Ｓ１９において、圧縮部１４は、Ｓ１４〜Ｓ１８の処理が行われていない文字列が通信データ内に残っているか判定する。そして、そのような文字列が残っていれば、圧縮部１４の処理はＳ１３に戻る。すなわち、通信データ内のすべての文字列に対してＳ１４〜Ｓ１８の処理が実行される。
【００７５】
このように、圧縮部１４は、ＷＡＮ高速化装置１０と相手装置との間で使用可能な通信帯域に応じて決まる深度パラメータ（すなわち、最大探索範囲max_dist）に従って通信データを圧縮する。ここで、この深度パラメータは、データ転送時間（すなわち、ネットワーク転送時間および圧縮処理時間の和）が小さくなるように（好ましくは、最小化されるよう）に決定されている。したがって、図９に示すフローチャートに従って圧縮部１４が通信データを圧縮することにより、データ転送時間が短くなる。
【００７６】
図１１は、重複除去部１６の処理の一例を示すフローチャートである。この例では、パラメータ決定部１７により深度パラメータとして参照パターンのビット長ｍが計算されるものとする。そして、最新のビット長ｍは、重複除去部１６が参照可能なメモリ領域に保存されている。
【００７７】
Ｓ２１において、重複除去部１６は、通信データを受信する。通信データは、文字データに限定されるものでなく、重複除去部１６は、任意のフォーマットのデジタルデータを処理できる。
【００７８】
Ｓ２２において、重複除去部１６は、パラメータ決定部１７により計算された深度パラメータを取得する。深度パラメータは、図４〜図５を参照しながら説明した参照パターンのビット長ｍである。すなわち、重複除去部１６は、受信した通信データの予想転送時間を最小化することが期待されるビット長ｍを取得する。
【００７９】
Ｓ２３において、重複除去部１６は、受信した通信データからウィンドウデータを取得する。ウィンドウデータは、図５を参照しながら説明したように、所定長の抽出ウィンドウにより抽出される。
【００８０】
Ｓ２４において、重複除去部１６は、Ｓ２３で抽出したウィンドウデータのハッシュ値を計算する。この実施例では、Rabin fingerprintアルゴリズムでハッシュ値が計算される。なお、図１１に示すフローチャートでは、Rabin fingerprintアルゴリズムで計算されるハッシュ値は「fingerprint」と表記されている。
【００８１】
Ｓ２５において、重複除去部１６は、Ｓ２４で生成されたハッシュ値の先頭のｍビットと参照パターンとを比較する。「ｍ」は、Ｓ２２において取得した深度パラメータにより指定される。すなわち、参照パターンのビット長は「ｍ」である。
【００８２】
ハッシュ値の先頭のｍビットが参照パターンと一致しないときは、重複除去部１６の処理はＳ２３に戻る。この場合、重複除去部１６は、抽出ウィンドウを１バイトだけシフトさせて次のウィンドウデータを取得する。したがって、ハッシュ値の先頭のｍビットが参照パターンと一致するウィンドウデータが検出されるまで、Ｓ２３〜Ｓ２５の処理が繰り返し実行される。
【００８３】
ハッシュ値の先頭のｍビットが参照パターンと一致したときは、重複除去部１６は、Ｓ２６において、通信データからチャンクを切り出す。以下の記載では、Ｓ２６で新たに生成されるチャンクを「対象チャンク」と呼ぶことがある。なお、通信データから切り出されるチャンクの平均サイズは、参照パターンのビット長ｍに依存する。
【００８４】
Ｓ２７において、重複除去部１６は、対象チャンクのハッシュ値を計算する。ハッシュ値は、特に限定されるものではないが、例えば、ＳＨＡ１により計算される。そして、Ｓ２８において、重複除去部１６は、Ｓ２７で計算したハッシュ値がハッシュ値テーブルに保存されているか否かを判定する。
【００８５】
図１２は、重複除去部１６が参照するハッシュ値テーブルの一例を示す。このハッシュ値テーブルは、各チャンクのハッシュ値および出現位置を表す位置情報を互いに関連づけて格納する。
【００８６】
重複除去部１６は、ハッシュ値テーブルにおいて、対象チャンクのハッシュ値と一致するハッシュ値を有するレコードを検索する。この検索により、対象チャンクと同一のチャンクが過去に相手装置に送信されているか否かが判定される。
【００８７】
対象チャンクのハッシュ値と一致するハッシュ値を有するレコードが見つかったときには、Ｓ２９において、重複除去部１６は、そのレコードに保存されている位置情報を出力する。この位置情報は、対象チャンクと同一のデータを含む、先に相手装置に送信されたチャンクの位置を表す。
【００８８】
Ｓ２９において出力される位置情報は、データ送信部１８に与えられる。そして、データ送信部１８は、対象チャンクの代わりに、位置情報を相手装置に送信する。この位置情報は、図４に示す例では、ＩＤデータまたはインデックスに相当する。一方、対象チャンクのハッシュ値と一致するハッシュ値を有するレコードが見つからなかったときは（Ｓ２８：Ｎｏ）、重複除去部１６は、対象チャンクを出力する。この場合、データ送信部１８は、その対象チャンクを相手装置に送信する。
【００８９】
Ｓ３０において、重複除去部１６は、対象チャンクの位置を表す位置情報をハッシュ値テーブルに保存する。このとき、位置情報は、対象チャンクのハッシュ値に対応づけて保存される。
【００９０】
Ｓ３１において、重複除去部１６は、Ｓ２４〜Ｓ３０の処理が行われていないデータが残っているか否かを判定する。そして、そのようなデータが残っていれば、重複除去部１６の処理はＳ２３に戻る。すなわち、全通信データに対してＳ２４〜Ｓ３０の処理が実行される。
【００９１】
このように、重複除去部１６は、ＷＡＮ高速化装置１０と相手装置との間で使用可能な通信帯域に応じて決まる深度パラメータ（すなわち、参照パターンのビット長ｍ）に従って通信データを圧縮する。ここで、この深度パラメータは、データ転送時間（すなわち、ネットワーク転送時間および圧縮処理時間の和）が小さくなるように（好ましくは、最小化されるよう）に決定されている。したがって、図１１に示すフローチャートに従って重複除去部１６が通信データを圧縮することにより、データ転送時間が短くなる。
【００９２】
図１３は、ＷＡＮ高速化装置１０のハードウェア構成の一例を示す。ＷＡＮ高速化装置１０は、インタフェース回路４１、４２、プロセッサ４３、メモリ４４を備える。但し、ＷＡＮ高速化装置１０は、図１３に示していない他の回路を備えていてもよい。
【００９３】
インタフェース回路４１は、ＬＡＮ２を介して受信する信号を終端し、また、ＬＡＮ２へ信号を出力する。図２に示すＴＣＰ受信部１１の機能は、インタフェース回路４１により実現される。インタフェース回路４２は、ＷＡＮ４を介して受信する信号を終端し、また、ＷＡＮ４へ信号を出力する。図２に示すデータ送信部１８の機能は、インタフェース回路４２により実現される。
【００９４】
プロセッサ４３は、メモリ４４に格納されている通信制御プログラムを実行することにより、図２に示す測定部１２および削減部１３の機能を提供する。すなわち、プロセッサ４３は、通信制御プログラムを実行することにより、図９および図１１に示すフローチャートの処理を実現する。通信制御プログラムは、不図示の着脱可能メモリを利用してＷＡＮ高速化装置１０されるようにしてもよい。或いは、ＷＡＮ高速化装置１０は、不図示のプログラムサーバから通信制御プログラムを取得してもよい。なお、プロセッサ４３は、他のプログラムを実行してもよい。
【００９５】
メモリ４４は、図９および図１１に示すフローチャートの手順を記述した通信制御プログラムを格納する。また、メモリ４４は、受信データを一時的に格納するバッファ領域としても使用される。さらに、メモリ４４は、図１０および図１２に示すハッシュ値テーブルを格納することもできる。
【符号の説明】
【００９６】
２、２Ｘ、２Ｙ  ＬＡＮ
３Ｘ、３Ｙ  ＷＡＮ高速化装置
４  ＷＡＮ
１０  ＷＡＮ高速化装置
１１  ＴＣＰ受信部
１２  測定部
１３  削減部
１４  圧縮部
１５、１７  パラメータ決定部
１６  重複除去部
１８  データ送信部
４３  プロセッサ
４４  メモリ
１００  通信システム
【図１】
2019193092.tif 000005
【図２】
2019193092.tif 000006
【図３】
2019193092.tif 000007
【図４】
2019193092.tif 000008
【図５】
2019193092.tif 000009
【図６】
2019193092.tif 000010
【図７】
2019193092.tif 000011
【図８】
2019193092.tif 000012
【図９】
2019193092.tif 000013
【図１０】
2019193092.tif 000014
【図１１】
2019193092.tif 000015
【図１２】
2019193092.tif 000016
【図１３】
2019193092.tif 000017