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