(57)【要約】【課題】サーバ及びクライアントが複数種類の伝送方式に対応する場合において、データ伝送の遅延を低減する。【解決手段】  本発明の一観点に係る通信装置は、第１の通信装置と第1の伝送方式で通信を行う第１の通信部と、第2の伝送方式で通信を行う第２の通信部と、第１の通信部及び第２の通信部が通信に用いるストリームを確立するための処理を行うタイミングが重複する様に、ストリームを確立するための処理を行うように指示を出す指示部と、送信データを、通信に用いるストリームの確立を最初に完了した通信部に分配するとともに、第１の通信部が最初に単一のストリームを確立するための処理を完了した場合に、第１の通信部に送信データを分配するとともに、第２の通信部が、複数のストリームの確立するための処理を完了後、送信データの分配先を切り替える分配部とを備える。【選択図】図１
2014049995.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続された第１の通信装置との間で通信を行う装置であって、
第1の接続を確立するための処理を行うとともに、前記第１の通信装置と前記第1の接続を確立した場合に、第1の伝送方式で通信を行う第１の通信部と、
第2の接続を確立するための処理を行うとともに、前記第１の通信装置と前記第2の接続を確立した場合に、第２の伝送方式で通信を行う第２の通信部と、
前記第１の通信部が前記第1の接続を確立するための処理を行うタイミングと、前記第２の通信部が前記第2の接続を確立するための処理を行うタイミングとが重複する様に、前記第１の通信部に対して前記第1の接続を確立するための処理を行うように第１の指示を出すとともに、前記第２の通信部に対して前記第2の接続を確立するための処理を行うように第２の指示を出す指示部と、
分配部と、を備え、
前記第１の通信部は、前記第1の接続を確立するための処理を完了した場合に、前記分配部に第１メッセージを通知し、
前記第２の通信部は、前記第2の接続を確立するための処理を完了した場合に、前記分配部に第２メッセージを通知し、
前記分配部は、前記送信データを、通信に用いるすべての接続の確立を最初に完了した前記第１の通信部又は前記第２の通信部のいずれか一方に分配するとともに、前記第１の通信部が最初に前記第1の接続を確立するための処理を完了した場合に、前記第１の通信部に前記送信データを分配するとともに、前記第２の通信部が前記第2の接続の確立するための処理を完了後、前記送信データの分配先を前記第１の通信部から前記第２の通信部に切り替えることを特徴とする通信装置。
【請求項２】
前記第1の接続は単一のストリームから構成され、前記第2の接続は複数のストリームから構成され、前記第1の伝送方式は単一のストリームを用いて通信を行う伝送方式であり、前記第2の伝送方式は複数のストリームを用いて通信を行う伝送方式であることを特徴とする請求項１記載の通信装置。
【請求項３】
ネットワークを介して接続された第１の通信装置と第２の通信装置とを備えるシステムであって、
前記第１の通信装置は、
第１の接続を確立するための処理を行うとともに、前記第１の通信装置と前記第１の接続を確立した場合に、第1の伝送方式で通信を行う第１の通信部と、
第２の接続を確立するための処理を行うとともに、前記第１の通信装置と前記第２の接続を確立した場合に、第2の伝送方式で通信を行う第２の通信部と、
前記第１の通信部が前記第１の接続を確立するための処理を行うタイミングと、前記第２の通信部が前記第２の接続を確立するための処理を行うタイミングとが重複する様に、前記第１の通信部に対して前記第１の接続を確立するための処理を行うように第１の指示を出すとともに、前記第２の通信部に対して前記第２の接続を確立するための処理を行うように第２の指示を出す指示部と、
分配部と、を備え、
前記第１の通信部は、前記第１の接続を確立するための処理を完了した場合に、前記分配部に第１メッセージを通知し、
前記第２の通信部は、前記第２の接続を確立するための処理を完了した場合に、前記分配部に第２メッセージを通知し、
前記分配部は、前記送信データを、通信に用いるすべての接続の確立を最初に完了した前記第１の通信部又は前記第２の通信部のいずれか一方に分配するとともに、前記第１の通信部が最初に前記第１の接続を確立するための処理を完了した場合に、前記第１の通信部に前記送信データを分配するとともに、前記第２の通信部が前記第２の接続の確立するための処理を完了後、前記送信データの分配先を前記第１の通信部から前記第２の通信部に切り替え、
前記第２の通信装置は、
第１の接続を確立するための処理を行うとともに、前記第１の通信装置の前記第１の通信部と、前記第１の接続を確立した場合に、前記第1の伝送方式で通信を行う第３の通信部と、
第２の接続を確立するための処理を行うとともに、前記第１の通信装置の前記第２の通信部と前記第２の接続を確立した場合に、第2の通信方式で通信を行う第４の通信部と、
前記第３の通信部及び前記第２の通信部が通信により受信した前記送信データを、前記通信部及び前記第２の通信部から受け取るとともに、受け取った前記送信データを出力する収集部とを備え、
前記収集部は、前記分配部が、前記送信データの分配先を、前記第１の通信部から前記第２の通信部に切り替えた場合に、前記第３の通信部から受け取ったすべての前記送信データを出力後、前記第４の通信部から受け取った前記送信データの出力を開始することを特徴とする
システム。
【請求項４】
前記第１の通信装置は、前記送信データの分配先を、前記第１の通信部から前記第２の通信部に切り替えるまでに、前記分配部が、前記第１の通信部に分配した前記送信データのデータサイズを、前記第２の通信装置に通知し、
前記収集部は、通知された前記データサイズの前記送信データを出力した場合に、前記第３の通信部から受け取った全ての前記送信データを出力したと判断することを特徴とする請求項３記載のシステム。
【請求項５】
前記第1の接続は単一のストリームから構成され、前記第2の接続は複数のストリームから構成され、前記第1の伝送方式は単一のストリームを用いて通信を行う伝送方式であり、前記第2の伝送方式は複数のストリームを用いて通信を行う伝送方式であることを特徴とする請求項３記載のシステム。
【請求項６】
ネットワークを介して接続された第１の通信装置と通信を行う装置であって、
複数の送信部と、
第１のデータを分割することにより複数の第１分割データを生成するとともに、前記複数の第１分割データを、前記複数の送信部に分配する分配部と、
前記複数の送信部が、任意の期間の中で、前記第１のデータを前記第１の通信装置に送信するために要した送信処理時間の割合である送信処理時間率を算出する算出部と、
前記送信処理時間率に基づき、前記分配部が、第２のデータを分割して生成する複数の第２の分割データを、何個の前記送信部に分配するかを決定する決定部とを備え、
前記分配部は、前記複数の第２の分割データを、前記決定部が決定した数の前記送信部に分配することを特徴とする
通信装置。
【請求項７】
前記決定部は、前記送信処理時間率が所定の閾値より小さい場合に、前記分配部が第１分割データを分配した数と同じ個数の送信部に、前記第２の分割データを分配することを決定することを特徴とする請求項６記載の通信装置。
【請求項８】
前記決定部は、前記送信処理時間率が所定の閾値より大きい場合に、前記分割部が第１分割データを分割した数より大きい個数の送信部に、前記第２の分割データを分配することを決定することを特徴とする請求項７記載の通信装置。
【請求項９】
複数の前記送信部が一定時間に送信したデータの量である送信レートを測定する送信レート測定部を更に備え、
前記決定部は、前記送信処理時間率及び前記送信レートに基づき、前記第２の分割データを、何個の送信部に分配するかを決定することを特徴とする請求項８記載の通信装置。
【請求項１０】
過去に、前記分配部が、データを分配した前記送信部の個数と、当該個数の送信部が一定時間に送信したデータの量である送信レートとの対応関係を記憶する記憶部を更に備え、
前記決定部は、前記送信処理時間率が所定の閾値より大きい場合に、前記分配部が前記第１分割データを分配した送信部の個数と、前記測定部が測定した第１データを送信しているときの複数の前記送信部の送信レートとの対応関係に基づき、前記記憶部が記憶する前記対応関係を更新するとともに、更新後の対応関係に基づき、前記分配部が、前記第２の分割データを、何個の送信部に分配するかを決定することを特徴とする請求項９記載の通信装置。
【請求項１１】
前記決定部は、更新後の対応関係において、前記分配部が、データを分配した前記送信部の個数の増加に対する前記送信レートの増加の大きさに基づいて、前記分配部が、前記第２の分割データを、何個の送信部に分配するかを決定することを特徴とする請求項１０記載の通信装置。
【請求項１２】
前記決定部は、更新後の対応関係において、前記記憶部が記憶するすべての対応関係が、データを分配した前記送信部の個数の増加に対する前記送信レートの増加の大きさが所定値より大きい場合に、前記分配部が、前記第２の分割データを、分配する送信部の個数を、前記記憶部に記憶している個数より大きな数とする請求項１１記載の通信装置。
【請求項１３】
前記決定部は、更新後の対応関係において、前記分配部が、データを分配した前記送信部の個数の増加に対する前記送信レートの増加の大きさが所定値未満となる対応関係がある場合に、前記所定値未満となる対応関係の前後の個数に基づいて、前記分配部が、前記第２の分割データを、何個の送信部に分配するかを決定することを特徴とする請求項１２記載の通信装置。
【請求項１４】
前記決定部は、更新後の対応関係において、前記分配部が、データを分配した前記送信部の個数の増加に対して前記送信レートが変化しない対応関係がある場合に、前記変化しない対応関係の前後の個数に基づいて、前記分配部が、前記第２の分割データを、何個の送信部に分配するかを決定することを特徴とする請求項１３記載の通信装置。
【請求項１５】
前記決定部は、更新後の対応関係において、前記分配部が、データを分配した前記送信部の個数の増加に対して前記送信レートが減少する対応関係がある場合に、前記減少する対応関係の前後の個数に基づいて、前記分配部が、前記第２の分割データを、何個の送信部に分配するかを決定することを特徴とする請求項１４記載の通信装置。
【請求項１６】
更に、前記複数の送信部が一定時間に送信した前記第１のデータの量を示す送信レートを測定する送信レート測定部を備え、
前記決定部は、前記送信レートを前記送信処理時間率で割った値に基づき、前記第２の分割データを、何個の送信部に分配するかを決定することを特徴とする請求項６記載の通信装置。
【請求項１７】
過去に、前記分配部が、データを分配した前記送信部の個数と、前記個数の送信部を用いてデータを送信したときの送信レートを送信処理時間率で割った値との対応関係記憶する記憶部を更に備え、
前記決定部は、前記分配部が前記第１データを分配した送信部の個数と、前記測定部が測定した第１データを送信している時の複数の前記送信部の送信レートを送信処理時間で割った値との対応関係に基づき、前記記憶部が記憶する対応関係を更新するとともに、更新後の対応関係に基づき、前記分配部が、前記第２の分割データを、何個の送信部に分配するかを決定することを特徴とする請求項１６記載の通信装置。
【請求項１８】
前記決定部は、更新後の対応関係において、前記分配部が、データを分配した前記送信部の個数の増加に対する前記送信レートを送信処理時間率で割った値との対応関係に基づき、前記分配部が、前記第２の分割データを、何個の送信部に分配するかを決定することを特徴とする請求項１７記載の通信装置。
【請求項１９】
前記決定部は、更新後の対応関係において、前記分配部が、データを分配した前記送信部の個数の増加に対する前記送信レートを送信処理時間率で割った値の増加の大きさが所定値より大きい場合に、前記分配部が、前記第２の分割データを、分配する送信部の個数を、前記記憶部に記憶している個数より大きな数とする請求項１８記載の通信装置。
【請求項２０】
前記決定部は、更新後の対応関係において、前記分配部が、データを分配した前記送信部の個数の増加に対する前記送信レートを送信処理時間率で割った値の増加の大きさが所定値未満となる対応関係がある場合に、前記所定値未満となる対応関係の前後の個数に基づいて、前記分配部が、前記第２の分割データを、何個の送信部に分配するかを決定することを特徴とする請求項１９記載の通信装置。
【請求項２１】
前記決定部は、更新後の対応関係において、前記分配部が、データを分配した前記送信部の個数の増加に対して前記送信レートを送信処理時間率で割った値が変化しない対応関係がある場合に、前記変化しない対応関係の前後の個数に基づいて、前記分配部が、前記第２の分割データを、何個の送信部に分配するかを決定することを特徴とする請求項１９記載の通信装置。
【請求項２２】
前記決定部は、更新後の対応関係において、前記分配部が、データを分配した前記送信部の個数の増加に対する前記送信レートを送信処理時間率で割った値が減少する対応関係がある場合に、前記減少する対応関係の前後の個数に基づいて、前記分配部が、前記第２の分割データを、何個の送信部に分配するかを決定することを特徴とする請求項１９記載の通信装置。
【請求項２３】
ネットワークを介して接続された第１の通信装置との間で通信を行う装置を制御するプログラムであって、
第１の接続を確立するための処理を行うとともに、前記第１の通信装置と前記第１の接続を確立した場合に、第1の伝送方式で通信を行う第１の通信機能と、
第２の接続を確立するための処理を行うとともに、前記第１の通信装置と前記第２の接続を確立した場合に、第2の伝送方式で通信を行う第２の通信機能と、
前記第１の通信機能が前記第１の接続を確立するための処理を行うタイミングと、前記第２の通信機能が前記第２の接続を確立するための処理を行うタイミングとが重複する様に、前記第１の通信機能に対して前記第１の接続を確立するための処理を行うように第１の指示を出すとともに、前記第２の通信機能に対して前記第２の接続を確立するための処理を行うように第２の指示を出す指示機能と、
分配機能と、を備え、
前記第１の通信機能は、前記第１の接続を確立するための処理を完了した場合に、前記分配機能に第１メッセージを通知し、
前記第２の通信機能は、前記第２の接続を確立するための処理を完了した場合に、前記分配機能に第２メッセージを通知し、
前記分配機能は、前記送信データを、通信に用いるすべての接続の確立を最初に完了した前記第１の通信機能又は前記第２の通信機能のいずれか一方に分配するとともに、前記第１の通信機能が最初に前記第１の接続を確立するための処理を完了した場合に、前記第１の通信機能に前記送信データを分配するとともに、前記第２の通信機能が前記第２の接続の確立するための処理を完了後、前記送信データの分配先を前記第１の通信機能から前記第２の通信機能に切り替えることを特徴とする
プログラム。
【請求項２４】
ネットワークを介して接続された第１の通信装置と通信を行う装置を制御するプログラムであって、
複数の送信機能と、
第１のデータを分割することにより複数の第１分割データを生成するとともに、前記複数の第１分割データを、前記複数の送信機能に分配する分配機能と、
前記複数の送信機能が、第１期間の中で、前記第１のデータを前記第１の通信装置に送信するために要した送信処理時間の割合である送信処理時間率を算出する算出機能と、
前記送信処理時間率に基づき、前記分配機能が、第２のデータを分割して生成する複数の第２の分割データを、前記複数の送信機能のうち、何個の送信機能に分配するかを決定する決定機能とを備え、
前記分配機能は、前記複数の第２の分割データを、前記決定機能が決定した数の送信機能に分配することを特徴とする
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、通信装置、システム及びプログラムに関する。
【背景技術】
【０００２】
従来から、ネットワークを介して接続されたサーバ装置とクライアント装置とを含むシステムにおいて、サーバ装置とクライアント装置との間のデータ伝送に用いる伝送プロトコルにＴＣＰ／ＩＰを利用する場合が多い。
【０００３】
伝送プロトコルにＴＣＰ／ＩＰを用いてデータを送信する場合、サーバは、ＴＣＰ層において、ＴＣＰストリームを用いてデータの伝送レート（通信帯域幅）の制御を行いながら、ＩＰ層にデータを渡し、ＩＰ層がネットワークにデータを送出する。
【０００４】
従来、サーバとクライアント装置との間でＴＣＰストリームは単数本確立して、データ伝送を行っていた。しかしながら、近年、サーバとクライアント装置との間でＴＣＰストリームを複数本確立し、複数のデータに分割して、分割したデータを並列的に伝送する手法が用いられるようになってきた。複数のＴＣＰストリームを用いると、データの伝送レートを向上することができる。
【０００５】
データの送受信を正しく行うためには、サーバとクライアントとは、同一の伝送方式に対応している必要がある。例えば、前出の複数のＴＣＰストリームを用いる伝送方式を例にすると、通信の相手が単一のＴＣＰストリームを用いる伝送方式にしか対応していない場合、複数のＴＣＰストリームによる接続確立を行っても失敗するため、データの送受信を開始することができない。
【０００６】
そこで、サーバとクライアント装置とが対応する伝送方式をネゴシエーションする必要が生じる。しかしながらネゴシエーションを行うためには、双方の間で対応する伝送方式の種類を交換する等の手順が必要であり、ネゴシエーションが完了するまで時間を要する。このため、データの送信の必要が生じてから実際に送出が行えるようになるまで遅延が発生する点が問題である。また、そのようなネゴシエーションの機構を持たないサーバまたはクライアント装置が既に広く普及しているのであれば、ネゴシエーションの機能を後からそれらの装置に追加することは困難である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００３−８６８２号公報
【特許文献２】米国公開ＵＳ２００２／００９９８４４
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の一側面は、サーバ装置及びクライアント装置が複数種類の伝送方式に対応する場合に、ネゴシエーションによる、データ伝送の遅延を低減することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一側面に係る通信装置は、
ネットワークを介して接続された第１の通信装置との間で通信を行う装置であって、第1の接続を確立するための処理を行うとともに、前記第１の通信装置と前記第1の接続を確立した場合に、第1の伝送方式で通信を行う第１の通信部と、第2の接続を確立するための処理を行うとともに、前記第１の通信装置と前記第2の接続を確立した場合に、第２の伝送方式で通信を行う第２の通信部と、前記第１の通信部が前記第1の接続を確立するための処理を行うタイミングと、前記第２の通信部が前記第2の接続を確立するための処理を行うタイミングとが重複する様に、前記第１の通信部に対して前記第1の接続を確立するための処理を行うように第１の指示を出すとともに、前記第２の通信部に対して前記第2の接続を確立するための処理を行うように第２の指示を出す指示部と、分配部と、を備え、前記第１の通信部は、前記第1の接続を確立するための処理を完了した場合に、前記分配部に第１メッセージを通知し、前記第２の通信部は、前記第2の接続を確立するための処理を完了した場合に、前記分配部に第２メッセージを通知し、前記分配部は、前記送信データを、通信に用いるすべての接続の確立を最初に完了した前記第１の通信部又は前記第２の通信部のいずれか一方に分配するとともに、前記第１の通信部が最初に前記第1の接続を確立するための処理を完了した場合に、前記第１の通信部に前記送信データを分配するとともに、前記第２の通信部が前記第2の接続の確立するための処理を完了後、前記送信データの分配先を前記第１の通信部から前記第２の通信部に切り替えることを特徴とする。
【図面の簡単な説明】
【００１０】
【図１】本発明の第1の実施形態にかかるシステムを示すブロック図である。
【図２】データが分割され分割順序を表すヘッダが付与される様子を示す図。
【図３】第１の実施形態に係るシステムの処理の流れの一例を示すシーケンス図。
【図４】本発明の第１の実施形態の変形例にかかるシステムを示すブロック図である。
【図５】本発明の第２の実施形態にかかるシステムを示すブロック図である。
【図６】画面更新の一例を示す図である。
【図７】領域情報を説明するための図である。
【図８】分割情報の一例を示す図である。
【図９】図５のサーバ装置３２の第５分配部３２０２の処理を示すフローチャートである。
【図１０】ストリーム数の決定処理の第１の例のフローチャートを示す図である。
【図１１】図５のサーバ装置３２のストリーム数決定部３２０６の記憶部３２０６１が保持するテーブルの第１の例を示す図である。
【図１２】ストリーム数の決定処理の第２の例のフローチャートを示す図である。
【図１３】図５のサーバ装置３２のストリーム数決定部３２０６の記憶部３２０６１が保持するテーブルの第２の例を示す図である。
【図１４】ストリーム数の決定処理の第３の例のフローチャートを示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について、図面を参照しながら説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。
【００１２】
＜第１の実施形態＞
第１の実施形態では、サーバ装置とクライアント装置が、それぞれ単一のＴＣＰストリームによる伝送方式と複数のＴＣＰストリームによる伝送方式のいずれか一方または両方に対応するものとする。なお伝送方式はこれらに限る必要はない。また三種類以上であってもよい。
【００１３】
図１は、第１の実施形態にかかるシステムの構成を示すブロック図である。図１のシステムは、クライアント装置１とサーバ装置２とが、ネットワーク３を介して接続されている。クライアント装置1とサーバ装置２とは、単数若しくは複数のＴＣＰストリームを確立し、確立したＴＣＰストリームを用いて通信を行う装置である。
【００１４】
本発明の一観点に係るクライアント装置１は、ネットワーク３を介して接続された第サーバ装置２との間で通信を行う装置であって、単一のストリームを確立するための処理を行うとともに、サーバ装置２と前記単一のストリームを確立した場合に、前記単一のストリームを用いて通信を行う第１の送信部１０３と、複数のストリームを確立するための処理を行うとともにサーバ装置２と前記複数のストリームを確立した場合に、前記複数のストリームを用いて通信を行う第２の送信部１０４と、第１の送信部１０３が、前記単一のストリームを確立するための処理を行うタイミングと、第２の送信部１０４が、前記複数のストリームを確立するための処理を行うタイミングとが、重複する様に、第１の送信部１０３に対して、前記単一のストリームを確立するための処理を行うように第１の指示を出すとともに、第２の送信部１０４に対して、前記複数のストリームを確立するための処理を行うように第２の指示を出す確立指示部１０１と、第１分配部１０２と、を備え、第１の送信部１０３は、前記単一のストリームを確立するための処理を完了した場合に、第１分配部１０２に、第１メッセージを通知し、第２の送信部１０４は、前記複数のストリームを確立するための処理を完了した場合に第１分配部１０２に、第２メッセージを通知し、第１分配部１０２は、前記送信データを、通信に用いるすべてのストリームの確立を最初に完了した、第１の送信部１０３又は第２の送信部１０４のいずれか一方に分配するとともに、第１の送信部１０３が最初に、前記単一のストリームを確立するための処理を完了した場合に、第１の送信部１０３に、前記送信データを分配するとともに、第２の送信部１０４が、前記複数のストリームの確立するための処理を完了後、前記送信データの分配先を、第１の送信部１０３から第２の送信部１０４に切り替えることを特徴とする。
【００１５】
以下では、まず、クライアント装置１及びサーバ装置２の構成を図１を用いて説明する。
【００１６】
≪  クライアント装置の構成  ≫
クライアント装置１は、データ供給部１００と、確立指示部１０１と、第１分配部１０２と、第１の送信部１０３と、第２の送信部１０４とを備える。第１の送信部１０３は、確立部１０５を備える。第２の送信部１０４は、確立部１０６と第２分配部１０７とを備える。
【００１７】
データ供給部１００は、サーバ装置２に伝送すべきデータを供給する。
【００１８】
確立指示部１０１は、第１の送信部１０３の確立部１０５と第２の送信部１０４の確立部１０６を用いてサーバ装置２との間で接続の確立を指示する。（確立部１０５及び確立部１０６に対するそれぞれの指示を、第１の指示及び第２の指示と称する。）
第１分配部１０２は、データ供給部１００から渡されたデータを第１の送信部１０３または第２の送信部１０４に渡し、データの送出を指示する。
【００１９】
第１の送信部１０３は、第１の伝送方式によるデータ送信を行う。本実施形態では、第１の伝送方式は、単一のＴＣＰストリームを用いる伝送方式である。
【００２０】
第２の送信部１０４は、第２の伝送方式によるデータ送信を行う。本実施形態では、第２の伝送方式は、複数ＴＣＰストリームを用いる伝送方式である。
【００２１】
確立部１０５は、第１の伝送方式における接続確立を行う。確立部１０５は、具体的には、サーバ装置２の第１の受信部２００との間で単一のＴＣＰストリームの作成を行う。
【００２２】
確立部１０６は、第２の伝送方式における接続確立を行う。確立部１０６は、具体的には、まず、サーバ装置２の第２の受信部２０１との間で制御用のＴＣＰストリームの作成を行う。確立部１０６は、次に、制御用ＴＣＰストリームを用いてデータ用の（複数の）ＴＣＰストリームの作成に関する情報を交換し、交換した情報を用いて、データ用ＴＣＰストリームの作成を行う。
【００２３】
第２分配部１０７は、第２の伝送方式におけるデータ分配を行う。第２分配部１０７は、具体的には、第１分配部１０２から渡されたデータを分割し、分割順序を表すヘッダを付加した上で、複数のＴＣＰストリームに渡し送信を行う。分割部１０７の動作の詳細は、図２を用いて後述する。
【００２４】
以上が、クライアント装置1の構成の説明である。
【００２５】
≪  サーバ装置の構成  ≫
次に、サーバ装置２の構成を説明する。
【００２６】
サーバ装置２は、第１の受信部２００と、第２の受信部２０１と、第２収集部２０５と、データ出力部２０６とを備える。第１の受信部２００は、待受部２０２を備える。第２の受信部２０１は待受部２０３と第１収集部２０４とを備える。
【００２７】
第１の受信部２００は、第１の伝送方式によるデータ受信を行う。
【００２８】
第２の受信部２０１は、第２の伝送方式によるデータ受信を行う。
【００２９】
待受部２０２は、第１の伝送方式における接続待受を行う。待受部２０２は、具体的には、クライアント装置１の第１の送信部１０３との間でＴＣＰストリームの作成を行う。
【００３０】
待受部２０３は、第２の伝送方式における接続待受を行う。待受部２０３は、具体的には、クライアント装置１の第２の送信部１０４との間で制御用ＴＣＰストリームの作成を行い、この制御用ＴＣＰストリームを用いてデータ用ＴＣＰストリームの作成に関する情報を交換した後で、複数のデータ用ＴＣＰストリームの作成を行う。
【００３１】
第１収集部２０４は、第２の伝送方式におけるデータ収集を行う。具体的には、第１収集部２０４は、第２の送信部１０４から受信したデータに付加された分割情報を表すヘッダにもとづいて分割前のデータを再現し、第２収集部２０５へ渡す。
【００３２】
第２収集部２０５は、第１の受信部２００または第２の受信部２０１から渡されたデータ収集し、データ出力部２０６へ渡す。
【００３３】
データ出力部２０６は第２収集部２０５から渡されたデータを出力する。
【００３４】
以上が、サーバ装置２の構成の説明である。
【００３５】
≪  処理の流れ  ≫
次に、第１の実施形態に係るシステムにより行われる処理について、図面を適宜参照しながら説明する。
【００３６】
クライアント装置１とサーバ装置２がネットワーク３を介して物理的に接続されている。第１の伝送方式を、単一のＴＣＰストリームを用いる伝送方式であるとし、第２の伝送方式を、複数ＴＣＰストリームを用いる伝送方式であるとする。その上で、クライアント装置１とサーバ装置２が両方とも複数ＴＣＰストリームを用いる伝送方式に対応する場合はそれを優先的に使用するものとする。
【００３７】
≪  処理の流れ（接続の確立）  ≫
始めに、サーバ装置２は接続の待受処理を行う。待受処理の開始タイミングは、例えばサーバ装置２が起動したタイミングや、ユーザから明示的に指示があったタイミングなど、任意のタイミングであってよい。第１の受信部２００の待受部２０２と、第２の受信部２０１の待受部２０３が、それぞれ待受処理を開始する。待受部２０２は、ソケットを作成し、第１の受信部２００の固有のポート番号をソケットに割り当ててポートをオープンにし、クライアント装置１からの接続を待ち受ける。また待受部２０３も、ソケットを作成し、第２の受信部２０１の固有のポート番号をソケットに割り当ててポートをオープンにし、クライアント装置１からの接続を待ち受ける。
【００３８】
次に、クライアント装置１の確立指示部１０１は接続の確立処理を行う。確立処理の開始タイミングは例えばユーザから明示的に指示があったタイミングや、データ供給部１００において送信すべきデータが発生したタイミングなど、任意のタイミングであってよい。確立指示部１０１は、第１の送信部１０３の確立部１０５と、第２の送信部１０４の確立部１０６に対して、それぞれ接続の確立処理を開始するよう指示する。
【００３９】
なお、本実施形態では確立部１０５と確立部１０６に対して同時のタイミングで接続の確立処理を開始するよう指示を出すものとしたが、必ずしもこれに限る必要はない。指示を出すタイミングに時間差を生じさせても良い。
【００４０】
確立部１０５は、待受部２０２がオープンにしたポートに対しＳＹＮを送出し、３ウェイハンドシェイクによるＴＣＰの接続確立を行う。ＳＹＮとＡＣＫ（確認応答）を交換し終わると、両者の間でＴＣＰストリームが作成された状態となる。ＴＣＰストリームの作成が完了すると、確立部１０５は接続の確立が成功したことを確立指示部１０１に通知する。
【００４１】
確立部１０６は、待受部２０３がオープンにしたポートに対しＳＹＮを送出し、３ウェイハンドシェイクによるＴＣＰの接続確立を行う。ＳＹＮとＡＣＫを交換し終わると、両者の間でＴＣＰストリームが作成された状態となる。第２の送信部１０４ではこのＴＣＰストリームを制御用ＴＣＰストリームと呼ぶ。制御用ＴＣＰストリームの作成が完了すると、確立部１０６はこの制御用ＴＣＰストリームを用いて、データ用ＴＣＰストリームの作成に関する情報を交換する。始めに確立部１０６は、データ用ＴＣＰストリームで使用するポート番号の取得要求を待受部２０３に送出する。待受部２０３は、取得要求を受け取ると、その時点でサーバ装置２において任意のポートを選択し、このうち要求された個数のポート番号を選択し、データ用ＴＣＰストリームに割り当てる。待受部２０３は、要求された個数のソケットを作成し、選択したポート番号をそれぞれのソケットに割り当ててポートをオープンにする。そしてオープンにしたポート番号の一覧の情報を確立部１０６に送出する。次に確立部１０６は、ポート番号の一覧情報を受け取ると、それらのポートに対し３ウェイハンドシェイクによるＴＣＰの接続確立を行う。ＳＹＮ／ＡＣＫを交換しＴＣＰストリームが作成された状態となると、確立部１０６は接続の確立が成功したことを確立指示部１０１に通知する。
【００４２】
なお、本実施形態では待受部２０３はデータ用ＴＣＰストリームを作成する際に任意のポートを選択するものとしたが、必ずしもこれに限る必要はない。待受部２０３は、サーバ装置２におけるポート番号を管理するためのポート管理部をさらに有し、サーバ装置２において未使用であるポート番号を探索し使用してもよい。これにより、選択したポート番号が既に使用中であるために接続確立が失敗するという可能性を低減することが可能となる。
【００４３】
また、待受部２０３は、第２の受信部２０１におけるデータ伝送速度を管理する伝送速度管理部をさらに有しても良い。サーバ装置２において他のアプリケーションが行うデータ伝送の速度を取得し、この値に基づいて、データ用ＴＣＰストリームの個数に制限を加えても良い。あるいは任意の方法により各データ用ＴＣＰストリームにおいて達成可能な伝送速度に制限を加えてもよい。
【００４４】
≪  処理の流れ（データの伝送）  ≫
第１の送信部１０３における接続の確立処理と、第２の送信部１０４における接続の確立処理は、並行的に実行される。このため、確立指示部１０１は、接続の確立の結果の通知を、先に完了した方から順に受け取ることになる。確立指示部１０１は、第１の送信部１０３の接続確立が先に完了した場合と、第２の送信部１０４の接続確立が先に完了した場合で、それぞれ異なる処理手順を実行する。以下では、それぞれの場合について、確立指示部１０１の処理手順を述べる。
【００４５】
第１の送信部１０３の接続が先に完了した場合について、図３を参照しながら述べる。図３は、第１の実施形態に係るシステムの処理の流れの一例を示すシーケンス図である。  
確立指示部１０１は、確立部１０５から接続の確立が成功したことの通知を受け取ると、第１分配部１０２に対し、データの分配先を第１の送信部１０３とするよう指示を出す。次に、確立指示部１０１は、データ供給部１００に対しデータの送出が可能になったことを通知し、以降、データ供給部１００からデータの入力が行われる。データ供給部１００は第１分配部１０２にデータを渡す。第１分配部１０２はデータを第１の送信部１０３に渡す。ここで、第１分配部１０２は、第１の送信部１０３へ渡したデータサイズの累計値を保持するための記憶領域を持っており、第１の送信部１０３にデータを渡すごとに、当該のデータサイズの値を記憶領域の値に加算する。この値を累積送信済みデータサイズと呼ぶ。第１の送信部１０３に渡されたデータは、ＴＣＰ／ＩＰの各ヘッダが付与されて、ＴＣＰストリームを通じて第１の受信部２００へ送出される。さらにデータは第２収集部２０５に渡される。第２収集部２０５は受け取ったデータをデータ出力部２０６に渡す。ここで、第２収集部２０５は、第１の受信部２００から受け取ったデータサイズの累計値を保持するための記憶領域を持っており、データを受け取るごとに、当該のデータサイズの値を記憶領域の値に加算する。この値を累積受信済みデータサイズと呼ぶ。データ出力部２０６は、得られたデータを任意の方法で出力する。以降、データ供給部１００からデータの入力が行われるごとに、以上の処理によりデータが最終的にデータ出力部２０６へと伝送される。
【００４６】
次に、この後で第２の送信部１０４の接続が完了する。確立指示部１０１は、確立部１０６から接続の確立が成功したことの通知を受け取ると、第１分配部１０２に対し、データの分配先を第１の送信部１０３から第２の送信部１０４へと切り替えるように指示を出す。以後、第１分配部１０２は、データ供給部１００から送信すべきデータを受け取ると、これを第２の送信部１０４の第２分配部１０７へ渡す。第２分配部１０７に渡されたデータは、分割され、分割順序を表すヘッダが付与されて、さらにＴＣＰ／ＩＰの各ヘッダが付与されて、複数のデータ用ＴＣＰストリームを通じて並列的に第２の受信部２０１の第１収集部２０４へ送出される。データが分割され分割順序を表すヘッダが付与される様子を図２に示す。図では、データが４分割され、それぞれに１から４までの通し番号と分割数からなるヘッダが付加されている。この情報を分割情報と呼ぶ。分割後のデータは任意の方法で複数のデータ用ＴＣＰストリームに割り当てられ、それぞれ送信される。受信後のデータは第１収集部２０４へ渡される。単一のＴＣＰストリームにおいて送信されたデータはその順序性が保証されるが、複数のＴＣＰストリームに分けられた場合、各ストリームの間での順序性は保証されない。そこで、第１収集部２０４は、分割情報を参照し、順序が元の順序に正しくなるよう並び替えを行った上で、第２収集部２０５へデータを渡す。分割順序を表すヘッダは除去される。
【００４７】
さらに確立指示部１０１は、データの分配先を切り替える指示を出すのに合わせて、同じく第１分配部１０２から、第１の送信部１０３へ渡した累積送信済みデータサイズ値を読み出す。確立指示部１０１は、この値を第２の送信部１０４に通知し、制御用ＴＣＰストリームを通じてこの値を第２の受信部２０１へ通知するよう指示する。第２の受信部２０１へ通知された値はさらに第２収集部２０５へ通知される。ここで、第２収集部２０５は、通知された累積送信済みデータサイズの値と、自身が持つ累積受信済みデータサイズの値が等しくなるまで、第２の受信部２０１から受け取ったデータをデータ出力部２０６に渡さず、自身に保持しておく。つまり、第１の伝送方式を用いて伝送されたすべてのデータを受け取るまで、第２の伝送方式を用いて伝送されたデータの受け渡しを待機する。通知された累積送信済みデータサイズの値と、自身が持つ累積受信済みデータサイズの値が等しくなったタイミングで、保持していた第２の受信部２０１からのデータをすべてデータ出力部２０６へ受け渡す。このようにすることで、第１の伝送方式と第２の伝送方式との間で生じたデータの到着順序の入れ違いを解消することが可能になる。
【００４８】
以上、第１の送信部１０３の接続が先に完了した場合について述べた。
【００４９】
次に、第２の送信部１０４の接続が先に完了した場合について述べる。確立指示部１０１は、確立部１０６から接続の確立が成功したことの通知を受け取ると、第１分配部１０２に対し、データの分配先を第２の送信部１０４とするよう指示を出す。次に確立指示部１０１は、データ供給部１００に対しデータの送出が可能になったことを通知する。以降、データ供給部１００のデータは第１分配部１０２において第２の送信部１０４（の第２分配部１０７）へと分配される。分配されたデータが第２の伝送方式に則って最終的に第２収集部２０５へ伝送されるまでの処理手順は前出と同様である。第２収集部２０５は受け取ったデータをデータ出力部２０６に渡す。
【００５０】
本実施形態では、第１の送信部１０３による単一ＴＣＰストリームを用いた伝送方式が、第２の送信部１０４による複数ＴＣＰストリームを用いた伝送方式よりも優先するものとしている。そこで確立指示部１０１は、第２の送信部１０４の接続の完了通知を受け取ったタイミングで、最早第１の伝送方式を使用する必要がなくなったことになる。そこで確立指示部１０１はこのタイミングで、第１の送信部１０３に対し、接続の確立の中断を指示する。第１の送信部１０３はソケット終了やポート等リソースの開放を行う。あるいは通知を受け取ったタイミングでは接続の確立の中断を行うのではなく、第１の送信部１０３の接続が完了するまで待機し、完了した時点で即座に第１の送信部１０３の接続を終了するという動作であってもよい。
【００５１】
以上、第２の送信部１０４の接続が先に完了した場合について述べた。
【００５２】
なお、本実施形態では第１の送信部１０３と第２の送信部１０４はそれぞれ独立して動作するものとしたが、必ずしもこれに限らなくともよく、一方の送信部でデータ送信を行っている間に取得した情報を、もう一方の送信部に渡しても良い。例を示す。いま、クライアント装置１において、第１の送信部１０３の接続確立が完了し、第２の送信部１０４の接続確立が未完了であり、データ供給部１００から入力されたデータが第１の送信部１０３を通じてサーバ装置２へ送信されている状況であるとする。このとき、第１の送信部１０３は、第１の受信部２００との間のＴＣＰストリームのデータ伝送速度を計測し、自身に保持しておく。さらにこの後で、第２の送信部１０４の接続確立が完了したとする。確立指示部１０１は、第２の送信部１０４から接続確立の成功の通知を受けると、第１の送信部１０３に対し、累積送信済みデータサイズの値を問い合わせるとともに、データ伝送速度の値を問い合わせる。確立指示部１０１は両値を第２の送信部１０４の確立部１０６に通知する。確立部１０６は、通知されたデータ伝送速度の値を利用して、データ伝送用ＴＣＰストリームの個数を調整することが可能である。例えば、規定の値（第２の送信部１０４において実現したいデータ伝送速度の値）を通知されたデータ伝送速度で割って得られた値をデータ伝送用ＴＣＰストリームの個数とし、既に確立したデータ用ＴＣＰストリームのうちこの個数のストリームのみを以後使用するという制御を行っても良い。このように、第１の送信部１０３において取得したサーバ装置２やネットワーク３の特性に関する情報を第２の送信部１０４に通知し第２の送信部１０４はこれを利用することにより、これらの特性に応じて第２の送信部１０４の動作を適応的に調整することが可能となる。なお、測定・通知する情報はデータ伝送速度に限らなくともよい。例えばデータの伝送遅延やＩＰパケットのロス確率といったネットワーク３の特性に関する情報や、ＴＣＰストリームのウィンドウサイズといった第１の送信部１０３や第１の受信部２００に関する情報などであってよい。
【００５３】
また、第１の送信部１０３で使用したＴＣＰストリームを第２の送信部１０４において再利用するという制御を行っても良い。例を示す。上述と同様、いま、クライアント装置１において、第１の送信部１０３によるデータ伝送を行っている最中に、第２の送信部１０４における接続確立が完了したとする。確立指示部１０１は、第２の送信部１０４より接続確立の成功を受け取ると、第１の送信部１０３に対し、累積送信済みデータ送信サイズの値を問い合わせるとともに、第１の送信部１０３が使用するＴＣＰストリームのクライアント装置１における識別子の値を問い合わせる。確立指示部１０１は両値を第２の送信部１０４に通知する。第２の送信部１０４は、通知されたＴＣＰストリームの識別子を記憶し、以後、このストリームをデータ用ストリームと同等に扱う。つまり第１の送信部１０３のＴＣＰストリームをデータ用ストリームとして再利用する。これにより、ＴＣＰストリームの作成に伴う処理負荷を削減することが可能となる。
【００５４】
≪  一方の伝送方式のみ対応する場合  ≫
次に、クライアント装置１またはサーバ装置２のいずれかが第２の伝送方式に対応していない場合の動作について説明する。
【００５５】
始めに、サーバ装置２が第１の伝送方式のみに対応し、第２の伝送方式に対応していない場合の動作について説明する。クライアント装置１は両方の伝送方式に対応するものと仮定する。
【００５６】
サーバ装置２が第２の伝送方式に対応していない場合、サーバ装置２において第２の受信部２０１は存在しない。サーバ装置２は接続の待受処理において、第１の受信部２００の待受部２０２のみがポートをオープンにし、クライアント装置１からの接続を待ち受ける状態となる。
【００５７】
クライアント装置１の確立指示部１０１における接続の確立処理は前述と同様であり、第１の送信部１０３の確立部１０５と、第２の送信部１０４の確立部１０６のそれぞれにおいて、接続の確立処理が開始される。ここで、第１の伝送方式に対するポートと、第２の伝送方式に対応するポートの両方に対し、ＳＹＮが送出されることになる。このうち第１の伝送方式に関しては、第１の受信部２００の待受部２０２がポートをオープンにしているため、３ウェイハンドシェイクによるＴＣＰの接続確立は成功する。一方、第２の伝送方式に関しては、対応するポートがオープンにされていないため、ＴＣＰの接続確立は失敗する。確立部１０６は接続確立に失敗したことを確立指示部１０１に通知する。このとき、確立指示部１０１は、第１の送信部１０３からは接続確立成功の通知を受け、第２の送信部１０４からは接続確立失敗の通知を受けることになる。本実施形態では、確立指示部１０１は接続確立成功の通知を受けたタイミングで第１の伝送方式によるデータ送信を開始し、接続確立失敗の通知を受けたタイミングで特別な処理は行わないものとする。
【００５８】
次に、クライアント装置１が第１の伝送方式のみに対応し、第２の伝送方式に対応していない場合の動作について説明する。サーバ装置２は両方の伝送方式に対応するものと仮定する。
【００５９】
クライアント装置１が第２の伝送方式に対応していない場合、クライアント装置１において第２の送信部１０４は存在しない。クライアント装置１は接続の確立処理において、サーバ装置２の第１の受信部２００に対してのみ、ＴＣＰの接続確立を試みることになる。この接続確立は成功し、確立指示部１０１は成功の通知を受け取ると、以降、データ供給部１００からのデータ送出が第１の送信部１０３を通じて行われることになる。
【００６０】
以上、クライアント装置１またはサーバ装置２のいずれかが第２の伝送方式に対応していない場合の動作について説明した。
【００６１】
＜第１の実施形態の変形例＞
図４は、第１の実施形態の変形例にかかるシステムを示すブロック図である。
【００６２】
第１の実施形態に係るシステムは、クライアント装置１がデータを送信し、サーバ装置２２がデータを受信する場合についての説明だった。第１の実施形態の変形例にかかるシステムは、クライアント装置２１がデータを受信し、サーバ装置２２がデータを送信する場合を説明する。第１の実施形態の変形例にかかるクライアント装置２１及びサーバ装置２２は、クライアント装置とサーバ装置とが、送受信側の立場が第１の実施形態の立場と変わったこと以外は、第１の実施形態と同様である。
【００６３】
図４において、クライアント装置２１は、データ供給部１１０と、確立指示部１１１と、第３収集部１１２と、第１の受信部１１３と、第２の受信部１１４とを備える。
【００６４】
また、サーバ装置２２は、第１の送信部２１０と、第２の送信部２１１と、待受部２１５と、第４分配部２１６と、データ供給部２１７とを有する。
【００６５】
ここで、クライアント装置２１の確立指示部１１１、確立部１１５、及び確立部１１６は第１の実施形態と同様の動作を行う。また、サーバ装置２２の第１の待受部２１２、待ち受け部２１５、及び待ち受け部２１３は第１の実施形態と同様の動作を行う。
【００６６】
始めに、サーバ装置２２は接続の待受処理を行う。これは第１の実施形態と同一の動作である。第１の送信部２１０の待受部２１２と、第２の送信部２１１の待受部２１３は、それぞれ固有のポート番号をソケットに割り当ててポートをオープンにし、クライアント装置２１からの接続を待ち受ける。
【００６７】
次に、クライアント装置２１の確立指示部１１１は接続の確立処理を行う。確立指示部１１１は、第１の受信部１１３の確立部１１５と、第２の受信部１１４の確立部１１６に対して、それぞれ接続の確立処理を開始するよう指示する。それぞれの接続の確立処理は並列的に行われる。確立部１１５は、待受部２１２との間でＴＣＰの接続確立を試みる。ＴＣＰストリームの作成が完了すると、確立部１１５は接続の確立が成功したことを確立指示部１１１に通知する。同様に、確立部１１６は、待受部２１３との間でＴＣＰの接続確立を試みる。ＴＣＰストリーム（制御用ＴＣＰストリーム）の作成が完了すると、次に確立部１１６はこの制御用ストリームを用いて、データ用ＴＣＰストリームの作成に関する情報を待受部２１３と交換する。始めに確立部１１６は、データ用ＴＣＰストリームで使用するポート番号の取得要求を待受部２１３に送出する。待受部２１３は、取得要求を受け取ると、その時点でサーバ装置２２において未使用であるポートを調べ、このうち任意の個数のポート番号を選択し、データ用ＴＣＰストリームに割り当てる。待受部２１３は、選択した個数のソケットを作成し、選択したポート番号をそれぞれのソケットに割り当ててポートをオープンにする。そしてオープンにしたポート番号の一覧の情報を確立部１１６に送出する。次に確立部１１６は、ポート番号の一覧情報を受け取ると、それらのポートに対しＴＣＰの接続確立を行う。データ用ＴＣＰストリームが作成された状態となると、確立部１１６は接続の確立が成功したことを確立指示部１１１に通知する。
【００６８】
第１の送信部２１０の待受部２１２は、確立部１１５との間でＴＣＰストリームの作成が完了すると、接続の確立が成功したことを待受部２１５に通知する。同様に、第２の送信部２１１の待受部２１３は、確立部１１６との間でデータ用ＴＣＰストリームの作成が完了すると、接続の確立が完了したことを待受部２１５に通知する。
【００６９】
第１の送信部２１０における接続の確立処理と、第２の送信部２１１における接続の確立処理は、並行的に実行される。このため、待受部２１５は、接続の確立の結果の通知を、先に完了した方から順に受け取ることになる。待受部２１５は、第１の送信部２１０の接続確立が先に完了した場合と、第２の送信部２１１の接続確立が先に完了した場合で、それぞれ異なる処理手順を実行する。以下では、それぞれの場合について、待受部２１５の処理手順を述べる。
【００７０】
第１の送信部２１０の接続が先に完了した場合について述べる。待受部２１５は、待受部２１２から接続の確立が成功したことの通知を受け取ると、第４分配部２１６に対し、データの分配先を第１の送信部２１０とするよう指示を出す。次に待受部２１５は、データ供給部２１７に対しデータの送出が可能になったことを通知し、以降、データ供給部２１７からデータの入力が行われる。データ供給部２１７は第４分配部２１６にデータを渡す。第４分配部２１６はデータを第１の送信部２１０に渡す。ここで、第４分配部２１６は、第１の送信２１０へ渡したデータサイズの累計値を保持するための記憶領域を持っており、第１の送信部２１０にデータを渡すごとに、当該のデータサイズの値を記憶領域の値に加算する。この値を累積送信済みデータサイズと呼ぶ。第１の送信部２１０に渡されたデータは、ＴＣＰ／ＩＰの各ヘッダが付与されて、ＴＣＰストリームを通じて第１の受信部１１３へ送出される。さらにデータは第３収集部１１２に渡される。第３収集部１１２は受け取ったデータをデータ出力部１１０に渡す。ここで、第３収集部１１２は、第１の受信部１１３から受け取ったデータサイズの累計値を保持するための記憶領域を持っており、データを受け取るごとに、当該のデータサイズの値を記憶領域の値に加算する。この値を累積受信済みデータサイズと呼ぶ。データ出力部１１０は、得られたデータを任意の方法で出力する。以降、データ供給部２１７からデータの入力が行われるごとに、以上の処理によりデータが最終的にデータ出力部１１０へと伝送される。
【００７１】
次に、この後で第２の送信部２１１の接続が完了する。待受部２１５は、２１３から接続の確立が成功したことの通知を受け取ると、第４分配部２１６に対し、データの分配先を第１の送信部２１０から第２の送信部２１１へと切り替えるように指示を出す。以後、第４分配部２１６は、データ供給部２１７から送信すべきデータを受け取ると、これを第２の送信部２１１の第３分配部２１４へ渡す。第３分配部２１４に渡されたデータは、分割され、分割順序を表すヘッダが付与されて、さらにＴＣＰ／ＩＰの各ヘッダが付与されて、複数のデータ用ＴＣＰストリームを通じて並列的に第２の受信部１１４の第４収集部１１７へ送出される。第４収集部１１７は、分割情報を参照し、順序が元の順序に正しくなるよう並び替えを行った上で、第３収集部１１２へデータを渡す。
【００７２】
さらに待受部２１５は、データの分配先を切り替える指示を出すのに合わせて、同じく第４分配部２１６から、第１の送信部２１０へ渡した累積送信済みデータサイズ値を読み出す。待受部２１５は、この値を第２の送信部２１１に通知し、制御用ＴＣＰストリームを通じてこの値を第２の受信部１１４へ通知するよう指示する。第２の受信部１１４へ通知された値はさらに第３収集部１１２へ通知される。ここで、第３収集部１１２は、通知された累積送信済みデータサイズの値と、自身が持つ累積受信済みデータサイズの値が等しくなるまで、第２の受信部１１３から受け取ったデータをデータ出力部１１０に渡さず、自身に保持しておく。つまり、第１の伝送方式を用いて伝送されたすべてのデータを受け取るまで、第２の伝送方式を用いて伝送されたデータの受け渡しを待機する。通知された累積送信済みデータサイズの値と、自身が持つ累積受信済みデータサイズの値が等しくなったタイミングで、保持していた第２の受信部１１４からのデータをすべてデータ出力部１１０へ受け渡す。このようにすることで、第１の伝送方式と第２の伝送方式との間で生じたデータの到着順序の入れ違いを解消することが可能になる。
【００７３】
以上、第１の送信部２１０の接続が先に完了した場合について述べた。
【００７４】
次に、第２の送信部２１１の接続が先に完了した場合について述べる。待受部２１５は、待受部２１３から接続の確立が成功したことの通知を受け取ると、第４分配部２１６に対し、データの分配先を第２の送信部２１１とするよう指示を出す。次に待受部２１５は、データ供給部２１７に対しデータの送出が可能になったことを通知する。以降、データ供給部２１７のデータは第４分配部２１６において第２の送信部２１１（の第３分配部２１４）へと分配される。分配されたデータが第２の伝送方式に則って最終的に第３収集部１１２へ伝送されるまでの処理手順は前出と同様である。第３収集部１１２は受け取ったデータをデータ出力部１１０に渡す。
【００７５】
本実施形態では、第１の送信部２１０による単一ＴＣＰストリームを用いた伝送方式が、第２の送信部２１１による複数ＴＣＰストリームを用いた伝送方式よりも優先するものとしている。そこで待受部２１５は、第２の送信部２１１の接続の完了通知を受け取ったタイミングで、最早第１の伝送方式を使用する必要がなくなったことになる。そこで待受部２１５はこのタイミングで、第１の送信部２１０に対し、接続の確立の中断を指示する。第１の送信部２１０はソケット終了やポート等のリソース開放を行う。あるいは通知を受け取ったタイミングでは接続の確立の中断を行わずに、第１の送信部２１０の接続が完了するまで待機し、完了した時点で即座に第１の送信部２１０の接続を終了するという動作であってもよい。
【００７６】
以上、第２の送信部２１１の接続が先に完了した場合について述べた。
【００７７】
以上のように第１の実施形態によれば、第１の伝送方式と第２の伝送方式の仕様の優先度の違いに応じて、優先度の低い伝送方式（第１の伝送方式）が先に接続確立完了したときにはそちらを用いてデータ伝送を開始し、優先度の高い伝送方式（第２の伝送方式）が後から接続確立完了したときにはそちらに切り替えて以降のデータ伝送を行い、一方、優先度の高い伝送方式が先に接続確立完了したときにはそちらを使用し続ける。これにより、クライアント装置およびサーバ装置が複数の種類の伝送方式に対応する場合に、早く接続完了が完了した方でデータ伝送を開始できるようになるため、データ伝送までの所要時間を短縮することが可能になる。また、それぞれの対応状況に応じて優先度の高い伝送方式を使用できるようになる。
【００７８】
さらに、本実施形態によれば、伝送方式への対応状況をネゴシエーションする機構を持たないサーバ装置またはクライアント装置が既に広く普及している場合であっても、ネゴシエーションの機構を後から追加する必要がない。
【００７９】
また、第1の実施形態にかかるクライアント１装置及びサーバ装置２は、第1の伝送方式は単数のストリームを用いて通信を行う伝送方式であり、第２の伝送方式は複数のストリームを用いて通信を行う伝送方式である例を説明したが、第1の伝送方式と第２の伝送方式はこの例に限られない。第1の伝送方式と第2の伝送方式は異なる伝送方式であればよい。例えば、ＤＣＣＰ（Ｄａｔａｇｒａｍ  Ｃｏｎｇｅｓｔｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）やＳＣＴＰ（Ｓｔｒｅａｍ  Ｃｏｎｔｒｏｌ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｐｔｏｒｏｃｏｌ）といったプロトコルによる伝送方式の他、ＡＴＭやフレームリレーによる伝送方式であっても良い。またＴＬＳ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）のように、接続確立に認証等の手続きを含む伝送方式であっても良い。この場合、第２の送信部１０４及び第２の受信部２０１は、単一のストリームを確立し、単一のストリームを用いて通信を行うものであっても良い。この場合、第2の送信部104は第2分配部107を有していなくて良く、第2の受信部201は第1収集部204を有していなくても良い。また第１の伝送方式または第２の伝送方式は、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）といったコネクションレス型のプロトコルによる伝送方式であっても良い。コネクションレス型の伝送方式を含む場合、例えば第１の伝送方式はＵＤＰを用いて通信を行う伝送方式であり、第２の伝送方式はＴＣＰを用いて通信を行う伝送方式とする。ＵＤＰは接続確立の手続きを持たない伝送プロトコルであるため、この場合、第１の送信部１０３は確立部１０５を有していなくても良い。第１の受信部２００は待受部２０２を有していなくても良い。その場合、確立指示部１０１は接続の確立処理を行う際に、第１の送信部１０３に対して接続の確立処理を開始するよう指示するステップを省略し、その時点で接続の確立処理が完了したものとして動作する。つまり、確立指示部１０１は、第１分配部１０２に対し、データの分配先を第１の送信部１０３とするよう指示を出し、さらに、データ供給部１００に対しデータの送出が可能になったことを通知する。
【００８０】
また、クライアント装置１は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。すなわち、データ供給部１００、確立指示部１０１、第１分配部１０２、第１の送信部、第２の送信部１０４は、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現することができる。このとき、クライアント装置１は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、ＣＤ−ＲＯＭなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現してもよい。
【００８１】
また、サーバ装置２は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。すなわち、第１の受信部２００、第２の受信部２０１、第２収集部２０５、データ出力部２０６は、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現することができる。このとき、サーバ装置２は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、ＣＤ−ＲＯＭなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現してもよい。
【００８２】
また、クライアント装置２１及びサーバ装置２２も同様に、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。
【００８３】
＜第２の実施形態＞
図５は、本発明の第２の実施形態のシステムを示すブロック図である。
【００８４】
以下では、第２の実施形態のシステムは、サーバ装置の画面の情報をパケット化してリアルタイムで配信する「画面転送システム」であるとして説明する。しかしながら、第２の実施形態のシステムは、画面転送システムに限らず、任意の種類のデータ伝送を行うシステムにも適用できる。
【００８５】
図５に示すように、第２の実施形態に係るシステムは、サーバ装置３２とクライアント装置３１とが、ネットワーク３を介して接続されている。
【００８６】
第２の実施形態にかかるサーバ装置３２は、複数の送信部３２０３Ａ〜Ｚと、第１のデータを分割することにより複数の第１分割データを生成するとともに、前記複数の第１分割データを、複数の送信部３２０３Ａ〜Ｚに分配する第５分配部３２０２と、複数の送信部３２０３Ａ〜Ｚが、任意の期間の中で、第１のデータを前記クライアント装置３１に送信するために要した送信処理時間の割合である送信処理時間率を算出する送信処理時間算出部３２０５と、送信処理時間率に基づき、第５分配部３２０２が、第２のデータを分割して生成する複数の第２の分割データを、何個の送信部に分配するかを決定するストリーム数決定部３２０６とを備え、第５分配部３２０２は、複数の第２の分割データを、決定部３２０６が決定した数の送信部に分配することを特徴とする。
【００８７】
以下では、まず、ストリーム数決定部３２０６が、第５分配部３２０２に何個の送信部に分配させるかについて決定する際、送信処理時間率に基づき決定理由について説明する。
【００８８】
一般的に、複数のＴＣＰストリームでデータ伝送を行う場合、適切なストリームの数（図５では、送信部の数）を決定することが好ましいと言える。ＴＣＰストリームの数を増やせば、データの送信レートは向上する。しかしながら、送信レートがネットワーク帯域を超えた場合、それ以上、ＴＣＰストリームの数を増やしても、送信レートに変化はない。一方で、ＴＣＰストリームの数を増やせば増やすほど、装置の処理負荷が上がる。したがって、送信レートを確保しつつ、不要な処理負荷をかけないためにも、ＴＣＰストリームの数を適切な値に設定することが必要である。
【００８９】
従来、ＴＣＰストリームの数の決定方法として、例えば、ＴＣＰストリームの数を一つずつ増やしていき、当該ＴＣＰストリームの数毎に送信レートを測定し、送信レートの測定値に応じて、ＴＣＰストリームの数を決定する方法があった。例えば、ＴＣＰストリームの数をＮ本からＮ＋１本に増加させた場合に、送信レートの測定値が変化しなかった場合、若しくは減少した場合に、ＴＣＰストリームの数がＮ本に決定する方法が考えられる。ＴＣＰストリームの数をＮ＋１本とした場合に、Ｎ＋１本で実現可能な送信レートがネットワーク帯域を超えたと判断し、これ以上増やしても、処理負荷だけ上がり、送信レートは上がらないと考えられる為である。
【００９０】
しかしながら、この方法では、ＴＣＰストリームの数を適切な値に設定できない場合がある。
【００９１】
送信レートは、送信するデータの量にも影響を受ける。したがって、送信するデータ量が小さい場合は、ＴＣＰストリームの数を多くしても、送信レートが小さくなる。つまり、送信するデータ量が小さい場合は、測定される送信レートは、ＴＣＰストリームの実現可能な送信レートより小さくなる場合がある。
【００９２】
このように、ＴＣＰストリームの数を決定するために用いる送信レートの測定値が、ＴＣＰストリームの実現可能な送信レートより大きく下回っている場合もあり得る。このような場合、前述の決定方法では、ＴＣＰストリームの数を適切な値に設定できない場合がある。
【００９３】
例えば、ＴＣＰストリームの数を、Ｎ本からＮ＋１本に増加させた場合に、送信レートの測定値が変化しなかった、もしくは減少した場合に、その原因が、送信レートがネットワーク帯域を超えたことではなくて、送信するデータ量が小さいことである場合もある。このような場合、本来、Ｎ＋１本以上のＴＣＰストリームが適切な値であるにもかかわらず、Ｎ本に決定してしまう場合がある。
【００９４】
したがって、送信レートの測定値のみで、ＴＣＰストリームの数を決定すると、ＴＣＰストリームの数を適切に決定できない場合がある。
【００９５】
ＴＣＰストリームの数を決定する際に、判断基準に用いる送信レートの測定値は、そのＴＣＰストリームの数において、実現可能な送信レートが実現できる程度のデータ量を送信する際の測定値に比較であることが好ましい。
【００９６】
本発明の一側面は、サーバ装置とクライアント装置間で送信するデータ量が変化する場合であっても、サーバ装置とクライアント装置間で用いるＴＣＰストリームの数として、送信レートを確保しつつ、不要な処理負荷をもたらさない適切なＴＣＰストリームの数に決定できるようにすることを目的とする。
【００９７】
そのために、本実施形態では、ストリーム数を決定（何個の送信部に分配するかを決定）する際、送信処理時間率に基づき決定している。
【００９８】
≪  サーバ装置の構成  ≫
次に、図５を用いて、本実施形態に係るサーバ装置３２の構成を説明する。
【００９９】
サーバ装置３２は、データ供給部３２０１と、第５分配部３２０２と、複数の送信部３２０３A〜３２０３Ｚと、送信レート測定部３２０４と、送信処理時間率算出部３２０５と、ストリーム数決定部３２０６とを備える。
【０１００】
データ供給部３２０１は、クライアント装置３１に伝送すべきデータを入力する。本実施形態の画面転送システムにおいては、入力されるデータは、サーバ装置３２における画面更新である。画面更新についての詳細は、図６及び図７を用いて後述する。
【０１０１】
第５分配部３２０２は、データ供給部３２０１から渡されたデータを分割し、分割されたデータを送信部３２０３Ａ〜１０３Ｚに分配する。分割後のデータに対し、クライアント装置３１において結合を行うために必要となる分割情報を付与する。データの分割方法及び分割情報については、図８を用いて後述する。
【０１０２】
送信部３２０３A〜Ｚは、分割されたデータの送信処理を行う。入力されたデータをネットワーク上において伝送可能な形式に変換し、クライアント装置３１の対応する受信部２０１に対し送信する。伝送プロトコルにはＴＣＰ／ＩＰを使用する。本実施形態では各送信部１０３はＴＣＰのストリーム（データを送る論理的なパイプ）である。
【０１０３】
送信レート測定部３２０４は、データの送信レートの測定を行う。ここで、送信レートとは、単位時間あたりに、送信されたデータ量である。送信レートの単位は、ビット毎秒で表される。
【０１０４】
送信処理時間率算出部３２０５は、データ送信の送信処理時間率を測定する。送信処理時間率とは、規定の時間間隔においてデータの送信処理に費やされた時間が占める割合である。
【０１０５】
≪  クライアント装置の構成  ≫
クライアント装置３１は、受信部３１０１A〜Ｚと、結合部３１０２と、表示部３１０３とを備える。
【０１０６】
受信部３１０１A〜Ｚは、ネットワーク３を介してサーバ装置３２からデータを受信する。
【０１０７】
結合部３１０２は、受信部２０１から渡されたデータに付与された分割情報を利用してデータの結合を行う。
【０１０８】
表示部３１０３は、結合されたデータを表示する。
【０１０９】
≪  処理の流れ  ≫
次に、本実施形態に係る画面転送システムにより行われる処理について、図面を適宜参照しながら説明する。サーバ装置３２とクライアント装置３１がネットワーク３を介して物理的に接続されている。
【０１１０】
≪  処理の流れ（画面更新の生成）  ≫
画面転送の実行が開始されると、サーバ装置３２のデータ供給部３２０１は、オペレーティングシステムやアプリケーションの実行状態に応じて画面更新の生成処理を行う。画面更新とは、画面の描画状態を変化させるための情報である。図６に画面更新の例を示す。画面更新は、更新する領域の位置を表す領域情報と、対応する領域の画像情報からなる。領域情報は、画面領域における画像情報の表示位置を示す数値である。図７は、領域情報を説明するための図である。
【０１１１】
例えば図７に示すように、画面領域の左上角を（０，０）、右下角を（Ｗｉｄｔｈ，Ｈｅｉｇｈｔ）としたときの、表示位置の左上座標（Ｌｅｆｔ，Ｔｏｐ）と右下座標（Ｒｉｇｈｔ，Ｂｏｔｔｏｍ）からなる矩形情報で示される。画像情報は、領域情報に対応する領域の更新後のビットマップデータ（矩形の各画素におけるＲＧＢ３色の値など）である。データ供給部３２０１は画面更新を送信すべきデータとして第５分配部３２０２に出力する。
【０１１２】
第５分配部３２０２の処理を図９を参照しながら説明する。図９は、図５のサーバ装置３２の第５分配部３２０２の処理を示すフローチャートである。第５分配部３２０２は、データ供給部３２０１から、送信すべきデータを受け取ると、複数の送信部３２０３A〜Ｚに分配する。始めに、データ供給部３２０１から受け取ったデータを規定のサイズ（例：８キロバイトなど）ごとに分割する（ステップＳ１００１）。次に、分割後の各データに対して、クライアント装置３１において結合を行うために必要となる分割情報を付与する。分割情報の例を図８に示す。例では、送信すべきデータが４分割された後で、それぞれに分割情報が付与されている。分割情報は、「分割後のデータの通し番号」／「分割後のデータの総数」という２つの数値からなる。
【０１１３】
次に第５分配部３２０２は分割後のデータを送信部３２０３A〜Ｚに分配する。第５分配部３２０２は、分割後のデータについて、それぞれどの送信部１０３を用いて送信処理を行うか、分配先を決定する。第５分配部３２０２は利用するＴＣＰストリーム数の値をパラメータとして保持し、この値に等しい個数の送信部１０３に分配を行う。ＴＣＰストリーム数の初期値は任意（たとえば１）であり、以後、ストリーム数決定部３２０６によりこのＴＣＰストリーム数の値は変更される。分配先の決定の仕方は任意である。例えば、送信部３２０３Aから順番に割り当てるやり方であってよい。各送信部１０３に対応するＴＣＰストリームの状態の値（輻輳ウィンドウのサイズなど）を調べて、値の大きな送信部１０３から優先的に割り当てるやり方であってよい。
【０１１４】
次に第５分配部３２０２は、データを送信部１０３に渡す前に、現在時刻（サーバ装置３２が起動してからの経過時間など）を送信処理開始時刻としていったん自身に記録してから（ステップＳ１００２）、前述の割り当てにしたがって、分割後のデータを各送信部１０３に渡す。各送信部１０３は、受け取ったデータをネットワーク上において伝送可能な形式に変換し、クライアント装置３１の対応する受信部２０１に対し送信する（ステップＳ１００３）。送信部１０３は、送信処理が完了すると、それぞれ第５分配部３２０２に通知する。次に第５分配部３２０２は、送信すべきデータがすべて送信完了したことを確認すると、ふたたび現在時刻を調べ、送信処理終了時刻として自身に記録する（ステップＳ１００４）。送信処理開始時刻との差から送信処理に要した送信処理時間を算出し、これを送信処理時間率算出部３２０５に通知する。送信処理時間率算出部３２０５は、送信処理時間の累積値を格納するための記憶領域を有しており、通知された値を格納値に加算する。以降、後述のストリーム数決定部３２０６から送信処理時間率の取得依頼を受け取るまで、通知を受けるごとに格納値を更新していく。さらに第５分配部３２０２は、送信完了したデータサイズを送信レート測定部３２０４に通知する（ステップＳ１００６）。送信レート測定部３２０４は、データサイズの累積値を格納するための記憶領域を有しており、通知された値を格納値に加算する。以降、ストリーム数決定部３２０６から送信レートの取得依頼を受け取るまで、通知を受けるごとに格納値を更新していく。
【０１１５】
なお、送信部１０３が送信完了を通知するタイミングは、実装に応じて様々なやり方が考えられるが、本実施形態はそのいずれかに限定するものではない。例えば、送信部１０３が受信部２０１宛てにネットワーク３へデータを送出し終わったタイミングをもって送信完了を通知してもよい。例えば、受信部２０１から当該のデータに対する確認応答（ＡＣＫ）を受け取ったタイミングをもって送信完了を通知してもよい。例えば、送信部１０３の送信バッファ（ネットワーク３への送出待ちあるいは送出後データのＡＣＫ待ちのデータを一時的に保持しておくためのバッファ）へのコピーが完了したタイミングをもって送信完了を通知してもよい。
【０１１６】
また、本実施形態では、第５分配部３２０２がデータ供給部３２０１から送信すべきデータを受け取ってから、すべてのデータが送信完了するまでの所要時間を送信処理時間としていたが、必ずしもこれに限らなくともよい。例えば送信処理時間を次のようにしてもよい。第５分配部３２０２は、送信待ちのデータを一時的に保持しておくためのバッファを持ち、データ供給部３２０１から送信すべきデータが渡されたとき、バッファが空であれば、送信すべきデータをバッファにコピーする。バッファが空でない場合は、空になるまで待機してからコピーを行う。バッファへのコピーが完了したタイミングをもって送信処理終了時刻とし、ここから送信処理時間を算出する。
【０１１７】
以上のように各送信部３２０３A〜Ｚに渡されたデータは、ネットワーク３を通じて、それぞれ対応する受信部３１０１A〜Ｚに到達する。到達したデータは結合部３１０２に渡される。
【０１１８】
結合部３１０２は、データを受け取ると、付与された分割情報を利用してデータの結合を行う。分割情報に記された分割後のデータの総数すべてのデータを受け取れた時点で、それらを結合し、元のデータ（サーバ装置３２のデータ供給部３２０１で生成された画面更新）を再構成する。元のデータは表示部３１０３に渡される。表示部３１０３はフレームバッファ（画面領域に対応する記録領域）を有しており、画面更新に含まれる領域情報に対応する情報を、画面情報で上書き更新する。フレームバッファの最新の状態はユーザに視覚的に提示される。
【０１１９】
以上、サーバ装置３２において画面更新が生成されてから、それがクライアント装置３１に伝わり、表示されるまでの処理の流れを説明した。
【０１２０】
≪  処理の流れ（ストリーム数の決定）  ≫
次に、ストリーム数決定部３２０６の処理の流れを説明する。ストリーム数決定部３２０６は、任意のタイミング（例えば５秒おきなど）で、以下に述べる手順で次のストリーム数を決定する。決定した値を第５分配部３２０２に通知し、第１分配部１０２が伝送時に使用するＴＣＰストリーム（送信部１０３）の個数を変更する。
【０１２１】
始めにストリーム数決定部３２０６は、送信レート測定部３２０４に送信レートの取得依頼を出す。送信レート測定部３２０４にはデータサイズの累積値が記憶されており、送信レート測定部３２０４は取得依頼を受け取ると、前回取得時からの経過時間を算出し、これでデータサイズの累積値を除することで送信レートを算出する。送信レート測定部３２０４は算出値をストリーム数決定部３２０６に出力した後で、累積値をゼロにリセットする。
【０１２２】
次にストリーム数決定部３２０６は、送信処理時間率算出部３２０５に送信処理時間率の取得依頼を出す。送信処理時間率算出部３２０５には送信処理時間の累積値が記憶されており、送信処理時間率算出部３２０５は取得依頼を受け取ると、送信処理時間率を算出する。送信処理時間率とは、ある時間間隔においてデータの送信処理に費やされた時間が占める割合のことである。まず前回取得時からの経過時間を算出し、これで送信処理時間の累積値を除することで送信処理時間率を算出する。送信処理時間率算出部３２０５は算出値をストリーム数決定部３２０６に出力した後で、累積値をゼロにリセットする。
【０１２３】
またストリーム数決定部３２０６は、現在使用しているＴＣＰストリーム数の値を第５分配部３２０２から取得する。
【０１２４】
以上のようにして、ストリーム数決定部３２０６は、ＴＣＰストリーム数、送信レート、送信処理時間率の各値を得る。以降、ＴＣＰストリーム数をＮ、そのときの送信レートをＳ、送信処理時間率をＲと記載する。ストリーム数決定部３２０６は、Ｎ，Ｓ，Ｒの値をもとに、次に使用するＴＣＰストリーム数Ｎｎｅｘｔの値を決定する。
【０１２５】
≪  決定処理の第一の例  ≫
ストリーム数の決定処理の第一の例を図１０を用いて説明する。始めにストリーム数決定部３２０６は、送信処理時間率Ｒが既定の閾値Ｒｔ（例えば０．９など）を上回るか否かを判断する（ステップＳ１１０１）。前述の通り、送信処理時間率Ｒは、サーバ装置３２の処理時間においてデータの送信処理に費やされた時間が占める割合を示す指標である。したがって、Ｒの値が大きい場合、サーバ装置３２の処理時間の多くが送信処理に費やされているとみなすことができる。このことは、つまり、送信部１０３（ＴＣＰストリーム）が十分なレートでのデータ送信が行えておらず、ＴＣＰストリーム数を増加させて並列の度合いを高くすることにより送信レートが向上する可能性があることを意味している。一方、Ｒの値が小さい場合、サーバ装置３２の処理時間のうち送信処理に費やされている時間は比較的小さいとみなすことができる。このことは、つまり、送信部１０３により達成可能なデータの送信レートよりも、データ供給部３２０１から供給されるデータのレート（データ入力レート）の方が小さいことを意味する。このとき、ＴＣＰストリーム数の値をこれ以上増加させたところで送信レートの向上は期待できない。したがって、本決定処理では、送信処理時間率Ｒが閾値Ｒｔを下回る場合は、次に用いるＴＣＰストリーム数Ｎｎｅｘｔの値を現在のＴＣＰストリーム数Ｎから変化させたところで送信レートの向上は見込めないため、現状と同じ値を使用するという方針をとる。
【０１２６】
ＲがＲｔを下回る場合、ＮｎｅｘｔはＮと同じ値を用いると決定し（ステップＳ１１０７）、決定処理は終了する。上回る場合、Ｎ，Ｓの値を次のように記憶する（ステップＳ１１０２）。ストリーム数決定部３２０６は図１１に示すテーブルを、記憶部３２０６１内に保持する。図１１は、図５のサーバ装置３２のストリーム数決定部３２０６の記憶部３２０６１が保持するテーブルの一例を示す図である。尚、記憶部３２０６１は、ストリーム数決定部３２０６内にあるとして説明するが、ストリーム数決定部３２０６の外にあっても良い。
【０１２７】
このテーブルは、ＮとＳの値の組がＮの昇順で記憶されている。さらにその序数が記憶されている。序数ｉ、ＴＣＰストリーム数Ｎ、送信レートＳの１つの組をエントリと呼ぶ。ストリーム数決定部３２０６は、始めに、取得したＮの値に等しいエントリがテーブルに存在するかを調べ、存在していれば、当該のエントリのＳの値を取得したＳの値で上書き更新する。存在していなければ、取得したＮとＳの値からなる新しいエントリを作成しテーブルに追加する。追加後のテーブルをＮに関してソートし、序数を付け直す。
【０１２８】
以上のように更新したテーブルを用いて、ストリーム数決定部３２０６はＮｎｅｘｔを以下の方針に従って決定する。通常、ＴＣＰストリーム数を増やしていけば送信レートは向上する。しかし、送信レートがネットワークの帯域の上限に達した場合は、それ以上増やしても送信レートは向上しない。そこで、テーブルの送信レートＳの値がＮに関し単調増加の傾向を示すなら、次に用いるＴＣＰストリーム数Ｎｎｅｘｔはテーブルに記憶されたストリーム数よりもさらに大きな値を選択する。もし単調増加の傾向を示さず、ある程度以上のＮでＳの増加が頭打ちに至るなら、それ以上Ｎの値を大きくとったところで効果はない。この場合は、頭打ちにいたるちょうどのＮの値をＮｎｅｘｔとして選択する。
【０１２９】
具体的には以下の手順を行う。始めに、序数ｉとして１を選択し（ステップＳ１１０３）、次のループ処理を行う。テーブルのエントリの個数（序数ｉの最大値）をｉｍａｘとし、ｉがｉｍａｘに等しければループを抜ける（ステップＳ１１０４）。序数ｉのエントリの送信レート（Ｓ［ｉ］と呼ぶ）と序数ｉ＋１のエントリの送信レート（Ｓ［ｉ＋１］と呼ぶ）の差と、規定の閾値Ｓｔとの大小を比較する（ステップＳ１１０５）。閾値Ｓｔは任意であってよく、例えば、そのときの序数ｉのエントリのＴＣＰストリーム数Ｎ［ｉ］と、序数ｉ＋１のエントリのＴＣＰストリーム数Ｎ［ｉ＋１］を用いて、Ｓｔ＝（Ｎ［ｉ＋１］−Ｎ［ｉ］）×４Ｍｂｐｓとする。差がＳｔを超えていれば、ｉの値を１インクリメントし（ステップＳ１１０６）ループの処理を継続する。Ｓｔを超えていなければ、そのときの序数ｉ＋１のエントリのＴＣＰストリーム数（Ｎ［ｉ＋１］と呼ぶ）のところで送信レートが頭打ちに至ると判断できるので、これ以上のＴＣＰストリーム数を増やしても効果はないと予期できる。そこで次のＴＣＰストリーム数Ｎｎｅｘｔは、序数ｉのエントリのＴＣＰストリーム数（Ｎ［ｉ］と呼ぶ）とＮ［ｉ＋１］との中間の値とする（ステップＳ１１０９）。一方、すべてのｉについてＳ［ｉ＋１］とＳ［ｉ］の差が閾値Ｓｔを超えていたならば、送信レートはＮに対し単調増加しているとみなすことができるため、Ｎｎｅｘｔは、テーブルで最大のＴＣＰストリーム数Ｎ［ｉｍａｘ］よりもさらに１増やした値とする（ステップＳ１１０８）。
【０１３０】
動作例を示す。いま、送信処理時間率Ｒの値が閾値Ｒｔを超えており、テーブルのエントリの更新が完了した状態であるとする。そのときのテーブルが図１１に示した状態であるとする。さらに、送信レートの差の閾値Ｓｔは（Ｎ［ｉ＋１］−Ｎ［ｉ］）×４Ｍｂｐｓと仮定する。始めに、Ｓ［１］とＳ［２］の差とＳｔとの大小が比較される。Ｎ［１］＝１、Ｎ［２］＝２、Ｓ［１］＝５Ｍｂｐｓ、Ｓ［２］＝１０Ｍｂｐｓであるため、Ｓ［２］−Ｓ［１］＝１０−５＝５Ｍｂｐｓ、Ｓｔ＝（２−１）×４＝４Ｍｂｐｓとなり、ステップＳ１１０５のＳ［ｉ＋１］−Ｓ［ｉ］＞Ｓｔ？の判定はＹＥＳとなる。次に、Ｓ［２］とＳ［３］の差とＳｔとの大小が比較される。Ｎ［２］＝２、Ｎ［３］＝４、Ｓ［２］＝１０Ｍｂｐｓ、Ｓ［３］＝１９Ｍｂｐｓであるため、Ｓ［３］−Ｓ［２］＝１９−１０＝９Ｍｂｐｓ、Ｓｔ＝（４−２）×４＝８Ｍｂｐｓとなり、ステップＳ１１０５の判定は再びＹＥＳとなる。次に、Ｓ［３］とＳ［４］の差とＳｔとの大小が比較される。Ｎ［３］＝４、Ｎ［４］＝６、Ｓ［３］＝１９Ｍｂｐｓ、Ｓ［４］＝２０Ｍｂｐｓであるため、Ｓ［４］−Ｓ［３］＝２０−１９＝１Ｍｂｐｓ、Ｓｔ＝（６−４）×４＝８Ｍｂｐｓとなり、ステップＳ１１０５の判定はＮＯとなる。処理はステップＳ１１０９に進み、このときのｉの値は３であることから、Ｎｎｅｘｔの値は、（Ｎ［３］＋Ｎ［４］）／２＝（４＋６）／２＝５と決定される。
【０１３１】
このように、送信処理時間率Ｒの値に加えて送信レートＳの値を利用して次のＴＣＰストリーム数Ｎの値を利用することで、Ｎの値をある値以上増加させても送信レート向上の効果がないといった状況においてもそれを適切に判断し、不要なＴＣＰストリーム数の増加を回避する。
【０１３２】
なお、本第１の例では、送信レートＳの値がＮに関し単調増加の傾向を示すか否かに応じてＮｎｅｘｔの決定方法を切り替えていたが、より細かな切り替えを行っても良い。例えばステップＳ１１０５の結果がＮＯだった場合、序数ｉの値が１だった場合は、Ｎｎｅｘｔの値をＮ［１］よりさらに小さな値にするという選択を行っても良い。
【０１３３】
また、テーブルにおいて、記憶後、規定時間以上が経過したエントリを削除する処理を追加してもよい。これにより、導入先ごとに異なるネットワーク３の環境や、時々刻々と変動するネットワーク３の状況に適応しながら適切なＴＣＰストリーム数を選択し続けることが可能になる。
【０１３４】
以上、決定処理の第一の例を説明した。
【０１３５】
≪  決定処理の第二の例  ≫
次に、決定処理の第二の例を図１２を用いて説明する。図１２は、ストリーム数の決定処理の第２の例のフローチャートを示す図である。
【０１３６】
ストリーム数決定部３２０６の記憶部３２０６１は、取得したＮ，Ｓ，Ｒの値を保持するためのテーブルを持つ。テーブルの例を図１３に示す。図１３は、図５のサーバ装置３２のストリーム数決定部３２０６の記憶部３２０６１が保持するテーブルの第２の例を示す図である。尚、記憶部３２０６１は、ストリーム数決定部３２０６内にあるとして説明するが、ストリーム数決定部３２０６の外にあっても良い。
【０１３７】
第一の例と異なり、第二の例では、Ｎ，Ｓに加えてＲの値を記憶する（ステップＳ１２０１）。ストリーム数決定部３２０６は、始めに、取得したＮの値に等しいエントリがテーブルに存在するかを調べ、存在していれば、当該のエントリのＳとＲの値を取得したＳとＲの値で上書き更新する。テーブルには、Ｎ，Ｓ，Ｒに加えて、ＳをＲで割った値をあわせて記憶される。存在していなければ、取得したＮ，Ｓ，Ｒの値からなる新しいエントリを作成しテーブルに追加する。追加後のテーブルをＮに関してソートし、序数を付け直す。
【０１３８】
送信処理時間率Ｒは、サーバ装置３２の処理時間においてデータの送信処理に費やされた時間が占める割合である。このときの送信レートがＳで与えられることから、Ｓ／Ｒの値は送信部１０３で達成可能な伝送レートの上限の近似値とみなすことができる。そこで、Ｓ／Ｒの値がＮに関し単調増加するか否かに応じて、次に用いるＴＣＰストリーム数Ｎｎｅｘｔの値を決定する。
【０１３９】
以降の決定処理は、第一の例のステップＳ１１０３以降を、Ｓ→Ｓ／Ｒと読み替えた手続きと同一である。序数ｉとして１から順に（ステップＳ１２０２〜Ｓ１２０５）、序数ｉのエントリのＳ［ｉ］／Ｒ［ｉ］と序数ｉ＋１のエントリのＳ［ｉ＋１］／Ｒ［ｉ＋１］との差と、規定の閾値（Ｓ／Ｒ）ｔとの大小を比較する。差が閾値（Ｓ／Ｒ）ｔを下回れば、そのときのｉを用いて、Ｎｎｅｘｔの値を（Ｎ［ｉ］＋Ｎ［ｉ＋１］）／２と定める。ｉｍａｘ未満の全てのｉについて差が（Ｓ／Ｒ）ｔを上回っていれば、Ｓ／ＲはＮに関し単調増加していると見なし、Ｎｎｅｘｔの値をＮ［ｉｍａｘ］より１大きな値とする。動作例は省略する。
【０１４０】
≪  決定処理の第三の例  ≫
決定処理の第三の例を図１４を用いて説明する。図１４は、ストリーム数の決定処理の第３の例のフローチャートを示す図である。
【０１４１】
ストリーム数決定部３２０６は、送信処理時間率Ｒが既定の閾値Ｒｔ（例えば０．９など）を上回るか否かを判断する（ステップＳ１３０１）。Ｒの値が閾値よりも小さい場合（ステップＳ１３０２）、決定処理の第一の例と同様の判断より、Ｎｎｅｘｔの値として、現状と同じＮの値を使用する。一方、閾値を上回る場合（ステップＳ１３０３）、サーバ装置３２の処理時間の多くが送信処理に費やされていることから、ＴＣＰストリーム数を増加させることにより送信レートに改善の可能性が見込める。よって、Ｎｎｅｘｔの値として、現状より大きなＮ＋１を使用する。動作例は省略する。
【０１４２】
以上のように本実施の形態によれば、伝送すべきデータの入力されるレートが時間によって変動する場合であっても、送信レートを確保しつつ、不要な処理負荷をもたらさない適切なＴＣＰストリーム数を決定することが可能になる。
【０１４３】
また、サーバ装置３２は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。すなわち、データ供給部３２０１と、第５分配部３２０２と、複数の送信部３２０３A〜３２０３Ｚと、送信レート測定部３２０４と、送信処理時間率算出部３２０５と、ストリーム数決定部３２０６とは、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現することができる。このとき、サーバ装置３２は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、ＣＤ−ＲＯＭなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現してもよい。
【０１４４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１４５】
１・・・クライアント装置３１・・・サーバ装置、３・・・ネットワーク、１００・・・データ供給部、１０１・・・確立指示部、１０２・・・第１分配部、１０３・・・第１の送信部、１０４・・・第２の送信部、１０５・・・確立部、１０６・・・確立部、１０７・・・第２分配部、２００・・・第１の受信部、２０１・・・第２の受信部、２０２・・・待受部、２０３・・・待受部、２０４・・・第１収集部、２０５・・・第２収集部、２０６・・・データ入出力部、１１０・・・データ供給部、１１１・・・確立指示部、１１２・・・第３収集部、１１３・・・第１の受信部、１１４・・・第２の受信部、１１５・・・確立部、１１６・・・確立部、１１７・・・第４収集部、２１０・・・第１の送信部、２１１・・・第２の送信部、２１２・・・待受部、２１３・・・待受部、２１４・・・第３分配部、２１５・・・待受部、２１６・・・第４分配部、２１７・・・データ入出力部、３１・・・クライアント装置、３２・・・サーバ装置、３１０１Ａ〜Ｚ・・・受信部、３１０２・・・結合部、３１０３・・・表示部、３２０１・・・データ供給部、３２０２・・・第５分配部、３２０３Ａ〜Ｚ・・・送信部、３２０４・・・送信レート測定部、３２０５・・・送信処理時間測定部、３２０６・・・ストリーム数決定部、３２０６１・・・記憶部。
【図１】
2014049995.tif 000003
【図２】
2014049995.tif 000004
【図３】
2014049995.tif 000005
【図４】
2014049995.tif 000006
【図５】
2014049995.tif 000007
【図６】
2014049995.tif 000008
【図７】
2014049995.tif 000009
【図８】
2014049995.tif 000010
【図９】
2014049995.tif 000011
【図１０】
2014049995.tif 000012
【図１１】
2014049995.tif 000013
【図１２】
2014049995.tif 000014
【図１３】
2014049995.tif 000015
【図１４】
2014049995.tif 000016