(57)【特許請求の範囲】
【請求項１】
ホスト間の第１網と第２網を介したＴＣＰ通信を中継するネットワーク装置であって、
ホスト間の所定のＴＣＰコネクションによる通信において、第１網から入力されたホスト間で通信するデータのデータ量に基づく要求レートと、第２網へホスト間で通信する前記データを転送した実効帯域を示す出力レートを保持する第１記憶領域と、
ホスト間の前記所定のＴＣＰコネクションによる通信において、第１網からのデータを、第２網の対向するネットワーク装置との間で確立された複数のコネクションに分割して転送し、第２網からの複数のコネクションを介したデータを結合して第１網に転送するコネクション分割結合部と、
コネクション分割数を保持する第２記憶領域と、
前記要求レートと前記出力レートに基づき、前記所定のＴＣＰコネクションによる通信においてホスト間で通信する前記データを転送するためのコネクションの分割数を増加又は削減する帯域監視部と
を備え、
前記帯域制御部は、
前記要求レートと前記出力レートを比較し、前記要求レートが前記出力レートよりも予め定められた第１閾値以上大きい場合はコネクション分割数を増やし、
前記要求レートが予め定められた第２閾値よりも小さい場合はコネクション分割数を減らすネットワーク装置。
【請求項２】
コネクション分割数を増加させるときには、
第２網を介した前記対向するネットワーク装置との間で新たなコネクションを確立し、
前記第２記憶領域のコネクション分割数を更新し、及び、確立されたコネクションの識別情報を記憶する請求項１に記載のネットワーク装置。
【請求項３】
コネクション分割数を削減させるときには、
前記第２記憶領域から該当するＴＣＰコネクションに対応するコネクションのうちのひとつを選択し、
第２網を介した対向するネットワーク装置との間で、選択されたコネクションを終了する処理を行い、
前記第２記憶領域のコネクション分割数を更新し、及び、選択されたコネクションの識別情報を削除する請求項１に記載のネットワーク装置。
【請求項４】
前記帯域監視部は、
単位時間内に入力されたデータ量に基づく単位時間あたりの要求レートと、単位時間内に転送したデータ量に基づく単位時間あたりの出力レートとを監視し、それぞれについて複数の単位時間にわたる移動平均を求めて前記要求レート及び前記出力レートとする請求項１に記載のネットワーク装置。
【請求項５】
前記第１記憶領域は、コネクション分割数毎に、過去に該コネクション分割数にコネクションが分割された際に監視されたコネクションあたりの出力レートの最大値をさらに保持し、
分割数を増加するか否かを判断する際に、現在のコネクション分割数におけるコネクションあたり出力レートの最大値と、ひとつ少ないコネクション分割数におけるコネクションあたり出力レート最大値を比較し、その比が予め定められた第３閾値よりも小さい場合は分割不要と判断する請求項１に記載のネットワーク装置。
【請求項６】
ホスト間の第１網と第２網を介したＴＣＰ通信を中継するネットワーク装置の制御方法であって、
ホスト間の所定のＴＣＰコネクションによる通信において、第１網から入力されたホスト間で通信するデータのデータ量に基づく要求レートと、第２網へホスト間で通信する前記データを転送した実効帯域を示す出力レートを第１記憶領域に記憶し、
ホスト間の前記所定のＴＣＰコネクションによる通信において、第１網からのデータを、第２網の対向するネットワーク装置との間で確立された複数のコネクションに分割して転送し、第２網からの複数のコネクションを介したデータを結合して第１網に転送し、
前記要求レートと前記出力レートを比較し、要求レートが出力レートよりも予め定められた第１閾値以上大きい場合は前記所定のＴＣＰコネクションによる通信においてホスト間で通信する前記データを転送するためのコネクションの分割数を増やし、要求レートが予め定められた第２閾値よりも小さい場合は該コネクションの分割数を減らす前記ネットワーク装置の制御方法。
【請求項７】
広域ネットワークを介して第１ホストと第２ホストが通信を行うネットワークシステムであって、
請求項１に記載のネットワーク装置であって、前記第１ホスト側に配置される第１のネットワーク装置と、
請求項１に記載のネットワーク装置であって、前記第２ホスト側に配置される第２のネットワーク装置と
を備え、
前記第１のネットワーク装置と前記第２のネットワーク装置は、広域ネットワークを介して配置され、
前記第１ホストと前記第２ホストが、広域ネットワークの実効帯域に基づき分割されるコネクションを介して通信することを特徴とするネットワークシステム。
【請求項８】
広域ネットワークを介して第１ホストと第２ホストが通信を行うネットワークシステムであって、
前記第１ホスト側に配置される第１の汎用サーバ装置と
前記第２のスト側に配置される第２の汎用サーバ装置と
前記第１の汎用サーバ装置側に配置される請求項６に記載の方法を実行するプログラムおよび関連するデータを格納した第１の外部記憶媒体と
前記第２の汎用サーバ装置側に配置される請求項６に記載の方法を実行するプログラムおよび関連するデータを格納した第２の外部記憶媒体と
を備え、
前記第１の汎用サーバ装置と前記第２の汎用サーバ装置は、広域ネットワークを介して配置され、
前記第１の外部記憶媒体から前記第１の汎用サーバ装置にプログラムと関連するデータをコピーし、
前記第２の外部記憶媒体から前記第２の汎用サーバ装置にプログラムと関連するデータをコピーし、
前記第１ホストと前記第２ホストが、広域ネットワークの実効帯域に基づき分割されるコネクションを介して通信することを特徴とするネットワークシステム。
【請求項９】
前記第１の汎用サーバ装置は前記第１ホストであり
前記第２の汎用サーバ装置は前記第２ホストである事を特徴とする請求項８に記載のネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク装置、ネットワーク装置の制御方法及びネットワークシステムに係り、特に、プロクシ装置上でＴＣＰを多重化して通信を高速化するネットワーク装置、ネットワーク装置の制御方法及びネットワークシステムに関する。
【背景技術】
【０００２】
複数の情報通信機器の間で相互に通信を行う場合、一般にＲＦＣ  ７９３（非特許文献１）で定義されたＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）を用いる。ＴＣＰはインターネット上の実質的標準プロトコルであり、多くの情報通信機器に実装されている。ＴＣＰを用いることで、情報通信機器の種類を問わず、相互に通信を行うことが可能になる。
【０００３】
［ＷＡＮ高速化装置］
しかし、広域網（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ、ＷＡＮ）を介してデータセンタと拠点の間で通信を行う場合、ＴＣＰのフロー制御の制約から実効帯域がＷＡＮの遅延に律束され、ＷＡＮの契約帯域を太くしても効果が得られない場合がある。そこで、ネットワークプロクシ装置（通信を代行する装置）においてＴＣＰのフロー制御を改善するなどのＴＣＰ高速化手法が提案されている。また、このような高速化をもたらす装置をＷＡＮ高速化装置と呼ぶ。
例えば、ＴＣＰのフロー制御改善に関する特開２００３−６９６１５号公報では「送信元ホスト５０と送信先ホスト６０との間に、１つまたはそれ以上のルータ７０ａ、７０ｂが配置される。ルータ７０ａは、送信元ホスト５０から送られてくるパケットに対して、確認応答パケットを生成して送信し、送信元ホスト５０と送信先ホスト６０との間のコネクションを終端、分割する。確認応答パケットの始点アドレスには、送信先ホストのアドレスが用いられる。また、送信先ホスト６０には、始点アドレスが送信元ホストのアドレスであるパケットが届けられる。これにより、両ホストに対して仮想的な１つのコネクションを認識させる。」と記載されている（「解決手段」参照）。
【０００４】
［ＴＣＰを束ねて送る装置］
また、広域網を介してデータセンタと拠点の間で通信を行う場合にＴＣＰのフロー制御の制約から実効帯域が得られない課題の別の解決方法として、送信側通信端末の通信制御方式を変更し、ＴＣＰを多重化する方法が提案されている。
例えば、特開２００４−２６０６６８号公報では「実時間再生を要求される動画像データをＴＣＰ／ＩＰにより送信する送信装置と、送信装置から送信されるデータを受信する受信装置を含む動画像伝送システムである。送信装置は、動画像データを画像データ１フレーム分または複数フレーム分を単位として、個々の単位画像データをさらに分割した分割画像データを、複数のＴＣＰコネクションにより送信し、受信装置は、複数のＴＣＰコネクションにより受信した分割画像データから元の単位画像データに戻す処理と、動画像データ複数フレーム分の蓄積を行うバッファ部を有し、単位画像データの分割数およびＴＣＰコネクションの数を、１ＴＣＰコネクションあたりのスループットおよび動画像データの平均ビットレートに基づいて決定する。」と記載されている（「解決手段」参照）。
さらに、ＴＣＰ多重化をプロクシに応用する方法も提案されている。例えば、ＵＳ２００５／０２５１５０号公報では「Ｔｈｅ  Ｐｒｏｘｙ  ａｐｐｌｉｃａｔｉｏｎ  ｒｕｎｎｎｉｎｇ  ｏｎ  ｎｅｔｗｏｒｋ  ａｃｃｅｌｅｒａｔｏｒ  １４−１  ｔｈｅｎ  ａｓｓｉｇｎｓ  ｏｎｅ  ｏｒ  ｍｏｒｅ  ｏｆ  ｔｈｅ  ｐｅｒｓｉｓｔｅｎｔ  ｃｏｎｎｅｃｔｉｏｎｓ  ｉｔ  ｈａｓ  ｗｉｔｈ  ｔｈｅ  ｎｅｔｗｏｒｋ  ａｃｃｅｌｅｒａｔｏｒ  １４−２  ｔｏ  ｈａｎｄｌｅ  ｔｈｅ  ｃｏｎｎｅｃｔｉｏｎ  ｒｅｑｕｅｓｔｅｄ  ｂｙ  Ｍａｃｈｉｎｅ  Ａ．」と記載されている（「Ｄｅｔａｉｌｅｄ  Ｄｅｓｃｒｉｐｔｉｏｎ  ｏｆ  ｔｈｅ  Ｉｎｖｅｎｔｉｏｎ  ［００３１］」参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−６９６１５号公報「通信制御装置および通信制御方法」
【特許文献２】特開２００４−２６０６６８号公報「動画像伝送システム、動画像送信装置、動画像中継装置、動画像受信装置、プログラム、および記録媒体」
【特許文献３】ＵＳ２００５／０２５１５０「Ａｃｃｅｌｅｒａｔｉｏｎｇ  Ｎｅｔｗｏｒｋ  Ｐｅｒｆｏｒｍａｎｃｅ  ｂｙ  Ｓｔｒｉｐｉｎｇ  ａｎｄ  Ｐａｒａｌｌｅｌｉｚａｔｉｏｎ  ｏｆ  ＴＣＰ  Ｃｏｎｎｅｃｔｉｏｎｓ」
【非特許文献】
【０００６】
【非特許文献１】ＲＦＣ  ７９３、“ＴＲＡＮＳＭＩＳＳＩＯＮ  ＣＯＮＴＲＯＬ  ＰＲＯＴＯＣＯＬ、  ＤＡＲＰＡ  ＩＮＴＥＲＮＥＴ  ＰＲＯＧＲＡＭ、  ＰＲＯＴＯＣＯＬ  ＳＰＥＣＩＦＩＣＡＴＩＯＮ”、  ｈｔｔｐ：／／ｄａｔａｔｒａｃｋｅｒ．ｉｅｔｆ．ｏｒｇ／ｄｏｃ／ｒｆｃ７９３／
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来のＷＡＮ高速化装置では、到達確認応答を代理応答するために、プロクシ装置にクライアントよりも大きなフロー制御用ウインドウを持たせ、多少遅延が長くともウインドウを使い切らないようにする事で実現される。しかし、この方式では、想定以上に遅延が大きい環境ではウインドウを使い切ってしまうため、依然としてＴＣＰのフロー制御の制約から十分な帯域が得られないという課題があった。
従って本発明が解決しようとする第一の課題は、ＴＣＰの通信を十分に高速化可能なＷＡＮ高速化装置を提供する事である。
また、従来の送信側通信端末の通信制御方式を変更するものでは、サーバクライアント方式で構成された既設の環境にある全てのサーバ端末およびクライアント端末の通信制御方式を変更する必要があり、既設の環境への導入が困難という課題があった。
従って本発明が解決しようとする第二の課題は、既設の環境への導入が容易なプロクシ装置においてＴＣＰを多重化可能なＷＡＮ高速化装置を提供する事である。
【０００８】
また、従来のＴＣＰ多重化方法をプロクシ装置に応用した例では、クライアントからのコネクション確立要求を受けた時に、適当な分割数に分割し、ＴＣＰ多重化したコネクションを確立する。しかしコネクション確立要求時の状況に応じて多重化数が静的に決まるため、ネットワークの状況に応じて常に適切な制御を行う事は困難と言う課題があった。
従って本発明が解決しようとする第三の課題は、ネットワークの状況に応じてＴＣＰの多重化数を動的に制御できるＴＣＰを多重化可能なＷＡＮ高速化装置を提供する事である。
上述のように、本発明は、ＴＣＰの通信を高速化可能なネットワーク装置、ネットワーク装置の制御方法及びネットワークシステムを提供する事を目的とする。また、本発明は、既設の環境への導入が容易なプロクシ装置においてＴＣＰを多重化可能なネットワーク装置、ネットワーク装置の制御方法及びネットワークシステムを提供する事を目的とする。
【課題を解決するための手段】
【０００９】
本願は上記課題を解決する手段を複数含んでいるが、その一例をあげるならばＴＣＰコネクションごとの要求レートと、ネットワークに転送できた出力レートの各移動平均を保持する記憶領域Ａとホストが要求したコネクションごとのコネクション分割数および分割した各コネクションの識別情報を保持する記憶領域Ｂを持ち記憶領域Ａの要求レートと出力レートをユーザ定義もしくはシステム定義のルールに従い比較し必要に応じてコネクション分割数を増加または削減し、コネクション分割数を増加させるときには新たなＴＣＰコネクションＣを開始し記憶領域Ｂのコネクション分割数およびコネクションＣの識別情報を更新しコネクション分割数を削減させるときには記憶領域Ｂから任意のＴＣＰコネクションＤを取得しＴＣＰコネクションＤを終了し記憶領域Ｂのコネクション分割数およびコネクションＣの識別情報を更新し制御する事を特徴とする。
このような構成により、本ＷＡＮ高速化装置では、既設の環境にあるサーバ端末およびクライアント端末の通信制御方式を変更する事なく、プロクシ装置間のＴＣＰ通信のみを多重化し、クライアント−サーバ間のＴＣＰの通信を十分に高速化できる。
【００１０】
本発明の第１の解決手段によると、
ホスト間の第１網と第２網を介したＴＣＰ通信を中継するネットワーク装置であって、
ホスト間のＴＣＰコネクション毎に、第１網から入力されたデータ量に基づく要求レートと、第２網へデータを転送した実効帯域を示す出力レートを保持する第１記憶領域と、
ホスト間のＴＣＰコネクション毎に、第１網からのデータを、第２網の対向するネットワーク装置との間で確立された複数のコネクションに分割して転送し、第２網からの複数のコネクションを介したデータを結合して第１網に転送するコネクション分割結合部と、
コネクション分割数を保持する第２記憶領域と、
前記要求レートと前記出力レートに基づき、コネクション分割数を増加又は削減する帯域監視部と
を備えたネットワーク装置が提供される。
【００１１】
本発明の第２の解決手段によると、
ホスト間の第１網と第２網を介したＴＣＰ通信を中継するネットワーク装置の制御方法であって、
ホスト間のＴＣＰコネクション毎に、第１網から入力されたデータ量に基づく要求レートと、第２網へデータを転送した実効帯域を示す出力レートを第１記憶領域に記憶し、
ホスト間のＴＣＰコネクション毎に、第１網からのデータを、第２網の対向するネットワーク装置との間で確立された複数のコネクションに分割して転送し、第２網からの複数のコネクションを介したデータを結合して第１網に転送し、
前記要求レートと前記出力レートに基づき、コネクション分割数を増加又は削減する
前記ネットワーク装置の制御方法が提供される。
【００１２】
本発明の第３の解決手段によると、
広域ネットワークを介して第１ホストと第２ホストが通信を行うネットワークシステムであって、
請求項１に記載のネットワーク装置であって、前記第１ホスト側に配置される第１のネットワーク装置と、
請求項１に記載のネットワーク装置であって、前記第２ホスト側に配置される第２のネットワーク装置と
を備え、
前記第１のネットワーク装置と前記第２のネットワーク装置は、広域ネットワークを介して配置され、
前記第１ホストと前記第２ホストが、広域ネットワークの実効帯域に基づき分割されるコネクションを介して通信することを特徴とするネットワークシステムが提供される。
本発明の第４の解決手段によると
広域ネットワークを介して第１ホストと第２ホストが通信を行うネットワークシステムであって、
前記第１ホスト側に配置される第１の汎用サーバ装置と
前記第２のスト側に配置される第２の汎用サーバ装置と
前記第１の汎用サーバ装置側に配置される請求項８に記載の方法を実行するプログラムおよび関連するデータを格納した第１の外部記憶媒体と
前記第２の汎用サーバ装置側に配置される請求項８に記載の方法を実行するプログラムおよび関連するデータを格納した第２の外部記憶媒体と
を備え、
前記第１の汎用サーバ装置と前記第２の汎用サーバ装置は、広域ネットワークを介して配置され、
前記第１の外部記憶媒体から前記第１の汎用サーバ装置にプログラムと関連するデータをコピーし、
前記第２の外部記憶媒体から前記第２の汎用サーバ装置にプログラムと関連するデータをコピーし、
前記第１ホストと前記第２ホストが、広域ネットワークの実効帯域に基づき分割されるコネクションを介して通信することを特徴とするネットワークシステムが提供される。
【発明の効果】
【００１３】
本発明によると、ＴＣＰの通信を高速化可能なネットワーク装置、ネットワーク装置の制御方法及びネットワークシステムを提供できる。また、本発明によると、既設の環境への導入が容易なプロクシ装置においてＴＣＰを多重化可能なネットワーク装置、ネットワーク装置の制御方法及びネットワークシステムを提供できる。
【図面の簡単な説明】
【００１４】
【図１】実施例１の全体構成図である。
【図２】実施例１の帯域ＤＢのスキーマとレコード例である。
【図３】実施例１のコネクション分割数ＤＢのスキーマとレコード例である。
【図４】コネクション開始から終了までのフローチャート。
【図５】実施例１の帯域監視部のフローチャートである。
【図６】実施例１の帯域監視部の分割転送処理のフローチャートである。
【図７】実施例１のコネクション分割結合部のフローチャートである。
【図８】実施例１のコネクション分割結合部の分割転送処理のフローチャートである。
【図９】実施例１のコネクション分割結合部の分割受信処理のフローチャートである。
【図１０】実施例１の帯域監視部の帯域調整処理のフローチャートである。
【図１１】実施例１のコネクション分割結合部の帯域調整処理Ａのフローチャートである。
【図１２】実施例１のコネクション分割結合部の帯域調整処理Ｂのフローチャートである。
【図１３】実施例１のコネクション開始シーケンスである。
【図１４】実施例１の定常状態の通信シーケンスである。
【図１５】実施例１のコネクション終了シーケンスである。
【図１６】実施例１の分割コネクション数の見直し処理シーケンスである。
【図１７】実施例２の帯域ＤＢのスキーマとレコード例である。
【図１８】実施例３の全体構成図である。
【図１９】実施例４の全体構成図である。
【発明を実施するための形態】
【００１５】
以下、実施例を図面を用いて説明する。
【実施例１】
【００１６】
本実施例では、例えば全ての端末からの通信を平等に高速化するＷＡＮ高速化装置１０１１および１０３１の例を説明する。
図１は、本実施例のＷＡＮ高速化装置を用いた通信システムの構成図の例である。図１ではホスト１（１００１）およびホスト２（１００２）の２台のホスト（通信装置、端末）がＬＡＮ（第１網）及びＷＡＮ（第２網）（１００３）を介して通信する。その経路上で、ＷＡＮ高速化装置（ネットワーク装置）１０１１および１０３１はプロクシ装置として動作する。例えばホスト１（１００１）とＷＡＮ高速化装置１０１１、およびホスト２（１００２）とＷＡＮ高速化装置１０３１はそれぞれ物理的な近傍に置き、ネットワーク遅延を小さくする。
ＷＡＮ高速化装置１０１１（および１０３１）は外部入出力としてＬＡＮインターフェース１０１２（および１０３２）およびＷＡＮインターフェース１０１３（および１０３３）を有する。またプログラムを動作させるために、ＣＰＵ１０１８（および１０３８）、主記憶（メインメモリ、主記憶部）１０２０（および１０４０）、および、二次記憶（セカンダリメモリ、二次記憶部）１０１９（および１０３９）を有する。ＬＡＮインターフェース１０１２（および１０３２）およびＷＡＮインターフェース１０１３（および１０３３）は数ＫＢから数ＭＢ程度のＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ、先に入ったデータが先に出ていく）方式のバッファを有する。そのため、ＬＡＮインターフェース１０１２（および１０３２）およびＷＡＮインターフェース１０１３（および１０３３）から主記憶１０２０（および１０４０）へ、最大でバッファサイズ分のデータを読み込むことができる。
二次記憶１０１９（１０３９）にはプログラムとデータベース（ＤＢ）が保存され、ＷＡＮ高速化装置１０１１（および１０３１）の起動後にプログラムおよびＤＢが主記憶１０２０（および１０４０）に読み込まれ、ＣＰＵ１０１８（および１０３８）によって動かされる。
【００１７】
実施例１ではプログラムとして帯域監視プログラム１０１４（および１０３４）およびコネクション分割結合プログラム１０１６（および１０３６）を含む。以下、ＣＰＵ１０１８が帯域監視プログラムを実行して実現するブロックを帯域監視部１０１４（および１０３４）、ＣＰＵ１０１８がコネクション分割結合プログラムを実行して実現するブロックをコネクション分割結合部１０１６（および１０３６）として説明する。二つのコネクション分割結合部１０１６および１０３６の間には予め制御用のＴＣＰコネクションを張っておく。これは例えば特別なポート番号を使ったり、特別なＩＰアドレスを使ったりといった方法で、他の接続と区別することができる。
主記憶１０２０は帯域ＤＢ（第１記憶領域）１０１５（および１０３５）とコネクション分割数ＤＢ（第２記憶領域）１０１７（および１０３７）を有する。帯域ＤＢ１０１５（および１０３５）はＴＣＰコネクションごとの要求レートと、ネットワークに転送できた出力レートの各移動平均を保持する。
図２において、帯域ＤＢ１０１５（および１０３５）のスキーマとレコード例を表１４００１に示す。表１４００１のスキーマはＬＡＮホストＩＰ列、ＬＡＮホストポート列、ＷＡＮホストＩＰ列、ＷＡＮホストポート列の４列を組み合わせることでＴＣＰコネクションを区別できる。すなわち特定のＴＣＰコネクションに対応する行（エントリ）を検索できる。また、例えば要求レートおよび出力レートの直近５秒の移動平均を取るために、要求レートと出力レートの直近５つの値を保持する配列構造を持ち、さらに最終監視時刻を保持する。なお、本実施例では移動平均の取得期間は５秒とするが、システム定義もしくはユーザ定義の値として５秒以外の取得期間を用いてもよい。また、求められる移動平均をさらに記憶してもよい。
【００１８】
要求レートは、例えば、単位時間内に入力されたデータ量又はこれに基づく値である。また、出力レートは、例えば単位時間内にデータを転送した実効帯域を示す。
帯域ＤＢ１０１５（および１０３５）の要求レート配列および出力レート配列の更新方法を、図２を用いて説明する。ここでは行１４００２に保持したコネクションの要求レートと出力レートを更新する場合の例を用いる。行１４００２は最終監視時刻が２０１１年３月１９日８時４５分３６秒であり、要求レート配列は、４秒前すなわち２０１１年３月１９日８時４５分３２秒からの１秒間（単位時間）の要求レートが２９、３秒前すなわち２０１１年３月１９日８時４５分３３秒からの１秒間の要求レートが２０、同様に２秒前の１秒間の要求レートが１３、１秒前の１秒間の要求レートが０、現在すなわち２０１１年３月１９日８時４５分３６秒からの１秒間の出力レートが０である事を表している。また、同様に出力レート配列は、４秒前の１秒間の出力レートが１２、３秒前の１秒間の出力レートが１２、２秒前の１秒間の出力レートが１２、１秒前の１秒間の出力レートが０、現在の１秒間の出力レートが０であることを表している。ここでレートの単位としてはいくつか考えられる。本実施例ではＫＢ／秒を用いるがパケット数／秒など、他の単位でも構わない。なお、要求レートおよび出力レート両配列の最後の１列、すなわちここでは２０１１年３月１９日８時４５分３６秒からの１秒間の出力レートは厳密には１秒経っていないため１秒間のレートを表していないが、ここでは便宜的に１秒間のレートと呼ぶ。
【００１９】
この状態から２０１１年３月１９日８時４５分３６秒１０の時に処理の要求が４ＫＢ、出力が３ＫＢであった場合（１４００３）には、表１４００１は表１４００４のように変化する。ここでは行１４００２に対応する行１４００５の通り、要求レート配列の最後の一列が０＋４すなわち４（ＫＢ）、出力レート配列の最後の一列が０＋３すなわち３（ＫＢ）、最終監視時刻は現在時すなわち２０１１年３月１９日８時４５分３６秒１０に更新される。このように要求レートおよび出力レート両配列の最後の１列を適宜インクリメントし、１秒間のレートをカウントする。
続いて２０１１年３月１９日８時４５分３７秒０５の時に処理の要求が１ＫＢ、出力が２ＫＢであった場合（１４００６）には、表１４００４は表１４００６のように変化する。ここでは時刻の秒の単位が３６秒から３７秒に変化したため、要求レートおよび出力レートの両配列をシフトされる。具体的には、行１４００５に対応する行１４００８の通り、全ての値を左に一つシフトさせ、最後の１列すなわち現在の１秒を表す列に今回の要求である１（ＫＢ）および出力である２（ＫＢ）が入る。帯域ＤＢ１０１５（および１０３５）の要求レート配列および出力レート配列は、例えば帯域監視部１０１４（１０３４）が以上のように更新し管理する。
コネクション分割数ＤＢ１０１７（および１０３７）はホストが要求したコネクションごとのコネクション分割数および分割した各コネクションの識別情報を保持する。
図３において、コネクション分割数ＤＢ１０１７（および１０３７）のスキーマとレコード例を表１５００１に示す。表１５００１のスキーマはＬＡＮホストＩＰ列、ＬＡＮホストポート列、ＷＡＮホストＩＰ列、ＷＡＮホストポート列の４列を組み合わせることでＴＣＰコネクションを区別できる。また、ＷＡＮ高速化装置１０１１および１０３１の間のコネクション分割数をコネクション分割数列に、分割した各コネクションの両端ポート番号を自ポートと他ポート配列に保持する。本実施例ではＷＡＮ高速化装置１０１１および１０３１の間のコネクションを分割するときに、常に片方のＷＡＮ高速化装置で使うポートを１つにするように制御する。このレコードでは他ポート側のポートを１つにしている。例えば、コネクション分割結合部１０１６（および１０３６）がコネクション分割数ＤＢ１０１７（および１０３７）を更新し、管理する。
【００２０】
図４に、図１に示した通信システムにおいて、ホスト１（１００１）とホスト２（１００２）の間のコネクション開始から終了までの流れを示す。
ホスト１（１００１）もしくはホスト２（１００２）が通信を開始（１７００１）する際、まずコネクション開始処理（１７００２）を行い、ＷＡＮ高速化装置１０１１および１０３１を介してホスト１（１００１）とホスト２（１００２）の間でコネクションを確立する。本処理の詳細は図１３等で説明する。続いてホスト１（１００１）とホスト２（１００２）の間で定常状態通信処理（１７００３）を行い、データのやり取りを行う。本処理は双方向に通信可能である。すなわち手順１７００２においてどちらのホストがコネクションを開始したかに因らず、ホスト１（１００１）からホスト２（１００１）への通信も、ホスト２（１００２）からホスト１（１００１）への通信も行える。本処理の詳細は図１４等で説明する。その後、ホスト１（１００１）もしくはホスト２（１００２）において通信を継続するか判断（１７００４）する。継続する場合は定常状態通信（１７００３）に戻り、切断する場合はコネクション切断処理（１７００５）し、コネクションを終了（１７００６）する。この判断（１７００４）およびコネクション切断処理（１７００５）は、手順１７００２においてどちらのホストがコネクションを開始したかに因らず、ホスト１（１００１）およびホスト２（１００２）のどちらが判断（１７００４）し切断処理（１７００５）して良い。なお、コネクション切断処理の詳細（１７００５）は図１５等に示す。
【００２１】
また、ＷＡＮ高速化装置１０１１および１０１２においてコネクション分割数の変更要否判断及び変更（１７００９）を定期的に行う。図ではコネクション開始から終了までの流れの中に記載しているが、これらの処理とは非同期でもよい。本判断は、例えばコネクションを開始したホストに接続されたＷＡＮ高速化装置が行う。すなわちホスト１（１００１）がコネクションを開始した時にはＷＡＮ高速化装置１０１１が行い、ホスト２（１００２）がコネクションを開始した時にはＷＡＮ高速化装置１０１２が判断を行う。判断の結果、変更要であればコネクション分割数変更処理を行う。本処理によって、定常状態通信（１７００３）におけるコネクション分割数が変更される。
【００２２】
（動作フローチャート）
続いて、帯域監視部及びコネクション分割結合部の実装を、図５から図１２のフローチャートを用いて説明する。なお、以下、フローチャートの説明は、主にＷＡＮ高速化装置１０１１の帯域監視部１０１４とコネクション分割結合部１０１６等の各ブロックについて説明するが、ＷＡＮ高速化装置１０１１の帯域監視部１０３４とコネクション分割結合部１０３６等についても同様である。
図５は帯域監視部のフローチャートである。帯域監視部１０１４は処理開始６００１後、現在時刻を変数ｏｌｄ＿ｔｉｍｅに保存６０１０し、その後はＬＡＮインターフェースからデータを取得６００２してそれに応じた処理（６００３〜６０３９）を行い、続いてコネクション分割結合部１０１６からデータを取得６００５してそれに応じた処理（６００６〜６０６９）を行い、時刻を取得６００８して帯域調整処理（６００９、６０９１）を行うというループを繰り返す。以下、各処理の詳細を記す。各処理は、帯域監視部１０１４が実行する。
ＬＡＮインターフェースからのデータ取得６００２後、まずデータが取得できたかどうか判断６００３する。例えば、ＬＡＮインターフェースのバッファにデータが溜まっていない場合には、データが取得できず、先に進むと判断される。データがあった場合には、データがｓｙｎか６０３１、ｆｉｎか６０３４、ａｃｋか６０３７、それ以外かという判断に基づき処理を進める。ｓｙｎである場合（６０３１、６０３２、６０３３）の処理は、後述するメッセージ受信２００１および２０１１に対応する処理であり、受け取ったメッセージをコネクション分割結合部１０１６へ転送後、コネクション分割結合部１０１６からの応答を待てるよう、フラグ（Ｓｙｎフラグ）を立てる。ｆｉｎである場合（６０３４、６０３５、６０３６）の処理は、後述するメッセージ受信４００１に対応する処理であり、受け取ったメッセージをコネクション分割結合部１０１６へ転送後、コネクション分割結合部１０１６からの応答を待てるよう、フラグ（ｆｉｎフラグ）を立てる。ａｃｋである場合（６０３７、６０３８）の処理は、後述するメッセージ受信２０２１、３０２４、４０１１、４０３１に対応する処理であり、受け取ったメッセージを転送する。そのいずれでもない場合は後述するメッセージ受信３００１に対応し、この場合は図６の分割転送６０３９を行う。
【００２３】
続いてメッセージ分割結合部１０１６からのデータ取得６００５後、まずデータが取得できたかどうか判断６００６する。データがあった場合には、ｓｙｎフラグが立っておりかつａｃｋを受信したか６０６１、ｆｉｎフラグが立っておりかつａｃｋを受信したか６０６５、それ以外かという判断に基づき処理を進める。ｓｙｎフラグが立っておりかつａｃｋを受信した場合（６０６１、６０６２、６０６３、６０６４）は、後述するメッセージ受信２０１５および２０２５に対応し、帯域監視ＤＢ１０１５に新たなレコードを登録し、データをＬＡＮインターフェース１０１２へ転送６０６３し、Ｓｙｎフラグを下げる。ｆｉｎフラグが立っておりかつａｃｋを受信した場合（６０６５、６０６６、６０６７、６０６８）は後述するメッセージ受信４０１５および４０３５に対応し、帯域監視ＤＢ１０１５から該当するコネクションのレコードを削除し、データをＬＡＮインターフェース１０１２へ転送６０６７し、ｆｉｎフラグを下げる。そのいずれでもない場合は、後述するメッセージ受信２００５、３０１１、３０２２、４００４、４０２４に対応し、データをＬＡＮインターフェース１０１２へ転送６０６９する。
続いて現在時刻を取得６００８し、先のループ中に変数ｏｌｄ＿ｔｉｍｅに保存した時刻と比較して例えば１秒以上経過しているか判断６００９する。１秒以上経過していた場合は、図１０の帯域調整処理６０９１を行う。その後、手順６００８で取得した時刻を変数ｏｌｄ＿ｔｉｍｅに保存し、手順６００２に戻る。帯域調整処理を行う周期は１秒以外にも適宜の周期でもよいし、不定期でもよい。
【００２４】
図６は、帯域監視部の分割転送処理６０３９のフローチャートである。各処理は、帯域監視部１０１４が実行する。
帯域監視部１（１０１４）は、分割転送処理では処理開始７００１後、帯域ＤＢ１０１５を検索し、データを受信したコネクションに関するレコードを探索７００２する。例えば、帯域監視部１（１０１４）は、ＬＡＮホストＩＰ列、ＬＡＮホストポート列、ＷＡＮホストＩＰ列、ＷＡＮホストポート列の４列を組み合わせて、データを受信したコネクションの各対応するデータに基づき、帯域ＤＢ１０１５を検索し、該コネクションに関するレコードを探索３００２する。
続いて帯域監視部１（１０１４）は該コネクションに関するレコードの要求レート配列と最終監視時刻を更新７００３する。例えば、最終監視時刻を現在時刻にし、要求レート配列は例えば直近１秒間の受信データに基づき定められる。
続いて帯域監視部１（１０１４）は受信したパケット列をコネクション分割結合部１０１６に転送７００４する。この転送操作はＷＡＮインターフェース１０１３および１０３３やＷＡＮ１００３の影響をうけ、所要時間が変わる。続いて帯域監視部１（１０１４）は上記の所要時間を観測し、所要時間と送信データ量に基づき該コネクションに関するレコードの出力レート配列を更新７００５し、処理を終える７００６。この操作の結果、該コネクションの出力レートが、例えば、実際の送信データ量（実効帯域）に基づき更新される。
【００２５】
図７はコネクション分割結合部のフローチャートである。コネクション分割結合部１０１６は処理開始８００１後、帯域監視部１０１４からデータを取得８００２してそれに応じた処理（８００３〜８０４２）を行い、続いてＷＡＮインターフェースからデータを取得８００５してそれに応じた処理（８００６〜８０７６）を行うというループを繰り返す。以下、各処理の詳細を記す。各処理は、コネクション分割結合部１０１６が実行する。
帯域監視部１０１４からのデータ取得８００２後、まずデータが取得できたかどうか判断８００３する。データがあった場合には、データが制御メッセージか８０３１、ｓｙｎ＋ａｃｋか８０４３、ｓｙｎか８０３３、ｆｉｎか８０３７、ａｃｋか８０４０、それ以外かという判断に基づき処理を進める。制御メッセージである場合（８０３１、８０３２）は後述するメッセージ受信５００５に対応し、図１１の帯域調整処理Ａ８０３２を行う。ｓｙｎ＋ａｃｋである場合（８０４３、８０４４、８０４５）は後述するメッセージ受信２０１２に対応する処理であり、ＷＡＮインターフェース１０１３にメッセージ転送後、対向のコネクション分割結合部１０３６からの応答を待てるよう、フラグ（Ｓｙｎフラグ）を立てる。ｓｙｎである場合（８０３３、８０３４、８０３５、８０３６）は後述するメッセージ受信２００２に対応する処理であり、コネクションを開始した後にメッセージをＷＡＮインターフェース１０１３に転送し、対向のコネクション分割結合部１０３６からの応答を待てるよう、フラグ（Ｓｙｎフラグ）を立てる。ｆｉｎである場合（８０３７、８０３８、８０３９）は後述するメッセージ受信４００３、４０２３に対応する処理であり、ＷＡＮインターフェース１０１３にメッセージ転送後、対向のコネクション分割結合部１０３６からの応答を待てるよう、フラグ（ｆｉｎフラグ）を立てる。ａｃｋである場合は後述するメッセージ受信２０２２、４０１２、４０３２に対応する処理であり、ＷＡＮインターフェース１０１３にメッセージを転送する。そのいずれでもない場合は後述するメッセージ受信３００４に対応し、図８の分割転送処理８０４２を行う。
【００２６】
続いてＷＡＮインターフェースからのデータ取得８００５後、まずデータが取得できたかどうか判断８００６する。データがあった場合には、それが自分宛（自装置宛）のｆｉｎ８０６１か、制御メッセージ８０６３か、ｓｙｎフラグが立っておりかつａｃｋ８０６５か、ｆｉｎフラグが立っておりかつａｃｋ８０６９か、ｓｙｎもしくはｆｉｎもしくはａｃｋ８０７４か、それ以外かという判断に基づき処理を進める。自分宛（自装置宛）のｆｉｎである場合（８０６１、８０６２）は後述するメッセージ受信４０１６、４０３６に対応し、ａｃｋを返す。制御メッセージである場合（８０６３、８０６４）は後述するメッセージ受信５００８に対応し、図１２の帯域調整処理Ｂ８０６４を行う。ｓｙｎフラグが立っておりかつａｃｋである場合（８０６５、８０６６、８０６７、８０６８）は後述するメッセージ受信２０１３、２０２３に対応し、コネクション分割数ＤＢ１０１７に新たなレコードを登録し、帯域監視部１０１４に転送後Ｓｙｎフラグを下げる。ｆｉｎフラグが立っておりかつａｃｋである場合（８０６９、８０７０、８０７１、８０７２、８０７３）は後述するメッセージ受信４０１３、４０３３に対応し、コネクション分割数ＤＢ１０１７から該当レコードを削除し、帯域監視部１０１４に転送し、ｆｉｎフラグを下げた後に、対向のコネクション分割結合部１０３６にｆｉｎを返す。ｓｙｎもしくはｆｉｎもしくはａｃｋである場合（８０７４、８０７５）は後述する処理２００４、４００３、４０２３に対応し、メッセージを帯域監視部１０１４に転送する。そのいずれでもない場合はメッセージ受信３００８に対応し、図９の分割受信処理８０７６を行う。
【００２７】
図８はコネクション分割結合部の分割転送処理８０４２のフローチャートである。各処理は、コネクション分割結合部１０１６が実行する。
手順９００２でコネクション分割数ＤＢ１０１７を探索してレコード取得する。例えばコネクション分割結合部１（１０１６）はコネクション分割数ＤＢ１０１７をＬＡＮホストＩＰ列、ＬＡＮホストポート列、ＷＡＮホストＩＰ列、ＷＡＮホストポート列の４列を組み合わせて検索し、該当コネクション（データを入力したコネクション）に関するレコードを探索する。
【００２８】
次に、一つもしくは複数の関連するＴＣＰコネクションを特定・取得９００３する。例えば、対向するＷＡＮ高速化装置１０３１との間で確立された分割コネクションを、探索されたレコードに従い特定する。それらに対してラウンドロビンにデータを分割し転送９００４する。例えば、コネクション分割結合部１（１０１６）は該コネクションに関するレコードのコネクション分割数列に従い、受信したパケット列を分割する。分割方式はラウンドロビンやハッシュといったものを用いることができる。本実施例ではラウンドロビンを採用して説明する。ラウンドロビンでは分割したコネクションに対して順番にパケットを流していく。分割したコネクションの順序は、例えば、コネクション分割数ＤＢ１０１７の自ポート配列および他ポート配列の組み合わせを、数字の小さい順にソートして決める。例えば表１５００１のレコード１５００２の場合は、１番目のコネクションはポートの組み合わせが［８０１３−４７５９］であり、２番目のコネクションはポートの組み合わせが［１０１２９−４７５９］である。
【００２９】
その後、コネクション分割結合部１（１０１６）はａｃｋを受信するまで待つ９００５。コネクション分割結合部１（１０１６）は受信したａｃｋをＴＣＰのシーケンス番号順にソート９００６し、帯域監視部１（１０１４）へ転送９００７し、処理を終える。ここでａｃｋはＴＣＰの輻輳制御などの影響から到着順は多少前後するものの、概ねパケットを転送したときの順に返ってくる。そのため、分割した各コネクションからラウンドロビンにデータを取得し、その都度マージソートを行えばソート可能である。
【００３０】
図９はコネクション分割結合部の分割受信処理のフローチャートである。
分割結合部１（１０１６）は、手順１０００２でコネクション分割数ＤＢ１０１７を探索してレコード取得後、一つもしくは複数の関連するＴＣＰコネクションを特定・取得１０００３し、それらからラウンドロビンにデータを受信１０００４しａｃｋを返す１０００５。その後受信したデータをＴＣＰのシーケンス番号順にソート１０００６し、帯域監視部１（１０１４）へ転送１０００７し、処理を終える。なお、ソート１０００６も上述のソートと同様の手法でマージソートできる。
【００３１】
図１０は帯域監視部の帯域調整処理６０９１のフローチャートである。
帯域調整処理６０９１では処理開始１１００１後、帯域監視部１０１４は帯域ＤＢ１０１５からあるレコード（任意のレコード）を検索１１００２する。
次に帯域監視部１０１４は、現在の時刻を用いてレコード内の要求レート配列と出力レート配列と最終監視時刻を更新し、要求レートの平均を更新１１００３し、出力レートの平均も更新１１００４する。例えば、要求レート配列は受信データ量に基づき更新し、出力レート配列は送信データ量に基づき更新する。
【００３２】
続いて帯域監視部１０１４は、分割数変更の要否を判断１１００５する。表１４００１の例では要求レートの移動平均は１２．４パケット／秒であり、出力レートの移動平均も７．２パケット／秒である。続いて分割数変更の要否を判断５００４する。一例として要求レートが出力レートよりも２０％（第１閾値）以上大きい場合は分割数を１増やす必要があり、要求レートが０パケット／秒（第２閾値）である場合は分割数を１減らす必要があり、いずれでもない場合は不要と判断する。なお、本実施例では閾値を２０％、０パケット／秒とするが、システム定義もしくはユーザ定義の値としてこれら以外の閾値を用いてもよい。表１４００１の例では要求レートが出力レートよりも２０％以上大きいため、分割数を１増やす必要があると判断する。判断の結果が変更要であれば、コネクション分割結合部１０１６に分割数のインクリメント指示（分割数を減らす場合はデクリメント指示）を送信１１００６する。その後、処理を終える１１００７。
【００３３】
図１１はコネクション分割結合部の帯域調整処理Ａ（８０３２）のフローチャートである。例えば、帯域監視部からインクリメント指示を受信した場合のフローチャートである。
コネクション分割結合部１（１０１６）は、コネクション分割数ＤＢ１０１７を参照し、データを入力したコネクションに関するレコードを上述と同様にして探索１２００２する。手順１２００３は他ポート配列の長さが２以上であるか否かの判断である。コネクション分割結合部１（１０１６）は、他ポート配列の長さが２以上でなければ１２００３、レコードを更新１２００４する。例えば、制御データは、帯域監視部１（１０１４）からインクリメント指示であり、コネクション分割結合部１（１０１６）はコネクション分割数ＤＢ１０１７のレコードについてコネクション分割数列の値をインクリメントし、他ポート配列の長さが例えば１であるため、空きポート番号を自ポート配列に追加する。
【００３４】
次にコネクション分割結合部１（１０１６）は、レコード更新１２００４で更新したレコードの内容を引数に、インクリメント指示をＷＡＮインターフェース１０１３を介してコネクション分割結合部２（１０３６）に送信する。ここでの通信は制御用コネクションを用いる。コネクション分割結合部１（１０１６）は、ＷＡＮインターフェース１０１３を介したコネクション分割結合部２（１０３６）からのａｃｋを待つ１２００６。その後、コネクション分割結合部１（１０１６）は、コネクション分割結合部２（１０３６）との間で３ウェイハンドシェイクを行い新たなＴＣＰコネクションを確立１２００７する。
また手順１２００９は他ポート配列の長さが２以上であった場合１２００３の処理であり、コネクション分割結合部１（１０１６）は、無引数のインクリメント（もしくはデクリメント）指示をＷＡＮインターフェース１０１３を介してコネクション分割結合部２（１０３６）へ転送する。
【００３５】
図１２はコネクション分割結合部の帯域調整処理Ｂのフローチャートである。例えば、対向するコネクション分割結合部からからインクリメント指示を受信した場合のフローチャートである。
手順１３００２は受信データ（例えばインクリメント指示）に引数があるか否かの判断であり、引数がなかった場合は１３００６から１３０１０の手順に従う。この手順は、上述の手順１２００２、１２００４〜１２００７と同様の手順である。すなわちインクリメント（もしくはデクリメント）処理が逆向きに行われる事になる。
一方、引数があった場合１３００２は、１３００３から１３００５の手順に従う。手順１３００３では、分割結合部１（１０１６）は該コネクションに関連するレコードを検索し、インクリメント指示に従いレコードを更新１３００４する。例えば、コネクション分割数列の値をインクリメントする。また、分割結合部１（１０１６）はコネクション分割結合部１にａｃｋを返す１３００５。
【００３６】
（動作シーケンス）
以下、図４に示した各処理の詳細を図１３から図１６のシーケンス図を用いて説明する。なお、二つの帯域監視部を区別するために、帯域監視部１０１４を帯域監視部１と記し、帯域監視部１０３４を帯域監視部２と記す。また、同じく二つのコネクション分割結合部を区別するために、コネクション分割結合部１０１６をコネクション分割結合部１と記し、コネクション分割結合部１０３６をコネクション分割結合部２と記す。さらに、図面ではコネクション分割結合部を分割結合部と省略している。さらに、ホスト１およびホスト２のＴＣＰコネクション管理方法は既存のものを使うため詳細には触れず、ホスト１およびホスト２の間に入るＷＡＮ高速化装置１０１１および１０３１およびそれらの内部の動作モジュールの動作に限定して説明を記す。
図１３はホスト１（１００１）およびホスト２（１００２）の間で新たなＴＣＰ接続を開始する際の処理シーケンス例である。この例ではホスト１（１００１）が接続処理を開始する。ＴＣＰの接続開始にはホスト１からホスト２にｓｙｎパケットを送信し、それに対してホスト２がホスト１にｓｙｎ＋ａｃｋパケットを返し、さらにホスト１がホスト２にａｃｋパケットを返す３ウェイハンドシェイクという手法が用いられる。
【００３７】
まずホスト１（１００１）はｓｙｎパケットを、ＬＡＮインターフェース１０１２を介して帯域監視部１（１０１４）に送信２００１する。なお、ここでＬＡＮインターフェース１０１２を介す事は自明であるため、図１３および本実施例の処理の説明ではＬＡＮインターフェース１０１２（および１０３２）を省略する。また同様の理由でＷＡＮインターフェース１０１３（および１０３３）も省略する。帯域監視部１（１０１４）は受け取ったｓｙｎパケットをコネクション分割結合部１（１０１６）に転送２００２し、コネクション分割結合部１（１０１６）からの応答を待つ。
続いてコネクション分割結合部１（１０１６）はコネクション分割結合部２（１０３６）との間に代理通信用のＴＣＰコネクションを接続２００３する。ここでもウェイハンドシェイクの処理が行われる。その後、コネクション分割結合部１（１０１６）は受け取ったｓｙｎパケットをコネクション分割結合部２（１０３６）に手順２００３で接続したコネクションを用いて転送２００４し、コネクション分割結合部２（１０３６）からの応答を待つ。
【００３８】
続いてコネクション分割結合部２（１０３６）は受け取ったｓｙｎパケットを帯域監視部２（１０３４）に転送２００５する。続いて帯域監視部２（１０３４）は受け取ったｓｙｎパケットをホスト２（１００２）に転送２００６する。
次にホスト２（１００２）はｓｙｎ＋ａｃｋパケットを帯域監視部２（１０３４）に送信２０１１する。帯域監視部２（１０３４）は受け取ったｓｙｎ＋ａｃｋパケットをコネクション分割結合部２（１０３６）に転送２０１２し、コネクション分割結合部２（１０３６）からの応答を待つ。続いてコネクション分割結合部２（１０３６）は受け取ったｓｙｎ＋ａｃｋパケットを、応答を待っているコネクション分割結合部１（１０１６）に手順２００３で接続したコネクションを用いて転送２０１３し、コネクション分割結合部１（１０１６）からの応答を待つ。続いてコネクション分割結合部１（１０１６）はコネクション分割数ＤＢ１０１７に該コネクションに関するレコードを登録２０１４し、受け取ったｓｙｎ＋ａｃｋパケットを、応答を待っている帯域監視部１（１０１４）に転送（２０１５）し、応答待ち状態を解く。続いて帯域監視部１（１０１４）は帯域ＤＢ１０１５に該コネクションに関するレコードを登録２０１６し、受け取ったｓｙｎ＋ａｃｋパケットをホスト１（１００１）に転送２０１７し、応答待ち状態を解く。
【００３９】
最後にホスト１（１００１）はａｃｋパケットを帯域監視部１（１０１４）に送信２０２１する。続いて帯域監視部１（１０１４）は受け取ったａｃｋパケットをコネクション分割結合部１（１０１６）に転送２０２２する。続いてコネクション分割結合部１（１０１６）は受け取ったａｃｋパケットを、応答を待っているコネクション分割結合部２（１０３６）に手順２００３で接続したコネクションを用いて転送２０２３する。続いてコネクション分割結合部２（１０３６）はコネクション分割数ＤＢ１０３７に該コネクションに関するレコードを登録２０２４し、受け取ったａｃｋパケットを、応答を待っている帯域監視部２（１０３４）に転送２０２５し、応答待ち状態を解く。続いて帯域監視部２（１０３４）では帯域ＤＢ１０３５に該コネクションに関するレコードを登録２０２６し、受け取ったａｃｋパケットを、ホスト２に転送２０２７し、応答待ち状態を解く。
ここまでの処理フローで、ホスト１（１００１）とホスト２（１００２）の間に入るＷＡＮ高速化装置１０１１および１０３１は、３ウェイハンドシェイクの通信処理を代行しつつ、該コネクションの代行用コネクションを開始し、かつ該コネクションに関する管理情報をＤＢに登録できる。
【００４０】
図１４は、ホスト１（１００１）およびホスト２（１００２）の間で、図１３で開始したＴＣＰ接続を用いてデータ通信する際の処理シーケンス例である。この例ではホスト１（１００１）がホスト２（１００２）にデータを送信する。逆の方向も同様である。なお、図１３の時点ではコネクション分割結合部１（１０１６）および２（１０３６）の間のＴＣＰコネクションは１回線しかないが、ここではＴＣＰコネクションがすでに２回線あるとする。コネクション分割結合部１（１０１６）および２（１０３６）の間のＴＣＰコネクションの増加減少に関する手順は上述の通りである。
【００４１】
まずホスト１（１００１）はパケット列を帯域監視部１（１０１４）に送信３００１する。帯域監視部１（１０１４）は最長でバッファサイズ分のパケット列を受信する。帯域監視部１（１０１４）は、図５、図６に示す処理に従い、受信したパケット列をコネクション分割結合部１（１０１６）に転送３００４する。
コネクション分割結合部１（１０１６）は、図７、図８に示す処理に従い、受信したパケット列を分割し、分割したパケット列を適切なコネクションを用いて転送３００８し、ａｃｋを受信３００９するまで待つ。続いてコネクション分割結合部１（１０１６）は受信したａｃｋをＴＣＰのシーケンス番号順にソートし、帯域監視部１（１０１４）に転送３０１１する。その後、帯域監視部１（１０１４）はホスト１（１００１）に転送３０１２する。
一方、複数コネクションを用いてパケット列を転送３００８された分割結合部２（１０３６）はａｃｋを返信３００９した後に、図７、図９に示す処理に従い、受信したパケット列をＴＣＰのシーケンス番号順にソートし、帯域監視部２（１０３４）に転送３０２２する。
【００４２】
続いて帯域監視部２（１０３４）は、図５に示す処理に従い、受信したパケット列をホスト２（１００２）に転送する３０２３。ホスト２（１００２）はＴＣＰの制御に従い帯域監視部２（１０３４）にａｃｋを返し（３０２４）、そのａｃｋは分割結合部２（１０３６）に伝わり処理を終える。
ここまでの処理フローで、ホスト１（１００１）とホスト２（１００２）の間に入るＷＡＮ高速化装置１０１１および１０３１は、ホスト１（１００１）とホスト２（１００２）のデータ通信を、複数のＴＣＰコネクションを用いることで高速化できる。
図１５は、ホスト１（１００１）およびホスト２（１００２）の間でＴＣＰコネクションを終了する際の処理シーケンス例である。ここではホスト１（１００１）が接続終了処理を開始する。ＴＣＰの接続終了処理はホスト１からホスト２にｆｉｎパケットを送信し、それに対してホスト２がａｃｋパケットを返し、さらにホスト２からホスト１に送るデータがなくなった後にホスト２からホスト１にｆｉｎパケットを送信し、それに対してホスト１がａｃｋパケットを返すという手順で行われる。
【００４３】
まずホスト１（１００１）はｆｉｎパケットを帯域監視部１（１０１４）に転送４００１する。各モジュールはｆｉｎパケットを伝搬（４００２、４００３、４００４、４００５）しホスト２（１００２）に到達する。なお、この伝搬の過程で、帯域監視部１（１０１４）と分割結合部１（１０１６）は、それぞれ分割結合部１（１０１６）と分割結合部２（１０３６）からの応答を待つ。
続いてホスト２（１００２）はａｃｋパケットを帯域監視部２（１０３４）に転送４０１１する。ａｃｋパケットは先と同じくコネクション分割結合部１（１０１６）まで伝搬（４０１２、４０１３）される。コネクション分割結合部１（１０１６）はコネクション分割数ＤＢ１０１７から該当するコネクションに関するレコードを削除４０１４し、帯域監視部１（１０１４）に転送４０１５し、コネクション分割結合部２（１０３６）との間の分割したコネクションそれぞれについてｆｉｎ−ａｃｋのやり取りをして４０１６、コネクション切断準備をし、応答待ち状態を解く。帯域監視部１（１０１４）も同じく帯域ＤＢ１０１５から該コネクションに関するレコードを削除４０１７し、ホスト１（１００１）に転送４０１８し、応答待ち状態を解く。
その後、ホスト２を起点として、同様にｆｉｎパケットとａｃｋパケットのやり取りを行う（４０２１〜４０３８）。
【００４４】
ここまでの処理フローで、ホスト１（１００１）とホスト２（１００２）の間に入るＷＡＮ高速化装置１０１１および１０３１は、ｆｉｎ−ａｃｋのやり取りを代行しつつ、コネクション分割結合部１（１０１６）と２（１０３６）の間の分割コネクションも４０１６および４０３６のｆｉｎ−ａｃｋのやり取りで終了させる事ができる。
図１６は、コネクション分割結合部１（１０１６）および２（１０３６）の間の分割コネクション数の見直し処理シーケンスの例である。この処理はＷＡＮ高速化装置１（１００１）および２（１００２）が代行する全てのコネクションについて行う処理であり、例えば帯域監視ＤＢ１０１５への登録の古い順に全てのコネクションに対して処理を行う。図１６はそのうち、ある１つのコネクションに関する個所である。
【００４５】
まず帯域監視部１（１０１４）は、コネクション分割結合部１（１０１６）に分割数のインクリメント指示５００５を送信する。
コネクション分割結合部１（１０１６）は、図１１に示す処理に従い、更新したレコードの内容を引数にインクリメント指示を送信する５００８。ここでの通信は制御用コネクションを用いる。続いて分割結合部２は、図１１に示す処理に従い、コネクション分割結合部（１０１６）１にａｃｋを返す５０１１。その後、コネクション分割結合部１（１０１６）と２（１０３６）の間で３ウェイハンドシェイクを行い新たなＴＣＰコネクションを確立５０１２する。
なお、レコード更新５００７の際に他ポート配列の長さが２以上であれば、レコードの更新５００７を行わず、インクリメント指示５００８のみをコネクション分割結合部２（１０３６）に送る。その後、コネクション分割結合部２（１０３６）が自らの空きポートを探索し、自ポート配列に追加してレコード更新処理を行う。その後、インクリメント指示をコネクション分割結合部１（１０１６）に返す。すなわちインクリメント処理は図１６とは逆向きに行われる。
ここまでの処理フローで、コネクション分割結合部１（１０１６）および２（１０３６）の間の分割コネクション数を見直し、分割コネクションをインクリメントすることができる。また、最後のコネクション開始処理５０１２をコネクション終了処理に変えることで、デクリメントすることもできる。
以上の処理手順を実装したＷＡＮ高速化装置を用いて図１の構成を取ることで、ホスト１（１００１）とホスト２（１００２）の間の通信を高速化可能である。
【実施例２】
【００４６】
本実施例では、分割数変更の要否判断を改良し、ＷＡＮ高速化装置１０１１と１０３１の間のコネクション数の不要な増加を避ける機構を有するＷＡＮ高速化装置の例を説明する。
図１７は実施例２におけるＷＡＮ高速化装置１０１１（および１０３１）の帯域ＤＢ１０１５（および１０３５）のスキーマおよびレコードの例である。帯域ＤＢのスキーマ１６００１は、実施例１の帯域ＤＢのスキーマに「コネクションあたり出力レート配列」列１６００２を追加したものである。列１６００２の配列のｎ番目の値は、コネクションをｎ分割した場合における、コネクション１本あたりの出力レートの最大値であるとし、現在の分割数を配列長とする。図示の例では、１番左の配列が分割数１の場合に対応し、順に分割数２・・・ｎの場合に対応する。例えば、分割数がさらに増えた場合は配列数を増やし、分割数を減らす場合は配列数も減らす。このようにすると、図中の１番右の配列が現在の分割数における値になる。図１のＷＡＮ高速化装置１０１１（および１０３１）のうち、既に説明した図１に示された同一の符号を付された構成と、同一の機能を有する部分については、説明を省略する。
【００４７】
以下に列１６００２の更新方法を記す。手順５００３（および１１００４）において出力レートを更新する際に、現在の出力レートを配列長（すなわち現在の分割数）で割った値と列１６００２の最後尾（即ち現在の分割数における最大値）を比較し、現在の出力レートを配列長で割った値の方が大きい場合は列１６００２の最後尾を現在の出力レートを配列長で割った値で更新する。すなわち、コネクションあたりの出力レートの最大値が記憶される。また、手順５００５（および１１００６）においてインクリメント指示を出す場合は列１６００２の配列長を１増やし、デクリメント指示を出す場合は列１６００２の配列長を１減らす。
また、以下に列１６００２を用いた分割数変更の要否判断方法を記す。手順５００４（および１１００５）において判断する際に列１６００２を参照し、配列の最後尾（すなわち現在のコネクションあたり出力レート最大値）の値と最後尾の一つ前（すなわち一つ少ない分割数の時のコネクションあたり出力レート最大値）の値を比較し、配列の最後尾の値が、最後尾の一つ前の値よりも例えば２０％以上小さい場合（又はそれらの比が閾値より小さい場合）は分割不要（分割を許容しない）と判断する。例えば、このような場合は、分割数を増やしても実効帯域が大きく改善しないものと想定される。なお、２０％以外にも、予め定められた適宜の閾値（第３閾値）を用いても良い。
以上の処理手順を実装したＷＡＮ高速化装置を用いて図１の構成を取ることで、ＷＡＮ高速化装置１０１１と１０３１の間のコネクション数の不要な増加を避けつつ、ホスト１（１００１）とホスト２（１００２）の間の通信を高速化可能である。
【実施例３】
【００４８】
本実施例では、実施例１または実施例２のＷＡＮ高速化装置１０１１および１０３１の動作に必要な帯域監視プログラム１０１４および１０３４と、帯域ＤＢ１０１５および１０３５と、コネクション分割結合プログラム１０１６および１０３６と、コネクション分割数ＤＢ１０１７および１０３７を、システム設置時や起動時などシステム運用前に二次記憶１０１９および１０３９に読込ませる事で、汎用サーバ装置を用いた運用を可能にした例である。
図１８は実施例３の汎用サーバ装置を用いた通信システムの構成図の例である。実施例３では汎用サーバ装置１８０１１（および１８０３１）の設置後に、ＣＤ−ＲＯＭのような外部記憶媒体１８０５１（および１８０６１）を用いて、汎用サーバ装置１８０１１（および１８０３１）の二次記憶１０１９（および１０３９）に帯域監視プログラム１０１４（および１０３４）と、帯域ＤＢ１０１５（および１０３５）と、コネクション分割結合プログラム１０１６（および１０３６）と、コネクション分割数ＤＢ１０１７（および１０３７）の読込み処理を行う手順を取る。なお、実施例３では各プログラムおよびＤＢを汎用サーバ装置１８０１１（および１８０３１）に読み込ませるために外部記憶媒体を用いたが、他にもネットワーク１０３３上の他のサーバ装置やファイルサーバなどからダウンロードしても同様の効果が得られる。
以上の処理手順を実行し汎用サーバを用いて図１８の構成を取ることで、ホスト１（１００１）とホスト２（１００２）の間の通信を高速化可能である。
【実施例４】
【００４９】
本実施例では、実施例１または実施例２または実施例３のＷＡＮ高速化装置１０１１の機能とホスト１（１００１）の機能、および、もしくはＷＡＮ高速化装置１０３１の機能とホスト２（１００２）の機能が同一の汎用サーバ装置内で動作する場合の例である。
図１９は実施例４のＷＡＮ高速化の機能とホストの機能が同一の装置内で動作する汎用サーバ装置を用いた通信システムの構成図の例である。実施例４では汎用サーバ装置１９０１１（および１９０３１）にて、実施例１のホスト１（１００１）（およびホスト２（１００２））の動作に必要なホストプログラム１９０１２（および１９０３２）と、ＷＡＮ高速化装置の動作に必要な帯域監視プログラム１０１４（および１０３４）とコネクション分割結合プログラム１０１６（および１０３６）が動作する、また、主記憶１０２０（および１０４０）は帯域監視プログラム１０１４（および１０３４）とコネクション分割結合プログラム１０１６（および１０３６）の動作に必要な帯域ＤＢ１０１５（および１０３５）とコネクション分割数ＤＢ１０１７（および１０３７）も有する。また、実施例３では実施例１のＬＡＮ  ＩＦ１０１２（および１０３２）の代わりに、多くの汎用サーバ装置で利用可能なループバックデバイスを用いて、ホストプログラム１９０１２（および１９０３２）と帯域監視プログラム１０１４（および１０３４）が通信する。なお、実施例４では各プログラムおよびＤＢは二次記憶１０１９（および１０３９）に保存され、汎用サーバ装置１９０１１（および１９０３１）の起動後に主記憶１０２０（および１０４０）に読み込まれるが、実施例３と同じく外部記憶媒体からの読込みや、ネットワーク上の他のサーバ装置やファイルサーバなどからダウンロードしても同様の効果が得られる。
以上の処理手順を実行しＷＡＮ高速化装置とホストが同一の装置内で動作する汎用サーバ装置を用いて図１９の構成を取る事で、ホストプログラム１９０１２とホストプログラム１９０３２の間の通信を高速化可能である。
【００５０】
（構成例）
［構成例１］（実効帯域に基づきＴＣＰ分割数を決定する装置の制御方法）
ネットワークプロクシ装置の制御方法であって、
ＴＣＰコネクションごとの要求レートと、ネットワークに転送できた出力レートの各移動平均を保持する記憶領域Ａと
ホストが要求したコネクションごとのコネクション分割数および分割した各コネクションの識別情報を保持する記憶領域Ｂを持ち
記憶領域Ａの要求レートと出力レートをユーザ定義もしくはシステム定義のルールに従い比較し、
必要に応じてコネクション分割数を増加または削減し、
コネクション分割数を増加させるときには、新たなＴＣＰコネクションＣを開始し、記憶領域Ｂのコネクション分割数およびコネクションＣの識別情報を更新し、
コネクション分割数を削減させるときには、記憶領域Ｂのから任意のＴＣＰコネクションＤを取得し、ＴＣＰコネクションＤを終了し、記憶領域Ｂのコネクション分割数およびコネクションＣの識別情報を更新して
制御する事を特徴のひとつとする。
【００５１】
［構成例２］
構成例１に記載のネットワークプロクシ装置の制御方法において、
ユーザ定義もしくはシステム定義の閾値Ａおよび閾値Ｂを用いて
要求レートと出力レートを比較するルールが
要求レートが出力レートよりも閾値Ａ以上大きい場合は分割数を１増やし
要求レートが閾値Ｂよりも小さい場合は分割数を１減らす
である事を特徴のひとつとする。
［構成例３］（実効帯域に基づきＴＣＰ分割数を決定するＷＡＮ高速化）
ネットワークプロクシ装置であって、
ＴＣＰコネクションごとの要求レートと、ネットワークに転送できた出力レートの各移動平均を保持する記憶領域Ａと
ホストが要求したコネクションごとのコネクション分割数および分割した各コネクションの識別情報を保持する記憶領域Ｂを持ち
構成例２に記載の方法でコネクション分割数を増加または削減する制御を行う
事を特徴のひとつとする。
【００５２】
［構成例４］（実効帯域に基づきＴＣＰ分割数を決定する装置を用いたシステム）
広域ネットワークを介してホスト１とホスト２が通信を行うシステムであって
ホスト１とホスト２の間にそれぞれ構成例３に記載のネットワークプロクシ１とネットワークプロクシ２を置き、
ホスト１の物理的な近傍にネットワークプロクシ１を配置し
同じくホスト２の物理的な近傍にネットワークプロクシ２を配置する
事を特徴のひとつとする。
［構成例５］（実効帯域とコネクションあたり実効帯域に基づく方法）
構成例２に記載のネットワークプロクシ装置の制御方法において、
ユーザ定義もしくはシステム定義の閾値Ｃを用いて
記憶領域Ａに、さらに分割数ごとの分割コネクション１本あたりの出力レートの最大値を保持し、
分割数を１増やす判断をする際に
現在のコネクションあたり出力レート最大値と一つ少ない分割数の時のコネクションあたり出力レート最大値を比較し、その比が閾値Ｃよりも小さい場合にのみ分割数を１増やす
制御する事を特徴のひとつとする。
【産業上の利用可能性】
【００５３】
本発明は、例えばＴＣＰ通信を用いるシステムに利用可能である。
【符号の説明】
【００５４】
１００１、１００２  ホスト
１０１１、１０３１  ＷＡＮ高速化装置
１０１４、１０３４  帯域監視プログラム（帯域監視部）
１０１５、１０３５  帯域ＤＢ
１０１６、１０３６  コネクション分割プログラム（分割結合部）
１０１７  コネクション分割数ＤＢ
【図１】
0005588481.tif 000002
【図２】
0005588481.tif 000003
【図３】
0005588481.tif 000004
【図４】
0005588481.tif 000005
【図５】
0005588481.tif 000006
【図６】
0005588481.tif 000007
【図７】
0005588481.tif 000008
【図８】
0005588481.tif 000009
【図９】
0005588481.tif 000010
【図１０】
0005588481.tif 000011
【図１１】
0005588481.tif 000012
【図１２】
0005588481.tif 000013
【図１３】
0005588481.tif 000014
【図１４】
0005588481.tif 000015
【図１５】
0005588481.tif 000016
【図１６】
0005588481.tif 000017
【図１７】
0005588481.tif 000018
【図１８】
0005588481.tif 000019
【図１９】
0005588481.tif 000020