説明

データの並列受信のためのストリーム制御方法及び装置

【課題】データの並列受信のためのストリーム制御方法及び装置を提供すること。
【解決手段】データの並列受信のためのストリーム制御方法は、複数の接続したストリームを利用して、データを並列受信し、複数のストリーム別に受信されるデータの送信速度の変化を利用して、ネットワーク混雑率を算出し、算出されたネットワーク混雑率に基づいて、複数のストリームの接続個数を調節し、調節された個数のストリームを利用して、データを並列受信することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データの並列受信のためのストリーム制御方法及び装置に関し、さらに詳細には、ネットワーク混雑率と臨界値に基づいて並列ストリームの接続個数を制御できるデータの並列受信のためのストリーム制御方法及び装置に関する。
【背景技術】
【0002】
高性能のモバイルデバイスの使用が速く広がるにつれて、大容量ファイルの送信速度が遅くなる現象が頻繁に発生している。これは、限定されたネットワーク帯域幅内でモバイルデバイスの需要をそのまま受け入れ、多くのモバイルデバイスがネットワーク帯域幅を使用するようになるから、結果的にネットワーク応答の低下をもたらすからである。このような問題を解決するために、従来では、ハードウェア装備をアップグレードしてデータ加速送信方式を使用しているが、これは、投資費用がかなり必要である。
【0003】
一方、ファイルを送信するファイル送信プログラムの一例として、一つのTCP(Transmission Control Protocol)ストリームを使用する方式が挙げられる。一つのTCPストリームを使用する方式は、例えば、クラウド基盤のシステムにおいてサーバとクライアントとの間に一つのTCPで接続して、一つのチャネルを介してデータを送信することである。しかしながら、既存のファイル送信プログラムは、一つのチャネルを介してデータを送信するので、データの送信時にパケットの損失が多く発生したり、RTT(Round Trip Time)の長いネットワークでは、送信効率が急激に落ちるようになる。
【0004】
かかる問題を解決するために、従来では、並列ストリーム送信方式を使用しているが、並列ストリームの接続個数もやはりパケット損失とRTTに依存して算出されるので、並列ストリームの接続個数を求めるアルゴリズムが複雑である。また、パケットの損失とRTTに依存する場合、前記アルゴリズムは、システムコールに依存してパケットの損失とRTTが分かるので、各システム別にオペレーティング・システム(OS:Operating System)のカーネルを変えなければならないので、開発に難しさがある。
【発明の概要】
【発明が解決しようとする課題】
【0005】
そこで、本発明は上記問題を解決するためになされたものであって、その目的は、並列ストリームを利用してデータを送信するものの、ネットワーク状況に応じてストリームの接続個数を適応的に調節することによって、改善された速度でデータを送受信できるデータの並列受信のためのストリーム制御方法及び装置を提供することにある。
【0006】
また、本発明の他の目的は、パケット損失やRTTを別途に算出せずにストリームの接続個数を調節できるデータの並列受信のためのストリーム制御方法及び装置を提供することにある。
【課題を解決するための手段】
【0007】
本発明の一実施の形態によれば、複数の接続したストリームを利用して、データを並列受信するステップと、前記複数のストリーム別に受信されるデータの送信速度の変化を利用して、ネットワーク混雑率を算出するステップと、前記算出されたネットワーク混雑率に基づいて、前記複数のストリームの接続個数を調節するステップと、前記調節された個数のストリームを利用して、前記データを並列受信するステップとを含むことを特徴とするデータの並列受信のためのストリーム制御方法が提供される。
【0008】
一方、本発明の他の実施の形態によれば、複数のストリームを利用してデータを並列受信する通信部と、前記複数のストリーム別に受信されるデータの送信速度の変化を利用してネットワーク混雑率を算出し、該算出されたネットワーク混雑率に基づいて前記複数のストリームの接続個数を調節する並列接続管理部とを備え、前記通信部は、前記並列接続管理部により調節された接続個数のストリームを利用して前記データを並列受信する。
【発明の効果】
【0009】
本発明の実施の形態によれば、システムコールに依存して獲得されるパケット損失率とRTTを使用せずに二重移動平均アルゴリズムを利用して、より簡単にネットワーク混雑率を算出することができる。
【0010】
また、本発明の実施の形態によれば、ネットワーク混雑率と少なくとも一つの臨界値とを比較してストリーム接続個数を増減するので、ネットワーク状況に応じて適応的にストリーム接続個数を調節することができる。
【0011】
また、本発明の実施の形態によれば、ネットワーク状態に影響を与えない範囲内で現在のネットワーク状態を考慮して最も速い速度でデータを並列送信できるストリーム個数を設定できる。
【0012】
また、本発明の実施の形態によれば、複数のストリームを利用して受信されたデータの送信速度に基づいてストリーム接続個数を制御するので、ネットワークの応用階層に基づいたロジック処理によってOSのカーネルを変えたり、RTTやパケット損失率のようなシステムコールを必要としない。したがって、OSの種類に関係なくデータを高速で送信しようとするサーバ、デバイスと受信するサーバ、又はデバイスに簡単なソフトウェアをインストールするだけでデータの高速並列送信を具現化できる。
【図面の簡単な説明】
【0013】
【図1】本実施の形態に係るデータの並列送信のための送受信システムを示す図である。
【図2】本発明の一実施の形態に係るデータの並列送信のための第1データ送信装置及び第1データ受信装置を示すブロック図である。
【図3】上述した単位ウィンドウを説明するための例示図である。
【図4A】本実施の形態に係る二重移動平均アルゴリズムを利用してネットワーク混雑率を算出する一例を説明するための例示図である。
【図4B】図4Aの第1ないし第3単位ウィンドウをそれぞれ示す図である。
【図5】本発明の他の実施の形態に係るデータの並列送信のための第2データ送信装置及び第2データ受信装置を示すブロック図である。
【図6】一実施の形態に係るファイルブロックの構造を示す図である。
【図7】本発明の実施の形態に係るデータの並列受信のためのストリーム制御方法を説明するためのフローチャートである。
【図8】図7のステップS770に記載されたストリーム接続個数を計算する方法を説明するためのフローチャートである。
【図9】本発明の他の実施の形態に係るデータの並列受信のためのストリーム制御方法を説明するためのフローチャートである。
【発明を実施するための形態】
【0014】
以上の本発明の目的、他の目的、特徴及び利点は、添付された図面と関連した以下の好ましい実施形態により容易に理解されるはずである。しかしながら、本発明は、ここで説明される実施形態に限定されず、他の形態で具体化されてもよい。むしろ、ここで紹介される実施形態は、開示された内容が徹底かつ完全になるように、そして当業者に、本発明の思想を十分に理解してもらうために提供されるものである。本明細書において、ある構成要素が他の構成要素上にあると言及される場合には、それは、他の構成要素上に直接形成される場合もあり、それらの間に第3の構成要素が介在される場合もあることを意味する。
【0015】
本明細書で使用された用語は、実施形態を説明するためのものであって、本発明を限定するものではない。本明細書において、単数形は、特に言及しない限り、複数形も含む。明細書で使用される「含む」と言及された構成要素は、一つ以上の他の構成要素の存在又は追加を排除しない。
【0016】
以下、図面を参照して本発明を詳細に説明する。以下の特定の実施形態を述べるにおいて、様々に特定された内容は、発明をさらに具体的に説明し、理解を助けるために作成された。しかしながら、本発明を理解することができる程度のこの分野における知識を有した読者は、このような様々に特定された内容がなくても、本発明が実施可能であることを認知できる。ある場合には、周知で発明と大きく関連のない技術的内容は、本発明を説明するにあたって、特別な理由なしでも、読者の混乱を引き起こさないようにあえて述べないこともあることを予め言及しておく。
【0017】
図1は、本実施の形態に係るデータの並列送信のための送受信システムを示す図である。
【0018】
図1に示すように、データの並列送信のための送受信システムは、データ送信装置10とデータ受信装置20とを備える。データ送信装置10は、後述する第1データ送信装置100又は第2データ送信装置300で、データ受信装置20は、第1データ受信装置200又は第2データ受信装置400でありうる。
【0019】
データ送信装置10とデータ受信装置20との間には、データの並列送信のための複数のストリーム(S1、S2、…、SN;ここで、Nは、整数)が設けられる。複数のストリームS1、S2、…、SNは、少なくとも一つのポートに設けられるが、互いに異なる帯域幅を有するマルチチャネルにより具現化されうる。一例として、データ送信装置10とデータ受信装置20とは、TCP(Transmission Control Protocol)チャネルを介して、ファイルを並列ストリーミング送信方式で送受信でき、これに限定されない。
【0020】
本実施の形態によれば、データ送信のために接続するストリームS1、S2、…、SNの数は、データが送信されるネットワークの混雑率(congestion rate)に応じてリアルタイムで増加又は減少できる。すなわち、データ送信装置10とデータ受信装置20との間のデータ送信のために接続するストリームS1、S2、…、SNの個数は、ネットワーク混雑率に基づいて指数的に増加したり、線形的に減少できる。
【0021】
図2は、本発明の一実施の形態に係るデータの並列送信のための第1データ送信装置及び第1データ受信装置を示すブロック図である。
【0022】
図2に示すように、第1データ送信装置100は、第1ソケット管理部110、第1制御情報管理部120、第1通信部130及び第1ディスク制御部140を備える。
【0023】
第1ソケット管理部110は、ターゲットデータの送信要請が受信されると、ターゲットデータの属性情報を含む基本制御情報を第1データ受信装置200に送信するためのソケットを生成する。「ソケット」とは、ターゲットデータの送信のために第1データ送信装置100と第1データ受信装置200とを接続するソフトウェア的装置であって、一つのソケットは、一つのストリームを構成できる。複数のストリームが構成される場合に、マルチチャネルが形成されてターゲットデータは、並列送信が可能である。
【0024】
第1ソケット管理部110は、初期に使用されるストリームの接続個数を、第1通信部130と第2通信部210とで使用可能な帯域幅を最大限使用することができる最大接続個数として設定し、該設定された最大接続個数分だけのソケットを生成できる。「初期」とは、ターゲットデータを初めて第1データ受信装置200に送信する時を意味する。
【0025】
第1制御情報管理部120は、第1ソケット管理部110でソケットの生成が完了すると、基本制御情報を構成する。基本制御情報は、ターゲットデータの送信のために、初期に第1データ送信装置100と第1データ受信装置200とが共有する情報である。
【0026】
基本制御情報は、送信するターゲットデータのファイル名、ファイルサイズ、ストリームの個数、ディスクバッファサイズ、全体ブロック個数、ソケットバッファサイズ、IPアドレス、ポート情報及びセッションID(identification)などの情報を含む。ストリームの個数は、第1ソケット管理部110で初期生成された最大接続個数で、ディスクバッファサイズは、ディスクにデータを書き込むためにバッファに割り当てられたブロックのサイズ、ソケットバッファサイズは、送信プロトコルのカーネル端で使用するバッファのサイズ、IPアドレスは、データの送信に用いられるIPのアドレス、ポート情報は、データの送信に用いられるポートの情報、セッションIDは、各ストリームのIDである。
【0027】
第1通信部130は、第1ソケット管理部110で生成された使用可能な最大接続個数分だけのソケットを利用して複数のストリームを構成し、該構成されたストリームと決まったプロトコルを利用して第1データ受信装置200と通信できる。第1通信部130は、第1制御情報管理部120で構成された基本制御情報をソケットのストリームを利用して第1データ受信装置200に送信する。第1通信部130は、基本制御情報を複数のストリームを利用して並列送信することもできる。
【0028】
基本制御情報が送信された後、第1通信部130は、ターゲットデータを複数のストリームを利用して第1データ受信装置200に並列送信する。
【0029】
第1ディスク制御部140は、HDD(Hard Disk Drive)のような格納媒体に記録されたターゲットデータを読み込んで、第1通信部130に提供する。第1ディスク制御部140は、ターゲットデータをディスクバッファサイズに該当するサイズに分割して読み出すことができる。
【0030】
第1通信部130は、初期に設定された最大接続個数のストリームを利用してターゲットデータを第1データ受信装置200に並列送信できる。
【0031】
ターゲットデータを送信する間に、変更されたストリームの接続個数が第1データ受信装置200から通知されると、第1ソケット管理部110は、以前に使用するように接続したストリームの個数を調節する。例えば、基本制御情報に含まれた最大接続個数が5個であるが、第1データ受信装置200から使用可能なストリームの個数として3が通知されると、第1ソケット管理部110は、使用可能なストリームの個数を3に調節する。したがって、第1通信部130は、3個のストリームを利用してターゲットデータを並列送信する。
【0032】
一方、第1データ受信装置200は、第2通信部210、第2制御情報管理部220、第2ソケット管理部230、第2ディスク制御部240、送信速度算出部250、メモリ260及び並列接続管理部270を備える。
【0033】
第2通信部210は、第1データ送信装置100から基本制御情報を受信して第2制御情報管理部220に提供する。
【0034】
第2制御情報管理部220は、第2通信部210から提供された基本制御情報をパッシングして、基本制御情報に含まれた情報を確認する。第2制御情報管理部220は、確認された情報に基づいてターゲットデータの受信に必要な環境を設定する。例えば、第2制御情報管理部220は、基本制御情報に含まれた最大接続個数とソケットバッファサイズとを第2ソケット管理部230に通知する。また、第2制御情報管理部220は、ファイル名、ファイルサイズ、ディスクバッファサイズ及び全体ブロック個数を第2ディスク制御部240に通知し、IPアドレス、ポート情報及びセッションIDを第2通信部210に通知する。
【0035】
第2ソケット管理部230は、第2制御情報管理部220から提供された最大接続個数とソケットバッファサイズとに基づいて、初期接続するストリーム個数を設定し、該設定された個数分だけのソケットを生成できる。第2ソケット管理部230は、ソケットバッファサイズに該当するサイズを有するソケットを生成できる。したがって、第2通信部210は、生成されたソケットの個数に該当するストリームを構成し、複数のストリームと決められたプロトコルを利用して第1データ送信装置100からターゲットデータを並列受信し、該受信されたターゲットデータを第2ディスク制御部240に提供できる。
【0036】
第2ディスク制御部240は、第2制御情報管理部220から提供されたファイル名、ファイルサイズ、ディスクバッファサイズ及び全体ブロック個数に基づいて、受信されたターゲットデータをHDDのような格納媒体に格納することができる。特に、第2ディスク制御部240は、ディスクバッファサイズと全体ブロック個数とを参照して、ターゲットデータをバッファに一時格納した後、ディスクに格納することができる。
【0037】
送信速度算出部250は、複数のストリームを利用して並列受信されるターゲットデータの送信速度を各ストリーム別に算出できる。送信速度は、ネットワークトラフィックのようなネットワーク混雑率の影響を受ける。すなわち、ネットワーク混雑率が大きいほど、データの送信速度は減少し、ネットワーク混雑率が小さいほど、データの送信速度は増加できる。したがって、算出された送信速度からネットワーク混雑率を予測し、該予測されたネットワーク混雑率に基づいてストリームの接続個数を調節できる。
【0038】
このために、送信速度算出部250は、事前に決まったモニターリング時点ごとに又はモニターリング周期ごとに各ストリーム別にターゲットデータの送信速度を算出できる。後述する図3の場合に、t、t−1、t−2などがモニターリング時点であり、隣接するモニターリング時点間の間隔がモニターリング周期に該当する。モニターリング周期が経過すると、送信速度を算出しなければならないモニターリング時点になるので、モニターリング周期又はモニターリング時点は、結果的に同じ意味として使用されうる。したがって、以下では、説明の便宜のためにモニターリング周期とモニターリング時点とを混用する。
【0039】
メモリ260は、揮発性メモリ又は不揮発性メモリであって、送信速度算出部250から算出された各ストリーム別ターゲットデータの送信速度をモニターリング時点ごとに格納することができる。表1は、メモリ260に各ストリーム別に格納されるターゲットデータの送信速度の一例を示す。
【表1】

