(57)【特許請求の範囲】
【請求項１】
複数の接続したストリームを利用して、データを並列受信するステップと、
前記複数のストリーム別に受信されるデータの送信速度の変化を利用して、ネットワーク混雑率を算出するステップと、
前記算出されたネットワーク混雑率に基づいて、前記複数のストリームの接続個数を調節するステップと、
前記調節された個数のストリームを利用して、前記データを並列受信するステップと
を含むことを特徴とするデータの並列受信のためのストリーム制御方法。
【請求項２】
前記ネットワーク混雑率を算出するステップは、
前記複数のストリーム別に受信されるデータの送信速度をモニターリング時点ごとに確認するステップと、
前記データの送信速度の減少したストリームの個数を単位ウィンドウ（複数のモニターリング時点からなる）ごとに確認するステップと、
前記単位ウィンドウごとに確認された前記データの送信速度の減少したストリームの個数を利用して、前記ネットワーク混雑率を算出するステップと
を含むことを特徴とする請求項１に記載のデータの並列受信のためのストリーム制御方法。
【請求項３】
前記データの送信速度の減少したストリームの個数を利用して、前記ネットワーク混雑率を算出するステップは、
前記各単位ウィンドウで利用された全体ストリーム個数のうち、以前に比べて前記データの送信速度の減少したストリームの個数を表す減少ストリーム比率を前記各単位ウィンドウ別に算出して、前記各単位ウィンドウのサブネットワーク混雑率として決めるステップと、
前記単位ウィンドウごとに算出された前記サブネットワーク混雑率の合計を前記各単位ウィンドウの個数で割り算をした結果を前記ネットワーク混雑率として決めるステップと
を含むことを特徴とする請求項２に記載のデータの並列受信のためのストリーム制御方法。
【請求項４】
前記ネットワーク混雑率を算出するステップは、
前記複数のストリームを利用して受信されるデータの送信速度を前記モニターリング時点ごとに算出して格納するステップをさらに含むことを特徴とする請求項２に記載のデータの並列受信のためのストリーム制御方法。
【請求項５】
前記ネットワーク混雑率を算出するステップは、
複数のモニターリング時点（前記複数のストリーム別に受信されるデータの送信速度を確認する周期）からなる単位ウィンドウごとに前記データの送信速度の変化を考慮してサブネットワーク混雑率を算出するステップと、
前記単位ウィンドウごとに算出されたサブネットワーク混雑率の平均を算出して、前記ネットワーク混雑率として決めるステップと
を含むことを特徴とする請求項１に記載のデータの並列受信のためのストリーム制御方法。
【請求項６】
前記複数のストリームの接続個数を調節するステップは、
前記算出されたネットワーク混雑率に基づいて前記複数のストリームの接続個数を指数的に増加させたり線形的に減少させたりすることを特徴とする請求項１に記載のデータの並列受信のためのストリーム制御方法。
【請求項７】
前記複数のストリームの接続個数を調節するステップは、
前記算出されたネットワーク混雑率と設定された少なくとも一つの臨界値とを比較するステップと、
前記少なくとも一つの臨界値との比較結果に応じて、前記ストリームの接続個数を増減させるステップと
を含むことを特徴とする請求項１に記載のデータの並列受信のためのストリーム制御方法。
【請求項８】
前記増減させるステップは、
前記算出されたネットワーク混雑率が第１臨界値以下であると、前記複数のストリームの接続個数を以前より指数的に増加させることを特徴とする請求項７に記載のデータの並列受信のためのストリーム制御方法。
【請求項９】
前記増減させるステップは、
前記算出されたネットワーク混雑率が前記第１臨界値より大きく第２臨界値以下であると、前記複数のストリームの接続個数を以前より１個減少させ、前記算出されたネットワーク混雑率が前記第２臨界値より大きく第３臨界値以下であると、前記複数のストリームの接続個数を以前よりｍ％（ここで、前記複数のストリームの接続個数×ｍ％は、前記１より大きい）減少させることを特徴とする請求項８に記載のデータの並列受信のためのストリーム制御方法。
【請求項１０】
前記データの並列受信のために許容される初期ストリームの接続個数は、使用可能な帯域幅を最大限使用するようにする最大接続個数として設定されることを特徴とする請求項１に記載のデータの並列受信のためのストリーム制御方法。
【請求項１１】
複数のストリーム別に並列受信されるデータの送信速度の変化を利用してネットワーク混雑率を算出し、該算出されたネットワーク混雑率に基づいて前記複数のストリームの接続個数を調節する並列接続管理部と、
前記並列接続管理部により調節された接続個数のストリームを利用して前記データを並列受信する通信部と
を備えることを特徴とするデータの並列受信のための装置。
【請求項１２】
前記並列接続管理部は、
前記複数のストリーム別に受信されるデータの送信速度をモニターリング時点ごとに確認し、前記確認結果、単位ウィンドウ（複数のモニターリング時点からなる）ごとに前記データの送信速度の減少したストリームの個数を利用して、前記ネットワーク混雑率を算出するネットワーク混雑率算出部を備えることを特徴とする請求項１１に記載のデータの並列受信のための装置。
【請求項１３】
前記ネットワーク混雑率算出部は、
前記各単位ウィンドウで利用された全体ストリーム個数のうち、以前に比べて前記データの送信速度の減少したストリームの個数を表す減少ストリーム比率を前記各単位ウィンドウ別に算出して前記各単位ウィンドウのサブネットワーク混雑率として決め、前記単位ウィンドウごとに算出された前記サブネットワーク混雑率の合計を前記各単位ウィンドウの個数で割り算をして前記ネットワーク混雑率として決めることを特徴とする請求項１２に記載のデータの並列受信のための装置。
【請求項１４】
前記複数のストリームを利用して受信されるデータの送信速度を前記モニターリング時点ごとに算出する送信速度算出部と、
前記モニターリング時点ごとに算出されたデータの送信速度を格納するメモリと
をさらに備えることを特徴とする請求項１２に記載のデータの並列受信のための装置。
【請求項１５】
前記ネットワーク混雑率算出部は、
複数のモニターリング時点（前記複数のストリーム別に受信されるデータの送信速度を確認する周期）からなる単位ウィンドウごとに前記データの送信速度の変化を考慮してサブネットワーク混雑率を算出し、前記単位ウィンドウごとに算出されたサブネットワーク混雑率の平均を算出して前記ネットワーク混雑率として決めることを特徴とする請求項１１に記載のデータの並列受信のための装置。
【請求項１６】
前記並列接続管理部は、
前記算出されたネットワーク混雑率に基づいて前記複数のストリームの接続個数を指数的に増加させたり線形的に減少させたりする接続個数計算部を備えることを特徴とする請求項１１に記載のデータの並列受信のための装置。
【請求項１７】
前記並列接続管理部は、
前記算出されたネットワーク混雑率と設定された少なくとも一つの臨界値とを比較し、前記少なくとも一つの臨界値との比較結果に応じて前記ストリームの接続個数を増減させる接続個数計算部を備えることを特徴とする請求項１１に記載のデータの並列受信のための装置。
【請求項１８】
前記接続個数計算部は、
前記算出されたネットワーク混雑率が第１臨界値以下であると、前記複数のストリームの接続個数を以前より指数的に増加させることを特徴とする請求項１７に記載のデータの並列受信のための装置。
【請求項１９】
前記接続個数計算部は、
前記算出されたネットワーク混雑率が前記第１臨界値より大きく第２臨界値以下であると、前記複数のストリームの接続個数を以前より１個減少させ、前記算出されたネットワーク混雑率が前記第２臨界値より大きく第３臨界値以下であると、前記複数のストリームの接続個数を以前よりｍ％（ここで、前記複数のストリームの接続個数×ｍ％は、前記１より大きい）減少させることを特徴とする請求項１７に記載のデータの並列受信のための装置。
【請求項２０】
前記データの並列受信のために許容される初期ストリームの接続個数を前記通信部で使用可能な帯域幅を最大限使用するようにする最大接続個数として設定するソケット管理部をさらに備えることを特徴とする請求項１１に記載のデータの並列受信のための装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの並列受信のためのストリーム制御方法及び装置に関し、さらに詳細には、ネットワーク混雑率と臨界値に基づいて並列ストリームの接続個数を制御できるデータの並列受信のためのストリーム制御方法及び装置に関する。
【背景技術】
【０００２】
高性能のモバイルデバイスの使用が速く広がるにつれて、大容量ファイルの送信速度が遅くなる現象が頻繁に発生している。これは、限定されたネットワーク帯域幅内でモバイルデバイスの需要をそのまま受け入れ、多くのモバイルデバイスがネットワーク帯域幅を使用するようになるから、結果的にネットワーク応答の低下をもたらすからである。このような問題を解決するために、従来では、ハードウェア装備をアップグレードしてデータ加速送信方式を使用しているが、これは、投資費用がかなり必要である。
【０００３】
一方、ファイルを送信するファイル送信プログラムの一例として、一つのＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）ストリームを使用する方式が挙げられる。一つのＴＣＰストリームを使用する方式は、例えば、クラウド基盤のシステムにおいてサーバとクライアントとの間に一つのＴＣＰで接続して、一つのチャネルを介してデータを送信することである。しかしながら、既存のファイル送信プログラムは、一つのチャネルを介してデータを送信するので、データの送信時にパケットの損失が多く発生したり、ＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）の長いネットワークでは、送信効率が急激に落ちるようになる。
【０００４】
かかる問題を解決するために、従来では、並列ストリーム送信方式を使用しているが、並列ストリームの接続個数もやはりパケット損失とＲＴＴに依存して算出されるので、並列ストリームの接続個数を求めるアルゴリズムが複雑である。また、パケットの損失とＲＴＴに依存する場合、前記アルゴリズムは、システムコールに依存してパケットの損失とＲＴＴが分かるので、各システム別にオペレーティング・システム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のカーネルを変えなければならないので、開発に難しさがある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
そこで、本発明は上記問題を解決するためになされたものであって、その目的は、並列ストリームを利用してデータを送信するものの、ネットワーク状況に応じてストリームの接続個数を適応的に調節することによって、改善された速度でデータを送受信できるデータの並列受信のためのストリーム制御方法及び装置を提供することにある。
【０００６】
また、本発明の他の目的は、パケット損失やＲＴＴを別途に算出せずにストリームの接続個数を調節できるデータの並列受信のためのストリーム制御方法及び装置を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の一実施の形態によれば、複数の接続したストリームを利用して、データを並列受信するステップと、前記複数のストリーム別に受信されるデータの送信速度の変化を利用して、ネットワーク混雑率を算出するステップと、前記算出されたネットワーク混雑率に基づいて、前記複数のストリームの接続個数を調節するステップと、前記調節された個数のストリームを利用して、前記データを並列受信するステップとを含むことを特徴とするデータの並列受信のためのストリーム制御方法が提供される。
【０００８】
一方、本発明の他の実施の形態によれば、複数のストリームを利用してデータを並列受信する通信部と、前記複数のストリーム別に受信されるデータの送信速度の変化を利用してネットワーク混雑率を算出し、該算出されたネットワーク混雑率に基づいて前記複数のストリームの接続個数を調節する並列接続管理部とを備え、前記通信部は、前記並列接続管理部により調節された接続個数のストリームを利用して前記データを並列受信する。
【発明の効果】
【０００９】
本発明の実施の形態によれば、システムコールに依存して獲得されるパケット損失率とＲＴＴを使用せずに二重移動平均アルゴリズムを利用して、より簡単にネットワーク混雑率を算出することができる。
【００１０】
また、本発明の実施の形態によれば、ネットワーク混雑率と少なくとも一つの臨界値とを比較してストリーム接続個数を増減するので、ネットワーク状況に応じて適応的にストリーム接続個数を調節することができる。
【００１１】
また、本発明の実施の形態によれば、ネットワーク状態に影響を与えない範囲内で現在のネットワーク状態を考慮して最も速い速度でデータを並列送信できるストリーム個数を設定できる。
【００１２】
また、本発明の実施の形態によれば、複数のストリームを利用して受信されたデータの送信速度に基づいてストリーム接続個数を制御するので、ネットワークの応用階層に基づいたロジック処理によってＯＳのカーネルを変えたり、ＲＴＴやパケット損失率のようなシステムコールを必要としない。したがって、ＯＳの種類に関係なくデータを高速で送信しようとするサーバ、デバイスと受信するサーバ、又はデバイスに簡単なソフトウェアをインストールするだけでデータの高速並列送信を具現化できる。
【図面の簡単な説明】
【００１３】
【図１】本実施の形態に係るデータの並列送信のための送受信システムを示す図である。
【図２】本発明の一実施の形態に係るデータの並列送信のための第１データ送信装置及び第１データ受信装置を示すブロック図である。
【図３】上述した単位ウィンドウを説明するための例示図である。
【図４Ａ】本実施の形態に係る二重移動平均アルゴリズムを利用してネットワーク混雑率を算出する一例を説明するための例示図である。
【図４Ｂ】図４Ａの第１ないし第３単位ウィンドウをそれぞれ示す図である。
【図５】本発明の他の実施の形態に係るデータの並列送信のための第２データ送信装置及び第２データ受信装置を示すブロック図である。
【図６】一実施の形態に係るファイルブロックの構造を示す図である。
【図７】本発明の実施の形態に係るデータの並列受信のためのストリーム制御方法を説明するためのフローチャートである。
【図８】図７のステップＳ７７０に記載されたストリーム接続個数を計算する方法を説明するためのフローチャートである。
【図９】本発明の他の実施の形態に係るデータの並列受信のためのストリーム制御方法を説明するためのフローチャートである。
【発明を実施するための形態】
【００１４】
以上の本発明の目的、他の目的、特徴及び利点は、添付された図面と関連した以下の好ましい実施形態により容易に理解されるはずである。しかしながら、本発明は、ここで説明される実施形態に限定されず、他の形態で具体化されてもよい。むしろ、ここで紹介される実施形態は、開示された内容が徹底かつ完全になるように、そして当業者に、本発明の思想を十分に理解してもらうために提供されるものである。本明細書において、ある構成要素が他の構成要素上にあると言及される場合には、それは、他の構成要素上に直接形成される場合もあり、それらの間に第３の構成要素が介在される場合もあることを意味する。
【００１５】
本明細書で使用された用語は、実施形態を説明するためのものであって、本発明を限定するものではない。本明細書において、単数形は、特に言及しない限り、複数形も含む。明細書で使用される「含む」と言及された構成要素は、一つ以上の他の構成要素の存在又は追加を排除しない。
【００１６】
以下、図面を参照して本発明を詳細に説明する。以下の特定の実施形態を述べるにおいて、様々に特定された内容は、発明をさらに具体的に説明し、理解を助けるために作成された。しかしながら、本発明を理解することができる程度のこの分野における知識を有した読者は、このような様々に特定された内容がなくても、本発明が実施可能であることを認知できる。ある場合には、周知で発明と大きく関連のない技術的内容は、本発明を説明するにあたって、特別な理由なしでも、読者の混乱を引き起こさないようにあえて述べないこともあることを予め言及しておく。
【００１７】
図１は、本実施の形態に係るデータの並列送信のための送受信システムを示す図である。
【００１８】
図１に示すように、データの並列送信のための送受信システムは、データ送信装置１０とデータ受信装置２０とを備える。データ送信装置１０は、後述する第１データ送信装置１００又は第２データ送信装置３００で、データ受信装置２０は、第１データ受信装置２００又は第２データ受信装置４００でありうる。
【００１９】
データ送信装置１０とデータ受信装置２０との間には、データの並列送信のための複数のストリーム（Ｓ１、Ｓ２、…、ＳＮ；ここで、Ｎは、整数）が設けられる。複数のストリームＳ１、Ｓ２、…、ＳＮは、少なくとも一つのポートに設けられるが、互いに異なる帯域幅を有するマルチチャネルにより具現化されうる。一例として、データ送信装置１０とデータ受信装置２０とは、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）チャネルを介して、ファイルを並列ストリーミング送信方式で送受信でき、これに限定されない。
【００２０】
本実施の形態によれば、データ送信のために接続するストリームＳ１、Ｓ２、…、ＳＮの数は、データが送信されるネットワークの混雑率（ｃｏｎｇｅｓｔｉｏｎ  ｒａｔｅ）に応じてリアルタイムで増加又は減少できる。すなわち、データ送信装置１０とデータ受信装置２０との間のデータ送信のために接続するストリームＳ１、Ｓ２、…、ＳＮの個数は、ネットワーク混雑率に基づいて指数的に増加したり、線形的に減少できる。
【００２１】
図２は、本発明の一実施の形態に係るデータの並列送信のための第１データ送信装置及び第１データ受信装置を示すブロック図である。
【００２２】
図２に示すように、第１データ送信装置１００は、第１ソケット管理部１１０、第１制御情報管理部１２０、第１通信部１３０及び第１ディスク制御部１４０を備える。
【００２３】
第１ソケット管理部１１０は、ターゲットデータの送信要請が受信されると、ターゲットデータの属性情報を含む基本制御情報を第１データ受信装置２００に送信するためのソケットを生成する。「ソケット」とは、ターゲットデータの送信のために第１データ送信装置１００と第１データ受信装置２００とを接続するソフトウェア的装置であって、一つのソケットは、一つのストリームを構成できる。複数のストリームが構成される場合に、マルチチャネルが形成されてターゲットデータは、並列送信が可能である。
【００２４】
第１ソケット管理部１１０は、初期に使用されるストリームの接続個数を、第１通信部１３０と第２通信部２１０とで使用可能な帯域幅を最大限使用することができる最大接続個数として設定し、該設定された最大接続個数分だけのソケットを生成できる。「初期」とは、ターゲットデータを初めて第１データ受信装置２００に送信する時を意味する。
【００２５】
第１制御情報管理部１２０は、第１ソケット管理部１１０でソケットの生成が完了すると、基本制御情報を構成する。基本制御情報は、ターゲットデータの送信のために、初期に第１データ送信装置１００と第１データ受信装置２００とが共有する情報である。
【００２６】
基本制御情報は、送信するターゲットデータのファイル名、ファイルサイズ、ストリームの個数、ディスクバッファサイズ、全体ブロック個数、ソケットバッファサイズ、ＩＰアドレス、ポート情報及びセッションＩＤ（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）などの情報を含む。ストリームの個数は、第１ソケット管理部１１０で初期生成された最大接続個数で、ディスクバッファサイズは、ディスクにデータを書き込むためにバッファに割り当てられたブロックのサイズ、ソケットバッファサイズは、送信プロトコルのカーネル端で使用するバッファのサイズ、ＩＰアドレスは、データの送信に用いられるＩＰのアドレス、ポート情報は、データの送信に用いられるポートの情報、セッションＩＤは、各ストリームのＩＤである。
【００２７】
第１通信部１３０は、第１ソケット管理部１１０で生成された使用可能な最大接続個数分だけのソケットを利用して複数のストリームを構成し、該構成されたストリームと決まったプロトコルを利用して第１データ受信装置２００と通信できる。第１通信部１３０は、第１制御情報管理部１２０で構成された基本制御情報をソケットのストリームを利用して第１データ受信装置２００に送信する。第１通信部１３０は、基本制御情報を複数のストリームを利用して並列送信することもできる。
【００２８】
基本制御情報が送信された後、第１通信部１３０は、ターゲットデータを複数のストリームを利用して第１データ受信装置２００に並列送信する。
【００２９】
第１ディスク制御部１４０は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）のような格納媒体に記録されたターゲットデータを読み込んで、第１通信部１３０に提供する。第１ディスク制御部１４０は、ターゲットデータをディスクバッファサイズに該当するサイズに分割して読み出すことができる。
【００３０】
第１通信部１３０は、初期に設定された最大接続個数のストリームを利用してターゲットデータを第１データ受信装置２００に並列送信できる。
【００３１】
ターゲットデータを送信する間に、変更されたストリームの接続個数が第１データ受信装置２００から通知されると、第１ソケット管理部１１０は、以前に使用するように接続したストリームの個数を調節する。例えば、基本制御情報に含まれた最大接続個数が５個であるが、第１データ受信装置２００から使用可能なストリームの個数として３が通知されると、第１ソケット管理部１１０は、使用可能なストリームの個数を３に調節する。したがって、第１通信部１３０は、３個のストリームを利用してターゲットデータを並列送信する。
【００３２】
一方、第１データ受信装置２００は、第２通信部２１０、第２制御情報管理部２２０、第２ソケット管理部２３０、第２ディスク制御部２４０、送信速度算出部２５０、メモリ２６０及び並列接続管理部２７０を備える。
【００３３】
第２通信部２１０は、第１データ送信装置１００から基本制御情報を受信して第２制御情報管理部２２０に提供する。
【００３４】
第２制御情報管理部２２０は、第２通信部２１０から提供された基本制御情報をパッシングして、基本制御情報に含まれた情報を確認する。第２制御情報管理部２２０は、確認された情報に基づいてターゲットデータの受信に必要な環境を設定する。例えば、第２制御情報管理部２２０は、基本制御情報に含まれた最大接続個数とソケットバッファサイズとを第２ソケット管理部２３０に通知する。また、第２制御情報管理部２２０は、ファイル名、ファイルサイズ、ディスクバッファサイズ及び全体ブロック個数を第２ディスク制御部２４０に通知し、ＩＰアドレス、ポート情報及びセッションＩＤを第２通信部２１０に通知する。
【００３５】
第２ソケット管理部２３０は、第２制御情報管理部２２０から提供された最大接続個数とソケットバッファサイズとに基づいて、初期接続するストリーム個数を設定し、該設定された個数分だけのソケットを生成できる。第２ソケット管理部２３０は、ソケットバッファサイズに該当するサイズを有するソケットを生成できる。したがって、第２通信部２１０は、生成されたソケットの個数に該当するストリームを構成し、複数のストリームと決められたプロトコルを利用して第１データ送信装置１００からターゲットデータを並列受信し、該受信されたターゲットデータを第２ディスク制御部２４０に提供できる。
【００３６】
第２ディスク制御部２４０は、第２制御情報管理部２２０から提供されたファイル名、ファイルサイズ、ディスクバッファサイズ及び全体ブロック個数に基づいて、受信されたターゲットデータをＨＤＤのような格納媒体に格納することができる。特に、第２ディスク制御部２４０は、ディスクバッファサイズと全体ブロック個数とを参照して、ターゲットデータをバッファに一時格納した後、ディスクに格納することができる。
【００３７】
送信速度算出部２５０は、複数のストリームを利用して並列受信されるターゲットデータの送信速度を各ストリーム別に算出できる。送信速度は、ネットワークトラフィックのようなネットワーク混雑率の影響を受ける。すなわち、ネットワーク混雑率が大きいほど、データの送信速度は減少し、ネットワーク混雑率が小さいほど、データの送信速度は増加できる。したがって、算出された送信速度からネットワーク混雑率を予測し、該予測されたネットワーク混雑率に基づいてストリームの接続個数を調節できる。
【００３８】
このために、送信速度算出部２５０は、事前に決まったモニターリング時点ごとに又はモニターリング周期ごとに各ストリーム別にターゲットデータの送信速度を算出できる。後述する図３の場合に、ｔ、ｔ−１、ｔ−２などがモニターリング時点であり、隣接するモニターリング時点間の間隔がモニターリング周期に該当する。モニターリング周期が経過すると、送信速度を算出しなければならないモニターリング時点になるので、モニターリング周期又はモニターリング時点は、結果的に同じ意味として使用されうる。したがって、以下では、説明の便宜のためにモニターリング周期とモニターリング時点とを混用する。
【００３９】
メモリ２６０は、揮発性メモリ又は不揮発性メモリであって、送信速度算出部２５０から算出された各ストリーム別ターゲットデータの送信速度をモニターリング時点ごとに格納することができる。表１は、メモリ２６０に各ストリーム別に格納されるターゲットデータの送信速度の一例を示す。
【表１】
0005405625.tif 000002
【００４０】
［表１］を参照すれば、「ｂｐｓ」は、データの送信速度の単位であって、「ビット／秒」を意味する。すなわち、「ｂｐｓ」は、単位時間当りの受信ビット数に該当する。直近のモニターリング時点ｔにおいて第１ストリームＳ１に受信されたターゲットデータの送信速度は６２０ｋｂｐｓ、第２ストリームＳ２に受信されたターゲットデータの送信速度は６１０ｋｂｐｓ、第３ストリームＳ３に受信されたターゲットデータの送信速度は６２０ｋｂｐｓであることが分かる。
【００４１】
並列接続管理部２７０は、複数のストリーム別に受信されるターゲットデータの送信速度の変化を利用してネットワーク混雑率を算出する。そして、並列接続管理部２７０は、算出されたネットワーク混雑率に基づいて、以前に設定された複数のストリームの接続個数を調節できる。
【００４２】
このために、並列接続管理部２７０は、ネットワーク混雑率算出部２７１及び接続個数計算部２７３を備える。
【００４３】
ネットワーク混雑率算出部２７１は、複数のストリーム別に受信されるデータの送信速度をメモリ２６０からモニターリング時点ごとに確認し、確認結果から送信速度の減少したストリームの個数を単位ウィンドウごとに確認する。ネットワーク混雑率算出部２７１は、単位ウィンドウごとに確認された送信速度の減少したストリームの個数を利用して、ネットワーク混雑率を算出できる。
【００４４】
詳細に説明すれば、ネットワーク混雑率算出部２７１は、減少ストリーム比率（すなわち、送信速度の減少したストリームの比率）を各単位ウィンドウ別に算出し、該算出した減少ストリーム比率を各単位ウィンドウのネットワーク混雑率のサブネットワーク混雑率として決める。「減少ストリーム比率」は、次の式１のように表すことができる。
【数１】
0005405625.tif 000003
【００４５】
式中、減少ストリーム比率は、一つの単位ウィンドウに対する比率であって、単位ウィンドウで使用された全体ストリーム個数のうち、以前に比べてターゲットデータの送信速度の減少したストリームの個数を表す。ネットワーク混雑率算出部２７１は、式１を利用して単位ウィンドウ別に減少ストリーム比率を算出し、該算出した各減少ストリーム比率を各単位ウィンドウのサブネットワーク混雑率として決める。仮に、現在モニターリング時点において形成される単位ウィンドウでターゲットデータの送信に使用されたストリームの全体個数が１５個で、送信速度の減少したストリームの個数が５個であると、単位ウィンドウのサブネットワーク混雑率は、
【数２】
0005405625.tif 000004
になる。
【００４６】
そして、ネットワーク混雑率算出部２７１は、単位ウィンドウごとに算出されたサブネットワーク混雑率の平均をネットワーク混雑率として決めることができる。ネットワーク混雑率算出部２７１は、単位ウィンドウごとに算出されたサブネットワーク混雑率の合計を単位ウィンドウの個数で割り算をした前記平均（すなわち、ネットワーク混雑率）を求めることができる。ネットワーク混雑率算出部２７１は、式１を利用してネットワーク混雑率を算出できる。
【数３】
0005405625.tif 000005
【００４７】
式中、Ｃｔは、現在モニターリング時点でのネットワーク混雑率、ｌは、ネットワーク混雑率に用いられる単位ウィンドウの個数、ｋは、各単位ウィンドウに用いられるモニターリング時点の個数である。ａｔは、現在モニターリング時点で各単位ウィンドウ別にターゲットデータの送信に利用される全体ストリームの個数、ｎｔは、現在モニターリング時点に該当する単位ウィンドウ内で速度低下が発生したストリームの個数である。ｌは、ネットワーク混雑率に用いられる単位ウィンドウの個数であるから、サブネットワーク混雑率の平均を算出するのに用いられる。
【００４８】
式中、
【数４】
0005405625.tif 000006
は、ネットワーク混雑率に利用された単位ウィンドウ別に送信速度の減少したストリームの個数を単位ウィンドウで使用されたストリームの個数で割り算をした結果をすべて加算した値であって、後述する図４Ａの場合、
【数５】
0005405625.tif 000007
でありうる。
【００４９】
各単位ウィンドウにおいてターゲットデータの送信に利用される全体ストリームの個数が単位ウィンドウごとに同じ場合、式２は、式３のように簡単に定義できる。
【数６】
0005405625.tif 000008
【００５０】
式中、
【数７】
0005405625.tif 000009
は、ネットワーク混雑率に利用された単位ウィンドウごとに送信速度の減少したストリームの個数を加算した結果であって、後述する図４Ａの場合に、「９＋９＋８＝２６」でありうる。
【００５１】
式１〜式３を参照して説明したネットワーク混雑率算出部２７１の動作は、本実施の形態で提案する二重移動平均アルゴリズムに該当できる。二重移動平均アルゴリズムは、図４Ａ及び図４Ｂを参照して後述する。
【００５２】
一方、ネットワーク混雑率算出部２７１は、ネットワーク混雑率の算出に用いられる単位ウィンドウの個数とモニターリング周期とを有線ネットワーク又は無線ネットワークの状況に応じて変更できる。ネットワークの状況は、例えば、パケット損失率とパケット往復時間（ＲＴＴ：Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）を含む。
【００５３】
例えば、パケット損失率が大きくなったりＲＴＴが大きくなってネットワーク状況が悪くなると、ネットワーク混雑率算出部２７１は、モニターリング周期を増加させたり、単位ウィンドウの個数、又は単位ウィンドウに属するモニターリング時点の個数を増加させたりすることができる。これと反対に、ネットワークの状況が良くなると、ネットワーク混雑率算出部２７１は、ネットワーク混雑率算出に用いられるモニターリング周期を減少させたり、単位ウィンドウの個数又は単位ウィンドウに属するモニターリング時点の個数を減少させたりすることができる。また、ネットワークの状態が変わり続ける状況では、ネットワーク混雑率算出部２７１は、モニターリング周期を速くし、ネットワーク状態が変わる周期が相対的に長くなる状況では、モニターリング周期を遅くすることができる。
【００５４】
上述した「単位ウィンドウ」とは、複数のモニターリング時点の間に利用されたストリームからなり、各単位ウィンドウは、モニターリング時点を基準に移動平均アルゴリズムにより変更されうる。単位ウィンドウに対しては、図３を参照してより詳細に後述し、ネットワーク混雑率を二重移動平均と式２を利用して算出する方式については、図４Ａ及び図４Ｂを参照してさらに詳細に後述する。
【００５５】
一方、接続個数計算部２７３は、ネットワーク混雑率算出部２７１から算出されたネットワーク混雑率に基づいて、以前に接続した複数のストリームの接続個数を指数的に増加させるか、又は線形的に減少させることができる。このために、接続個数計算部２７３は、算出されたネットワーク混雑率と設定された少なくとも一つの臨界値とを比較し、比較結果に応じてストリームの接続個数を増減させることができる。
【００５６】
詳細に説明すれば、接続個数計算部２７３は、算出されたネットワーク混雑率が第１臨界値ＴＨ１以下であると、接続している複数のストリームの接続個数を以前より指数的に増加させうる。
【００５７】
また、接続個数計算部２７３は、算出されたネットワーク混雑率が第１臨界値ＴＨ１より大きく第２臨界値ＴＨ２以下であると、複数のストリームの接続個数を以前より１個減少させることができる。「１」は、一例に過ぎず、変更可能である。
【００５８】
また、接続個数計算部２７３は、算出されたネットワーク混雑率が第２臨界値ＴＨ２より大きく第３臨界値ＴＨ３以下であると、複数のストリームの接続個数を以前よりｍ％（ここで、前記複数のストリームの接続個数×ｍ％は、前記１より大きい）減少させることができる。「ｍ」は、（複数のストリームの接続個数×ｍ％）≧１になるようにする定数である。一実施の形態において、ｍは、１０、２０及び３０のうちの何れか一つでありうる。
【００５９】
仮に、（複数のストリームの接続個数×ｍ％）の結果が小数点で表現されると、接続個数計算部２７３は、結果を切り上げ又は切り捨てして接続個数を調節できる。例えば、（複数のストリームの接続個数×ｍ％）の結果が３．１で、複数のストリームの接続個数が１０であると、接続個数計算部２７３は、１０−３＝７により、ストリームの接続個数を１０個から７個に減少させうる。
【００６０】
一実施の形態において、接続個数計算部２７３は、第１臨界値ＴＨ１＝０．２、第２臨界値ＴＨ２＝０．５、第３臨界値ＴＨ３＝１を使用することができるが、これに限定されない。また、接続個数計算部２７３で使用する臨界値の個数もやはり３個に限定されず、３個以上又は３個以下になりうることはもちろんである。ネットワーク混雑率の最大値は１であるから、第３臨界値ＴＨ３の最大値も１である。
【００６１】
並列接続管理部２７０は、接続したストリームの個数が調節されると、該調節されたストリームの個数を第２ソケット管理部２３０に提供する。第２ソケット管理部２３０は、調節されたストリームの個数を参照して使用を一時停止するストリームのＩＤを第２通信部２１０に提供する。第２通信部２１０は、提供されたストリームのＩＤを第１通信部１３０に送信する。以後、第１通信部１３０と第２通信部２１０は、一時停止されたストリームを除いた残りのストリームを利用して、ターゲットデータを並列に送受信できる。
【００６２】
図３は、上述した単位ウィンドウを説明するための例示図である。
【００６３】
図３に示すように、ｔは、現在モニターリング時点、ｔ−１は、以前モニターリング時点、ｔ−２は、ｔ−１以前のモニターリング時点である。したがって、ｔとｔ−１との時間差は、モニターリング周期に該当する。図３の実施の形態において、第１単位ウィンドウＷ１は、３個のモニターリング時点からなるか、又は３個のモニターリング時点の間に利用された１５個のストリームからなる。Ｓ１〜Ｓ５は、モニターリング時点ごとにデータの送信に利用されたストリームのＩＤである。
【００６４】
●は、以前モニターリング時点に比べて送信速度が増加、同一又は１０％未満に減少したストリーム、×は、以前モニターリング時点に比べて送信速度が１０％以上減少したストリームのことを示す。現在モニターリング時点ｔと以前モニターリング時点ｔ−１とを比較すると、第１ストリームＳ１に受信されたターゲットデータの送信速度は、現在モニターリング時点ｔにおいて以前モニターリング時点ｔ−１に比べて減少したことが分かる。１０％と単位ウィンドウをなすモニターリング時点の個数である３は、一例に過ぎず、これに限定されない。
【００６５】
第１単位ウィンドウＷ１で利用された全体ストリームの個数は１５個で、ターゲットデータの送信速度の減少したストリームの個数（すなわち、×の個数）は９個である。したがって、第１単位ウィンドウＷ１の減少ストリーム比率、すなわち、サブネットワーク混雑率を、式１を参照して算出すれば、次の通りである。
【数８】
0005405625.tif 000010
【００６６】
このような減少ストリーム比率は、第１単位ウィンドウＷ１で送信速度の減少したストリームの個数に対した単位ウィンドウ内の全体ストリームの個数であって、所定時間（すなわち、単位ウィンドウ）内で送信速度の減少したストリーム個数の平均を意味する。
【００６７】
図４Ａは、本実施の形態に係る二重移動平均アルゴリズムを利用してネットワーク混雑率を算出する一例を説明するための例示図、図４Ｂは、図４Ａの第１ないし第３単位ウィンドウをそれぞれ示す図である。
【００６８】
図４Ａ及び図４Ｂに示すように、Ｗ１、Ｗ２及びＷ３は、それぞれネットワーク混雑率を算出するために用いられる第１ないし第３単位ウィンドウである。第１単位ウィンドウＷ１は、図３を参照して説明した単位ウィンドウと同一である。すなわち、第１単位ウィンドウＷ１は、３個のモニターリング時点ｔ、ｔ−１、ｔ−２からなる。第２単位ウィンドウＷ２は、第１単位ウィンドウＷ１以前のウィンドウであって、３個のモニターリング時点であるｔ−１、ｔ−２、ｔ−３からなる。第３単位ウィンドウＷ３は、第２単位ウィンドウＷ２以前のウィンドウであって、３個のモニターリング時点であるｔ−２、ｔ−３、ｔ−４からなる。
【００６９】
ネットワーク混雑率算出部２７１は、第１ないし第３単位ウィンドウＷ１、Ｗ２、Ｗ３のそれぞれのサブネットワーク混雑率を算出する。このために、ネットワーク混雑率算出部２７１は、二重移動平均アルゴリズムを利用する。移動平均とは、趨勢の変動が分かるように区間を移しつつ求める平均である。図４Ａの場合に、第１単位ウィンドウＷ１での移動平均は、第１単位ウィンドウＷ１で送信速度の減少したストリームの個数に対した単位ウィンドウ内の全体ストリームの個数であって、減少ストリームの比率又はサブネットワーク混雑率と同じ意味を有する。「二重移動平均」は、各単位ウィンドウ別に算出されたサブネットワーク混雑率の平均をさらに算出するという意味で定義された用語である。
【００７０】
以下、図４Ｂを参照して、第１ないし第３単位ウィンドウＷ１、Ｗ２、Ｗ３のそれぞれのサブネットワーク混雑率を算出する。
【００７１】
まず、第１単位ウィンドウＷ１の場合、ターゲットデータの送信に利用された全体ストリームの個数ａｔは１５個、現在モニターリング時点ｔに該当する第１単位ウィンドウＷ１内で速度低下が発生したストリームの個数ｎｔは９個である。したがって、第１単位ウィンドウＷ１のサブネットワーク混雑率は
【数９】
0005405625.tif 000011
である。
【００７２】
第２単位ウィンドウＷ２の場合に、ターゲットデータの送信に利用された全体ストリームの個数ａｔ−１は１５個、以前モニターリング時点ｔ−１に該当する第２単位ウィンドウＷ２内で速度低下が発生したストリームの個数ｎｔ−１は９個である。したがって、第２単位ウィンドウＷ２のサブネットワーク混雑率は
【数１０】
0005405625.tif 000012
である。これは、第１単位ウィンドウＷ１を、モニターリング周期を基準に以前モニターリング時点ｔ−１へ移動して第２単位ウィンドウＷ２を論理的に生成し、第２単位ウィンドウＷ２のサブネットワーク混雑率を算出したことであるので、第１単位ウィンドウＷ１を基準に第２単位ウィンドウＷ２に対して算出された移動平均である。
【００７３】
第３単位ウィンドウＷ３の場合に、ターゲットデータの送信に利用された全体ストリームの個数ａｔ−２は１５個、以前モニターリング時点ｔ−２に該当する第３単位ウィンドウＷ３内で速度低下が発生したストリームの個数ｎｔ−２は８個である。したがって、第３単位ウィンドウＷ３のサブネットワーク混雑率は
【数１１】
0005405625.tif 000013
である。
【００７４】
ネットワーク混雑率算出部２７１は、第１ないし第３単位ウィンドウＷ１、Ｗ２、Ｗ３のそれぞれに対するサブネットワーク混雑率を加算し、該加算した値を第１ないし第３単位ウィンドウＷ１、Ｗ２、Ｗ３の個数である３で割り算をしてネットワーク混雑率を算出する。これを、簡単に示す図が図４Ａである。
【００７５】
また、図４Ａに示すように、第１ないし第３単位ウィンドウＷ１、Ｗ２、Ｗ３のそれぞれに用いられるモニターリング時点の個数ｋは３個、ネットワーク混雑率に用いられる単位ウィンドウの個数ｌは３個、ｎｔは９個、ｎｔ−１は９個、ｎｔ−２は８個である。また、ａｔ、ａｔ−１及びａｔ−２はそれぞれ１５個である。
【００７６】
ネットワーク混雑率算出部２７１は、式１に前記定数を代入して現在モニターリング時点ｔでのネットワーク混雑率を算出できる。
【数１２】
0005405625.tif 000014
【００７７】
上記式のように現在モニターリング時点ｔでのネットワーク混雑率は、０．５７７であることが分かる。第２臨界値ＴＨ２が０．５で、第３臨界値ＴＨ３が１の場合、０．５７７は、第２臨界値ＴＨ２と第３臨界値ＴＨ３との間に位置する。したがって、接続個数計算部２７３は、Ｓｔ＝Ｓｔ−１×（１−ｍ％）を利用してネットワーク状態に適したストリーム個数を計算できる。例えば、これまで利用されたストリーム接続個数が１０個で、ｍ％のｍが３０である場合に、Ｓｔ＝Ｓｔ−１×（１−０．３）＝１０×０．７＝７であるから、接続個数計算部２７３は、計算されたストリーム接続個数を第２ソケット管理部２３０に提供する。これにより、ストリーム接続個数は、１０個から７個に調節される。
【００７８】
以上のように、本発明の一実施の形態によってデータを受信する装置は、通信ユニット、接続管理ユニット、及びメモリを備えることによって具現化されることができる。
【００７９】
このとき、前記通信ユニットは、現在の複数接続した並列ストリームを介してデータを受信し、該受信されたデータを前記メモリに少なくとも一時的に格納することができる。前記接続管理ユニットは、現在の複数の接続に基づいてネットワーク混雑率を動的に算出でき、該算出されたネットワーク混雑率を利用して、現在複数の接続の個数を調節するかどうかを判断できる。そして、仮に前記接続個数を調節すると判断した場合、前記通信ユニットは、これから使用する複数の接続の個数を通知する変更通知を生成することができる。
【００８０】
前記実施の形態において、前記接続管理ユニットは、予め設定された数のモニターリング時点を有する現在のウィンドウに対して計算することによってネットワーク混雑率を算出でき、このとき、ネットワーク混雑率は、現在のウィンドウの前記予め設定された数のモニターリング時点の各々に対して複数の現在の接続ストリームのうち、減少された速度のストリームの個数に基づいて算出されうる。
【００８１】
前記実施の形態において、前記ネットワーク混雑率は、現在ウィンドウに直に連続する複数の先行ウィンドウに対して計算することによって算出されうる。
【００８２】
前記実施の形態において、この際のネットワーク混雑率は、現在のウィンドウの前記予め設定された数のモニターリング時点の各々に対して複数の現在の接続ストリームのうち、減少された速度のストリームの個数だけでなく現在ウィンドウに直に連続する複数の先行ウィンドウに対して計算することによって算出されうる。
【００８３】
前記実施の形態において、前記接続管理ユニットが複数の接続の個数を調節する場合、これから使用する複数の接続の個数が前記ネットワーク混雑率と一つ以上の臨界値との比較に基づいて設定されることができる。
【００８４】
このとき、これから使用する接続の新しい個数は、現在の接続個数と関連あり、前記新しい個数は、現在個数から指数的に増加するか、現在個数から線形的に減少するか、又は現在個数から漸進的に増減できる。
【００８５】
また、前記実施の形態において前記データを受信する装置は、受信されたデータが記録される格納手段をさらに備えることができる。
【００８６】
図５は、本発明の他の実施の形態に係るデータの並列送信のための第２データ送信装置及び第２データ受信装置を示すブロック図である。
【００８７】
図５に示すように、第２データ送信装置３００は、第３ソケット管理部３１０、第３制御情報管理部３２０、第３ディスク制御部３３０及び第１バッファ管理部３４０を備える。図５に示す第３ソケット管理部３１０、第３制御情報管理部３２０及び第３ディスク制御部３３０は、図２を参照して説明した第１ソケット管理部１１０、第１制御情報管理部１２０、第１通信部１３０及び第１ディスク制御部１４０と類似の動作を行うので、詳細な説明は省略する。
【００８８】
第３ソケット管理部３１０は、ターゲットデータの送信要請が受信されると、ターゲットデータの属性情報を含む基本制御情報を第２データ受信装置４００に送信するためのソケットを生成する。「ターゲットデータ」は、第２データ受信装置４００に送信するデータであって、ファイル形態を有することができる。したがって、ターゲットデータとファイルとは、実質的に同じ意味を有することができ、図２では、ターゲットデータを例に挙げて説明したので、以下では、ファイルを例に挙げて説明する。
【００８９】
第３ソケット管理部３１０は、初期にストリームの接続個数を第２データ送信装置３００と第２データ受信装置４００で使用可能な帯域幅を最大限使用することができる最大接続個数として設定し、該設定された最大接続個数分だけのソケットを生成できる。第３ソケット管理部３１０は、最大接続個数分だけのソケットを利用して複数のストリームを構成し、該構成されたストリームと決まったプロトコルとを利用して第２データ受信装置４００にファイルを並列送信できる。
【００９０】
ファイルを送信する間に第２データ受信装置４００でストリーム接続個数が調節されると、第３ソケット管理部３１０は、以前に使用したストリームの接続個数を調節し、該調節された個数に対応するストリームを利用してファイルを第２データ受信装置４００に並列送信する。
【００９１】
第３制御情報管理部３２０は、第３ソケット管理部３１０で複数のストリームが生成されると、基本制御情報を構成する。基本制御情報は、ファイルの送信のために初期に第２データ送信装置３００と第２データ受信装置４００とが共有する情報である。
【００９２】
第３ディスク制御部３３０は、ＨＤＤのような格納媒体に記録されたファイルを分割ファイル形態で読み込んでディスクバッファ（図示せず）に分割ファイル単位で格納し、ディスクバッファ（図示せず）に格納された分割ファイルを第１バッファ管理部３４０に伝達できる。これは、第３ディスク制御部３３０は、ディスクバッファサイズ（すなわち、ファイルブロックのサイズ）に該当するサイズにファイルを分割して読むためである。
【００９３】
第１バッファ管理部３４０は、第３ディスク制御部３３０によりディスクバッファ（図示せず）から入力される分割ファイルをバッファに一時格納する。
【００９４】
このために、第１バッファ管理部３４０は、第１未使用バッファキュー３４１及び第１バッファキュー３４３に分離されるバッファを備えることができる。第１バッファ管理部３４０のバッファを第１未使用バッファキュー３４１と第１バッファキュー３４３とに分離する理由は、第１バッファ管理部３４０のすべての領域を再使用するためである。これは、ＪＡＶＡ（登録商標）のようにＯＳに独立的な言語を利用して本実施の形態を具現する場合に、バッファを再度使用しないことによって発生できる ガベージコレクション（Ｇａｒｂａｇｅ  Ｃｏｌｌｅｃｔｉｎｇ）によるオーバーヘッドを防止するためである。
【００９５】
第１未使用バッファキュー３４１は、ディスクバッファ（図示せず）から入力される分割ファイルを一時格納するための複数のファイルブロックを備えることができる。一つのファイルブロックには、一つの分割ファイルが格納されることができる。または、ファイルブロックは、分割ファイルをファイルブロックに割り当てられたサイズに再度分割して格納することもでき、このような場合、一つの分割ファイルは、複数のファイルブロックに分散格納されることができる。本実施の形態においては、後者を例に挙げて説明する。
【００９６】
第１未使用バッファキュー３４１のファイルブロックに分割ファイルが格納されると、第１バッファ管理部３４０は、ファイルブロックを第１バッファキュー３４３に格納することができる。
【００９７】
第１バッファキュー３４３は、第１未使用バッファキュー３４１から入力されるファイルブロックを一時格納する。第１バッファキュー３４３に格納されたファイルブロックは、ネットワークを介して第２データ受信装置４００に伝達され、以後に用いられたファイルブロックは、再使用のために第１未使用バッファキュー３４１に再度返納される。第１未使用バッファキュー３４１と第１バッファキュー３４３とは、先入れ先出し方式に基づいて少なくとも一つのファイルブロックを一時格納する。
【００９８】
図６は、一実施の形態に係るファイルブロックの構造を示す図である。
【００９９】
図６に示すように、ファイルブロックは、ヘッダ及びペイロード（ｐａｙｌｏａｄ）に区分される。ヘッダには、ファイルブロックがデータであることを知らせるタグ情報、ファイルを識別するためのファイル固有のＩＤ情報、第３ソケット管理部３１０が読み込んだ分割ファイルがファイルのどの位置に属するかを知らせるデータアドレス情報、及び読み込んだ分割ファイルのサイズ情報（すなわち、ペイロードのサイズ情報）が記録されうる。ペイロードには、分割ファイルに含まれた実際データがペイロードに該当するサイズ分だけ記録されることができる。
【０１００】
図６のようなファイルブロックは、第２データ送信装置３００だけでなく第２データ受信装置４００の第２バッファ管理部４３０でも同様に用いられることができる。したがって、第２データ受信装置４００は、ファイルブロックのデータアドレス情報から現在受信された分割ファイルがファイルのどの位置に属するかを把握できる。
【０１０１】
また、図５を参照すれば、第３ソケット管理部３１０は、第１バッファキュー３４３にファイルブロックがあるかどうかを確認し、ファイルブロックがあると、格納されたファイルブロックを読み込んで送信ソケットバッファ（図示せず）に格納する。第３ソケット管理部３１０は、送信ソケットバッファ（図示せず）に格納されたファイルブロックを複数のストリームを利用して第２データ受信装置４００に並列送信できる。第３ソケット管理部３１０は、並列送信のために上述したように複数のソケットを生成し、一つのソケットが一つのストリームを結ぶようにすることによって、分割ファイルを、並列ストリームを利用して並列送信できる。
【０１０２】
このとき、第３ソケット管理部３１０は、複数のファイルブロックを各々のストリームを利用して並列送信するか、又は一つのファイルブロックを複数のストリームを利用して送信できる。以下、前者の場合を例に挙げて説明する。ただし、後者の場合、第３ソケット管理部３１０は、一つのファイルブロックをストリームの個数分だけ分割して複数のストリームを利用して送信できる。例えば、第３ソケット管理部３１０は、ファイルブロックをヘッダとペイロードとに分割し、ヘッダも情報別に分割した後、該分割された各々のデータを複数のストリームを利用して送信できる。
【０１０３】
一方、第２データ受信装置４００は、第４ソケット管理部４１０、第４制御情報管理部４２０、第２バッファ管理部４３０、第４ディスク制御部４４０及び並列ストリーム管理部４５０を備える。図５に示す第４ソケット管理部４１０、第４制御情報管理部４２０、第４ディスク制御部４４０及び並列ストリーム管理部４５０は、図２を参照して説明した第２通信部２１０、第２ソケット管理部２３０、第２制御情報管理部２２０、第２ディスク制御部２４０、送信速度算出部２５０及び並列接続管理部２７０と類似の動作を行うので、詳細な説明は省略する。
【０１０４】
第４ソケット管理部４１０は、第２データ送信装置３００から基本制御情報を受信して、第４制御情報管理部４２０に提供する。
【０１０５】
第４制御情報管理部４２０は、第４ソケット管理部４１０から提供された基本制御情報をパッシングして、基本制御情報に含まれた情報を確認する。
【０１０６】
また、第４ソケット管理部４１０は、基本制御情報のうち、最大接続個数とソケットバッファサイズとに基づいて接続するストリーム個数を設定し、該設定された個数分だけのソケットを生成できる。そして、第４ソケット管理部４１０は、生成されたソケットの個数に該当するストリームを構成して、第３ソケット管理部３１０とストリームとが接続されるようにする。第４ソケット管理部４１０は、接続した複数のストリームを利用して第２データ送信装置３００からファイルブロックを並列受信し、該受信されたファイルブロックを第２バッファ管理部４３０に提供できる。受信された各ファイルブロックは、図６と同じ構造を有する。
【０１０７】
第２バッファ管理部４３０は、第２未使用バッファキュー４３１及び第２バッファキュー４３３に分離されるバッファを備えることができる。
【０１０８】
第４ソケット管理部４１０から受信されるファイルブロックがある場合に、第２未使用バッファキュー４３１から空いているファイルブロックを読み込んで第２バッファキュー４３３に受信されるファイルブロックを一時格納する。
【０１０９】
第２バッファキュー４３３は、第２未使用バッファキュー４３１から入力されるファイルブロックを一時格納する。第２未使用バッファキュー４３１と第２バッファキュー４３３とは、先入れ先出し方式に基づいて少なくとも一つのファイルブロックを一時格納する。
【０１１０】
第４ディスク制御部４４０は、基本制御情報のうち、ファイル名、ファイルサイズ、ディスクバッファサイズ及び全体ブロック個数に基づいて、受信されたファイルブロックをＨＤＤのような格納媒体に格納することができる。特に、第４ディスク制御部４４０は、ディスクバッファサイズと全体ブロック個数とを参照して、第２バッファキュー４３３からファイルブロックを読み込んで格納媒体に格納する。
【０１１１】
並列ストリーム管理部４５０は、第２データ送信装置３００からファイルブロックらが並列受信されて第２データ受信装置４００に格納される間に、モニターリング周期ごとにネットワーク混雑率を算出し、該算出されたネットワーク混雑率に基づいてストリーム接続個数を調節できる。
【０１１２】
このために、並列ストリーム管理部４５０は、複数のストリームを利用して並列受信されるファイルブロックの送信速度をモニターリング時点ごとに各ストリーム別に算出して、メモリ（図示せず）に格納することができる。そして、並列ストリーム管理部４５０は、図４Ａ及び図４Ｂを参照して、上述した二重移動平均アルゴリズムを利用してネットワーク混雑率を算出できる。簡略に説明すれば、並列ストリーム管理部４５０は、複数のストリーム別に受信されるファイルブロックの送信速度をモニターリング時点ごとに確認し、確認結果から送信速度の減少したストリームの個数を単位ウィンドウごとに確認する。並列ストリーム管理部４５０は、単位ウィンドウごとに確認された送信速度の減少したストリームの個数を利用して、ネットワーク混雑率を算出できる。並列ストリーム管理部４５０は、算出されたネットワーク混雑率と設定された臨界値とを比較して、以前に設定された複数のストリームの接続個数を指数的に増加させたり線形的に減少させたりすることができる。
【０１１３】
並列ストリーム管理部４５０は、調節されたストリームの接続個数に対する情報を第４ソケット管理部４１０に提供する。
【０１１４】
第４ソケット管理部４１０は、並列ストリーム管理部４５０から提供された接続個数に合せて、実際に使用するストリームを変更できる。例えば、ストリームの接続個数が５個から３個に減少した場合、第４ソケット管理部４１０は、５個のストリームのうち、使用する３個のストリームを決め、該決められたストリームを利用してファイルブロックを受信することができる。
【０１１５】
図７は、本発明の実施の形態に係るデータの並列受信のためのストリーム制御方法を説明するためのフローチャートである。
【０１１６】
図７のストリーム制御方法のためのデータ受信装置は、図２の第１データ受信装置２００又は図５の第２データ受信装置４００でありうる。
【０１１７】
データ受信装置は、データ送信装置から複数のストリームを構成するソケットを介してターゲットデータを並列受信することができる（Ｓ７１０）。データ送信装置は、図２の第１データ送信装置１００又は図５の第２データ送信装置３００でありうる。
【０１１８】
データ受信装置は、並列受信されたターゲットデータを格納媒体に格納する（Ｓ７２０）。
【０１１９】
データ受信装置は、ステップＳ７１０にて受信されたターゲットデータの送信速度を各ストリーム別に算出してメモリに格納する（Ｓ７３０）。データ受信装置は、モニターリング周期ごとに、すなわち、ネットワーク混雑率を算出するように決められたモニターリング時点ごとに、各ストリーム別に送信速度を算出できる。
【０１２０】
データ受信装置は、ステップＳ７３０にて算出された現在モニターリング時点でのストリーム別送信速度と、以前モニターリング時点で算出されたストリーム別送信速度とを比較して、送信速度の減少したストリームの個数を確認する（Ｓ７４０）。このとき、データ受信装置は、各単位ウィンドウ別に送信速度の減少したストリームの個数を確認することができる。
【０１２１】
データ受信装置は、単位ウィンドウごとに確認された送信速度の減少したストリームの個数を利用して、各単位ウィンドウのネットワーク混雑率であるサブネットワーク混雑率を算出できる（Ｓ７５０）。データ受信装置は、単位ウィンドウで利用された全体ストリーム個数のうち、以前に比べて送信速度の減少したストリームの個数を表す減少ストリーム比率を式１を利用して算出し、該算出された減少ストリーム比率を単位ウィンドウのサブネットワーク混雑率として決めることができる。データ受信装置は、単位ウィンドウ別にサブネットワーク混雑率を算出する。
【０１２２】
データ受信装置は、ステップＳ７５０にて算出された各単位ウィンドウのサブネットワーク混雑率の平均を求め、該求めた結果を現在モニターリング時点でのネットワーク混雑率として決めることができる（Ｓ７６０）。サブネットワーク混雑率の平均は、サブネットワーク混雑率を加算した結果を各単位ウィンドウの個数で割り算をして求めることができる。
【０１２３】
データ受信装置は、ステップＳ７６０にて算出されたネットワーク混雑率と少なくとも一つの臨界値とを比較して、現在ネットワーク状況に適したストリーム接続個数を計算できる（Ｓ７７０）。データ受信装置は、算出されたネットワーク混雑率に基づいて、以前に接続したストリームの接続個数を指数的に増加させたり線形的に減少させたりすることができる。ステップＳ７７０は、図８を参照してさらに詳細に説明する。
【０１２４】
データ受信装置は、ステップＳ７７０にて計算されたストリーム接続個数に合せて、ターゲットデータの並列受信に使用するストリームの個数を調節し、該調節されたストリームを利用してターゲットデータをデータ送信装置から並列受信できる（Ｓ７８０）。データ送信装置もやはり、データ受信装置から調節されたストリームの接続個数が通知されて、ストリームの接続個数を調節できることはもちろんである。
【０１２５】
図８は、図７のステップＳ７７０に記載されたストリーム接続個数を計算する方法を説明するためのフローチャートである。
【０１２６】
図８に示すように、データ受信装置は、ステップＳ７６０にて算出されたネットワーク混雑率Ｃｔと第１臨界値ＴＨ１とを比較する（Ｓ８１０）。ネットワーク混雑率Ｃｔのｔは、現在モニターリング時点を意味する。
【０１２７】
比較結果、ネットワーク混雑率Ｃｔが第１臨界値ＴＨ１以下であると（Ｓ８１０−Ｙ）、データ受信装置は、接続しているストリームの接続個数Ｓｔ−１を指数的に増加させることができる（Ｓ８２０）。図８において「Ｓｔ−１」は、ステップＳ７１０にてターゲットデータを受信する時に使用したストリームの個数、すなわち、以前に使用したストリームの個数であり、「Ｓｔ」は、増減されたストリーム接続個数、「ｎ」は、自然数として１を例に挙げることができるが、１だけでなくネットワーク状況に応じて適応的に変更されうる。
【０１２８】
これに対し、ネットワーク混雑率Ｃｔが第１臨界値ＴＨ１以下でないと（Ｓ８１０−Ｎ）、データ受信装置は、ネットワーク混雑率Ｃｔと第２臨界値ＴＨ２とを比較する（Ｓ８３０）。
【０１２９】
比較結果、ネットワーク混雑率Ｃｔが第１臨界値ＴＨ１より大きく第２臨界値ＴＨ２以下であると（Ｓ８３０−Ｙ）、データ受信装置は、接続しているストリームの接続個数Ｓｔ−１を１個減少させることができる（Ｓ８４０）。
【０１３０】
これに対し、ネットワーク混雑率Ｃｔが第２臨界値ＴＨ２より大きく第３臨界値ＴＨ３以下であると（Ｓ８５０−Ｙ）、データ受信装置は、接続しているストリームの接続個数Ｓｔ−１をｍ％減少させることができる。「ｍ」は、（複数のストリームの接続個数×ｍ％）≧１になるようにする定数である。例えば、ｎ＝３０で、ストリームの接続個数Ｓｔ−１が１０であると、１０×３０％＝３であるから、データ受信装置は、１０個のストリーム接続個数を３個減少させて、結果的に７個のストリームを使用することができる。
【０１３１】
図９は、本発明の他の実施の形態に係るデータの並列受信のためのストリーム制御方法を説明するためのフローチャートである。
【０１３２】
図９のストリーム制御方法のためのデータ送信装置とデータ受信装置は、図２の第１データ送信装置１００と第１データ受信装置２００であるか、又は図５の第２データ送信装置３００と第２データ受信装置４００でありうる。
【０１３３】
データ送信装置は、ファイル送信要請が受信されると、割り当てられた帯域幅をすべて使用することができるストリーム接続個数を決め、ストリーム接続個数分だけのソケットを生成する（Ｓ９０５）。
【０１３４】
データ送信装置は、一つ以上のソケットを利用してファイルの属性情報を含む基本制御情報をデータ受信装置に送信する（Ｓ９１０）。
【０１３５】
データ受信装置は、ステップＳ９１０により受信した基本制御情報を利用して、ファイル受信のための環境を設定する（Ｓ９１５）。一例として、データ受信装置は、基本制御情報のうち、最大接続個数とソケットバッファサイズとに基づいて、接続するストリーム個数を設定し、設定された個数に該当するソケットを生成できる。
【０１３６】
データ送信装置は、ＨＤＤのような格納媒体に記録されたファイルを分割ファイルの形態で読み込んで、バッファキューにファイルブロック単位で格納することができる（Ｓ９２０）。バッファキューは、図５の第１未使用バッファキュー３４１と第１バッファキュー３４３でありうる。
【０１３７】
データ送信装置は、ステップＳ９２０にてバッファキューに格納された少なくとも一つのファイルブロックを読み込んで、送信ソケットバッファに格納する（Ｓ９２５）。
【０１３８】
データ送信装置は、送信ソケットバッファに格納された少なくとも一つのファイルブロックをステップＳ９０５にて構成された複数のストリームを利用してデータ受信装置に並列送信できる（Ｓ９３０）。
【０１３９】
データ受信装置は、ステップＳ９３０により並列受信されるファイルブロックを受信ソケットバッファに格納する（Ｓ９３５）。
【０１４０】
データ受信装置は、受信ソケットバッファに格納された少なくとも一つのファイルブロックをバッファキューに一時格納する（Ｓ９４０）。バッファキューは、図５の第２未使用バッファキュー４３１と第２バッファキュー４３３でありうる。
【０１４１】
データ受信装置は、バッファキューに格納された少なくとも一つのファイルブロックをＨＤＤのような格納媒体に格納する（Ｓ９４５）。
【０１４２】
データ受信装置は、データ送信装置からファイルブロックが並列受信されて格納媒体に格納される間に、すなわち、ステップＳ９３５〜Ｓ９４５が行われる間に、モニターリング周期又はモニターリング時点を確認する（Ｓ９５０）。
【０１４３】
モニターリング時点になると（Ｓ９５０−Ｙ）、データ受信装置は、二重移動平均アルゴリズムを利用してネットワーク混雑率を算出できる（Ｓ９５５）。データ受信装置は、図７のステップＳ７３０〜Ｓ７６０において説明した方式又は図４Ａと図４Ｂを参照して説明した方式を利用して、ネットワーク混雑率を算出できる。
【０１４４】
データ受信装置は、ステップＳ９５５にて算出されたネットワーク混雑率と少なくとも一つの臨界値とを比較して、現在ネットワーク状況に適したストリーム接続個数Ｓｔを計算できる（Ｓ９６０）。データ受信装置は、図８を参照して説明した方式を利用して、ストリーム接続個数Ｓｔを計算できる。
【０１４５】
データ受信装置は、ステップＳ９６０にて計算されたストリーム接続個数Ｓｔを利用して、実際に使用するストリームを調節できる（Ｓ９６５）。
【０１４６】
データ受信装置は、調節されたストリームの接続個数Ｓｔをデータ送信装置に通知する（Ｓ９７０）。
【０１４７】
データ送信装置は、通知されたストリーム接続個数Ｓｔに合せてターゲットデータの並列送信に使用するストリーム個数を調節する（Ｓ９７５）。
【０１４８】
データ送信装置は、ステップＳ９７５にて調節された接続個数Ｓｔのストリームを利用してファイルを並列送信する（Ｓ９８０）。
【０１４９】
本発明は、ＷＡＮネットワーク区間において既存のＦＴＰなどの送信方式でファイルを送信した時に使用可能なネットワーク帯域幅を効率的に使用できないことによる送信速度の低下をソフトウェア的なアルゴリズムである並列ＴＣＰでいくつかのチャネルを介してファイルを多重送信することで、帯域幅の使用効率を増加させ、結果的にファイルの送信速度を向上させることができる。
【０１５０】
また、本発明は、並列ＴＣＰを介したファイルの高速送信の際に、ネットワーク混雑に応じる送信速度の制御のために、二重移動平均基盤ストリーム接続術制御アルゴリズムを提案し、これを通じて既存のソフトウェア基盤の高速送信方式において問題となる帯域幅占有現象を解決できる。
【０１５１】
上述した実施の形態は、データを高速送信するためのあらゆる分野で活用が可能である。例えば、本実施の形態は、メディアファイル（動画、写真、音楽等）をやりとりしたウェブサイトやプログラム、容量の大きな３Ｄ映画ファイルを遠距離にある機器同士で送受信する状況でも用いられることができる。また、本実施の形態は、遠距離にあるデータセンター間のバックアップやファイル送信にも活用できる。
【０１５２】
また、本発明の実施の形態によれば、ＷＡＮ（Ｗｉｒｅｌｅｓｓ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）区間で既存のＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）のような送信方式でファイルを送信する場合、使用可能なネットワーク帯域幅を効率的に使用できないことによる送信速度の低下をソフトウェア的なアルゴリズムである並列ＴＣＰでいくつかのチャネルを介してファイルを多重送信することによって帯域幅の使用効率を増加させ、結果的にファイルの送信速度を向上させることができる。
【０１５３】
また、本発明は、並列ＴＣＰを介したファイルの高速送信の際にネットワーク混雑に応じる送信速度を制御するために、二重移動平均基盤ストリーム接続術制御アルゴリズムを提案し、これを通じて既存のソフトウェア基盤の高速送信方式において問題となった帯域幅占有現象を解決できる。
【０１５４】
以上、本発明は、限定された実施形態と図面により説明されたが、本発明は、上記の実施形態に限定されるものではなく、本発明が属する分野における通常の知識を有した者であればこのような記載から多様な修正及び変形が可能である。したがって、本発明の範囲は、説明された実施形態に限定されてはならず、後述する特許請求の範囲だけでなく、この特許請求の範囲と均等なものによって定められねばならない。
【符号の説明】
【０１５５】
１００      第１データ送信装置
１１０      第１ソケット管理部
１２０      第１制御情報管理部
１３０      第１通信部
１４０      第１ディスク制御部
２００      第１データ受信装置
２１０      第２通信部
２２０      第２制御情報管理部
２３０      第２ソケット管理部
２４０      第２ディスク制御部
２５０      送信速度算出部
２６０      メモリ
２７０      並列接続管理部
３００      第２データ送信装置
３１０      第３ソケット管理部
３２０      第３制御情報管理部
３３０      第３ディスク制御部
３４０      第１バッファ管理部
４００      第２データ受信装置
４１０      第４ソケット管理部
４２０      第４制御情報管理部
４３０      第２バッファ管理部
４４０      第４ディスク制御部
４５０      並列ストリーム管理部
【図１】
0005405625.tif 000015
【図２】
0005405625.tif 000016
【図３】
0005405625.tif 000017
【図４Ａ】
0005405625.tif 000018
【図４Ｂ】
0005405625.tif 000019
【図５】
0005405625.tif 000020
【図６】
0005405625.tif 000021
【図７】
0005405625.tif 000022
【図８】
0005405625.tif 000023
【図９】
0005405625.tif 000024