(57)【特許請求の範囲】
【請求項１】
複数のＴＣＰストリームを用いて、データを送信する送信部と、
前記送信部がデータ送信時に用いたＴＣＰストリーム数と当該ＴＣＰストリーム数を用いたデータ送信時に使用した帯域幅の最大値とを対応付けて記憶する記憶部と、
前記記憶部に記憶されたＴＣＰストリーム数及び前記帯域幅の最大値と帯域幅の目標値とに基づき、前記送信部が新たなデータ送信に用いるＴＣＰストリーム数を決定する決定部と、
前記決定部が決定したTCPストリーム数でのデータ送信に使用する帯域幅が、前記記憶部に記憶された前記決定部が決定したＴＣＰストリーム数に一致する前記ＴＣＰストリーム数に対応した帯域幅の最大値より大きい場合には、前記帯域幅の最大値を更新する制御部と、
を備えるサーバ。
【請求項２】
前記制御部は、前記決定部が決定したＴＣＰストリーム数に一致する前記TCPストリーム数が前記記憶部に記憶されていない場合には、前記決定部が決定したTCPストリーム数と前記決定部が決定したTCPストリーム数でのデータ送信に使用した帯域幅とを対応付けて前記記憶部に記憶する、請求項１記載のサーバ。
【請求項３】
前記送信部が送信するデータの量は、時間によって変動する請求項１に記載のサーバ。
【請求項４】
前記送信部が送信するデータは、ネットワークを介して接続されたクライアント端末が表示する画面情報を更新する情報である請求項３記載のサーバ。
【請求項５】
前記決定部は、前記記憶部に記憶された前記ＴＣＰストリーム数及び前記帯域幅の最大値に基づいて、前記ＴＣＰストリーム数についてＴＣＰストリーム１つあたりの帯域幅を算出し、前記帯域幅の目標値と、前記１つあたりの帯域幅との比から、前記送信部が新たなデータ送信に用いるＴＣＰストリーム数を決定する請求項１記載のサーバ。
【請求項６】
前記決定部は、前記帯域幅の目標値と、前記記憶部に記憶された、帯域幅の最大値とを比較し、前記帯域幅の目標値に最も近い帯域幅の最大値と対応付けて記憶されたＴＣＰストリーム数を、前記送信部が新たなデータ送信に用いるＴＣＰストリーム数と決定する請求項１記載のサーバ。
【請求項７】
前記決定部は、前記帯域幅の目標値と、前記１つあたりの帯域幅との比を四捨五入した値を、前記送信部が新たなデータ送信に用いるＴＣＰストリーム数と決定する請求項５記載のサーバ。
【請求項８】
前記決定部は、前記帯域幅の目標値と、前記１つあたりの帯域幅との比を小数点以下切捨した値を、前記送信部が新たなデータ送信に用いるＴＣＰストリーム数と決定する請求項５記載のサーバ。
【請求項９】
前記決定部は、前記帯域幅の目標値と、前記１つあたりの帯域幅との比を小数点以下切上した値を、前記送信部が新たなデータ送信に用いるＴＣＰストリーム数と決定する請求項５記載のサーバ。
【請求項１０】
前記記憶部に記憶された、前記送信部がデータ送信時に用いたＴＣＰストリーム数と、
当該ＴＣＰストリーム数を用いたデータ送信時に使用した帯域幅の最大値との組について、以前、前記制御部による前記更新を行った時刻から所定時間以上経過した場合に、当該所定時間以上経過した組を前記記憶部から削除する請求項１記載のサーバ。
【請求項１１】
複数のＴＣＰストリームを用いて、データを送信する送信部と、
前記送信部がデータ送信時に用いたＴＣＰストリーム数と当該ＴＣＰストリーム数を用いたデータ送信時に使用した帯域幅の最大値とを対応付けて記憶する記憶部とを備えるサーバを制御する方法であって、
前記記憶部に記憶されたＴＣＰストリーム数及び前記帯域幅の最大値と帯域幅の目標値とに基づき、前記送信部が新たにデータ送信に用いるＴＣＰストリーム数を決定する決定ステップと、
前記決定ステップで決定したTCPストリーム数でのデータ送信に使用する帯域幅が、前記記憶部に記憶された前記決定ステップで決定したＴＣＰストリーム数に一致する前記ＴＣＰストリーム数に対応した帯域幅の最大値より大きい場合には、前記帯域幅の最大値を更新する制御ステップと、
を備えるサーバ制御方法。
【請求項１２】
複数のＴＣＰストリームを用いて、データを送信する送信部と、
前記送信部がデータ送信時に用いたＴＣＰストリーム数と当該ＴＣＰストリーム数を用いたデータ送信時に使用した帯域幅の最大値とを対応付けて記憶する記憶部とを備えるサーバを制御するプログラムであって、
前記記憶部に記憶されたＴＣＰストリーム数及び前記帯域幅の最大値と帯域幅の目標値とに基づき、前記送信部が新たにデータ送信に用いるＴＣＰストリーム数を決定する決定機能と、
前記決定機能で決定したTCPストリーム数でのデータ送信に使用する帯域幅が、前記記憶部に記憶された前記決定機能で決定したＴＣＰストリーム数に一致する前記ＴＣＰストリーム数に対応した帯域幅の最大値より大きい場合には、前記帯域幅の最大値を更新する制御機能と、
を備えるサーバ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、サーバに関する。
【背景技術】
【０００２】
ネットワークを介して接続されたサーバからクライアント端末に対してサーバの画面の
情報をリアルタイムで配信する「画面転送システム」がある。本システムは、例えば遠隔
監視システムなどへの応用が期待される。
【０００３】
画面転送システムでは、伝送プロトコルにＴＣＰ／ＩＰを利用するものが多い。伝送プ
ロトコルにＴＣＰ／ＩＰを用いてデータを送信する場合、サーバは、ＴＣＰ層において、
ＴＣＰストリームを用いてデータの伝送レート（通信帯域幅）の制御を行いながら、ＩＰ
層にデータを渡し、ＩＰ層がネットワークにデータを送出する。
【０００４】
従来から、サーバとクライアント端末との間でＴＣＰストリームを複数本確立し、画面
の情報を複数のデータに分割して、分割したデータを並列的に伝送するという手法が用い
られることがある。複数のＴＣＰストリームを用いると、データの伝送レート（通信帯域
幅）を向上することができる。
【０００５】
また、画面転送システムにおいては、サーバが保持する画面領域において描画状態に変
化が生じるごとに、その差分となる情報（画面更新と称する。）のみを変化が生じた領域
の情報とともに配信する場合がある。
【０００６】
複数のＴＣＰストリームで画面更新を伝送する画面転送システムにおいて、利用可能な
通信帯域幅が割り当てられたときに、最適なＴＣＰストリーム数を決定することが求めら
れる。最適なＴＣＰストリーム数とは、そのＴＣＰストリーム数であれば、割り当てられ
た通信帯域幅を充足することができ、かつ、割り当てられた帯域を満たすために最小限必
要なＴＣＰストリーム数のことである。このように、ＴＣＰストリーム数を、最適な数と
することで、所定の画面転送の品質（描画コマ数など）を提供でき、かつ、同じ通信路を
共有する他のアプリケーションの動作に影響を及ばさないことができる。
【０００７】
通信帯域幅は、ＴＣＰストリーム数に応じて上限が決まっている。したがって、ＴＣＰ
ストリーム数に応じた通信帯域幅の上限を求め、その上限が、割り当てられた通信帯域幅
を最初に上回るＴＣＰストリーム数を最適なＴＣＰストリーム数とすることができる。
【０００８】
従来、複数のＴＣＰストリームで画面更新を伝送する画面転送システムにおいては、上
述した最適なＴＣＰストリーム数を決定する方法が開示されていない。
【０００９】
特に、画面更新は、画面変化に応じて、データ量が変動する。したがって、ある数のＴ
ＣＰストリームを用いて、画面更新を送信した場合に、通信帯域を測定した場合に、測定
した通信帯域幅が、そのＴＣＰストリーム数における上限値であるのか、上限値を下回る
値なのかを判断することができない。特に、画面更新のような、データ変動量が大きいデ
ータを伝送する場合、測定した通信帯域は、ＴＣＰストリームの数の上限値と大きく離れ
た値の可能性もある。
【００１０】
したがって、複数のＴＣＰストリームで画面更新を伝送する画面行使システムにおいて
、ＴＣＰストリーム数に応じた通信帯域幅の上限値を算出することが困難であった。その
結果、最適なＴＣＰストリーム数を求めることも困難であった。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０１０−５６９９０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明の一側面は、割り当てられた帯域を充足することができ、かつ、割り当てられた
帯域を充足するために最小限必要なＴＣＰストリーム数を算出可能なサーバを提供するこ
とを目的とする。
【課題を解決するための手段】
【００１３】
本発明の一観点にかかるサーバは、複数のＴＣＰストリームを用いて、データを送信す
る送信部と、前記送信部がデータ送信時に用いたＴＣＰストリーム数と当該ＴＣＰストリ
ーム数を用いたデータ送信時に使用した帯域幅の最大値とを対応付けて記憶する記憶部と
、前記記憶部に記憶されたＴＣＰストリーム数及び前記帯域幅の最大値と帯域幅の目標値
とに基づき、前記送信部が新たなデータ送信に用いるＴＣＰストリーム数を決定する決定
部と、前記決定部が決定したTCPストリーム数でのデータ送信に使用する帯域幅が、前記
記憶部に記憶された前記決定部が決定したＴＣＰストリーム数に一致する前記ＴＣＰスト
リーム数に対応した帯域幅の最大値より大きい場合には、前記帯域幅の最大値を更新する
制御部と、を備える。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態にかかる画面転送システムを示すブロック図である。
【図２】画面更新の一例を示す図である。
【図３】領域情報を説明する図である。
【図４】画面転送システムのサーバの送信処理を説明する図。
【図５】サーバ１の記憶部１０５が保持する情報の例を示す図。
【図６】サーバ１の判断部１０３の判断処理の流れを説明する図である。
【図７】記憶部１０５が更新される様子を示す第１の図。
【図８】記憶部１０５が更新される様子を示す第２の図。
【図９】記憶部１０５が更新される様子を示す第３の図。
【図１０】記憶部１０５が更新される様子を示す第４の図。
【図１１】記憶部１０５が更新される様子を示す第５の図。
【図１２】記憶部１０５が更新される様子を示す第６の図。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について、図面を参照しながら説明する。尚、各図において
同一箇所については同一の符号を付すとともに、重複した説明は省略する。
【００１６】
＜第１の実施形態＞
図１は、本発明の実施形態の画面転送システムの構成を示すブロック図である。
【００１７】
本発明の実施形態の画面転送システムは、サーバとして機能する情報処理端末（サーバ
１）と、クライアントとして機能する情報処理端末（クライアント端末２）とが、ネット
ワーク３を介して接続されている。本実施例では、ネットワーク３はＩＰネットワークで
あるとする。
【００１８】
次に、サーバ１の構成を説明する。
【００１９】
生成部１００は、画面更新の生成を行う。生成部１００は、画面領域全体の画面情報を
保持するための記憶領域（フレームバッファ）を有している。そして、生成部１００は、
サーバ１でのオペレーティングシステムやアプリケーションの実行状態に応じて記憶領域
の状態を書き換え、最新の画面情報が記憶された状態を保持する。そして、生成部１００
は、定期的なタイミングで画面更新の出力を行う。ここで、画面更新とは、前回出力時点
と現時点との画面情報の差分を表す情報である。図２に、画面更新の例を示す。画面更新
は、画面領域全体における領域の位置を表す領域情報と、対応する領域の更新後の画像情
報からなる。領域情報は、画面領域における画像情報の表示位置を示す数値である。図３
は、領域情報を説明する図である。例えば図３に示すように、画面領域の左上角を（０，
０）、右下角を（Ｗｉｄｔｈ，Ｈｅｉｇｈｔ）としたときの、表示位置の左上座標（Ｌｅ
ｆｔ，Ｔｏｐ）と右下座標（Ｒｉｇｈｔ，Ｂｏｔｔｏｍ）からなる矩形情報で示される。
画像情報は、領域情報に対応する領域の更新後のビットマップデータ（矩形の各画素にお
けるＲＧＢ３色の値など）である。生成部１００は、最新の画面情報に加えて前回出力時
の画面情報を保持しており、定期的なタイミングでこれらの差分を抽出し、これを画面更
新として圧縮部１０１へ出力する。
【００２０】
圧縮部１０１は、画面更新の圧縮処理を行う。画面更新に含まれる画像情報に対し、Ｚ
ＬＩＢやＪＰＥＧ等の圧縮処理を施す。
【００２１】
送信部１０２は、画面更新の送信処理を行う。入力された画面更新をネットワーク３上
において伝送可能な形式に変換して、クライアント端末２に対し送信する。伝送プロトコ
ルにはＴＣＰ／ＩＰを使用する。また、送信部１０２は、クライアント端末２との間でＴ
ＣＰストリームを複数本確立する。送信部１０２は、画面更新の送信の必要が生じると、
画面更新を適当なサイズに分割した上で、各分割に対し順序を表す番号を付与し、各スト
リームを用いて並列的に送信する。この際、後述する決定部１０５が決定する数のＴＣＰ
ストリームを用いて送信処理を行う。使用するＴＣＰストリームの数は、決定部１０５の
決定により動的に変更される。尚、ＴＣＰストリームの数の初期値は、適当な値を外部か
ら設定する。また送信部１０２は、自身の使用帯域（データ送信レート）を算出すること
が可能である。例えば最近の５秒間における使用帯域を算出し、外部からの要求に応じて
出力することができる。
【００２２】
判断部１０３は、現在、送信部１０２が用いているＴＣＰストリーム数に対する使用帯
域の量が、記憶部１０４に記憶された、当該ＴＣＰストリーム数に対応づけて記憶された
使用帯域の量を上回るか否かを判断する。判断部１０３は、上回ると判断した場合に、記
憶部１０４に記憶された使用帯域の量を、現在、送信部１０２が用いている使用帯域の量
に上書き更新する。また記憶部１０４に記憶された情報が一定時間以上経過した古い情報
であると判断した場合に、当該の情報を削除するよう指示を出す。判断部１０３は、任意
のタイミング又は定期的に、上述の判断及び判断に応じた記憶部１０４の更新を行う。
【００２３】
記憶部１０４は、送信部１０２が用いたＴＣＰストリーム数と、当該のＴＣＰストリー
ム数を用いたときの使用帯域の最大値の組を記憶する。併せて、使用帯域の最大値を記憶
した時刻を記憶する。使用帯域の最大値は、判断部１０３の判断処理毎に、更新される。
後述するように、送信部１０２が用いるＴＣＰストリーム数は、決定部１０５の決定によ
り変動する。記憶部１０４は、ＴＣＰストリーム数が変動する毎に、当該ＴＣＰストリー
ム数を用いたときの仕用帯域の値とともに、記憶内容を更新する。
【００２４】
決定部１０５は、記憶部１０４に記憶されたＴＣＰストリーム数と使用帯域の最大値の
組を参照して、送信部１０２が用いるＴＣＰストリーム数を決定する。そして、決定した
ＴＣＰストリーム数を送信部１０２に通知し、当該ＴＣＰストリーム数で送信処理を行う
よう指示する。ここで、決定部１０５は、送信部１０２が用いるＴＣＰストリーム数とし
て、最適なＴＣＰストリーム数と判断するＴＣＰストリーム数を決定する。このＴＣＰス
トリーム数の決定方法については、後述する。ここで、最適なＴＣＰストリーム数とは、
割り当てられた帯域を満たすために必要であり、かつ最低限必要となるＴＣＰストリーム
数のことである。送信部１０２は、決定部１０５が決定した最適なＴＣＰストリーム数の
ＴＣＰストリームを用いて前述した送信処理を行う。尚、前述したとおり、送信部１０２
が、決定部１０５が決定したＴＣＰストリーム数（最適なＴＣＰストリーム数）を用いて
、送信処理を実行した場合の、使用帯域幅を測定し、測定結果が、記憶部１０４に記憶さ
れた使用帯域幅を上回った場合に、記憶部１０４に記憶された使用帯域幅の最大値を更新
する。
【００２５】
次に、クライアント端末２の構成を説明する。
【００２６】
受信部２０１は、ネットワーク３を介してサーバ１から画面更新を受信する。
【００２７】
伸張部２０２は、画面更新に含まれる圧縮された画像情報に対して伸張処理を施す。
【００２８】
表示部２０３は、画面領域全体の画面情報を格納するための記憶領域（フレームバッフ
ァ）を有しており、画面更新を受け取ると、領域情報が示す記憶領域上の情報を画像情報
で上書き更新する。ユーザに対し画面情報を視覚的に提示する。
【００２９】
≪画面転送システムより行われる処理≫
次に、本実施形態に係る画面転送システムにより行われる処理について、図面を適宜参
照しながら説明する。
【００３０】
≪画面転送の開始直後の動作≫
まず、画面転送の開始直後の動作を説明する。
【００３１】
画面転送の実行の開始は、サーバ１のユーザから指示される。ユーザはＧＵＩ等を通じ
て、サーバ１に接続先のクライアント端末２のＩＰアドレスを入力する。入力された情報
は送信部１０２へ通知される。送信部１０２は当該のＩＰアドレスの端末との間で、既定
の数のＴＣＰストリームの確立を行う。以下では既定の数として３２を使用する。さらに
送信部１０２は、受信部２０１との間で、確立したＴＣＰストリームのうち、いくつのＴ
ＣＰストリームを使って画面更新の送信を行うか（ＴＣＰストリーム数の初期値）をネゴ
シエーションする。ネゴシエーションは任意の方法に従ってよい。本実施例ではネゴシエ
ーションの結果、初期のＴＣＰストリーム数として１を固定的に用いるものとする。以降
、送信部１０２が使用するＴＣＰストリーム数は、任意のタイミングで変更可能である。
ＴＣＰストリーム数は送信部１０２において保持される。
【００３２】
≪画面更新の送信〜表示までの動作≫
次に、サーバ１が、クライアント端末２に対して、画面更新を送ってから、クライアン
ト端末２が、画面更新を表示するまでの動作を説明する。
【００３３】
画面転送の実行が開始されると、生成部１００は、サーバ１のオペレーティングやアプ
リケーションの実行状態に応じてフレームバッファの状態を更新する。さらに、生成部１
００は、定期的なタイミング（例えば５０ミリ秒ごと）で、圧縮部１０１に対し、現在圧
縮処理が実行可能か否かを問い合わせる。実行可能でない場合は何もしない。実行可能で
ある場合は、以下に示す画面更新の生成処理を行う。生成部１００は、前回画面更新取得
を行った際のフレームバッファの状態を別途保持している。この保持のための記憶領域を
画面更新取得用バッファと呼ぶ。生成部１００は、フレームバッファと画面更新取得用バ
ッファの画面情報を比較し、差分がある部分の領域情報と、その領域の画像情報を取り出
す。そして領域情報と画像情報を用いて画面更新を生成する。画面更新の例は図２で既に
示した通りである。画面更新の作成が完了すると、生成部１００は画面更新取得用バッフ
ァの内容をフレームバッファの内容で上書き更新し、取得した画面更新を圧縮部１０１に
渡す。
【００３４】
圧縮部１０１は生成部１００から画面更新を受け取ると、その画面更新に含まれる画像
情報に圧縮処理を施す。圧縮部１０１は、圧縮処理が完了すると、送信部１０２に対し、
現在送信処理が実行可能か否かを問い合わせる。実行可能でない場合はしばらく待機した
後に再度問い合わせる。実行可能である場合は、圧縮後の画面更新を送信部１０２に渡し
送信を依頼する。
【００３５】
また圧縮部１０１は、生成部１００から圧縮処理が実行可能か否かの問い合わせを受け
ると、圧縮処理の実行中であれば不可と回答し、そうでなければ可と回答する。
【００３６】
送信部１０２は画面更新を受け取ると送信処理を施す。図４は、送信部１０２の送信処
理を説明する図である。送信処理は、送信部１０２が保持するＴＣＰストリーム数の値に
基づいて行われる。始めに送信部１０２は、図４に示すように、画面更新のデータを任意
のサイズ（例えば１０００バイト）に分割する。さらに各々の分割に順序番号を付与する
。順序番号とは、受信部２０１において各分割を結合して元の画面更新のデータを得るた
めに必要な情報であり、例えば１から始まる分割の通し番号や、あるいはデータ先頭から
のオフセットのバイト数などである。順序番号が付与された後で、各分割は複数のＴＣＰ
ストリームに振り分ける。図４は、ＴＣＰストリーム数が２の場合の例を示している。奇
数番目の分割は１番目のストリームへ、偶数番目の分割は２番目のストリームへ振り分け
られている。各ストリームは、振り分けられた各分割にＴＣＰ／ＩＰの各ヘッダを付与し
た上でクライアント端末２に向けてネットワーク３へ送出する。
【００３７】
また送信部１０２は、使用帯域（単位：Ｍｂｐｓ）を算出し保持する。算出は任意の方
法に従って行われる。例えば、過去５秒間に送出されたデータサイズを保持しておき、こ
れを５秒で割った値を使用帯域とする。送信部１０２は、判断部１０３から要求を受け取
るごとに、現在の使用帯域、および現在用いているＴＣＰストリーム数を回答する。
【００３８】
また送信部１０２は、圧縮部１０１から送信処理が実行可能か否かの問い合わせを受け
ると、送信処理の実行中であれば不可と回答し、そうでなければ可と回答する。
【００３９】
クライアント端末２の受信部２０１はサーバ１から複数のＴＣＰストリームを通じて各
分割を受信する。受信部２０１は受信データからＴＣＰ／ＩＰの各ヘッダを除去し、さら
に付与された順序番号に基づいて結合を行い、画面更新のデータを再構成する。順序番号
は除去される。受信部２０１は再構成された画面更新を伸張部２０２に渡し、伸張を依頼
する。
【００４０】
伸張部２０２は画面更新を受け取るとその画面更新に含まれる画像情報に伸張処理を施
す。伸張部２０２は伸張処置が完了すると、画面更新を表示部２０３に渡し、表示を依頼
する。表示部２０３は画面領域全体の画面情報を保持する記憶領域を有しており、画面更
新の領域情報が示す領域の情報を、伸張後の画像情報で上書き更新する。表示部２０３の
状態はユーザに視覚的に提示される。
【００４１】
以上、画面更新の生成から表示までの処理の流れについて説明した。
【００４２】
≪判断処理≫
次に、判断部１０３の判断処理を説明する。判断部１０３は、任意のタイミング（例え
ば５秒間隔）で判断処理を開始する。図６は、判断部１０３の判断処理の流れを説明する
図である。
【００４３】
始めに判断部１０３は、記憶部１０４から全てのエントリの取得を行う。記憶部１０４
は、図５に示すテーブルを保持している。このテーブルは、ＴＣＰストリーム数Ｎと使用
帯域の最大値、直近に値の更新を行った時刻を記憶する。次に判断部１０３は、現在時刻
を取得し、各エントリのタイムスタンプの値との比較を行う。もし現在時刻よりも規定時
間（例えば３０秒）以上が経過したタイムスタンプの値が存在すれば、そのようなエント
リは古すぎると判断し、記憶部１０４から削除を行う（ステップＳ１００１）。
【００４４】
次に判断部１０３は、送信部１０２に対し、現在使用しているＴＣＰストリーム数の値
と、現在の使用帯域の値の組の取得を要求する。判断部１０３は、値を得ると、次に、判
断部１０３は、記憶部１０４から得たエントリの中に、送信部１０２から得たＴＣＰスト
リーム数と等しい値を持つエントリが存在するかを調べる（ステップＳ１００２）。存在
しなければ、判断部１０３は記憶部１０４に、当該のＴＣＰストリーム数、使用帯域、現
在時刻を記憶させる（ステップＳ１００３）。一方、送信部１０２から得たＴＣＰストリ
ーム数と等しい値を持つエントリが存在していれば、当該のエントリの、使用帯域の最大
値とタイムスタンプの値の組み合わせを判断部１０３に出力する。存在しなければ、その
旨を判断部１０３に通知する。
【００４５】
判断部１０３は、記憶部１０４のエントリから、対応する使用帯域の最大値とタイムス
タンプの値の組み合わせを得ることができた場合、送信部１０２から得た使用帯域と、記
憶部１０４から得た使用帯域とを比較する（ステップＳ１００３）。このとき、送信部１
０２から得た使用帯域が、記憶部１０４から得た使用帯域を上回っていれば、記憶部１０
４のエントリの使用帯域の値を更新する。一方、上回っていなければ、エントリの使用帯
域の値を更新しない。
【００４６】
以上の処理が、時間の経過とともに繰り返し実行され、記憶部１０４には、ＴＣＰスト
リーム数と使用帯域の最大値の組み合わせとが、更新を行った時刻とともに記憶される。
さらに規定時間以上経過したエントリは適宜消去されることになる。
【００４７】
≪決定処理≫
次に、決定部１０５の決定処理を説明する。決定部１０５は、任意のタイミング（例え
ば５秒間隔）で決定処理を開始する。あるいは、判断部１０３の判断処理が終了するごと
に判断部１０３が決定部１０５に決定処理の開始を依頼してもよい。
【００４８】
決定部１０５は内部に、使用帯域の目標値を有している。この値は決定部１０５に静的
に埋め込まれた値であってもよいし、ＧＵＩを通じてユーザが指定する値であってもよい
。また外部から適宜異なる値に書き換えられるものであってもよい。
【００４９】
決定部１０５は、以下に述べる手続きによって、送信部１０２が行うデータ送信の使用
帯域がこの目標値にもっとも近くなるよう、使用すべき最適なＴＣＰストリーム数の値を
決定する。
【００５０】
以降、説明のため、決定部１０５が有する使用帯域の目標値をＢｓと書く。また記憶部
１０４が有する情報のうち、ＴＣＰストリーム数をＮ、使用帯域幅の最大値をＢｍと書く
。
【００５１】
決定部１０５は記憶部１０４から全てのエントリの取得を要求する。得られた情報から
、決定部１０５は始めに、目標値Ｂｓを超えるようなＢｍのうちで最も値が小さいものを
選択する。そのようなＢｍをＢｍａｘ、Ｂｍａｘと対応付けて記憶されたＴＣＰストリー
ム数をＮｍａｘとして説明する。もし、Ｂｓを超えるようなＢｍが存在しない場合は、最
もＢｍの値が大きいものをＢｍａｘ、そのときのＴＣＰストリーム数をＮｍａｘとする。
【００５２】
次に、決定部１０５は、ＢｍａｘとＮｍａｘを用いて、使用すべき最適なＴＣＰストリ
ーム数の値をＲｏｕｎｄ（Ｂｓ÷Ｂｍａｘ×Ｎｍａｘ）と算出する。ここでＲｏｕｎｄは
整数値への四捨五入を行う関数である。つまり、ＴＣＰストリーム１本あたりが使用する
帯域幅を単純にＢｍａｘ÷Ｎｍａｘと見なした上で、目標とする使用帯域Ｂｓを（Ｂｍａ
ｘ÷Ｎｍａｘ）で割ることで、最適なＴＣＰストリームの本数を算出する。
【００５３】
なお、ＢｍａｘおよびＮｍａｘの選択は上述のやり方に限らない。例えば、Ｂｓを超え
ないＢｍのうちで最も値が大きいものをＢｍａｘとして選択してもよい。あるいはＢｓと
Ｂｍの差の絶対値が最小となるものを選択してもよい。このように、目標値（Ｂｓ）に近
いＢｍをＢｍａｘとして選んで最適なＴＣＰストリーム数を決定することで、以降の使用
帯域をＢｓにより近付けるという効果が期待できる。この効果は、使用するＴＣＰストリ
ーム数と、このとき利用可能な帯域の上限値とが非線形に関係する場合において顕著であ
る。
【００５４】
また、最適なＴＣＰストリーム数の値は上記以外の算出方法に依ってもよい。例えば四
捨五入を行うＲｏｕｎｄ関数の代わりに、小数点以下を切り捨てるＦｌｏｏｒ関数や、切
り上げを行うＣｅｉｌ関数を用いてもよい。小数点以下を切り捨てる場合は、実際の使用
帯域がＢｓを下回るであろうＴＣＰストリーム数を選択することになる。このような算出
方法は、特に、同じ通信路を共有する他のアプリケーションの動作に影響をできるだけ及
ぼしたくない状況において効果的である。また、小数点以下を切り上げる場合は、実際の
使用帯域がＢｓを上回るであろうＴＣＰストリーム数を選択することになる。このような
算出方法は、特に、所定の画面転送の品質（描画コマ数など）をできるだけ保証したい状
況において効果的である。
【００５５】
また、以上の例では、ＴＣＰストリーム１本あたりが使用する帯域幅を算出してから最
適なＴＣＰストリーム数を決定していたが、必ずしもこのやり方に限る必要はない。例え
ば、決定部１０５は、記憶部１０４から得たエントリを調べて、Ｂｍの値がちょうどＢｓ
となるエントリが存在した場合に、そのようなＢｍに対するストリーム数Ｎの値を最適な
ＴＣＰストリーム数として決定してもよい。あるいは、閾値Ｔｈを有した上で、Ｂｍの値
とＢｓとの差がＴｈ以内となるようなエントリが存在する場合には、そのようなＢｍに対
するストリーム数Ｎの値を最適なＴＣＰストリーム数として決定してもよい。
【００５６】
決定部１０５は決定した値を送信部１０２に出力し、ＴＣＰストリーム数の適用を依頼
する。送信部１０２は指定されたＴＣＰストリーム数を反映させる。
【００５７】
≪判断部１０３の判断処理と決定部１０５の決定処理の具体例≫
次に、決定部１０５が、最適なＴＣＰストリーム数を決定する際に実行する計算例を示
す。以下では、画面転送開始から、時刻１０００００、１０５０００、１１００００、１
１５０００、１２００００において、判断部１０３の処理によって記憶部１０５が更新さ
れ、更新された情報をもとに決定部１０５が決定処理を行う例を説明する。図７〜図１２
は、時間の経過とともに記憶部１０５が更新される様子を示す第１〜第６の図である。
【００５８】
ここで、決定部１０５に格納された目標値Ｂｓの値は２５Ｍｂｐｓであるとする。画面
転送の開始直後は、図７に示すように、記憶部１０４に何も情報が記憶されていない状態
とする。その後、時刻１０００００に判断部１０３において判断処理が実行され、結果、
図８に示すように記憶部１０４の状態が更新されたと仮定する。さらにその後、決定部１
０５において決定処理が開始されたとする。このとき、決定部１０５は、Ｂｍａｘとして
８Ｍｂｐｓ、Ｎｍａｘとして１を選択する。ここから、最適なＴＣＰストリーム数をＲｏ
ｕｎｄ（２５÷８×１）＝Ｒｏｕｎｄ（３．１２５）＝３と算出する。送信部１０２にＴ
ＣＰストリーム数として３が通知され、以降、送信部１０２は３本のＴＣＰストリームを
用いて画面更新の送信を行うようにする。
【００５９】
次に、時刻１０５０００に、再び判断部１０３において判断処理が実行されたとする。
送信部１０２から得られたＮとＢｍの組み合わせはＮ＝３とＢｍ＝９Ｍｂｐｓであったと
仮定する。この情報が記憶部１０４に記憶された直後の様子を図９にしめす。さらにその
後、決定部１０５において決定処理が開始されたとする。決定部１０５はＢｍａｘ＝９Ｍ
ｂｐｓ、Ｎｍａｘ＝３を選択する。そして最適なＴＣＰストリーム数としてＲｏｕｎｄ（
２５÷９×３）＝Ｒｏｕｎｄ（８．３３３）＝８と決定する。以降、送信部１０２は８本
のＴＣＰストリームを用いる。
【００６０】
次に、時刻１１００００に、再び判断部１０３において判断処理が実行されたとする。
送信部１０２から得られたＮとＢｍの組み合わせはＮ＝８とＢｍ＝８Ｍｂｐｓであったと
仮定する。この情報が記憶部１０４に記憶された直後の様子を図１０にしめす。さらにそ
の後、決定部１０５において決定処理が開始されたとする。決定部１０５はＢｍａｘ＝９
Ｍｂｐｓ、Ｎｍａｘ＝３を選択する。（Ｂｓを超えるＢｍが存在しない場合、最もＢｍの
値が大きいものをＢｍａｘとすることに注意。）最適なＴＣＰストリーム数は引き続き８
が決定される。
【００６１】
次に、時刻１１５０００に、再び判断部１０３において判断処理が実行されたとする。
送信部１０２から得られたＮとＢｍの組み合わせはＮ＝８とＢｍ＝２８Ｍｂｐｓであった
と仮定する。この情報が記憶部１０４に記憶された直後の様子を図１１にしめす。（Ｎ＝
８に対するＢｍの値がより大きな２８Ｍｂｐｓで更新されていることに注意。）さらにそ
の後、決定部１０５において決定処理が開始されたとする。決定部１０５はＢｍａｘ＝２
８Ｍｂｐｓ、Ｎｍａｘ＝８を選択する。そして最適なＴＣＰストリーム数としてＲｏｕｎ
ｄ（２５÷２８×８）＝Ｒｏｕｎｄ（７．１４３）＝７と決定する。以降、送信部１０２
は７本のＴＣＰストリームを用いる。
【００６２】
次に、時刻１２００００に、再び判断部１０３において判断処理が実行されたとする。
送信部１０２から得られたＮとＢｍの組み合わせはＮ＝７とＢｍ＝２６Ｍｂｐｓであった
と仮定する。この情報が記憶部１０４に記憶された直後の様子を図１２にしめす。さらに
その後、決定部１０５において決定処理が開始されたとする。決定部１０５はＢｍａｘ＝
２６Ｍｂｐｓ、Ｎｍａｘ＝７を選択する。（Ｂｓを超えるＢｍが存在する場合、Ｂｍのう
ちで最も値が小さいものをＢｍａｘとすることに注意。）そして最適なＴＣＰストリーム
数としてＲｏｕｎｄ（２５÷２６×７）＝Ｒｏｕｎｄ（６．７３１）＝７と決定する。以
降、送信部１０２は７本のＴＣＰストリームを用いる。
【００６３】
以降、同様の手続きを繰り返す。
【００６４】
この判断部１０３の判断処理を時間の経過とともに、繰り返し実行することで、記憶部
１０４が記憶するＴＣＰストリーム数（Ｎ）毎に、送信部１０２が用いた使用帯域の最大
値（Ｂｍ）を更新しつづけることができる。（例えば、図１０において、ＴＣＰストリー
ム数が８の場合、使用帯域の最大値を８から２８に更新している。）その結果、決定部１
０５は、上記決定処理を、ＴＣＰストリーム数（Ｎ）毎に、過去、送信部１０２が用いた
使用帯域の最大値をもとに、決定処理を行うことができる。
【００６５】
以上のように本実施の形態では、あるＴＣＰストリーム数を用いたときの使用帯域の最
大値を記憶し、これを利用して最適なＴＣＰストリーム数を決定する。画面転送のような
データ伝送では、画面情報に変化があったときにのみ送信すべきデータが発生する。本実
施の形態により、過去用いた使用帯域の最大値を用いてＴＣＰストリーム数を決定するた
め、送信すべきデータの発生が少ない期間に測定した使用帯域の値を除外して最適なＴＣ
Ｐストリーム数の決定が行われる。これにより、ＴＣＰストリーム数を適切に決定するこ
とが可能になる。
【００６６】
さらに、本実施例では、最適なＴＣＰストリーム数を決定する手順を繰り返し実行し、
送信に用いるＴＣＰストリーム数を更新している。これにより、実際の使用帯域を目標値
に近付けることを可能にしている。また、画面転送の実行の最中に使用帯域の目標値が変
化した場合であっても、ＴＣＰストリーム数を変化に追従して調整することが可能になる
。
【００６７】
さらに、本実施例では、ＴＣＰストリーム１本あたりが使用する帯域幅を算出しこれに
基づいてＴＣＰストリーム数を決定している。これにより、ＴＣＰストリーム数を１ずつ
変化させる等といった方法と異なり、実際の使用帯域が目標値の近くに到達するまでの時
間を短縮することを可能にしている。
【００６８】
さらに、本実施例では、規定時間以上が経過したエントリを削除するという手続きを行
っている。これにより、使用帯域の古過ぎる測定結果を、最適なＴＣＰストリーム数の決
定材料から除外できる効果が期待できる。これは、画面更新の発生パターンが時々刻々と
変化する画面転送において特に効果的である。
【００６９】
なお、本実施例では、ＴＣＰストリーム数の初期値を決定する際に、１という値を固定
的に使用したが、これに限らず、様々な方法で決定することができる。例えば、前回に画
面転送を実行したときに使用したＴＣＰストリーム数をファイル等に保存しておき、実行
開始時に読み出して使用してよい。最適なＴＣＰストリーム数の値は通信路の状況に応じ
て異なるが、前回の画面転送の実行時の通信路の状況と今回の状況との間に極端な差異が
ある可能性は小さい。よってこのようにして得たＴＣＰストリーム数による使用帯域は目
標値に近いことが期待される。したがって、使用帯域が目標値の近くに到達するまでの時
間を短縮することが可能となる。またさらに、前回のＴＣＰストリーム数をファイルに保
存する際に、そのときの時刻や曜日など時間に関する情報を併せて保存し、読み出しの際
にはこの情報が一致する場合に値を採用するという判断を加えてもよい。一般に、同じ時
刻や曜日における通信路の状況は似通っている可能性が高い。したがって、使用帯域が目
標値の近くに到達するまでの時間をさらに短縮することが可能となる。
【００７０】
尚、以上の例では、画面情報を送出する画面転送システムを実施形態として示したが、
必ずしも送出される情報の種類は画面情報に限るものではない。送出するデータ量が時間
によって変動する特性をもつ任意の情報について本発明を適用することができる。たとえ
ば動画像データを送出するシステムであって、符号化後のデータ量（送出するデータ量）
が動きの大きさなど動画像の内容によって時間的に変動する場合であっても本発明を適用
できる。あるいは音声データを送出するシステムであって、符号化後のデータ量が発話の
有無や頻度など音声の内容によって時間的に変動する場合であっても本発明を適用できる
。
【００７１】
また、サーバ１は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いる
ことでも実現することが可能である。すなわち、生成部１００、圧縮部１０１、送信部１
０２、判定部１０３、記憶部１０４、及び決定部１０５は、上記のコンピュータ装置に搭
載されたプロセッサにプログラムを実行させることにより実現することができる。このと
き、サーバ１は、上記のプログラムをコンピュータ装置にあらかじめインストールするこ
とで実現してもよいし、ＣＤ−ＲＯＭなどの記憶媒体に記憶して、あるいはネットワーク
を介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インス
トールすることで実現してもよい。また、記憶部１０４は、上記のコンピュータ装置に内
蔵あるいは外付けされたメモリ、ハードディスクもしくはＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ
−ＲＡＭ、ＤＶＤ−Ｒなどの記憶媒体などを適宜利用して実現することができる。
【００７２】
以上説明した実施形態によれば、最適なＴＣＰストリーム数を決定することができるこ
とである。
【００７３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したも
のであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その
他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の
省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や
要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる
。
【符号の説明】
【００７４】
１・・・サーバ、２・・・クライアント端末、３・・・ネットワーク、１００・・・生成
部、１０１・・・圧縮部、１０２・・・送信部、１０３・・・判定部、１０４・・・記憶
部、１０５・・・決定部、２０１・・・受信部、２０２・・・伸長部、２０３・・・表示
部。
【図１】
0005695537.tif 000002
【図２】
0005695537.tif 000003
【図３】
0005695537.tif 000004
【図４】
0005695537.tif 000005
【図５】
0005695537.tif 000006
【図６】
0005695537.tif 000007
【図７】
0005695537.tif 000008
【図８】
0005695537.tif 000009
【図９】
0005695537.tif 000010
【図１０】
0005695537.tif 000011
【図１１】
0005695537.tif 000012
【図１２】
0005695537.tif 000013