【0040】
[表1]を参照すれば、「bps」は、データの送信速度の単位であって、「ビット/秒」を意味する。すなわち、「bps」は、単位時間当りの受信ビット数に該当する。直近のモニターリング時点tにおいて第1ストリームS1に受信されたターゲットデータの送信速度は620kbps、第2ストリームS2に受信されたターゲットデータの送信速度は610kbps、第3ストリームS3に受信されたターゲットデータの送信速度は620kbpsであることが分かる。
【0041】
並列接続管理部270は、複数のストリーム別に受信されるターゲットデータの送信速度の変化を利用してネットワーク混雑率を算出する。そして、並列接続管理部270は、算出されたネットワーク混雑率に基づいて、以前に設定された複数のストリームの接続個数を調節できる。
【0042】
このために、並列接続管理部270は、ネットワーク混雑率算出部271及び接続個数計算部273を備える。
【0043】
ネットワーク混雑率算出部271は、複数のストリーム別に受信されるデータの送信速度をメモリ260からモニターリング時点ごとに確認し、確認結果から送信速度の減少したストリームの個数を単位ウィンドウごとに確認する。ネットワーク混雑率算出部271は、単位ウィンドウごとに確認された送信速度の減少したストリームの個数を利用して、ネットワーク混雑率を算出できる。
【0044】
詳細に説明すれば、ネットワーク混雑率算出部271は、減少ストリーム比率(すなわち、送信速度の減少したストリームの比率)を各単位ウィンドウ別に算出し、該算出した減少ストリーム比率を各単位ウィンドウのネットワーク混雑率のサブネットワーク混雑率として決める。「減少ストリーム比率」は、次の式1のように表すことができる。
【数1】

