(57)【要約】【課題】    ＴＣＰコネクション数を制御し、スループットを向上させる。【解決手段】    本発明の通信装置は、ネットワークの状態を基に、通信に用いるＴＣＰのコネクション数の増加を判断するコネクション数導出部と、前記判断を基にＴＣＰコネクションを管理し、データを送受信するＴＣＰコネクション管理部と、ＴＣＰコネクションを通じて受信したデータを統合するデータ統合部とを含む。【選択図】      図１
2014068126.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークの状態を基に、通信に用いるＴＣＰのコネクション数の増加を判断するコネクション数導出部と、
前記判断を基に前記ＴＣＰコネクションを管理し、データを送受信するＴＣＰコネクション管理部と、
前記ＴＣＰコネクションを通じて受信したデータを統合するデータ統合部と
を含む通信装置。
【請求項２】
ネットワークの可用帯域を計測する可用帯域計測部をさらに含み、
前記コネクション数導出部が、
前記ネットワークの状態として、前記可用帯域の計測値を用いる
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
ネットワークの遅延及びパケットロス値を計測するネットワーク監視部と、
前記ネットワークの遅延及びパケットロス値を用いて、ＴＣＰのスループット値を計算するスループット計算部とをさらに含み、
前記コネクション数導出部が、
前記ネットワークの状態として、前記ＴＣＰのスループット値と現在のＴＣＰのスループット値を用いる
ことを特徴とする請求項１又は請求項２に記載の通信装置。
【請求項４】
送信データの送受信に要する時間を計測する送信時間計算部をさらに含み、
前記コネクション数導出部が、
前記ネットワークの状態として、前記データ送信に要する時間と往復遅延時間を用いる
ことを特徴とする請求項１乃至請求項３のいずれか１項に記載の通信装置。
【請求項５】
請求項１乃至４のいずれか１項に記載の通信装置を含み
前記通信装置を介してアプリケーションのデータを送受信する端末装置。
【請求項６】
請求項１乃至４のいずれか１項に記載の通信装置を含み、
データを送受信する複数の装置を含むネットワークに接続し、前記ネットワークと他の装置又はネットワークとのデータを中継する通信中継装置。
【請求項７】
ネットワークの状態を基に、通信に用いるＴＣＰのコネクション数の増加を判断し、
前記判断を基に前記ＴＣＰコネクションを管理し、データを送受信し、
前記ＴＣＰコネクションを通じて受信したデータを統合する
通信方法。
【請求項８】
ネットワークの状態を基に、通信に用いるＴＣＰのコネクション数の増加を判断する処理と、
前記判断を基に前記ＴＣＰコネクションを管理する処理と、データを送受信する処理と、
前記ＴＣＰコネクションを通じて受信したデータを統合する処理と
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク通信に関し、特に、複数のＴＣＰコネクションを用いる通信装置、及び、通信方法に関する。
【背景技術】
【０００２】
インターネットを通じて、様々なサービスが、提供されるようになっている。そのため、ネットワークの性能が、サービスのレスポンス性などのサービス品質に大きな影響を与えている。
【０００３】
インターネットを通じてやりとりされるデータの多くは、ＴＣＰ（Transmission Control Protocol）と呼ばれるプロトコルを利用している。ＴＣＰは、特徴の一つとして、輻輳制御とフロー制御との組み合わせに基づき、データの送出量を制御する機構を持つ。
【０００４】
輻輳制御は、ネットワークの状態に応じて、送出可能なデータ量の上限値を決定し、その上限値を超えない範囲でデータ送出量を制御する方法である。輻輳制御は、ネットワークの輻輳発生の抑制を目的とする。
【０００５】
フロー制御は、送出データを受信する端末が受信可能なデータ量を通知する受信ウィンドウサイズ（TCP receive window size）を利用し、送出量を制御する方法である。フロー制御は、受信端末がデータを受け取れない事態になることを防止する目的で実行される。
【０００６】
ＴＣＰは、輻輳制御とフロー制御とを同時に実行している。ＴＣＰは、輻輳制御で求めるデータ送出量とフロー制御で求める受信ウィンドウサイズとを比較する。そして、ＴＣＰは、２つの中で小さい値を、送出可能なデータ量の上限値とするように振る舞う。そのため、ネットワークが安定している場合、受信ウィンドウサイズの値が、ＴＣＰのデータ送出量を決定することが多い。
【０００７】
ＴＣＰの受信ウィンドウサイズの上限値は、ＴＣＰコネクションを確立する際に決定され、その後、変更されない。また、ＴＣＰの受信ウィンドウサイズは、ＴＣＰが動作するオペレーティングシステムなどを基に固定的に設定されている場合が多い。このように、ＴＣＰの受信ウィンドウサイズは、利用するネットワークに応じて動的に決定されることが少ない。また、受信ウィンドウサイズの拡大を可能とする方式として、ＲＦＣ（Request for Comments）にて、「Window Scaling Option」が、定義されている。しかし、「Window Scaling Option」は、送信側及び受信側の両方のサポートが必要である。そのため、「Window Scaling Option」は、必ずしも利用できるとは限らない。
【０００８】
これらの要因のため、ＴＣＰの受信ウィンドウサイズ値として、十分に大きな値を設定できない場合、受信ウィンドウサイズが、ＴＣＰの性能限界を決定する。その結果、本来利用できるネットワーク資源を十分に利用できない状況が、発生する。
【０００９】
そこで、ＴＣＰのスループットを向上させるため、輻輳制御アルゴリズムの改良が、提案されている（例えば、非特許文献１及び非特許文献２を参照）。
【００１０】
また、複数の経路上に複数のコネクションを形成し、ＴＣＰのスループット向上を図るアプローチが、提案されている（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０１０−０５６９９０
【非特許文献】
【００１２】
【非特許文献１】Sangtae Ha, Injong Rhee and Lisong Xu, "CUBIC: a new TCP-friendly high-speed TCP variant", ACM SIGOPS Operating Systems Review - Research and developments in the Linux kernel, Volume 42 Issue 5, July 2008
【非特許文献２】Kun Tan, Jingmin Song, Qian Zhang, and Murari Sridharan, "A Compound TCP Approach for High-speed and Long Distance Networks", Microsoft Research Technical Report, July 2005
【発明の概要】
【発明が解決しようとする課題】
【００１３】
非特許文献１及び非特許文献２に記載の提案は、ＴＣＰコネクションの確立後の挙動に関するアプローチである。そのため、非特許文献１及び非特許文献２に記載の提案は、初期値に基づき決定された上限値を改善できないという問題点があった。
【００１４】
また、特許文献１に記載の発明は、複数のコネクションの送信速度に応じて、データを送信する。そのため、特許文献１に記載の発明は、ＴＣＰの受信ウィンドウサイズ値に、大きな値を設定できない場合に対応できないという問題点があった。
【００１５】
本発明の目的は、上記の課題である、ＴＣＰがネットワークの資源を効率的に利用できない状況を解決して、ＴＣＰのスループットを向上する通信装置及び通信方法を提供することにある。
【課題を解決するための手段】
【００１６】
かかる目的を達成するための本発明の通信装置は、ネットワークの状態を基に、通信に用いるＴＣＰのコネクション数の増加を判断するコネクション数導出部と、前記判断を基に前記ＴＣＰコネクションを管理し、データを送受信するＴＣＰコネクション管理部と、前記ＴＣＰコネクションを通じて受信したデータを統合するデータ統合部とを含む。
【００１７】
かかる目的を達成するための本発明の通信方法は、ネットワークの状態を基に、通信に用いるＴＣＰのコネクション数の増加を判断し、前記判断を基に前記ＴＣＰコネクションを管理し、データを送受信し、前記ＴＣＰコネクションを通じて受信したデータを統合する。
【００１８】
かかる目的を達成するための本発明のプログラムは、ネットワークの状態を基に、通信に用いるＴＣＰのコネクション数の増加を判断する処理と、前記判断を基に前記ＴＣＰコネクションを管理する処理と、データを送受信する処理と、前記ＴＣＰコネクションを通じて受信したデータを統合する処理とをコンピュータに実行させる。
【発明の効果】
【００１９】
本発明の通信装置は、ＴＣＰのスループットを向上させる効果を得ることができる。
【図面の簡単な説明】
【００２０】
【図１】図１は、本発明のおける第１の実施の形態に係る通信装置の構成の一例を示すブロック図である。
【図２】図２は、第１の実施の形態に係る通信装置の動作の一例を示すフローチャートである。
【図３】図３は、第１の実施の形態に係る通信装置の別の構成の一例を示すブロック図である。
【図４】図４は、第１の実施の形態に係る通信装置の別の構成の一例を示すブロック図である。
【図５】図５は、第２の実施の形態に係る通信装置の構成の一例を示すブロック図である。
【図６】図６は、第２の実施の形態に係る通信装置の動作の一例を示すフローチャートである。
【図７】図７は、第３の実施の形態に係る通信装置の構成の一例を示すブロック図である。
【図８】図８は、第３の実施の形態の動作を示すフローチャートである。
【図９】図９は、第１の実施例の接続構成を説明するための図である。
【図１０】図１０は、第２の実施例の接続構成を説明するための図である。
【発明を実施するための形態】
【００２１】
次に、本発明の実施の形態について図面を参照して説明する。
【００２２】
なお、各図面は、本発明の実施の形態を説明するものである。そのため、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明は、省略する場合がある。
【００２３】
（第１の実施の形態）
図１は、本発明における第１の実施の形態の通信装置１００の構成の一例を示すブロック図である。
【００２４】
図１を参照すると、本実施の形態に係る通信装置１００は、可用帯域計測部１０１と、コネクション数導出部１０２と、ＴＣＰコネクション管理部１０３と、データ統合部１０４とを含む。
【００２５】
可用帯域計測部１０１は、データを送受信している対向装置と自装置との間のネットワークの可用帯域を計測する。つまり、可用帯域計測部１０１は、ネットワークの状態を計測する。
【００２６】
コネクション数導出部１０２は、可用帯域計測部１０１が計測した可用帯域を基に、データの送信のために最適なＴＣＰのコネクション数を決定する。つまり、コネクション数導出部１０２は、ネットワークの状態を基に、最適なＴＣＰのコネクション数を決定する。
【００２７】
ＴＣＰコネクション管理部１０３は、複数のＴＣＰコネクションを管理し、送信データのＴＣＰコネクションへの割当を実行する。
【００２８】
データ統合部１０４は、複数のＴＣＰコネクションを通じて受信したデータを統合する。
【００２９】
次に、図１の構成図と図２のフローチャートとを参照して、本実施の形態の通信装置１００の全体の動作について説明する。
【００３０】
可用帯域計測部１０１は、データを送受信している対向装置と自装置との間のネットワークの可用帯域を計測する（ステップＳ１０１）。
【００３１】
ネットワークの可用帯域の計測は、可用帯域を計測するためのプローブパケットを自ら発行する「アクティブ計測」、送受信されるデータパケットの挙動から可用帯域を推測する「パッシブ計測」、実際に送受信するパケットをプローブパケットに見立て帯域を計測する「インライン計測」の３種類がある。可用帯域計測部１０１は、いずれの計測を使うことも可能である。
【００３２】
可用帯域計測部１０１がインライン計測を使う場合、ＴＣＰコネクション管理部１０３は、送信されるデータパケットを、可用帯域を計測するためのアルゴリズム（パケットトレインやパケットペアなど）に基づいて送出する。可用帯域計測部１０１は、その送受信結果から可用帯域を計測する。
【００３３】
コネクション数導出部１０２は、ステップＳ１０１で計測した可用帯域値を現在形成されているＴＣＰコネクションのスループット値で割り算し、ＴＣＰコネクション数を確保できる本数を計算する（ステップＳ１０２）。計算結果が割り切れない数値となった場合、コネクション数導出部１０２は、切り捨てた数値の利用が望ましい。しかし、コネクション数導出部１０２は、切り上げた数値を利用してもよい。
【００３４】
ＴＣＰコネクション管理部１０３は、ステップＳ１０２で導出したＴＣＰコネクション数が１本又は１本を超えるか否かを判定する（ステップＳ１０３）。
【００３５】
ステップＳ１０３の結果、ステップＳ１０２で導出したＴＣＰコネクション数が、１本又は１本を超える場合（ステップＳ１０３で「Ｙｅｓ」）、ＴＣＰコネクション管理部１０３は、ステップＳ１０２で導出した数に相当する新たなＴＣＰコネクションを確立する。そして、ＴＣＰコネクション管理部１０３は、確立したＴＣＰコネクションをデータの送受信に利用する（ステップＳ１０４）。ただし、既に確立済みであるが、データの送受信に利用していないＴＣＰコネクションが存在する場合、ＴＣＰコネクション管理部１０３は、新たにＴＣＰコネクションを確立せず、このＴＣＰコネクションを利用しても良い。
【００３６】
ステップＳ１０３の結果、ステップＳ１０２で導出したＴＣＰコネクション数が、１本を下回る場合（ステップＳ１０３で「Ｎｏ」）、ＴＣＰコネクション管理部１０３は、新規にコネクションを追加する必要はないと判断し、何も実行しないで、ステップＳ１０５に進む。
【００３７】
なお、ＴＣＰコネクション管理部１０３は、停止できるＴＣＰコネクションがあるか否かを確認しても良い。そして、停止できるＴＣＰコネクションがある場合、ＴＣＰコネクション管理部１０３は、そのＴＣＰコネクションを停止しても良い。そして、ＴＣＰコネクション管理部１０３は、停止したＴＣＰコネクションを切断する。あるいは、ＴＣＰコネクション管理部１０３は、再利用のために、データを送受信しない状態のＴＣＰコネクションを、維持しても良い。ただし、ＴＣＰコネクション管理部１０３は、少なくとも１本以上のＴＣＰコネクションの利用を継続する。
【００３８】
ＴＣＰコネクション管理部１０３は、送信するデータを複数のＴＣＰコネクションに割り当て、データを送信する（ステップＳ１０５）。
【００３９】
ＴＣＰコネクション管理部１０３は、データの割り当て方法として、すべてのＴＣＰコネクションに均等にデータを割り当てるラウンドロビン方式などを利用する。
【００４０】
データを受信する通信装置１００に含まれるデータ統合部１０４は、複数のＴＣＰコネクションを通じて受信したデータを統合し、アプリケーションにデータを渡す（ステップＳ１０６）。
【００４１】
以降、通信装置１００は、ステップＳ１０１〜Ｓ１０６の処理を定期的あるいは必要に応じて繰り返す。
【００４２】
本実施の形態の通信装置１００の効果について説明する。
【００４３】
本実施の形態の通信装置１００は、既存のＴＣＰの枠組みを利用して、ネットワークを通じて送受信可能なデータ量を増加させる効果を得ることができる。
【００４４】
その理由は、次のとおりである。
【００４５】
本実施の形態の通信装置１００は、データの通信に利用可能なネットワークの帯域（可用帯域）を計測し、その帯域を十全に活用できるＴＣＰのコネクション数を確立し、データを送受信する。このため、本実施形態の通信装置１００は、１本のＴＣＰコネクションを利用する場合と比較し、送受信可能なデータ量を増加できるためである。
【００４６】
＜変形例１＞
なお、本実施の形態の通信装置１００の構成は、図１の構成に限る必要はない。通信装置１００は、各構成を複数の構成に分けて構成してもよい。あるいは、通信装置１００は、一部又はすべての構成を１つの構成としても良い。
【００４７】
例えば、コネクション数導出部１０２は、可用帯域計測部１０１の機能、つまりネットワークの状態の計測機能に取り込んでも良い。
【００４８】
また、通信装置１００とは別に、ネットワークは、通信状態を計測するモニタ装置を含む場合もある。その場合、通信装置１００は、ネットワークに状態に関する情報を、図示しないモニタ装置から受け取ってもよい。
【００４９】
図３は、別の構成である通信装置１１０の構成の一例を示すブロック図である。
【００５０】
図３を参照すると、通信装置１１０は、コネクション数導出部１１２と、ＴＣＰコネクション管理部１０３と、データ統合部１０４とを含む。
【００５１】
コネクション数導出部１１２は、ネットワークの状態の情報を基に、データの送信のために最適なＴＣＰのコネクション数を決定する。なお、コネクション数導出部１１２は、ネットワークの状態を、図示しないモニタ装置から情報を受け取っても良い。あるいは、コネクション数導出部１１２は、図示しないネットワーク状態計測部（例えば、図１の可用帯域計測部１０１に相当する構成）から情報を受け取っても良い。
【００５２】
ＴＣＰコネクション管理部１０３とデータ統合部１０４は、通信装置１００と同様のため、詳細な説明を省略する。
【００５３】
このように構成された通信装置１１０は、通信装置１００と同様の効果を得ることができる。
【００５４】
その理由は、通信装置１１０は、通信装置１００と同様に、可用帯域を基に、ＴＣＰのコネクション数を確立して、データを送受信できるためである。
【００５５】
なお、通信装置１１０は、本発明の最小構成である。
【００５６】
＜変形例２＞
さらに、通信装置１００は、ＣＰＵ（Central Processing Unit）と、ＲＯＭ（Read Only Memory）と、ＲＡＭ（Random Access Memory）と、ＮＩＣ（Network Interface Card）とを含むコンピュータとして実現しても良い。なお、通信装置１００は、通信装置１００の利用者とやり取りする機器との接続を実現するための入出力部（Input/Output Unit、以下、「ＩＯ」と言う。）を含んでもよい。
【００５７】
図４は、ＣＰＵを用いた通信装置６００を構成の一例を示すブロック図である。
【００５８】
通信装置６００は、ＣＰＵ６１０と、ＲＯＭ６２０と、ＲＡＭ６３０と、内部記憶装置６４０と、ＩＯ６５０と、ＮＩＣ６８０とを含み、コンピュータを構成している。
【００５９】
ＣＰＵ６１０は、ＲＯＭ６２０又は内部記憶装置６４０からプログラムを読み込む。そして、ＣＰＵ６１０は、読み込んだプログラムに基づいて、通信装置１００の可用帯域計測部１０１と、コネクション数導出部１０２と、ＴＣＰコネクション管理部１０３と、データ統合部１０４としての各機能を実現する。ＣＰＵ６１０は、各機能を実現する際に、ＲＡＭ６３０及び内部記憶装置６４０を一時記憶として使用する。また、ＣＰＵ６１０は、ＩＯ６５０及びＮＩＣ６８０を介して、他の機器と接続する。
【００６０】
なお、ＣＰＵ６１０は、コンピュータで読み取り可能にプログラムを記憶した記憶媒体６９０が含むプログラムを、図示しない記憶媒体読み取り装置を用いて読み込んでも良い。あるいは、ＣＰＵ６１０は、ＮＩＣ６８０を介して、図示しない他の装置からプログラムを受け取っても良い。
【００６１】
ＲＯＭ６２０は、ＣＰＵ６１０が実行するプログラム、及び、固定的なデータを記憶する。ＲＯＭ６２０は、例えば、Ｐ−ＲＯＭ(Programmable-ROM）やフラッシュＲＯＭである。
【００６２】
ＲＡＭ６３０は、ＣＰＵ６１０が実行するプログラムやデータを一時的に記憶する。ＲＡＭ６３０は、例えば、Ｄ−ＲＡＭ（Dynamic-RAM）である。
【００６３】
内部記憶装置６４０は、通信装置６００が長期的に保存するデータやプログラムを保存する。また、内部記憶装置６４０は、ＣＰＵ６１０の一時記憶装置として動作しても良い。内部記憶装置６４０は、例えば、ハードディスク装置、光磁気ディスク装置、ＳＳＤ（Solid State Drive）、又は、ディスクアレイ装置である。
【００６４】
ＩＯ６５０は、ＣＰＵ６１０と、入力機器６６０及び表示機器６７０とのデータを仲介する。ＩＯ６５０は、例えば、ＩＯインターフェースカードである。
【００６５】
入力機器６６０は、通信装置６００の操作者からの入力指示を受信する入力部である。入力機器６６０は、例えば、キーボード、マウス又はタッチパネルである。
【００６６】
表示機器６７０は、通信装置６００の表示部である。表示機器６７０は、例えば、液晶ディスプレイである。
【００６７】
ＮＩＣ６８０は、データを送受信している対向装置とのデータのやり取りを仲介する。ＮＩＣ６８０は、例えば、ＬＡＮ（Local Area Network）カードである。
【００６８】
このように構成された通信装置６００は、通信装置１００と同様の効果を得ることができる。
【００６９】
その理由は、通信装置６００のＣＰＵ６１０が、プログラムに基づいて通信装置１００と同様の動作を実現できるためである。
【００７０】
（第２の実施の形態）
図５は、本発明の第２の実施の形態に係る通信装置２００の構成の一例を示すブロック図である。
【００７１】
図５を参照すると、本実施の形態に係る通信装置２００は、スループット計算部２０１、コネクション数導出部２０２と、ネットワーク監視部２０３と、ＴＣＰコネクション管理部２０４と、データ統合部２０５とを含む。
【００７２】
スループット計算部２０１は、ネットワークの遅延やパケットロスの観測値、及び、これらを用いてスループットを計算するスループット計算式を用いて、理想的なＴＣＰのスループット値を計算する。スループット計算式については、後ほど説明する。
【００７３】
コネクション数導出部２０２は、スループット計算部２０１の計算を基に、データの送信のために最適なＴＣＰのコネクション数を決定する。
【００７４】
ネットワーク監視部２０３は、ＴＣＰコネクションを通じてやりとりされるデータを監視し、スループット計算部２０１が計算に用いるネットワークの遅延やパケットロスを計測する。
【００７５】
ここで、ネットワーク監視部２０３とスループット計算部２０１は、ネットワークの状態を計測している。そのため、コネクション数導出部２０２は、第１の実施の形態のコネクション数導出部１０２と同様に、ネットワークの状態を基に、コネクション数を導出しているとも言える。
【００７６】
ＴＣＰコネクション管理部２０４は、複数のＴＣＰコネクションを管理し、送信データの割当を実行する。ＴＣＰコネクション管理部２０４は、第１の実施の形態のＴＣＰコネクション管理部１０３と同様に動作する。
【００７７】
データ統合部２０５は、複数のＴＣＰコネクションを通じて受信したデータを統合する。データ統合部２０５は、第１の実施の形態のデータ統合部１０４と同様に動作する。
【００７８】
なお、本実施形態の通信装置２００は、図４に示す通信装置６００と同様に、コンピュータで実現しても良い。
【００７９】
次に、図５の構成図と図６のフローチャートとを参照して、本実施の形態の通信装置２００の動作について説明する。
【００８０】
ネットワーク監視部２０３は、ＴＣＰコネクションを通じてやりとりされるデータの送受信を監視し、ネットワークの遅延やパケットロスを計測する。
【００８１】
スループット計算部２０１は、計測されたネットワークの遅延やパケットロスの計測値を基に、ＴＣＰのスループットの計算式を用いて、ＴＣＰの理想的なスループット値を計算する（ステップＳ２０１）。スループット計算部２０１が用いるスループットの計算式は、特に制限がない。スループット計算部２０１は、ＴＣＰのスループットの計算式として、例えば、「TCP Friendly Rate Control」で利用されるＴＣＰのスループット値の計算式を利用しても良い。
【００８２】
コネクション数導出部２０２は、理想的なスループット値を実現するために必要なＴＣＰコネクション数を計算する（ステップＳ２０２）。具体的には、コネクション数導出部２０２は、ステップＳ２０１で導出したＴＣＰの理想的なスループット値を、現在形成されているＴＣＰコネクションのスループット値で割り算する。計算結果が割り切れない数値の場合、コネクション数導出部２０２は、必要なＴＣＰコネクション数として、切り捨てた数値あるいは切り上げた数値のいずれかの数値を採用する。
【００８３】
ＴＣＰコネクション管理部２０４は、ステップＳ２０２で導出したＴＣＰコネクション数と、現在のデータの送受信に利用しているＴＣＰコネクション数とを比較する（ステップＳ２０３）。
【００８４】
ステップＳ２０３の結果、ステップＳ２０２で導出したＴＣＰコネクション数が、現在、データの送受信に利用しているＴＣＰコネクション数を上回る場合（ステップＳ２０３で「Ｙｅｓ」）、ＴＣＰコネクション管理部２０４は、新しいＴＣＰコネクションを確立する。そして、ＴＣＰコネクション管理部２０４は、確立したＴＣＰコネクションをデータの送受信に利用する（ステップＳ２０４）。ただし、既に確立済みであるが、データの送受信に利用していないＴＣＰコネクションが存在する場合、ＴＣＰコネクション管理部２０４は、新たにＴＣＰコネクションを確立せず、このＴＣＰコネクションを利用しても良い。
【００８５】
ステップＳ２０３の結果、ステップＳ２０２で導出したＴＣＰコネクション数が、現在、データの送受信に利用しているＴＣＰコネクション数を下回る場合（ステップＳ２０３で「Ｎｏ」）、ＴＣＰコネクション管理部２０４は、その差分数に相当するＴＣＰコネクションの利用を停止する（ステップＳ２０５）。ただし、ＴＣＰコネクション管理部２０４は、少なくとも１本以上のＴＣＰコネクションの利用を継続する。また、ＴＣＰコネクション管理部２０４は、利用を停止したＴＣＰコネクションを切断する。ただし、ＴＣＰコネクション管理部２０４は、ステップＳ２０４で述べたように、再利用のために、データを送受信しない状態のＴＣＰコネクションを、維持しても良い。
【００８６】
ＴＣＰコネクション管理部２０４は、送信するデータを複数のＴＣＰコネクションに割り当て、データを送信する（ステップＳ２０６）。ＴＣＰコネクション管理部２０４は、データの割り当て方法として、例えば、すべてのＴＣＰコネクションに均等にデータを割り当てるラウンドロビン方式を利用する。
【００８７】
データを受信する通信装置２００に含まれるデータ統合部２０５は、複数のＴＣＰコネクションを通じて受信したデータを統合し、アプリケーションにデータを渡す（ステップＳ２０７）。
【００８８】
以降、通信装置２００は、ステップＳ２０１〜Ｓ２０７の処理を定期的あるいは必要に応じて、繰り返す。
【００８９】
本実施の形態の通信装置２００の効果について説明する。
【００９０】
本実施の形態の通信装置２００は、既存のＴＣＰの枠組みを利用して、ネットワークを通じて送受信可能なデータ量を増加させることができる。
【００９１】
その理由は、通信装置２００は、本来実現できるスループット値を計算し、計算されたスループット値を実現するために必要なＴＣＰのコネクション数を確立し、データを送受信する。そのため、通信装置２００は、１本のＴＣＰコネクションを利用する場合と比較し、送受信可能なデータ量を増加できるためである。
【００９２】
（第３の実施の形態）
図７は、本発明の第３の実施の形態に係る通信装置３００の構成の一例を示すブロック図である。
【００９３】
図７を参照すると、本実施の形態に係る通信装置３００は、送信時間計算部３０１と、コネクション数導出部３０２と、ネットワーク監視部３０３と、ＴＣＰコネクション管理部３０４と、データ統合部３０５とを含む。
【００９４】
送信時間計算部３０１は、送信先の受信ウィンドウサイズに相当するデータ量を送信するのに要する経過時間を計測する。
【００９５】
コネクション数導出部３０２は、受信ウィンドウサイズに相当するデータ量の送信に要する時間と往復遅延時間とを比較し、データを送受信するＴＣＰのコネクション数の増加の是非を決定する。
【００９６】
ネットワーク監視部３０３は、ＴＣＰコネクションを通じてやりとりされるデータを監視し、送信されるデータや送信データの受信情報を示す確認応答情報に関する情報を取得する。
【００９７】
ここで、送信時間計算部３０１とネットワーク監視部３０３は、ネットワークの状態を計測している。そのため、コネクション数導出部３０２は、第１の実施の形態のコネクション数導出部１０２と同様に、ネットワークの状態を基に、コネクション数を導出しているとも言える。
【００９８】
ＴＣＰコネクション管理部３０４は、複数のＴＣＰコネクションを管理し、送信データの割当を実行する。ＴＣＰコネクション管理部３０４は、第１の実施の形態のＴＣＰコネクション管理部１０３と同様に動作する。
【００９９】
データ統合部３０５は、複数のＴＣＰコネクションを通じて受信したデータを統合する。データ統合部３０５は、第１の実施の形態のデータ統合部１０４と同様に動作する。
【０１００】
なお、本実施の形態の通信装置３００は、図４に示す通信装置６００と同様に、コンピュータで実現しても良い。
【０１０１】
次に、図７の構成図と図８のフローチャートとを参照して、本実施の形態の通信装置３００の全体の動作について説明する。
【０１０２】
ネットワーク監視部３０３は、ＴＣＰコネクションを通じてやりとりされるデータの送受信を監視し、送信データサイズ、送信時刻及び送信データを受信したことを示す確認応答の受信時刻に関する情報を取得する。
【０１０３】
送信時間計算部３０１は、ネットワーク監視部３０３を通じて取得した情報を利用して、送信相手の受信ウィンドウサイズに相当するデータ量を送信相手が受信するのに要する時間を、計測する（ステップＳ３０１）。例えば、送信時間計算部３０１は、複数の送信データのシーケンス番号及びデータサイズを記憶する。そして、送信時間計算部３０１は、確認応答を通じて、個々の送信データのシーケンス番号及び受信時刻を基に、受信データサイズが受信ウィンドウサイズに相当するまでに要する時間を求める。あるいは、送信時間計算部３０１は、往復遅延時間の間に受信が確認されたデータ量を計算する。
【０１０４】
コネクション数導出部３０２は、ステップＳ３０１で求めたデータ送信時間と送信相手との往復遅延時間を比較する（ステップＳ３０２）。
【０１０５】
ステップＳ３０２の結果、データ送信時間が送信相手との往復遅延時間より小さい場合（ステップＳ３０２で「Ｙｅｓ」）、コネクション数導出部３０２は、受信ウィンドウサイズがボトルネックになっており、ＴＣＰコネクションを追加する余地があると判断する。その判断を受け、ＴＣＰコネクション管理部３０４は、新しいＴＣＰコネクションを確立する（ステップＳ３０３）。ただし、既に確立済みであるが、データの送受信に利用していないＴＣＰコネクションが存在する場合、ＴＣＰコネクション管理部３０４は、新たにＴＣＰコネクションを確立せず、このＴＣＰコネクションを利用しても良い。
【０１０６】
複数のＴＣＰコネクションを通じて通信している場合、通信装置３００は、個々のＴＣＰコネクションに対して、同様の計算を実行する。そして、すべてのＴＣＰコネクションにおいて、データ送信時間が往復遅延時間より小さい場合、通信装置３００は、ＴＣＰコネクションを追加すると判断する。
【０１０７】
ステップＳ３０２の結果、データ送信時間が送信相手との往復遅延時間以上の場合（ステップＳ３０２で「Ｎｏ」）、通信装置３００は、特に動作せずに、ステップＳ３０４に進む。
【０１０８】
ＴＣＰコネクション管理部３０４は、ステップＳ３０３を通じて確保された複数のＴＣＰコネクションに送信するデータを割り当て、データを送信する（ステップＳ３０４）。ステップＳ３０３を実行しない場合、ＴＣＰコネクション管理部３０４は、確保しているＴＣＰコネクションに送信するデータを割り当て、データを送信する。ＴＣＰコネクション管理部３０４は、データの割り当て方法として、例えば、すべてのＴＣＰコネクションに均等にデータを割り当てるラウンドロビン方式を利用する。
【０１０９】
データを受信する通信装置３００に含まれるデータ統合部３０５は、複数のＴＣＰコネクションを通じて受信したデータを統合し、アプリケーションにデータを渡す（ステップＳ３０５）。
【０１１０】
以降、通信装置３００は、ステップＳ３０１〜Ｓ３０５の処理を定期的あるいは必要に応じて、繰り返す。
【０１１１】
本実施の形態の通信装置３００の効果について説明する。
【０１１２】
本実施の形態の通信装置３００は、既存のＴＣＰの枠組みを利用して、ネットワークを通じて送受信可能なデータ量を増加させることができる。
【０１１３】
その理由は、通信装置３００は、受信ウィンドウサイズに相当するデータ量を送信するのに必要な時間と往復遅延時間とを比較する。そして、その比較を通じて、通信装置３００は、現在利用しているＴＣＰコネクションがネットワークの帯域を十分に使いきっているか否かを判断する。使い切っていない場合、通信装置３００は、ＴＣＰコネクション数を増加させ、ネットワークの帯域に応じたＴＣＰコネクションを確立し、利用できるためである。そのため、通信装置３００は、１本のＴＣＰコネクションを利用する場合と比較し、送受信可能なデータ量を増加できるためである。
【０１１４】
（第１の実施例）
具体的な実施例を用いて、本発明の実施の形態の動作を説明する。
【０１１５】
なお、以下の説明において、通信装置１００を用いるが、これは説明の便宜のためである。以下の実施例は、通信装置１００を、ここまで説明した通信装置２００、通信装置３００及び通信装置６００に置き換えてもよい。
【０１１６】
図９は、第１の実施の形態の通信装置１００に相当する装置を含む受信端末１１００と送信端末１２００、及び、両端末を結ぶネットワーク１０００との接続構成を示している。
【０１１７】
送信端末１２００は、アプリケーションの実行に必要なデータを配信するデータ配信アプリケーション１２０１と、データ配信アプリケーション１２０１のデータを通信する第１の実施形態の通信装置１００に相当する通信装置１２０２とを含む。
【０１１８】
受信端末１１００は、データ配信アプリケーション１２０１からのデータを受信し、アプリケーションを実行するデータ受信アプリケーション１１０１と、データを通信する第１の実施形態の通信装置１００に相当する通信装置１１０２とを含む。例えば、データ配信アプリケーション１２０１は、ネットワーク上に保存されているユーザの画像データを配信する。また、データ受信アプリケーション１１０１は、多数の画像データを受信し、スライドショーのように表示するアプリケーションなどである。
【０１１９】
本実施例では、まず、受信端末１１００と送信端末１２００との間に１本のＴＣＰコネクションが、確立している。受信端末１１００と送信端末１２００は、このＴＣＰコネクションを利用してデータを送受信する。
【０１２０】
通信装置１１０２と通信装置１２０２は、例えば、「ＳＬｏＰＳ（Self-Loading Periodic Streams）」と呼ばれる手法を用いて、受信端末１１００と送信端末１２００とを結ぶネットワーク１０００の可用帯域を計測する。
【０１２１】
ここでは、可用帯域の計測結果が、「１１[Mbps]」であったとする。また、このときのネットワーク遅延は「１００[ミリ秒]」、ＴＣＰコネクションを確立した際の受信端末１１００の受信ウィンドウサイズは「６４[キロバイト]」とする。この場合、ＴＣＰの理論的なスループット値は、「５．１２[Mbps]」となる。
【０１２２】
そのため、通信装置１２０２は、計測された可用帯域において、２本のＴＣＰコネクションを追加できる余地があると判断する（11[Mbps]/5.12[Mbps]=2.148[本]である。なお、本実施例の通信装置１２０２は、端数は切り捨てるとする。）。そして、通信装置１２０２は、通信装置１１０２との間に新たに２本のＴＣＰコネクションを確立する。そして、通信装置１２０２は、データ配信アプリケーション１２０１の送信データを、３本のＴＣＰコネクションを介して送信する。
【０１２３】
通信装置１１０２は、３本のＴＣＰコネクションを通じて受信したデータを統合し、データ受信アプリケーション１１０１に渡す。データ受信アプリケーション１１０１は、受信したデータを利用して、アプリケーションを実行する。
【０１２４】
一定時間経過後、通信装置１２０２は、再度、可用帯域を計測する。
【０１２５】
今回は、可用帯域として、「２[Mbps]」が計測されたとする。先と同様に、通信装置１２０２は、計測された可用帯域において、新たなＴＣＰコネクションを追加可能か否か判断する。
【０１２６】
通信装置１２０２は、可用帯域「２[Mbps]」に対して、新たなＴＣＰコネクションを追加する余地はないと判断する（2[Mbps]/5.12[Mbps]=0.39[本]）。そのため、通信装置１２０２は、現在のＴＣＰコネクション数である３本を通じて、データを送受信する。
【０１２７】
以下、通信装置１２０２は、定期的あるいは随時、可用帯域を計測し、計測結果に応じて、ＴＣＰコネクション数を制御する。
【０１２８】
本実施例で説明した通信装置１２０２及び通信装置１１０２の利用を基に、受信端末１１００及び送信端末１２００は、高速な通信を実現できる。
【０１２９】
その理由は、通信装置１２０２及び通信装置１１０２は、計測した可用帯域を基に、ＴＣＰコネクションを追加できるか否かを判断する。そして、追加できると判断した場合、通信装置１２０２及び通信装置１１０２は、ＴＣＰコネクションを追加できるためである。
【０１３０】
（第２の実施例）
第１の実施例とは異なる実施例を用いて、本発明を実施の形態の通信装置１００の動作をさらに説明する。
【０１３１】
図１０は、第１の実施の形態の通信装置１００を含みデータを中継する中継通信装置である中継ゲートウェイ２００１と中継ゲートウェイ２１０１とを用いた第２の実施例の接続構成を示す図である。
【０１３２】
図１０は、中継ゲートウェイ２００１と、中継ゲートウェイ２１０１と、ネットワーク２２００と、企業ネットワーク２０００と、受信端末２００２と、送受信端末２００３と、企業ネットワーク２１００と、送信サーバ２１０２と、送受信端末２１０３とを含む。
【０１３３】
ネットワーク２２００は、中継ゲートウェイ２００１と中継ゲートウェイ２１０１とを結ぶネットワークである。
【０１３４】
企業ネットワーク２０００は、中継ゲートウェイ２００１が所属するネットワークである。
【０１３５】
受信端末２００２及び送受信端末２００３は、企業ネットワーク２０００に属する。
【０１３６】
企業ネットワーク２１００は、中継ゲートウェイ２１０１が所属するネットワークである。
【０１３７】
送信サーバ２１０２及び送受信端末２１０３は、企業ネットワーク２１００に属する。
【０１３８】
送信サーバ２１０２は、アプリケーションの実行に必要なデータを、受信端末２００２に送信する。
【０１３９】
受信端末２００２は、受信したデータを利用して、アプリケーションを実行する。
【０１４０】
送受信端末２００３と送受信端末２１０３は、お互いにアプリケーションの実行に必要なデータを送受信する。送受信端末２００３と送受信端末２１０３は、それぞれ、ＴＣＰを利用して通信する。
【０１４１】
本実施例において、中継ゲートウェイ２００１と中継ゲートウェイ２１０１が、受信端末２００２と送信サーバ２１０２の間の通信及び送受信端末２００３と送受信端末２１０３の間の通信を仲介する。そして、中継ゲートウェイ２００１と中継ゲートウェイ２１０１は、ＴＣＰのスループット向上を実現する。
【０１４２】
このため、受信端末２００２及び送受信端末２００３は、中継ゲートウェイ２００１とＴＣＰコネクションを通じて接続している。同様に、送信サーバ２１０２と送受信端末２１０３は、中継ゲートウェイ２１０１とＴＣＰコネクションを通じて接続している。
【０１４３】
また、企業ネットワーク２０００及び企業ネットワーク２１００の内部の通信は、ネットワーク２２００を介する通信と比較して、非常に短い遅延で通信できるとする。そのため、中継ゲートウェイ２００１及び中継ゲートウェイ２１０１と通信する装置（受信端末２００２、送受信端末２００３、送受信端末２１０３及び送信サーバ２１０２）は、１本のＴＣＰコネクションで十分に高速なスループットを実現できるとする。
【０１４４】
中継ゲートウェイ２００１と中継ゲートウェイ２１０１は、まず、受信端末２００２と送信サーバ２１０２との通信のためのＴＣＰコネクション及び送受信端末２００３と送受信端末２１０３との通信のためのＴＣＰコネクションの２本を確立し、データを送受信しているとする。
【０１４５】
中継ゲートウェイ２００１と中継ゲートウェイ２１０１は、それぞれ、ネットワーク２２００の可用帯域を計測する。つまり、中継ゲートウェイ２００１と中継ゲートウェイ２１０１は、両方向で、可用帯域を計測する。
【０１４６】
可用帯域を計測する方法として、中継ゲートウェイ２００１と中継ゲートウェイ２１０１は、例えば、「ＳＬｏＰＳ（Self-Loading Periodic Streams）」と呼ばれる手法を用いる。ここでは、両方向とも可用帯域の計測結果は、「１０[Mbps]」とする。
【０１４７】
また、このときのネットワーク遅延は「２００[ミリ秒]」、ＴＣＰコネクションを確立した際の中継ゲートウェイ２００１及び中継ゲートウェイ２１０１の受信ウィンドウサイズは「６４[キロバイト]」とする。すると、ＴＣＰの理論的なスループット値は、「２．５６[Mbps]」となる。
【０１４８】
中継ゲートウェイ２００１及び中継ゲートウェイ２１０１は、それぞれ、新たに４本のＴＣＰコネクションを追加する余地があると判断する（10[Mbps]/2.56[Mbps]=3.9[本]、本実施例の中継ゲートウェイ２００１及び中継ゲートウェア２１０１は、端数を切り上げる）。そして、中継ゲートウェイ２００１及び中継ゲートウェイ２１０１は、新規のＴＣＰコネクションを確立する。
【０１４９】
このとき、中継ゲートウェイ２００１及び中継ゲートウェイ２１０１は、それぞれ、複数の装置（それぞれ、受信端末２００２と送受信端末２００３、及び、送信サーバ２１０２と送受信端末２１０３）と接続している。中継ゲートウェイ２００１及び中継ゲートウェイ２１０１は、新たに確立したＴＣＰコネクションを、複数の装置に、適切に割り当てる。
【０１５０】
新たに確立したＴＣＰコネクションの割り当て方法として、中継ゲートウェイ２００１及び中継ゲートウェイ２１０１は、複数の装置に公平に割り当てるラウンドロビンやランダムに割り当てる方法を用いても良い。あるいは、中継ゲートウェイ２００１及び中継ゲートウェイ２１０１は、事前に設定された各装置又はその上で動作するアプリケーションの優先度に基づいて割り当てる方法を用いても良い。あるいは、中継ゲートウェイ２００１及び中継ゲートウェイ２１０１は、各装置又はその上のアプリケーションの通信量に応じて割り当てる方法を用いてもよい。
【０１５１】
本実施例の説明では、中継ゲートウェイ２００１及び中継ゲートウェイ２１０１は、新たに確保したＴＣＰコネクションを、各装置にラウンドロビン方式に基づき割り当てるとする。
【０１５２】
以降、中継ゲートウェイ２００１及び中継ゲートウェイ２１０１は、定期的又は所定のタイミングで、可用帯域を計測する。そして、中継ゲートウェイ２００１及び中継ゲートウェイ２１０１は、その結果に基づいて、ＴＣＰコネクション数の増減を制御し、受信端末２００２と送信サーバ２１０２との通信及び送受信端末２００３と送受信端末２１０３との通信におけるスループットを向上させ、より快適な利用を実現する。
【０１５３】
本実施例で説明した中継ゲートウェイ２００１及び中継ゲートウェイ２１０１は、高速な通信を実現できる。
【０１５４】
その理由は、中継ゲートウェイ２００１及び中継ゲートウェイ２１０１は、計測した可用帯域を基に、ＴＣＰコネクションを追加できるか否かを判断する。そして、追加できると判断した場合、中継ゲートウェイ２００１及び中継ゲートウェイ２１０１は、ＴＣＰコネクションを追加できるためである。
【０１５５】
以上、実施形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施形態及び実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０１５６】
１００    通信装置
１０１    可用帯域計測部
１０２    コネクション数導出部
１０３    ＴＣＰコネクション管理部
１０４    データ統合部
１１０    通信装置
１１２    コネクション数導出部
２００    通信装置
２０１    スループット計算部
２０２    コネクション数導出部
２０３    ネットワーク監視部
２０４    ＴＣＰコネクション管理部
２０５    データ統合部
３００    通信装置
３０１    送信時間計算部
３０２    コネクション数導出部
３０３    ネットワーク監視部
３０４    ＴＣＰコネクション管理部
３０５    データ統合部
６００    通信装置
６１０    ＣＰＵ
６２０    ＲＯＭ
６３０    ＲＡＭ
６４０    内部記憶装置
６５０    ＩＯ
６６０    入力機器
６７０    表示機器
６８０    ＮＩＣ
６９０    記憶媒体
１０００    ネットワーク
１１００    受信端末
１１０１    データ受信アプリケーション
１１０２    通信装置
１２００    送信端末
１２０１    データ配信アプリケーション
１２０２    通信装置
２０００    企業ネットワーク
２００１    中継ゲートウェイ
２００２    受信端末
２００３    受信端末
２１０１    中継ゲートウェイ
２１００    企業ネットワーク
２１０２    送信サーバ
２１０３    送受信端末
２２００    ネットワーク
【図１】
2014068126.tif 000003
【図２】
2014068126.tif 000004
【図３】
2014068126.tif 000005
【図４】
2014068126.tif 000006
【図５】
2014068126.tif 000007
【図６】
2014068126.tif 000008
【図７】
2014068126.tif 000009
【図８】
2014068126.tif 000010
【図９】
2014068126.tif 000011
【図１０】
2014068126.tif 000012