情報処理装置、情報処理方法及びプログラム
【課題】アプリケーション層で操作可能な範囲のみで、他ユーザの通信パフォーマンスを落とさずにマルチコネクション通信を用いて適切にデータを受信することを目的とする。
【解決手段】ネットワークを介して通信相手と複数のコネクションを確立してデータの受信を行う際に、複数のコネクションの各転送速度を測定する測定手段と測定手段で測定した転送速度に基づいて、複数のコネクションを閾値より速度の遅い低速グループと閾値より速度の速い高速グループとにグルーピングするグルーピング手段と、動的にコネクションを減少させる際に、グルーピング手段でグルーピングした低速グループの中で最も転送残量の多いコネクションを切断する切断手段と、を有することによって課題を解決する。
【解決手段】ネットワークを介して通信相手と複数のコネクションを確立してデータの受信を行う際に、複数のコネクションの各転送速度を測定する測定手段と測定手段で測定した転送速度に基づいて、複数のコネクションを閾値より速度の遅い低速グループと閾値より速度の速い高速グループとにグルーピングするグルーピング手段と、動的にコネクションを減少させる際に、グルーピング手段でグルーピングした低速グループの中で最も転送残量の多いコネクションを切断する切断手段と、を有することによって課題を解決する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
TCP(Transmission Control Protocol)を用いたデータの受信は遠距離高速回線において、有効に帯域を利用できないことが知られている。
この問題を解決するために、複数のTCPコネクションを用いる方法が挙げられる。
複数のTCPコネクションを用いる方法には、TCPコネクション数を固定にする手法と変動させる手法とがある。TCPコネクションを変動させる手法にはTCPパケットの再送回数を測定し受信側のウィンドウサイズを変える、又はTCPコネクションを動的に開閉する手法を取る方法がある(特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2000−156706号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、TCPパケットの再送回数は無線環境において、パケットの輻輳以外が起因となる可能性が高く、通信回線の輻輳を検出するパラメータとしては適切ではない。また、受信ウィンドウサイズは一般的にオペレーティングシステムが設定するものが多く、アプリケーション層から設定することは困難である。
しかし、単に帯域確保のためにTCPコネクションを増加させると、同通信路を利用している他ユーザの通信パフォーマンスを低下させる恐れがある。
【0005】
本発明はこのような問題点に鑑みなされたもので、アプリケーション層で操作可能な範囲のみで、他ユーザの通信パフォーマンスを落とさずにマルチコネクション通信を用いて適切にデータを受信することを目的とする。
【課題を解決するための手段】
【0006】
そこで、本発明の情報処理装置は、ネットワークを介して通信相手と複数のコネクションを確立してデータの受信を行う際に、前記複数のコネクションの各転送速度を測定する測定手段と前記測定手段で測定した転送速度に基づいて、前記複数のコネクションを閾値より速度の遅い低速グループと前記閾値より速度の速い高速グループとにグルーピングするグルーピング手段と、動的にコネクションを減少させる際に、前記グルーピング手段でグルーピングした低速グループの中で最も転送残量の多いコネクションを切断する切断手段と、を有する。
【発明の効果】
【0007】
本発明によれば、アプリケーション層で操作可能な範囲のみで、他ユーザの通信パフォーマンスを落とさずにマルチコネクション通信を用いて適切にデータを受信することができる。
【図面の簡単な説明】
【0008】
【図1】通信システムのシステム構成の一例を示す図である。
【図2】サーバコンピュータ102、クライアントコンピュータ103等の情報処理装置のハードウェア構成の一例を示す図である。
【図3】クライアントコンピュータ103のソフトウェア構成の一例を示す図である。
【図4】データ転送処理の一例を示すシーケンス図である。
【図5】コンテンツの取得から通信を終了するまでの情報処理の一例を示すフローチャートである。
【図6】マルチコネクション処理の一例を示すフローチャートである。
【図7】グルーピング処理の一例を示すフローチャートである。
【図8】コネクション数増減処理の一例を示すフローチャートである。
【図9】コネクションを分割する処理の一例を示すフローチャートである。
【図10A】分割ポイントの決め方を説明するための図(その1)である。
【図10B】分割ポイントの決め方を説明するための図(その2)である。
【図11】コネクション終了処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0009】
以下、本発明の実施形態について図面に基づいて説明する。
初めに、下記で示す実施形態で使用する用語の定義について説明する。
コネクションとは、TCP(Transmission Control Protocol)プロトコルにおいて接続が確立した状態の、論理的な1つの通信路を意味する。より具体的には、コネクションとは、接続側のIPアドレスとポート番号との組で表される。
コンテンツとは、例えば、文書データや画像データを組み合わせた電子データを指す。
RTTとは、Round Trip Timeの略であり、受信側と送信側との間の往復遅延時間を意味する。
【0010】
<実施形態1>
図1は、通信システムのシステム構成の一例を示す図である。
図1に示されるように、通信システムは、サーバコンピュータ102とクライアントコンピュータ103とがネットワーク100及びインターネット101を介して通信相手として接続されている。
ネットワーク100は、上述の各装置の間で情報をやり取りするための通信回線である。インターネット101は、ファイアウォールを越えて上述の各装置間で情報をやり取りするための通信回線である。インターネット101により、サーバコンピュータ102が属するネットワーク100とクライアントコンピュータ103が属するネットワーク100とは、ファイアウォールを越えて通信が可能である。ネットワーク100、インターネット101は、例えば、TCP/IPプロトコル等をサポートする通信回線網であり有線・無線は問わない。
図1において、サーバコンピュータ102は、1台のサーバとして示されているが複数台のサーバで構成されていてもよい。また、サーバコンピュータ102は、仮想PCとして構成されていてもよい。
【0011】
図2は、サーバコンピュータ102、クライアントコンピュータ103等の情報処理装置のハードウェア構成の一例を示す図である。
図2に示されるように情報処理装置は、ハードウェア構成として、CPU201、ROM202、RAM203、システムバス204、外部記憶装置205、ネットワークI/F制御部206を含む。CPU201、ROM202、RAM203、外部記憶装置205、ネットワークI/F制御部206は、システムバス204を介して接続される。
CPU201は、ROM202のプログラム用ROM或いは外部記憶装置205に記憶された文書処理プログラム等に基づいて図形、イメージ、文字、表(表計算等を含む)等が混在した処理を実行する。更に、CPU201は、システムバス204に接続される各デバイスを統括的に制御する。
なお、情報処理装置は、図2に示される以外に入出力装置等をハードウェア構成として備えていてもよい。
また、ROM202のプログラム用ROM或いは外部記憶装置205には、CPU201の制御プログラムであるオペレーションシステム等を記憶する。ROM202のデータ用ROM或いは外部記憶装置205は、各種データを記憶する。
RAM203は、CPU201の主メモリ、ワークエリア等として機能する。ネットワークI/F制御部206は、ネットワーク100とのデータの送受信を制御する。
クライアントコンピュータ103のCPU201が、ROM202又は外部記憶装置205に記憶されたプログラム等に基づいて処理を実行することによって、後述するソフトウェア構成、及びフローチャートの各ステップの処理が実現される。
【0012】
図3は、クライアントコンピュータ103のソフトウェア構成の一例を示す図である。
動的マルチコネクション制御システム300は、上位アプリケーション301、又はユーザから呼び出される。動的マルチコネクション制御システム300は、RTT測定処理部305、コネクション管理処理部306、結合処理部308によって構成される。また、コネクション管理処理部306は、グルーピング処理部307を持つ。
通信回路304は、ネットワーク100等である。HTTP(S)プロトコル処理部302は、HTTP(又はHTTPS)のプロトコルの処理を行う。下位プロトコル処理部303は、HTTP(又はHTTPS)より下位のプロトコルの処理を行う。
【0013】
次に、この動的マルチコネクション制御システム300を用いた、全体の処理の流れについて図4を用いて説明する。
まず、F401において、上位アプリケーション301は、動的マルチコネクション制御システム300に対してファイル受信要求のイベントを発生させる。
イベントを認知した動的マルチコネクション制御システム300は、ファイル受信処理をコネクション管理処理部306に委託する。
F402において、処理を委託されたコネクション管理処理部306は、サーバコンピュータ102に対してファイルサイズ要求を送信する。
ファイルサイズ要求を受信したサーバコンピュータ102は、F403において、指定されたファイルが送信可能であれば、指定されたファイルのサイズを返送し、なんらかの原因で送信ができなければエラー情報を返送する。
ファイルサイズを受信したコネクション管理処理部306は、F404において、ファイルサイズ要求時に現在時間と取得時の時間とから、RTT(往復遅延時間)を計算する。
【0014】
コネクション管理処理部306は、ファイルサイズとRTTとから初期コネクション数を決定し、それぞれのコネクションでF405において、データ取得要求を送信する。
F406において、サーバコンピュータ102は、データ転送を行う。このとき、コネクションの数は初期コネクション数のままではなく、帯域状況に応じてコネクション管理処理部306がコネクションの数を動的に増減させる。
データ転送終了後、F407において、コネクション管理処理部306は、各コネクションが受信したデータの結合を結合処理部308に依頼する。
結合処理部308は、データの結合後、依頼された上位アプリケーションに結合データを提供し、動的マルチコネクション制御システム300の処理は終了する。
【0015】
続いて、本実施形態における動的なマルチコネクション転送の手順について、図5から図11までの図等を参照しながら詳細に説明する。
図5では動的マルチコネクション制御システム300が、コンテンツの取得から通信を終了するまでを表している。始めに、上位アプリケーション、又はユーザは、動的マルチコネクション制御システム300に対して、コンテンツの転送要求を指示する。
S501において、動的マルチコネクション制御システム300は、転送指示されたコンテンツのURLに対してファイルサイズの取得を行う。
また、S502において、動的マルチコネクション制御システム300は、RTTの計測を行う。
ファイルサイズの取得要求を受け付けたサーバコンピュータ102は、指定されたURLのファイルサイズを返送する。
【0016】
S503において、コネクション管理処理部306は、取得したファイルサイズとRTTとから、コネクションを1本だけ用いる通常転送、又はコネクションを複数本用いるマルチコネクション転送処理の何れかの処理を行うか分岐する。
このとき、マルチコネクション転送処理が有効かどうか判断できれば、どのような方法でもよい。例えば、コネクション管理処理部306は、ファイルサイズが10MB以上、かつ、RTTが100ms以上の場合にマルチコネクション転送が有効になると判断する。また、例えば、コネクション管理処理部306は、ユーザインターフェース画面を介してユーザの条件指定によってマルチコネクション転送が有効になると判断してもよい。
【0017】
続いて、コネクションを1本だけ用いる、通常転送を行うと決定した場合、S504において、コネクション管理処理部306は、URLに示されるファイルの取得要求をサーバコンピュータ102に対して送信する。
サーバコンピュータ102は、ファイルの取得要求を受信後、取得要求のあったコネクションを通して、要求されたファイル本体の転送を開始する。
全てのデータを受信後、S506において、コネクション管理処理部306は、結合処理部308に受信データの結合を依頼する。なお、結合処理部308は、必要な場合のみ受信データを結合する。その後、動的マルチコネクション制御システム300は、上位アプリケーション301にデータを渡し、一連の処理を終了する。
一方で、マルチコネクション転送が有効であると決定した場合、S505において、コネクション管理処理部306は、マルチコネクション転送処理を行う。
全てのデータを受信後、同様に、S506において、コネクション管理処理部306は、結合処理部308に受信データの結合を依頼する。
【0018】
続いて、S505のマルチコネクション処理について図6を用いて詳細に説明を行う。S601において、コネクション管理処理部306は、ファイルサイズとRTTとから初期コネクション数を決定し、それぞれのコネクションに対して、受信すべきデータの範囲を与える。コネクション管理処理部306は、データの範囲を、均等に割り当ててもよいし、不均等に割り当ててもよい。また初期コネクション数は、ファイルサイズが大きく、RTTが長い程多くするべきである。例えば、コネクション管理処理部306は、次のような式で決定する。
N = |(a*FileSize + b*RTT)|
ここで|*|は四捨五入を表し、a,bは定数である。
【0019】
その後、S602において、コネクション管理処理部306は、用意したコネクションの転送を同時に開始する。
それぞれのコネクションはサーバコンピュータ102に対して、指定されたURLのファイルの指定された範囲の取得要求を送信する。
転送開始後、S604において、コネクション管理処理部306は、RTT測定処理部305に対してRTTの取得を行う。RTT測定処理部305は、定期的に指定されたURLに対して空の要求を送り、その返送までの時間からRTTを求める。また、コネクション管理処理部306は、RTT測定処理部305から取得したRTTの中で、最小のRTTを保持しておく。この最小RTTは今までに取得したRTTのうち、最も時間の短かったRTTとする。但し、回線が低負荷のときのRTTを推定できるのであればこの限りではない。
次にS605において、コネクション管理処理部306は、ファイルサイズとRTTとから増減コネクション数を決定する。ここではS601と同様に、ファイルサイズが大きく、RTTが長い程多くすべきである。
【0020】
S606のグルーピング処理について、図7を用いて詳細に説明を行う。グルーピング処理部307は、定期的に転送中のコネクションを高速グループか、又は低速グループかに振り分ける。S701の分岐は、グルーピング処理部307が全てのコネクションに対してグルーピング処理を行うためにある。
S702において、グルーピング処理部307は、転送速度が十分に遅いかどうかの判定を行う。例えば、グルーピング処理部307は、各コネクションの平均に対して、標準偏差を基にどの程度遅いかといった閾値を決め、転送速度がその閾値より遅いか否かを判定する。
グルーピング処理部307は、S703とS704とにおいて、各コネクションを高速グループか、低速グループかにグルーピングする。グルーピングの実体は適切に分類できるものであればどのようなデータ構造でもよいが、例えば、コネクションの番号をキーとし、真か偽をとる真理値を値としたマップであってもよい。全てのコネクションに対して、グルーピングが終わった後、全体としてのグルーピング処理S606は終了する。
【0021】
次に、コネクション管理処理部306は、S607のコネクション数増減処理において、定期的にコネクション数を増減する。
S607のコネクション数増減処理は、通信帯域の状況に応じてコネクション数を増減させる処理である。このコネクション数増減処理について、図8を用いて詳細に説明する。
S801において、コネクション管理処理部306は、通信負荷が少ないかどうかの判定を行う。この判定は、適切に通信負荷が低いと判定できるものであればよいが、例えば、
a * 最小 RTT > 現在のRTT
のような判定である。
なお、aは、通信負荷が低いとみなす誤差の割合である。
ここで、通信負荷が低いと判定した場合、S802において、コネクション管理処理部306は、増減フラグに真をセットする。
【0022】
一方で、S801で通信負荷は低くないと判定した場合、S803において、コネクション管理処理部306は、通信負荷が高いかどうかの判定を行う。S803の判定は、適切に通信負荷が高いと判定できるものであればよいが、例えば、
b*最小 RTT < 現在のRTT
のような判定である。なお、bは、通信負荷が高いとみなす、最小RTTを基にした割合である。ここで、通信負荷が高いと判定した場合、コネクション管理処理部306は、S804において、増減フラグに偽をセットする。
なお、S801とS803とにおいて判定結果が共に、真とならなかった場合には、現状維持と判断し、コネクションの増減処理は行われず、処理が戻される。
【0023】
コネクション管理処理部306は、コネクションを増減させる必要があると判断した場合、まずS805において、低速グループに少なくともコネクションが1本以上あることを確認する。
次にS806において、コネクション管理処理部306は、低速グループの中から最も転送の残量が多いコネクションを選択する。
S807において、コネクション管理処理部306は、選択したコネクションが接続時オーバヘッドを考慮しても分割転送が有効かどうかを判断する。このとき、接続時オーバヘッドを適切に考慮できる方法であればよいが、例えば、コネクション管理処理部306は、
S(RTT+Tprotcol)<B/2
を満たすとき分割転送は有効であるとする。なお、Bは、転送残量である。Sは、コネクションの転送速度である。Tprotcolは、プロトコルスタックの接続時オーバヘッドである。
【0024】
S808において増減フラグが真のとき、S809において、コネクション管理処理部306は、選択したコネクションを分割する。一方でS808において増減フラグが偽の場合は、S810において、コネクション管理処理部306は、回線の負荷を軽減するために、選択したコネクションを切断する。
【0025】
続いて、S809の選択したコネクションを分割する処理について図9を用いて詳細に説明する。S809は、通信帯域に余裕があると判断された場合に呼び出され、1本のコネクションを2本のコネクションに分割する。
まずS901において、コネクション管理処理部306は、選択したコネクションを分割するために、分割点として適切な位置を開始ポイントとして選択する。
次にS902において、コネクション管理処理部306は、選択したポイントから、コネクションに与えられた転送範囲の終わりまでを範囲とした、新たなコネクションの接続を開始する。S901では分割点を指定するが、分割ポイントはどのような方法で決めてもよいが、接続時オーバヘッドを考慮した手法であるとなおよい。
例えば図10Aのように、コネクションの残量の残り半分を指定する方法があるが、この手法の場合、接続時オーバヘッドのため、新しく作ったコネクションが転送完了するまでに時間遅延が発生する。そのため、図10Bのように接続時オーバヘッドを考慮した分割点を求める手法であってもよい。より具体的にはコネクション管理処理部306は、
A−B/2+S(RTT+Tprotcol)
のような式で分割点を求める。なお、Aは、コネクションの転送サイズである。Bは、転送残量である。Sは、コネクションの転送速度である。Tprotcolは、プロトコルスタックの接続時オーバヘッドである。F1101は、S809の処理の際に呼ばれるフローである。
【0026】
最後に、各々のコネクションが転送を完了した場合のS608の処理について図11を用いて詳細に説明する。S608では転送が終了したコネクションを検出し、コネクションの同時接続数を維持するために、コネクションの増加を試みる。
S1001において、コネクション管理処理部306は、転送が完了したコネクションを検出すると、まず停止中のコネクションがあるかを確認する。停止中のコネクションがある場合、コネクション管理処理部306は、そのコネクションを再開する。
もし停止コネクションが無かった場合、S1002において、コネクション管理処理部306は、低速グループに少なくとも1本以上のコネクションがあることを確認する。
1本以上ある場合、S1003において、コネクション管理処理部306は、低速グループのコネクションの中から最も転送残量の多いコネクションを選択する。
S1004において、コネクション管理処理部306は、最も残量の多いコネクションが、接続時オーバヘッドを考慮しても分割転送が有効であると判断した場合、選択したコネクションを分割する。
【0027】
もしS1002で低速グループのコネクションが無い、又はS1004で分割転送が有効ではないと判断した場合、S1005において、コネクション管理処理部306は、高速グループにコネクションがあるどうかを確認する。
S1005でコネクションがあると判断した場合、S1006において、コネクション管理処理部306は、高速グループの中から最も転送残量の多いコネクションを選択する。
S1007で選択したコネクションが接続時オーバヘッドを考慮しても分割転送が有効であると判断した場合、S1008において、コネクション管理処理部306は、選択したコネクションを分割する。
もしS1005において高速グループのコネクションが1本も無い、又はS1007において接続時オーバヘッドを考慮した場合に分割転送が有効ではないと判断した場合、コネクション管理処理部306は、何も行わない。
【0028】
以上、説明した方法により、他ユーザの通信パフォーマンスを落とさずに、効率のよい動的マルチTCPコネクション通信を実現することができる。
【0029】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
【0030】
以上、上述した各実施形態によれば、各コネクションの転送速度を基に、低速と高速との2つにグルーピングし、コネクション減少の際には、低速グループの中で最も転送残量の多いコネクションを切断する。このことで、他ユーザの通信パフォーマンスを上昇させ、転送の影響を少なくすることができる。
したがって、アプリケーション層で操作可能な範囲のみで、他ユーザの通信パフォーマンスを落とさずにマルチコネクション通信を用いて適切にデータを受信することができる。
【0031】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
TCP(Transmission Control Protocol)を用いたデータの受信は遠距離高速回線において、有効に帯域を利用できないことが知られている。
この問題を解決するために、複数のTCPコネクションを用いる方法が挙げられる。
複数のTCPコネクションを用いる方法には、TCPコネクション数を固定にする手法と変動させる手法とがある。TCPコネクションを変動させる手法にはTCPパケットの再送回数を測定し受信側のウィンドウサイズを変える、又はTCPコネクションを動的に開閉する手法を取る方法がある(特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2000−156706号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、TCPパケットの再送回数は無線環境において、パケットの輻輳以外が起因となる可能性が高く、通信回線の輻輳を検出するパラメータとしては適切ではない。また、受信ウィンドウサイズは一般的にオペレーティングシステムが設定するものが多く、アプリケーション層から設定することは困難である。
しかし、単に帯域確保のためにTCPコネクションを増加させると、同通信路を利用している他ユーザの通信パフォーマンスを低下させる恐れがある。
【0005】
本発明はこのような問題点に鑑みなされたもので、アプリケーション層で操作可能な範囲のみで、他ユーザの通信パフォーマンスを落とさずにマルチコネクション通信を用いて適切にデータを受信することを目的とする。
【課題を解決するための手段】
【0006】
そこで、本発明の情報処理装置は、ネットワークを介して通信相手と複数のコネクションを確立してデータの受信を行う際に、前記複数のコネクションの各転送速度を測定する測定手段と前記測定手段で測定した転送速度に基づいて、前記複数のコネクションを閾値より速度の遅い低速グループと前記閾値より速度の速い高速グループとにグルーピングするグルーピング手段と、動的にコネクションを減少させる際に、前記グルーピング手段でグルーピングした低速グループの中で最も転送残量の多いコネクションを切断する切断手段と、を有する。
【発明の効果】
【0007】
本発明によれば、アプリケーション層で操作可能な範囲のみで、他ユーザの通信パフォーマンスを落とさずにマルチコネクション通信を用いて適切にデータを受信することができる。
【図面の簡単な説明】
【0008】
【図1】通信システムのシステム構成の一例を示す図である。
【図2】サーバコンピュータ102、クライアントコンピュータ103等の情報処理装置のハードウェア構成の一例を示す図である。
【図3】クライアントコンピュータ103のソフトウェア構成の一例を示す図である。
【図4】データ転送処理の一例を示すシーケンス図である。
【図5】コンテンツの取得から通信を終了するまでの情報処理の一例を示すフローチャートである。
【図6】マルチコネクション処理の一例を示すフローチャートである。
【図7】グルーピング処理の一例を示すフローチャートである。
【図8】コネクション数増減処理の一例を示すフローチャートである。
【図9】コネクションを分割する処理の一例を示すフローチャートである。
【図10A】分割ポイントの決め方を説明するための図(その1)である。
【図10B】分割ポイントの決め方を説明するための図(その2)である。
【図11】コネクション終了処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0009】
以下、本発明の実施形態について図面に基づいて説明する。
初めに、下記で示す実施形態で使用する用語の定義について説明する。
コネクションとは、TCP(Transmission Control Protocol)プロトコルにおいて接続が確立した状態の、論理的な1つの通信路を意味する。より具体的には、コネクションとは、接続側のIPアドレスとポート番号との組で表される。
コンテンツとは、例えば、文書データや画像データを組み合わせた電子データを指す。
RTTとは、Round Trip Timeの略であり、受信側と送信側との間の往復遅延時間を意味する。
【0010】
<実施形態1>
図1は、通信システムのシステム構成の一例を示す図である。
図1に示されるように、通信システムは、サーバコンピュータ102とクライアントコンピュータ103とがネットワーク100及びインターネット101を介して通信相手として接続されている。
ネットワーク100は、上述の各装置の間で情報をやり取りするための通信回線である。インターネット101は、ファイアウォールを越えて上述の各装置間で情報をやり取りするための通信回線である。インターネット101により、サーバコンピュータ102が属するネットワーク100とクライアントコンピュータ103が属するネットワーク100とは、ファイアウォールを越えて通信が可能である。ネットワーク100、インターネット101は、例えば、TCP/IPプロトコル等をサポートする通信回線網であり有線・無線は問わない。
図1において、サーバコンピュータ102は、1台のサーバとして示されているが複数台のサーバで構成されていてもよい。また、サーバコンピュータ102は、仮想PCとして構成されていてもよい。
【0011】
図2は、サーバコンピュータ102、クライアントコンピュータ103等の情報処理装置のハードウェア構成の一例を示す図である。
図2に示されるように情報処理装置は、ハードウェア構成として、CPU201、ROM202、RAM203、システムバス204、外部記憶装置205、ネットワークI/F制御部206を含む。CPU201、ROM202、RAM203、外部記憶装置205、ネットワークI/F制御部206は、システムバス204を介して接続される。
CPU201は、ROM202のプログラム用ROM或いは外部記憶装置205に記憶された文書処理プログラム等に基づいて図形、イメージ、文字、表(表計算等を含む)等が混在した処理を実行する。更に、CPU201は、システムバス204に接続される各デバイスを統括的に制御する。
なお、情報処理装置は、図2に示される以外に入出力装置等をハードウェア構成として備えていてもよい。
また、ROM202のプログラム用ROM或いは外部記憶装置205には、CPU201の制御プログラムであるオペレーションシステム等を記憶する。ROM202のデータ用ROM或いは外部記憶装置205は、各種データを記憶する。
RAM203は、CPU201の主メモリ、ワークエリア等として機能する。ネットワークI/F制御部206は、ネットワーク100とのデータの送受信を制御する。
クライアントコンピュータ103のCPU201が、ROM202又は外部記憶装置205に記憶されたプログラム等に基づいて処理を実行することによって、後述するソフトウェア構成、及びフローチャートの各ステップの処理が実現される。
【0012】
図3は、クライアントコンピュータ103のソフトウェア構成の一例を示す図である。
動的マルチコネクション制御システム300は、上位アプリケーション301、又はユーザから呼び出される。動的マルチコネクション制御システム300は、RTT測定処理部305、コネクション管理処理部306、結合処理部308によって構成される。また、コネクション管理処理部306は、グルーピング処理部307を持つ。
通信回路304は、ネットワーク100等である。HTTP(S)プロトコル処理部302は、HTTP(又はHTTPS)のプロトコルの処理を行う。下位プロトコル処理部303は、HTTP(又はHTTPS)より下位のプロトコルの処理を行う。
【0013】
次に、この動的マルチコネクション制御システム300を用いた、全体の処理の流れについて図4を用いて説明する。
まず、F401において、上位アプリケーション301は、動的マルチコネクション制御システム300に対してファイル受信要求のイベントを発生させる。
イベントを認知した動的マルチコネクション制御システム300は、ファイル受信処理をコネクション管理処理部306に委託する。
F402において、処理を委託されたコネクション管理処理部306は、サーバコンピュータ102に対してファイルサイズ要求を送信する。
ファイルサイズ要求を受信したサーバコンピュータ102は、F403において、指定されたファイルが送信可能であれば、指定されたファイルのサイズを返送し、なんらかの原因で送信ができなければエラー情報を返送する。
ファイルサイズを受信したコネクション管理処理部306は、F404において、ファイルサイズ要求時に現在時間と取得時の時間とから、RTT(往復遅延時間)を計算する。
【0014】
コネクション管理処理部306は、ファイルサイズとRTTとから初期コネクション数を決定し、それぞれのコネクションでF405において、データ取得要求を送信する。
F406において、サーバコンピュータ102は、データ転送を行う。このとき、コネクションの数は初期コネクション数のままではなく、帯域状況に応じてコネクション管理処理部306がコネクションの数を動的に増減させる。
データ転送終了後、F407において、コネクション管理処理部306は、各コネクションが受信したデータの結合を結合処理部308に依頼する。
結合処理部308は、データの結合後、依頼された上位アプリケーションに結合データを提供し、動的マルチコネクション制御システム300の処理は終了する。
【0015】
続いて、本実施形態における動的なマルチコネクション転送の手順について、図5から図11までの図等を参照しながら詳細に説明する。
図5では動的マルチコネクション制御システム300が、コンテンツの取得から通信を終了するまでを表している。始めに、上位アプリケーション、又はユーザは、動的マルチコネクション制御システム300に対して、コンテンツの転送要求を指示する。
S501において、動的マルチコネクション制御システム300は、転送指示されたコンテンツのURLに対してファイルサイズの取得を行う。
また、S502において、動的マルチコネクション制御システム300は、RTTの計測を行う。
ファイルサイズの取得要求を受け付けたサーバコンピュータ102は、指定されたURLのファイルサイズを返送する。
【0016】
S503において、コネクション管理処理部306は、取得したファイルサイズとRTTとから、コネクションを1本だけ用いる通常転送、又はコネクションを複数本用いるマルチコネクション転送処理の何れかの処理を行うか分岐する。
このとき、マルチコネクション転送処理が有効かどうか判断できれば、どのような方法でもよい。例えば、コネクション管理処理部306は、ファイルサイズが10MB以上、かつ、RTTが100ms以上の場合にマルチコネクション転送が有効になると判断する。また、例えば、コネクション管理処理部306は、ユーザインターフェース画面を介してユーザの条件指定によってマルチコネクション転送が有効になると判断してもよい。
【0017】
続いて、コネクションを1本だけ用いる、通常転送を行うと決定した場合、S504において、コネクション管理処理部306は、URLに示されるファイルの取得要求をサーバコンピュータ102に対して送信する。
サーバコンピュータ102は、ファイルの取得要求を受信後、取得要求のあったコネクションを通して、要求されたファイル本体の転送を開始する。
全てのデータを受信後、S506において、コネクション管理処理部306は、結合処理部308に受信データの結合を依頼する。なお、結合処理部308は、必要な場合のみ受信データを結合する。その後、動的マルチコネクション制御システム300は、上位アプリケーション301にデータを渡し、一連の処理を終了する。
一方で、マルチコネクション転送が有効であると決定した場合、S505において、コネクション管理処理部306は、マルチコネクション転送処理を行う。
全てのデータを受信後、同様に、S506において、コネクション管理処理部306は、結合処理部308に受信データの結合を依頼する。
【0018】
続いて、S505のマルチコネクション処理について図6を用いて詳細に説明を行う。S601において、コネクション管理処理部306は、ファイルサイズとRTTとから初期コネクション数を決定し、それぞれのコネクションに対して、受信すべきデータの範囲を与える。コネクション管理処理部306は、データの範囲を、均等に割り当ててもよいし、不均等に割り当ててもよい。また初期コネクション数は、ファイルサイズが大きく、RTTが長い程多くするべきである。例えば、コネクション管理処理部306は、次のような式で決定する。
N = |(a*FileSize + b*RTT)|
ここで|*|は四捨五入を表し、a,bは定数である。
【0019】
その後、S602において、コネクション管理処理部306は、用意したコネクションの転送を同時に開始する。
それぞれのコネクションはサーバコンピュータ102に対して、指定されたURLのファイルの指定された範囲の取得要求を送信する。
転送開始後、S604において、コネクション管理処理部306は、RTT測定処理部305に対してRTTの取得を行う。RTT測定処理部305は、定期的に指定されたURLに対して空の要求を送り、その返送までの時間からRTTを求める。また、コネクション管理処理部306は、RTT測定処理部305から取得したRTTの中で、最小のRTTを保持しておく。この最小RTTは今までに取得したRTTのうち、最も時間の短かったRTTとする。但し、回線が低負荷のときのRTTを推定できるのであればこの限りではない。
次にS605において、コネクション管理処理部306は、ファイルサイズとRTTとから増減コネクション数を決定する。ここではS601と同様に、ファイルサイズが大きく、RTTが長い程多くすべきである。
【0020】
S606のグルーピング処理について、図7を用いて詳細に説明を行う。グルーピング処理部307は、定期的に転送中のコネクションを高速グループか、又は低速グループかに振り分ける。S701の分岐は、グルーピング処理部307が全てのコネクションに対してグルーピング処理を行うためにある。
S702において、グルーピング処理部307は、転送速度が十分に遅いかどうかの判定を行う。例えば、グルーピング処理部307は、各コネクションの平均に対して、標準偏差を基にどの程度遅いかといった閾値を決め、転送速度がその閾値より遅いか否かを判定する。
グルーピング処理部307は、S703とS704とにおいて、各コネクションを高速グループか、低速グループかにグルーピングする。グルーピングの実体は適切に分類できるものであればどのようなデータ構造でもよいが、例えば、コネクションの番号をキーとし、真か偽をとる真理値を値としたマップであってもよい。全てのコネクションに対して、グルーピングが終わった後、全体としてのグルーピング処理S606は終了する。
【0021】
次に、コネクション管理処理部306は、S607のコネクション数増減処理において、定期的にコネクション数を増減する。
S607のコネクション数増減処理は、通信帯域の状況に応じてコネクション数を増減させる処理である。このコネクション数増減処理について、図8を用いて詳細に説明する。
S801において、コネクション管理処理部306は、通信負荷が少ないかどうかの判定を行う。この判定は、適切に通信負荷が低いと判定できるものであればよいが、例えば、
a * 最小 RTT > 現在のRTT
のような判定である。
なお、aは、通信負荷が低いとみなす誤差の割合である。
ここで、通信負荷が低いと判定した場合、S802において、コネクション管理処理部306は、増減フラグに真をセットする。
【0022】
一方で、S801で通信負荷は低くないと判定した場合、S803において、コネクション管理処理部306は、通信負荷が高いかどうかの判定を行う。S803の判定は、適切に通信負荷が高いと判定できるものであればよいが、例えば、
b*最小 RTT < 現在のRTT
のような判定である。なお、bは、通信負荷が高いとみなす、最小RTTを基にした割合である。ここで、通信負荷が高いと判定した場合、コネクション管理処理部306は、S804において、増減フラグに偽をセットする。
なお、S801とS803とにおいて判定結果が共に、真とならなかった場合には、現状維持と判断し、コネクションの増減処理は行われず、処理が戻される。
【0023】
コネクション管理処理部306は、コネクションを増減させる必要があると判断した場合、まずS805において、低速グループに少なくともコネクションが1本以上あることを確認する。
次にS806において、コネクション管理処理部306は、低速グループの中から最も転送の残量が多いコネクションを選択する。
S807において、コネクション管理処理部306は、選択したコネクションが接続時オーバヘッドを考慮しても分割転送が有効かどうかを判断する。このとき、接続時オーバヘッドを適切に考慮できる方法であればよいが、例えば、コネクション管理処理部306は、
S(RTT+Tprotcol)<B/2
を満たすとき分割転送は有効であるとする。なお、Bは、転送残量である。Sは、コネクションの転送速度である。Tprotcolは、プロトコルスタックの接続時オーバヘッドである。
【0024】
S808において増減フラグが真のとき、S809において、コネクション管理処理部306は、選択したコネクションを分割する。一方でS808において増減フラグが偽の場合は、S810において、コネクション管理処理部306は、回線の負荷を軽減するために、選択したコネクションを切断する。
【0025】
続いて、S809の選択したコネクションを分割する処理について図9を用いて詳細に説明する。S809は、通信帯域に余裕があると判断された場合に呼び出され、1本のコネクションを2本のコネクションに分割する。
まずS901において、コネクション管理処理部306は、選択したコネクションを分割するために、分割点として適切な位置を開始ポイントとして選択する。
次にS902において、コネクション管理処理部306は、選択したポイントから、コネクションに与えられた転送範囲の終わりまでを範囲とした、新たなコネクションの接続を開始する。S901では分割点を指定するが、分割ポイントはどのような方法で決めてもよいが、接続時オーバヘッドを考慮した手法であるとなおよい。
例えば図10Aのように、コネクションの残量の残り半分を指定する方法があるが、この手法の場合、接続時オーバヘッドのため、新しく作ったコネクションが転送完了するまでに時間遅延が発生する。そのため、図10Bのように接続時オーバヘッドを考慮した分割点を求める手法であってもよい。より具体的にはコネクション管理処理部306は、
A−B/2+S(RTT+Tprotcol)
のような式で分割点を求める。なお、Aは、コネクションの転送サイズである。Bは、転送残量である。Sは、コネクションの転送速度である。Tprotcolは、プロトコルスタックの接続時オーバヘッドである。F1101は、S809の処理の際に呼ばれるフローである。
【0026】
最後に、各々のコネクションが転送を完了した場合のS608の処理について図11を用いて詳細に説明する。S608では転送が終了したコネクションを検出し、コネクションの同時接続数を維持するために、コネクションの増加を試みる。
S1001において、コネクション管理処理部306は、転送が完了したコネクションを検出すると、まず停止中のコネクションがあるかを確認する。停止中のコネクションがある場合、コネクション管理処理部306は、そのコネクションを再開する。
もし停止コネクションが無かった場合、S1002において、コネクション管理処理部306は、低速グループに少なくとも1本以上のコネクションがあることを確認する。
1本以上ある場合、S1003において、コネクション管理処理部306は、低速グループのコネクションの中から最も転送残量の多いコネクションを選択する。
S1004において、コネクション管理処理部306は、最も残量の多いコネクションが、接続時オーバヘッドを考慮しても分割転送が有効であると判断した場合、選択したコネクションを分割する。
【0027】
もしS1002で低速グループのコネクションが無い、又はS1004で分割転送が有効ではないと判断した場合、S1005において、コネクション管理処理部306は、高速グループにコネクションがあるどうかを確認する。
S1005でコネクションがあると判断した場合、S1006において、コネクション管理処理部306は、高速グループの中から最も転送残量の多いコネクションを選択する。
S1007で選択したコネクションが接続時オーバヘッドを考慮しても分割転送が有効であると判断した場合、S1008において、コネクション管理処理部306は、選択したコネクションを分割する。
もしS1005において高速グループのコネクションが1本も無い、又はS1007において接続時オーバヘッドを考慮した場合に分割転送が有効ではないと判断した場合、コネクション管理処理部306は、何も行わない。
【0028】
以上、説明した方法により、他ユーザの通信パフォーマンスを落とさずに、効率のよい動的マルチTCPコネクション通信を実現することができる。
【0029】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
【0030】
以上、上述した各実施形態によれば、各コネクションの転送速度を基に、低速と高速との2つにグルーピングし、コネクション減少の際には、低速グループの中で最も転送残量の多いコネクションを切断する。このことで、他ユーザの通信パフォーマンスを上昇させ、転送の影響を少なくすることができる。
したがって、アプリケーション層で操作可能な範囲のみで、他ユーザの通信パフォーマンスを落とさずにマルチコネクション通信を用いて適切にデータを受信することができる。
【0031】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【特許請求の範囲】
【請求項1】
ネットワークを介して通信相手と複数のコネクションを確立してデータの受信を行う際に、前記複数のコネクションの各転送速度を測定する測定手段と
前記測定手段で測定した転送速度に基づいて、前記複数のコネクションを閾値より速度の遅い低速グループと前記閾値より速度の速い高速グループとにグルーピングするグルーピング手段と、
動的にコネクションを減少させる際に、前記グルーピング手段でグルーピングした低速グループの中で最も転送残量の多いコネクションを切断する切断手段と、
を有する情報処理装置。
【請求項2】
動的にコネクションを増加させる際に、前記グルーピング手段でグルーピングした低速グループの中で最も転送残量の多いコネクションを分割する分割手段を更に有する請求項1記載の情報処理装置。
【請求項3】
前記コネクションは、TCP(Transmission Control Protocol)コネクションである請求項1又は2記載の情報処理装置。
【請求項4】
情報処理装置が実行する情報処理方法であって、
ネットワークを介して通信相手と複数のコネクションを確立してデータの受信を行う際に、前記複数のコネクションの各転送速度を測定する測定ステップと
前記測定ステップで測定した転送速度に基づいて、前記複数のコネクションを閾値より速度の遅い低速グループと前記閾値より速度の速い高速グループとにグルーピングするグルーピングステップと、
動的にコネクションを減少させる際に、前記グルーピングステップでグルーピングした低速グループの中で最も転送残量の多いコネクションを切断する切断ステップと、
を含む情報処理方法。
【請求項5】
コンピュータに、
ネットワークを介して通信相手と複数のコネクションを確立してデータの受信を行う際に、前記複数のコネクションの各転送速度を測定する測定ステップと
前記測定ステップで測定した転送速度に基づいて、前記複数のコネクションを閾値より速度の遅い低速グループと前記閾値より速度の速い高速グループとにグルーピングするグルーピングステップと、
動的にコネクションを減少させる際に、前記グルーピングステップでグルーピングした低速グループの中で最も転送残量の多いコネクションを切断する切断ステップと、
を実行させるためのプログラム。
【請求項1】
ネットワークを介して通信相手と複数のコネクションを確立してデータの受信を行う際に、前記複数のコネクションの各転送速度を測定する測定手段と
前記測定手段で測定した転送速度に基づいて、前記複数のコネクションを閾値より速度の遅い低速グループと前記閾値より速度の速い高速グループとにグルーピングするグルーピング手段と、
動的にコネクションを減少させる際に、前記グルーピング手段でグルーピングした低速グループの中で最も転送残量の多いコネクションを切断する切断手段と、
を有する情報処理装置。
【請求項2】
動的にコネクションを増加させる際に、前記グルーピング手段でグルーピングした低速グループの中で最も転送残量の多いコネクションを分割する分割手段を更に有する請求項1記載の情報処理装置。
【請求項3】
前記コネクションは、TCP(Transmission Control Protocol)コネクションである請求項1又は2記載の情報処理装置。
【請求項4】
情報処理装置が実行する情報処理方法であって、
ネットワークを介して通信相手と複数のコネクションを確立してデータの受信を行う際に、前記複数のコネクションの各転送速度を測定する測定ステップと
前記測定ステップで測定した転送速度に基づいて、前記複数のコネクションを閾値より速度の遅い低速グループと前記閾値より速度の速い高速グループとにグルーピングするグルーピングステップと、
動的にコネクションを減少させる際に、前記グルーピングステップでグルーピングした低速グループの中で最も転送残量の多いコネクションを切断する切断ステップと、
を含む情報処理方法。
【請求項5】
コンピュータに、
ネットワークを介して通信相手と複数のコネクションを確立してデータの受信を行う際に、前記複数のコネクションの各転送速度を測定する測定ステップと
前記測定ステップで測定した転送速度に基づいて、前記複数のコネクションを閾値より速度の遅い低速グループと前記閾値より速度の速い高速グループとにグルーピングするグルーピングステップと、
動的にコネクションを減少させる際に、前記グルーピングステップでグルーピングした低速グループの中で最も転送残量の多いコネクションを切断する切断ステップと、
を実行させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10A】
【図10B】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10A】
【図10B】
【図11】
【公開番号】特開2013−66059(P2013−66059A)
【公開日】平成25年4月11日(2013.4.11)
【国際特許分類】
【出願番号】特願2011−203505(P2011−203505)
【出願日】平成23年9月16日(2011.9.16)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成25年4月11日(2013.4.11)
【国際特許分類】
【出願日】平成23年9月16日(2011.9.16)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]