【0045】
式中、減少ストリーム比率は、一つの単位ウィンドウに対する比率であって、単位ウィンドウで使用された全体ストリーム個数のうち、以前に比べてターゲットデータの送信速度の減少したストリームの個数を表す。ネットワーク混雑率算出部271は、式1を利用して単位ウィンドウ別に減少ストリーム比率を算出し、該算出した各減少ストリーム比率を各単位ウィンドウのサブネットワーク混雑率として決める。仮に、現在モニターリング時点において形成される単位ウィンドウでターゲットデータの送信に使用されたストリームの全体個数が15個で、送信速度の減少したストリームの個数が5個であると、単位ウィンドウのサブネットワーク混雑率は、
【数2】

になる。
【0046】
そして、ネットワーク混雑率算出部271は、単位ウィンドウごとに算出されたサブネットワーク混雑率の平均をネットワーク混雑率として決めることができる。ネットワーク混雑率算出部271は、単位ウィンドウごとに算出されたサブネットワーク混雑率の合計を単位ウィンドウの個数で割り算をした前記平均(すなわち、ネットワーク混雑率)を求めることができる。ネットワーク混雑率算出部271は、式1を利用してネットワーク混雑率を算出できる。
【数3】

【0047】
式中、Cは、現在モニターリング時点でのネットワーク混雑率、lは、ネットワーク混雑率に用いられる単位ウィンドウの個数、kは、各単位ウィンドウに用いられるモニターリング時点の個数である。aは、現在モニターリング時点で各単位ウィンドウ別にターゲットデータの送信に利用される全体ストリームの個数、nは、現在モニターリング時点に該当する単位ウィンドウ内で速度低下が発生したストリームの個数である。lは、ネットワーク混雑率に用いられる単位ウィンドウの個数であるから、サブネットワーク混雑率の平均を算出するのに用いられる。
【0048】
式中、
【数4】

は、ネットワーク混雑率に利用された単位ウィンドウ別に送信速度の減少したストリームの個数を単位ウィンドウで使用されたストリームの個数で割り算をした結果をすべて加算した値であって、後述する図4Aの場合、
【数5】

でありうる。
【0049】
各単位ウィンドウにおいてターゲットデータの送信に利用される全体ストリームの個数が単位ウィンドウごとに同じ場合、式2は、式3のように簡単に定義できる。
【数6】

【0050】
式中、
【数7】

は、ネットワーク混雑率に利用された単位ウィンドウごとに送信速度の減少したストリームの個数を加算した結果であって、後述する図4Aの場合に、「9+9+8=26」でありうる。
【0051】
式1〜式3を参照して説明したネットワーク混雑率算出部271の動作は、本実施の形態で提案する二重移動平均アルゴリズムに該当できる。二重移動平均アルゴリズムは、図4A及び図4Bを参照して後述する。
【0052】
一方、ネットワーク混雑率算出部271は、ネットワーク混雑率の算出に用いられる単位ウィンドウの個数とモニターリング周期とを有線ネットワーク又は無線ネットワークの状況に応じて変更できる。ネットワークの状況は、例えば、パケット損失率とパケット往復時間(RTT:Round Trip Time)を含む。
【0053】
例えば、パケット損失率が大きくなったりRTTが大きくなってネットワーク状況が悪くなると、ネットワーク混雑率算出部271は、モニターリング周期を増加させたり、単位ウィンドウの個数、又は単位ウィンドウに属するモニターリング時点の個数を増加させたりすることができる。これと反対に、ネットワークの状況が良くなると、ネットワーク混雑率算出部271は、ネットワーク混雑率算出に用いられるモニターリング周期を減少させたり、単位ウィンドウの個数又は単位ウィンドウに属するモニターリング時点の個数を減少させたりすることができる。また、ネットワークの状態が変わり続ける状況では、ネットワーク混雑率算出部271は、モニターリング周期を速くし、ネットワーク状態が変わる周期が相対的に長くなる状況では、モニターリング周期を遅くすることができる。
【0054】
上述した「単位ウィンドウ」とは、複数のモニターリング時点の間に利用されたストリームからなり、各単位ウィンドウは、モニターリング時点を基準に移動平均アルゴリズムにより変更されうる。単位ウィンドウに対しては、図3を参照してより詳細に後述し、ネットワーク混雑率を二重移動平均と式2を利用して算出する方式については、図4A及び図4Bを参照してさらに詳細に後述する。
【0055】
一方、接続個数計算部273は、ネットワーク混雑率算出部271から算出されたネットワーク混雑率に基づいて、以前に接続した複数のストリームの接続個数を指数的に増加させるか、又は線形的に減少させることができる。このために、接続個数計算部273は、算出されたネットワーク混雑率と設定された少なくとも一つの臨界値とを比較し、比較結果に応じてストリームの接続個数を増減させることができる。
【0056】
詳細に説明すれば、接続個数計算部273は、算出されたネットワーク混雑率が第1臨界値TH1以下であると、接続している複数のストリームの接続個数を以前より指数的に増加させうる。
【0057】
また、接続個数計算部273は、算出されたネットワーク混雑率が第1臨界値TH1より大きく第2臨界値TH2以下であると、複数のストリームの接続個数を以前より1個減少させることができる。「1」は、一例に過ぎず、変更可能である。
【0058】
また、接続個数計算部273は、算出されたネットワーク混雑率が第2臨界値TH2より大きく第3臨界値TH3以下であると、複数のストリームの接続個数を以前よりm%(ここで、前記複数のストリームの接続個数×m%は、前記1より大きい)減少させることができる。「m」は、(複数のストリームの接続個数×m%)≧1になるようにする定数である。一実施の形態において、mは、10、20及び30のうちの何れか一つでありうる。
【0059】
仮に、(複数のストリームの接続個数×m%)の結果が小数点で表現されると、接続個数計算部273は、結果を切り上げ又は切り捨てして接続個数を調節できる。例えば、(複数のストリームの接続個数×m%)の結果が3.1で、複数のストリームの接続個数が10であると、接続個数計算部273は、10−3=7により、ストリームの接続個数を10個から7個に減少させうる。
【0060】
一実施の形態において、接続個数計算部273は、第1臨界値TH1=0.2、第2臨界値TH2=0.5、第3臨界値TH3=1を使用することができるが、これに限定されない。また、接続個数計算部273で使用する臨界値の個数もやはり3個に限定されず、3個以上又は3個以下になりうることはもちろんである。ネットワーク混雑率の最大値は1であるから、第3臨界値TH3の最大値も1である。
【0061】
並列接続管理部270は、接続したストリームの個数が調節されると、該調節されたストリームの個数を第2ソケット管理部230に提供する。第2ソケット管理部230は、調節されたストリームの個数を参照して使用を一時停止するストリームのIDを第2通信部210に提供する。第2通信部210は、提供されたストリームのIDを第1通信部130に送信する。以後、第1通信部130と第2通信部210は、一時停止されたストリームを除いた残りのストリームを利用して、ターゲットデータを並列に送受信できる。
【0062】
図3は、上述した単位ウィンドウを説明するための例示図である。
【0063】
図3に示すように、tは、現在モニターリング時点、t−1は、以前モニターリング時点、t−2は、t−1以前のモニターリング時点である。したがって、tとt−1との時間差は、モニターリング周期に該当する。図3の実施の形態において、第1単位ウィンドウW1は、3個のモニターリング時点からなるか、又は3個のモニターリング時点の間に利用された15個のストリームからなる。S1〜S5は、モニターリング時点ごとにデータの送信に利用されたストリームのIDである。
【0064】
●は、以前モニターリング時点に比べて送信速度が増加、同一又は10%未満に減少したストリーム、×は、以前モニターリング時点に比べて送信速度が10%以上減少したストリームのことを示す。現在モニターリング時点tと以前モニターリング時点t−1とを比較すると、第1ストリームS1に受信されたターゲットデータの送信速度は、現在モニターリング時点tにおいて以前モニターリング時点t−1に比べて減少したことが分かる。10%と単位ウィンドウをなすモニターリング時点の個数である3は、一例に過ぎず、これに限定されない。
【0065】
第1単位ウィンドウW1で利用された全体ストリームの個数は15個で、ターゲットデータの送信速度の減少したストリームの個数(すなわち、×の個数)は9個である。したがって、第1単位ウィンドウW1の減少ストリーム比率、すなわち、サブネットワーク混雑率を、式1を参照して算出すれば、次の通りである。
【数8】

【0066】
このような減少ストリーム比率は、第1単位ウィンドウW1で送信速度の減少したストリームの個数に対した単位ウィンドウ内の全体ストリームの個数であって、所定時間(すなわち、単位ウィンドウ)内で送信速度の減少したストリーム個数の平均を意味する。
【0067】
図4Aは、本実施の形態に係る二重移動平均アルゴリズムを利用してネットワーク混雑率を算出する一例を説明するための例示図、図4Bは、図4Aの第1ないし第3単位ウィンドウをそれぞれ示す図である。
【0068】
図4A及び図4Bに示すように、W1、W2及びW3は、それぞれネットワーク混雑率を算出するために用いられる第1ないし第3単位ウィンドウである。第1単位ウィンドウW1は、図3を参照して説明した単位ウィンドウと同一である。すなわち、第1単位ウィンドウW1は、3個のモニターリング時点t、t−1、t−2からなる。第2単位ウィンドウW2は、第1単位ウィンドウW1以前のウィンドウであって、3個のモニターリング時点であるt−1、t−2、t−3からなる。第3単位ウィンドウW3は、第2単位ウィンドウW2以前のウィンドウであって、3個のモニターリング時点であるt−2、t−3、t−4からなる。
【0069】
ネットワーク混雑率算出部271は、第1ないし第3単位ウィンドウW1、W2、W3のそれぞれのサブネットワーク混雑率を算出する。このために、ネットワーク混雑率算出部271は、二重移動平均アルゴリズムを利用する。移動平均とは、趨勢の変動が分かるように区間を移しつつ求める平均である。図4Aの場合に、第1単位ウィンドウW1での移動平均は、第1単位ウィンドウW1で送信速度の減少したストリームの個数に対した単位ウィンドウ内の全体ストリームの個数であって、減少ストリームの比率又はサブネットワーク混雑率と同じ意味を有する。「二重移動平均」は、各単位ウィンドウ別に算出されたサブネットワーク混雑率の平均をさらに算出するという意味で定義された用語である。
【0070】
以下、図4Bを参照して、第1ないし第3単位ウィンドウW1、W2、W3のそれぞれのサブネットワーク混雑率を算出する。
【0071】
まず、第1単位ウィンドウW1の場合、ターゲットデータの送信に利用された全体ストリームの個数aは15個、現在モニターリング時点tに該当する第1単位ウィンドウW1内で速度低下が発生したストリームの個数nは9個である。したがって、第1単位ウィンドウW1のサブネットワーク混雑率は
【数9】

である。
【0072】
第2単位ウィンドウW2の場合に、ターゲットデータの送信に利用された全体ストリームの個数at−1は15個、以前モニターリング時点t−1に該当する第2単位ウィンドウW2内で速度低下が発生したストリームの個数nt−1は9個である。したがって、第2単位ウィンドウW2のサブネットワーク混雑率は
【数10】

である。これは、第1単位ウィンドウW1を、モニターリング周期を基準に以前モニターリング時点t−1へ移動して第2単位ウィンドウW2を論理的に生成し、第2単位ウィンドウW2のサブネットワーク混雑率を算出したことであるので、第1単位ウィンドウW1を基準に第2単位ウィンドウW2に対して算出された移動平均である。
【0073】
第3単位ウィンドウW3の場合に、ターゲットデータの送信に利用された全体ストリームの個数at−2は15個、以前モニターリング時点t−2に該当する第3単位ウィンドウW3内で速度低下が発生したストリームの個数nt−2は8個である。したがって、第3単位ウィンドウW3のサブネットワーク混雑率は
【数11】

である。
【0074】
ネットワーク混雑率算出部271は、第1ないし第3単位ウィンドウW1、W2、W3のそれぞれに対するサブネットワーク混雑率を加算し、該加算した値を第1ないし第3単位ウィンドウW1、W2、W3の個数である3で割り算をしてネットワーク混雑率を算出する。これを、簡単に示す図が図4Aである。
【0075】
また、図4Aに示すように、第1ないし第3単位ウィンドウW1、W2、W3のそれぞれに用いられるモニターリング時点の個数kは3個、ネットワーク混雑率に用いられる単位ウィンドウの個数lは3個、nは9個、nt−1は9個、nt−2は8個である。また、a、at−1及びat−2はそれぞれ15個である。
【0076】
ネットワーク混雑率算出部271は、式1に前記定数を代入して現在モニターリング時点tでのネットワーク混雑率を算出できる。
【数12】

【0077】
上記式のように現在モニターリング時点tでのネットワーク混雑率は、0.577であることが分かる。第2臨界値TH2が0.5で、第3臨界値TH3が1の場合、0.577は、第2臨界値TH2と第3臨界値TH3との間に位置する。したがって、接続個数計算部273は、St=St−1×(1−m%)を利用してネットワーク状態に適したストリーム個数を計算できる。例えば、これまで利用されたストリーム接続個数が10個で、m%のmが30である場合に、St=St−1×(1−0.3)=10×0.7=7であるから、接続個数計算部273は、計算されたストリーム接続個数を第2ソケット管理部230に提供する。これにより、ストリーム接続個数は、10個から7個に調節される。
【0078】
以上のように、本発明の一実施の形態によってデータを受信する装置は、通信ユニット、接続管理ユニット、及びメモリを備えることによって具現化されることができる。
【0079】
このとき、前記通信ユニットは、現在の複数接続した並列ストリームを介してデータを受信し、該受信されたデータを前記メモリに少なくとも一時的に格納することができる。前記接続管理ユニットは、現在の複数の接続に基づいてネットワーク混雑率を動的に算出でき、該算出されたネットワーク混雑率を利用して、現在複数の接続の個数を調節するかどうかを判断できる。そして、仮に前記接続個数を調節すると判断した場合、前記通信ユニットは、これから使用する複数の接続の個数を通知する変更通知を生成することができる。
【0080】
前記実施の形態において、前記接続管理ユニットは、予め設定された数のモニターリング時点を有する現在のウィンドウに対して計算することによってネットワーク混雑率を算出でき、このとき、ネットワーク混雑率は、現在のウィンドウの前記予め設定された数のモニターリング時点の各々に対して複数の現在の接続ストリームのうち、減少された速度のストリームの個数に基づいて算出されうる。
【0081】
前記実施の形態において、前記ネットワーク混雑率は、現在ウィンドウに直に連続する複数の先行ウィンドウに対して計算することによって算出されうる。
【0082】
前記実施の形態において、この際のネットワーク混雑率は、現在のウィンドウの前記予め設定された数のモニターリング時点の各々に対して複数の現在の接続ストリームのうち、減少された速度のストリームの個数だけでなく現在ウィンドウに直に連続する複数の先行ウィンドウに対して計算することによって算出されうる。
【0083】
前記実施の形態において、前記接続管理ユニットが複数の接続の個数を調節する場合、これから使用する複数の接続の個数が前記ネットワーク混雑率と一つ以上の臨界値との比較に基づいて設定されることができる。
【0084】
このとき、これから使用する接続の新しい個数は、現在の接続個数と関連あり、前記新しい個数は、現在個数から指数的に増加するか、現在個数から線形的に減少するか、又は現在個数から漸進的に増減できる。
【0085】
また、前記実施の形態において前記データを受信する装置は、受信されたデータが記録される格納手段をさらに備えることができる。
【0086】
図5は、本発明の他の実施の形態に係るデータの並列送信のための第2データ送信装置及び第2データ受信装置を示すブロック図である。
【0087】
図5に示すように、第2データ送信装置300は、第3ソケット管理部310、第3制御情報管理部320、第3ディスク制御部330及び第1バッファ管理部340を備える。図5に示す第3ソケット管理部310、第3制御情報管理部320及び第3ディスク制御部330は、図2を参照して説明した第1ソケット管理部110、第1制御情報管理部120、第1通信部130及び第1ディスク制御部140と類似の動作を行うので、詳細な説明は省略する。
【0088】
第3ソケット管理部310は、ターゲットデータの送信要請が受信されると、ターゲットデータの属性情報を含む基本制御情報を第2データ受信装置400に送信するためのソケットを生成する。「ターゲットデータ」は、第2データ受信装置400に送信するデータであって、ファイル形態を有することができる。したがって、ターゲットデータとファイルとは、実質的に同じ意味を有することができ、図2では、ターゲットデータを例に挙げて説明したので、以下では、ファイルを例に挙げて説明する。
【0089】
第3ソケット管理部310は、初期にストリームの接続個数を第2データ送信装置300と第2データ受信装置400で使用可能な帯域幅を最大限使用することができる最大接続個数として設定し、該設定された最大接続個数分だけのソケットを生成できる。第3ソケット管理部310は、最大接続個数分だけのソケットを利用して複数のストリームを構成し、該構成されたストリームと決まったプロトコルとを利用して第2データ受信装置400にファイルを並列送信できる。
【0090】
ファイルを送信する間に第2データ受信装置400でストリーム接続個数が調節されると、第3ソケット管理部310は、以前に使用したストリームの接続個数を調節し、該調節された個数に対応するストリームを利用してファイルを第2データ受信装置400に並列送信する。
【0091】
第3制御情報管理部320は、第3ソケット管理部310で複数のストリームが生成されると、基本制御情報を構成する。基本制御情報は、ファイルの送信のために初期に第2データ送信装置300と第2データ受信装置400とが共有する情報である。
【0092】
第3ディスク制御部330は、HDDのような格納媒体に記録されたファイルを分割ファイル形態で読み込んでディスクバッファ(図示せず)に分割ファイル単位で格納し、ディスクバッファ(図示せず)に格納された分割ファイルを第1バッファ管理部340に伝達できる。これは、第3ディスク制御部330は、ディスクバッファサイズ(すなわち、ファイルブロックのサイズ)に該当するサイズにファイルを分割して読むためである。
【0093】
第1バッファ管理部340は、第3ディスク制御部330によりディスクバッファ(図示せず)から入力される分割ファイルをバッファに一時格納する。
【0094】
このために、第1バッファ管理部340は、第1未使用バッファキュー341及び第1バッファキュー343に分離されるバッファを備えることができる。第1バッファ管理部340のバッファを第1未使用バッファキュー341と第1バッファキュー343とに分離する理由は、第1バッファ管理部340のすべての領域を再使用するためである。これは、JAVA(登録商標)のようにOSに独立的な言語を利用して本実施の形態を具現する場合に、バッファを再度使用しないことによって発生できる ガベージコレクション(Garbage Collecting)によるオーバーヘッドを防止するためである。
【0095】
第1未使用バッファキュー341は、ディスクバッファ(図示せず)から入力される分割ファイルを一時格納するための複数のファイルブロックを備えることができる。一つのファイルブロックには、一つの分割ファイルが格納されることができる。または、ファイルブロックは、分割ファイルをファイルブロックに割り当てられたサイズに再度分割して格納することもでき、このような場合、一つの分割ファイルは、複数のファイルブロックに分散格納されることができる。本実施の形態においては、後者を例に挙げて説明する。
【0096】
第1未使用バッファキュー341のファイルブロックに分割ファイルが格納されると、第1バッファ管理部340は、ファイルブロックを第1バッファキュー343に格納することができる。
【0097】
第1バッファキュー343は、第1未使用バッファキュー341から入力されるファイルブロックを一時格納する。第1バッファキュー343に格納されたファイルブロックは、ネットワークを介して第2データ受信装置400に伝達され、以後に用いられたファイルブロックは、再使用のために第1未使用バッファキュー341に再度返納される。第1未使用バッファキュー341と第1バッファキュー343とは、先入れ先出し方式に基づいて少なくとも一つのファイルブロックを一時格納する。
【0098】
図6は、一実施の形態に係るファイルブロックの構造を示す図である。
【0099】
図6に示すように、ファイルブロックは、ヘッダ及びペイロード(payload)に区分される。ヘッダには、ファイルブロックがデータであることを知らせるタグ情報、ファイルを識別するためのファイル固有のID情報、第3ソケット管理部310が読み込んだ分割ファイルがファイルのどの位置に属するかを知らせるデータアドレス情報、及び読み込んだ分割ファイルのサイズ情報(すなわち、ペイロードのサイズ情報)が記録されうる。ペイロードには、分割ファイルに含まれた実際データがペイロードに該当するサイズ分だけ記録されることができる。
【0100】
図6のようなファイルブロックは、第2データ送信装置300だけでなく第2データ受信装置400の第2バッファ管理部430でも同様に用いられることができる。したがって、第2データ受信装置400は、ファイルブロックのデータアドレス情報から現在受信された分割ファイルがファイルのどの位置に属するかを把握できる。
【0101】
また、図5を参照すれば、第3ソケット管理部310は、第1バッファキュー343にファイルブロックがあるかどうかを確認し、ファイルブロックがあると、格納されたファイルブロックを読み込んで送信ソケットバッファ(図示せず)に格納する。第3ソケット管理部310は、送信ソケットバッファ(図示せず)に格納されたファイルブロックを複数のストリームを利用して第2データ受信装置400に並列送信できる。第3ソケット管理部310は、並列送信のために上述したように複数のソケットを生成し、一つのソケットが一つのストリームを結ぶようにすることによって、分割ファイルを、並列ストリームを利用して並列送信できる。
【0102】
このとき、第3ソケット管理部310は、複数のファイルブロックを各々のストリームを利用して並列送信するか、又は一つのファイルブロックを複数のストリームを利用して送信できる。以下、前者の場合を例に挙げて説明する。ただし、後者の場合、第3ソケット管理部310は、一つのファイルブロックをストリームの個数分だけ分割して複数のストリームを利用して送信できる。例えば、第3ソケット管理部310は、ファイルブロックをヘッダとペイロードとに分割し、ヘッダも情報別に分割した後、該分割された各々のデータを複数のストリームを利用して送信できる。
【0103】
一方、第2データ受信装置400は、第4ソケット管理部410、第4制御情報管理部420、第2バッファ管理部430、第4ディスク制御部440及び並列ストリーム管理部450を備える。図5に示す第4ソケット管理部410、第4制御情報管理部420、第4ディスク制御部440及び並列ストリーム管理部450は、図2を参照して説明した第2通信部210、第2ソケット管理部230、第2制御情報管理部220、第2ディスク制御部240、送信速度算出部250及び並列接続管理部270と類似の動作を行うので、詳細な説明は省略する。
【0104】
第4ソケット管理部410は、第2データ送信装置300から基本制御情報を受信して、第4制御情報管理部420に提供する。
【0105】
第4制御情報管理部420は、第4ソケット管理部410から提供された基本制御情報をパッシングして、基本制御情報に含まれた情報を確認する。
【0106】
また、第4ソケット管理部410は、基本制御情報のうち、最大接続個数とソケットバッファサイズとに基づいて接続するストリーム個数を設定し、該設定された個数分だけのソケットを生成できる。そして、第4ソケット管理部410は、生成されたソケットの個数に該当するストリームを構成して、第3ソケット管理部310とストリームとが接続されるようにする。第4ソケット管理部410は、接続した複数のストリームを利用して第2データ送信装置300からファイルブロックを並列受信し、該受信されたファイルブロックを第2バッファ管理部430に提供できる。受信された各ファイルブロックは、図6と同じ構造を有する。
【0107】
第2バッファ管理部430は、第2未使用バッファキュー431及び第2バッファキュー433に分離されるバッファを備えることができる。
【0108】
第4ソケット管理部410から受信されるファイルブロックがある場合に、第2未使用バッファキュー431から空いているファイルブロックを読み込んで第2バッファキュー433に受信されるファイルブロックを一時格納する。
【0109】
第2バッファキュー433は、第2未使用バッファキュー431から入力されるファイルブロックを一時格納する。第2未使用バッファキュー431と第2バッファキュー433とは、先入れ先出し方式に基づいて少なくとも一つのファイルブロックを一時格納する。
【0110】
第4ディスク制御部440は、基本制御情報のうち、ファイル名、ファイルサイズ、ディスクバッファサイズ及び全体ブロック個数に基づいて、受信されたファイルブロックをHDDのような格納媒体に格納することができる。特に、第4ディスク制御部440は、ディスクバッファサイズと全体ブロック個数とを参照して、第2バッファキュー433からファイルブロックを読み込んで格納媒体に格納する。
【0111】
並列ストリーム管理部450は、第2データ送信装置300からファイルブロックらが並列受信されて第2データ受信装置400に格納される間に、モニターリング周期ごとにネットワーク混雑率を算出し、該算出されたネットワーク混雑率に基づいてストリーム接続個数を調節できる。
【0112】
このために、並列ストリーム管理部450は、複数のストリームを利用して並列受信されるファイルブロックの送信速度をモニターリング時点ごとに各ストリーム別に算出して、メモリ(図示せず)に格納することができる。そして、並列ストリーム管理部450は、図4A及び図4Bを参照して、上述した二重移動平均アルゴリズムを利用してネットワーク混雑率を算出できる。簡略に説明すれば、並列ストリーム管理部450は、複数のストリーム別に受信されるファイルブロックの送信速度をモニターリング時点ごとに確認し、確認結果から送信速度の減少したストリームの個数を単位ウィンドウごとに確認する。並列ストリーム管理部450は、単位ウィンドウごとに確認された送信速度の減少したストリームの個数を利用して、ネットワーク混雑率を算出できる。並列ストリーム管理部450は、算出されたネットワーク混雑率と設定された臨界値とを比較して、以前に設定された複数のストリームの接続個数を指数的に増加させたり線形的に減少させたりすることができる。
【0113】
並列ストリーム管理部450は、調節されたストリームの接続個数に対する情報を第4ソケット管理部410に提供する。
【0114】
第4ソケット管理部410は、並列ストリーム管理部450から提供された接続個数に合せて、実際に使用するストリームを変更できる。例えば、ストリームの接続個数が5個から3個に減少した場合、第4ソケット管理部410は、5個のストリームのうち、使用する3個のストリームを決め、該決められたストリームを利用してファイルブロックを受信することができる。
【0115】
図7は、本発明の実施の形態に係るデータの並列受信のためのストリーム制御方法を説明するためのフローチャートである。
【0116】
図7のストリーム制御方法のためのデータ受信装置は、図2の第1データ受信装置200又は図5の第2データ受信装置400でありうる。
【0117】
データ受信装置は、データ送信装置から複数のストリームを構成するソケットを介してターゲットデータを並列受信することができる(S710)。データ送信装置は、図2の第1データ送信装置100又は図5の第2データ送信装置300でありうる。
【0118】
データ受信装置は、並列受信されたターゲットデータを格納媒体に格納する(S720)。
【0119】
データ受信装置は、ステップS710にて受信されたターゲットデータの送信速度を各ストリーム別に算出してメモリに格納する(S730)。データ受信装置は、モニターリング周期ごとに、すなわち、ネットワーク混雑率を算出するように決められたモニターリング時点ごとに、各ストリーム別に送信速度を算出できる。
【0120】
データ受信装置は、ステップS730にて算出された現在モニターリング時点でのストリーム別送信速度と、以前モニターリング時点で算出されたストリーム別送信速度とを比較して、送信速度の減少したストリームの個数を確認する(S740)。このとき、データ受信装置は、各単位ウィンドウ別に送信速度の減少したストリームの個数を確認することができる。
【0121】
データ受信装置は、単位ウィンドウごとに確認された送信速度の減少したストリームの個数を利用して、各単位ウィンドウのネットワーク混雑率であるサブネットワーク混雑率を算出できる(S750)。データ受信装置は、単位ウィンドウで利用された全体ストリーム個数のうち、以前に比べて送信速度の減少したストリームの個数を表す減少ストリーム比率を式1を利用して算出し、該算出された減少ストリーム比率を単位ウィンドウのサブネットワーク混雑率として決めることができる。データ受信装置は、単位ウィンドウ別にサブネットワーク混雑率を算出する。
【0122】
データ受信装置は、ステップS750にて算出された各単位ウィンドウのサブネットワーク混雑率の平均を求め、該求めた結果を現在モニターリング時点でのネットワーク混雑率として決めることができる(S760)。サブネットワーク混雑率の平均は、サブネットワーク混雑率を加算した結果を各単位ウィンドウの個数で割り算をして求めることができる。
【0123】
データ受信装置は、ステップS760にて算出されたネットワーク混雑率と少なくとも一つの臨界値とを比較して、現在ネットワーク状況に適したストリーム接続個数を計算できる(S770)。データ受信装置は、算出されたネットワーク混雑率に基づいて、以前に接続したストリームの接続個数を指数的に増加させたり線形的に減少させたりすることができる。ステップS770は、図8を参照してさらに詳細に説明する。
【0124】
データ受信装置は、ステップS770にて計算されたストリーム接続個数に合せて、ターゲットデータの並列受信に使用するストリームの個数を調節し、該調節されたストリームを利用してターゲットデータをデータ送信装置から並列受信できる(S780)。データ送信装置もやはり、データ受信装置から調節されたストリームの接続個数が通知されて、ストリームの接続個数を調節できることはもちろんである。
【0125】
図8は、図7のステップS770に記載されたストリーム接続個数を計算する方法を説明するためのフローチャートである。
【0126】
図8に示すように、データ受信装置は、ステップS760にて算出されたネットワーク混雑率Cと第1臨界値TH1とを比較する(S810)。ネットワーク混雑率Cのtは、現在モニターリング時点を意味する。
【0127】
比較結果、ネットワーク混雑率Cが第1臨界値TH1以下であると(S810−Y)、データ受信装置は、接続しているストリームの接続個数St−1を指数的に増加させることができる(S820)。図8において「St−1」は、ステップS710にてターゲットデータを受信する時に使用したストリームの個数、すなわち、以前に使用したストリームの個数であり、「S」は、増減されたストリーム接続個数、「n」は、自然数として1を例に挙げることができるが、1だけでなくネットワーク状況に応じて適応的に変更されうる。
【0128】
これに対し、ネットワーク混雑率Cが第1臨界値TH1以下でないと(S810−N)、データ受信装置は、ネットワーク混雑率Cと第2臨界値TH2とを比較する(S830)。
【0129】
比較結果、ネットワーク混雑率Cが第1臨界値TH1より大きく第2臨界値TH2以下であると(S830−Y)、データ受信装置は、接続しているストリームの接続個数St−1を1個減少させることができる(S840)。
【0130】
これに対し、ネットワーク混雑率Cが第2臨界値TH2より大きく第3臨界値TH3以下であると(S850−Y)、データ受信装置は、接続しているストリームの接続個数St−1をm%減少させることができる。「m」は、(複数のストリームの接続個数×m%)≧1になるようにする定数である。例えば、n=30で、ストリームの接続個数St−1が10であると、10×30%=3であるから、データ受信装置は、10個のストリーム接続個数を3個減少させて、結果的に7個のストリームを使用することができる。
【0131】
図9は、本発明の他の実施の形態に係るデータの並列受信のためのストリーム制御方法を説明するためのフローチャートである。
【0132】
図9のストリーム制御方法のためのデータ送信装置とデータ受信装置は、図2の第1データ送信装置100と第1データ受信装置200であるか、又は図5の第2データ送信装置300と第2データ受信装置400でありうる。
【0133】
データ送信装置は、ファイル送信要請が受信されると、割り当てられた帯域幅をすべて使用することができるストリーム接続個数を決め、ストリーム接続個数分だけのソケットを生成する(S905)。
【0134】
データ送信装置は、一つ以上のソケットを利用してファイルの属性情報を含む基本制御情報をデータ受信装置に送信する(S910)。
【0135】
データ受信装置は、ステップS910により受信した基本制御情報を利用して、ファイル受信のための環境を設定する(S915)。一例として、データ受信装置は、基本制御情報のうち、最大接続個数とソケットバッファサイズとに基づいて、接続するストリーム個数を設定し、設定された個数に該当するソケットを生成できる。
【0136】
データ送信装置は、HDDのような格納媒体に記録されたファイルを分割ファイルの形態で読み込んで、バッファキューにファイルブロック単位で格納することができる(S920)。バッファキューは、図5の第1未使用バッファキュー341と第1バッファキュー343でありうる。
【0137】
データ送信装置は、ステップS920にてバッファキューに格納された少なくとも一つのファイルブロックを読み込んで、送信ソケットバッファに格納する(S925)。
【0138】
データ送信装置は、送信ソケットバッファに格納された少なくとも一つのファイルブロックをステップS905にて構成された複数のストリームを利用してデータ受信装置に並列送信できる(S930)。
【0139】
データ受信装置は、ステップS930により並列受信されるファイルブロックを受信ソケットバッファに格納する(S935)。
【0140】
データ受信装置は、受信ソケットバッファに格納された少なくとも一つのファイルブロックをバッファキューに一時格納する(S940)。バッファキューは、図5の第2未使用バッファキュー431と第2バッファキュー433でありうる。
【0141】
データ受信装置は、バッファキューに格納された少なくとも一つのファイルブロックをHDDのような格納媒体に格納する(S945)。
【0142】
データ受信装置は、データ送信装置からファイルブロックが並列受信されて格納媒体に格納される間に、すなわち、ステップS935〜S945が行われる間に、モニターリング周期又はモニターリング時点を確認する(S950)。
【0143】
モニターリング時点になると(S950−Y)、データ受信装置は、二重移動平均アルゴリズムを利用してネットワーク混雑率を算出できる(S955)。データ受信装置は、図7のステップS730〜S760において説明した方式又は図4Aと図4Bを参照して説明した方式を利用して、ネットワーク混雑率を算出できる。
【0144】
データ受信装置は、ステップS955にて算出されたネットワーク混雑率と少なくとも一つの臨界値とを比較して、現在ネットワーク状況に適したストリーム接続個数Sを計算できる(S960)。データ受信装置は、図8を参照して説明した方式を利用して、ストリーム接続個数Sを計算できる。
【0145】
データ受信装置は、ステップS960にて計算されたストリーム接続個数Sを利用して、実際に使用するストリームを調節できる(S965)。
【0146】
データ受信装置は、調節されたストリームの接続個数Stをデータ送信装置に通知する(S970)。
【0147】
データ送信装置は、通知されたストリーム接続個数Sに合せてターゲットデータの並列送信に使用するストリーム個数を調節する(S975)。
【0148】
データ送信装置は、ステップS975にて調節された接続個数Sのストリームを利用してファイルを並列送信する(S980)。
【0149】
本発明は、WANネットワーク区間において既存のFTPなどの送信方式でファイルを送信した時に使用可能なネットワーク帯域幅を効率的に使用できないことによる送信速度の低下をソフトウェア的なアルゴリズムである並列TCPでいくつかのチャネルを介してファイルを多重送信することで、帯域幅の使用効率を増加させ、結果的にファイルの送信速度を向上させることができる。
【0150】
また、本発明は、並列TCPを介したファイルの高速送信の際に、ネットワーク混雑に応じる送信速度の制御のために、二重移動平均基盤ストリーム接続術制御アルゴリズムを提案し、これを通じて既存のソフトウェア基盤の高速送信方式において問題となる帯域幅占有現象を解決できる。
【0151】
上述した実施の形態は、データを高速送信するためのあらゆる分野で活用が可能である。例えば、本実施の形態は、メディアファイル(動画、写真、音楽等)をやりとりしたウェブサイトやプログラム、容量の大きな3D映画ファイルを遠距離にある機器同士で送受信する状況でも用いられることができる。また、本実施の形態は、遠距離にあるデータセンター間のバックアップやファイル送信にも活用できる。
【0152】
また、本発明の実施の形態によれば、WAN(Wireless Area Network)区間で既存のFTP(File Transfer Protocol)のような送信方式でファイルを送信する場合、使用可能なネットワーク帯域幅を効率的に使用できないことによる送信速度の低下をソフトウェア的なアルゴリズムである並列TCPでいくつかのチャネルを介してファイルを多重送信することによって帯域幅の使用効率を増加させ、結果的にファイルの送信速度を向上させることができる。
【0153】
また、本発明は、並列TCPを介したファイルの高速送信の際にネットワーク混雑に応じる送信速度を制御するために、二重移動平均基盤ストリーム接続術制御アルゴリズムを提案し、これを通じて既存のソフトウェア基盤の高速送信方式において問題となった帯域幅占有現象を解決できる。
【0154】
以上、本発明は、限定された実施形態と図面により説明されたが、本発明は、上記の実施形態に限定されるものではなく、本発明が属する分野における通常の知識を有した者であればこのような記載から多様な修正及び変形が可能である。したがって、本発明の範囲は、説明された実施形態に限定されてはならず、後述する特許請求の範囲だけでなく、この特許請求の範囲と均等なものによって定められねばならない。
【符号の説明】
【0155】
100 第1データ送信装置
110 第1ソケット管理部
120 第1制御情報管理部
130 第1通信部
140 第1ディスク制御部
200 第1データ受信装置
210 第2通信部
220 第2制御情報管理部
230 第2ソケット管理部
240 第2ディスク制御部
250 送信速度算出部
260 メモリ
270 並列接続管理部
300 第2データ送信装置
310 第3ソケット管理部
320 第3制御情報管理部
330 第3ディスク制御部
340 第1バッファ管理部
400 第2データ受信装置
410 第4ソケット管理部
420 第4制御情報管理部
430 第2バッファ管理部
440 第4ディスク制御部
450 並列ストリーム管理部

【特許請求の範囲】
【請求項1】
複数の接続したストリームを利用して、データを並列受信するステップと、
前記複数のストリーム別に受信されるデータの送信速度の変化を利用して、ネットワーク混雑率を算出するステップと、
前記算出されたネットワーク混雑率に基づいて、前記複数のストリームの接続個数を調節するステップと、
前記調節された個数のストリームを利用して、前記データを並列受信するステップと
を含むことを特徴とするデータの並列受信のためのストリーム制御方法。
【請求項2】
前記ネットワーク混雑率を算出するステップは、
前記複数のストリーム別に受信されるデータの送信速度をモニターリング時点ごとに確認するステップと、
前記データの送信速度の減少したストリームの個数を単位ウィンドウ(複数のモニターリング時点からなる)ごとに確認するステップと、
前記単位ウィンドウごとに確認された前記データの送信速度の減少したストリームの個数を利用して、前記ネットワーク混雑率を算出するステップと
を含むことを特徴とする請求項1に記載のデータの並列受信のためのストリーム制御方法。
【請求項3】
前記データの送信速度の減少したストリームの個数を利用して、前記ネットワーク混雑率を算出するステップは、
前記各単位ウィンドウで利用された全体ストリーム個数のうち、以前に比べて前記データの送信速度の減少したストリームの個数を表す減少ストリーム比率を前記各単位ウィンドウ別に算出して、前記各単位ウィンドウのサブネットワーク混雑率として決めるステップと、
前記単位ウィンドウごとに算出された前記サブネットワーク混雑率の合計を前記各単位ウィンドウの個数で割り算をした結果を前記ネットワーク混雑率として決めるステップと
を含むことを特徴とする請求項2に記載のデータの並列受信のためのストリーム制御方法。
【請求項4】
前記ネットワーク混雑率を算出するステップは、
前記複数のストリームを利用して受信されるデータの送信速度を前記モニターリング時点ごとに算出して格納するステップをさらに含むことを特徴とする請求項2に記載のデータの並列受信のためのストリーム制御方法。
【請求項5】
前記ネットワーク混雑率を算出するステップは、
複数のモニターリング時点(前記複数のストリーム別に受信されるデータの送信速度を確認する周期)からなる単位ウィンドウごとに前記データの送信速度の変化を考慮してサブネットワーク混雑率を算出するステップと、
前記単位ウィンドウごとに算出されたサブネットワーク混雑率の平均を算出して、前記ネットワーク混雑率として決めるステップと
を含むことを特徴とする請求項1に記載のデータの並列受信のためのストリーム制御方法。
【請求項6】
前記複数のストリームの接続個数を調節するステップは、
前記算出されたネットワーク混雑率に基づいて前記複数のストリームの接続個数を指数的に増加させたり線形的に減少させたりすることを特徴とする請求項1に記載のデータの並列受信のためのストリーム制御方法。
【請求項7】
前記複数のストリームの接続個数を調節するステップは、
前記算出されたネットワーク混雑率と設定された少なくとも一つの臨界値とを比較するステップと、
前記少なくとも一つの臨界値との比較結果に応じて、前記ストリームの接続個数を増減させるステップと
を含むことを特徴とする請求項1に記載のデータの並列受信のためのストリーム制御方法。
【請求項8】
前記増減させるステップは、
前記算出されたネットワーク混雑率が第1臨界値以下であると、前記複数のストリームの接続個数を以前より指数的に増加させることを特徴とする請求項7に記載のデータの並列受信のためのストリーム制御方法。
【請求項9】
前記増減させるステップは、
前記算出されたネットワーク混雑率が前記第1臨界値より大きく第2臨界値以下であると、前記複数のストリームの接続個数を以前より1個減少させ、前記算出されたネットワーク混雑率が前記第2臨界値より大きく第3臨界値以下であると、前記複数のストリームの接続個数を以前よりm%(ここで、前記複数のストリームの接続個数×m%は、前記1より大きい)減少させることを特徴とする請求項8に記載のデータの並列受信のためのストリーム制御方法。
【請求項10】
前記データの並列受信のために許容される初期ストリームの接続個数は、使用可能な帯域幅を最大限使用するようにする最大接続個数として設定されることを特徴とする請求項1に記載のデータの並列受信のためのストリーム制御方法。
【請求項11】
複数のストリーム別に並列受信されるデータの送信速度の変化を利用してネットワーク混雑率を算出し、該算出されたネットワーク混雑率に基づいて前記複数のストリームの接続個数を調節する並列接続管理部と、
前記並列接続管理部により調節された接続個数のストリームを利用して前記データを並列受信する通信部と
を備えることを特徴とするデータの並列受信のための装置。
【請求項12】
前記並列接続管理部は、
前記複数のストリーム別に受信されるデータの送信速度をモニターリング時点ごとに確認し、前記確認結果、単位ウィンドウ(複数のモニターリング時点からなる)ごとに前記データの送信速度の減少したストリームの個数を利用して、前記ネットワーク混雑率を算出するネットワーク混雑率算出部を備えることを特徴とする請求項11に記載のデータの並列受信のための装置。
【請求項13】
前記ネットワーク混雑率算出部は、
前記各単位ウィンドウで利用された全体ストリーム個数のうち、以前に比べて前記データの送信速度の減少したストリームの個数を表す減少ストリーム比率を前記各単位ウィンドウ別に算出して前記各単位ウィンドウのサブネットワーク混雑率として決め、前記単位ウィンドウごとに算出された前記サブネットワーク混雑率の合計を前記各単位ウィンドウの個数で割り算をして前記ネットワーク混雑率として決めることを特徴とする請求項12に記載のデータの並列受信のための装置。
【請求項14】
前記複数のストリームを利用して受信されるデータの送信速度を前記モニターリング時点ごとに算出する送信速度算出部と、
前記モニターリング時点ごとに算出されたデータの送信速度を格納するメモリと
をさらに備えることを特徴とする請求項12に記載のデータの並列受信のための装置。
【請求項15】
前記ネットワーク混雑率算出部は、
複数のモニターリング時点(前記複数のストリーム別に受信されるデータの送信速度を確認する周期)からなる単位ウィンドウごとに前記データの送信速度の変化を考慮してサブネットワーク混雑率を算出し、前記単位ウィンドウごとに算出されたサブネットワーク混雑率の平均を算出して前記ネットワーク混雑率として決めることを特徴とする請求項11に記載のデータの並列受信のための装置。
【請求項16】
前記並列接続管理部は、
前記算出されたネットワーク混雑率に基づいて前記複数のストリームの接続個数を指数的に増加させたり線形的に減少させたりする接続個数計算部を備えることを特徴とする請求項11に記載のデータの並列受信のための装置。
【請求項17】
前記並列接続管理部は、
前記算出されたネットワーク混雑率と設定された少なくとも一つの臨界値とを比較し、前記少なくとも一つの臨界値との比較結果に応じて前記ストリームの接続個数を増減させる接続個数計算部を備えることを特徴とする請求項11に記載のデータの並列受信のための装置。
【請求項18】
前記接続個数計算部は、
前記算出されたネットワーク混雑率が第1臨界値以下であると、前記複数のストリームの接続個数を以前より指数的に増加させることを特徴とする請求項17に記載のデータの並列受信のための装置。
【請求項19】
前記接続個数計算部は、
前記算出されたネットワーク混雑率が前記第1臨界値より大きく第2臨界値以下であると、前記複数のストリームの接続個数を以前より1個減少させ、前記算出されたネットワーク混雑率が前記第2臨界値より大きく第3臨界値以下であると、前記複数のストリームの接続個数を以前よりm%(ここで、前記複数のストリームの接続個数×m%は、前記1より大きい)減少させることを特徴とする請求項17に記載のデータの並列受信のための装置。
【請求項20】
前記データの並列受信のために許容される初期ストリームの接続個数を前記通信部で使用可能な帯域幅を最大限使用するようにする最大接続個数として設定するソケット管理部をさらに備えることを特徴とする請求項11に記載のデータの並列受信のための装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−253765(P2012−253765A)
【公開日】平成24年12月20日(2012.12.20)
【国際特許分類】
【出願番号】特願2012−123469(P2012−123469)
【出願日】平成24年5月30日(2012.5.30)
【出願人】(510294195)サムソン エスディーエス カンパニー リミテッド (33)
【Fターム(参考)】