以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
<第1実施形態>
図1は、第1実施形態に係る情報処理システムのシステム構成の一例を示す図である。情報処理システム100は、仮想デスクトップのサーバ1とクライアント端末2とを含む。サーバ1とクライアント端末2とは、WANを介して接続されている。サーバ1とクライアント端末2とは、それぞれ、仮想デスクトップのサーバ又はクライアントのアプリケーションを実行している。サーバ1とクライアント端末2との間には、仮想デスクトップのセッションが確立されている。
クライアント端末2は、ユーザによる画面の操作内容をサーバ2に送信する。サーバ1は、クライアント端末2からの画面の操作内容に応じて遷移した画面の画像データを生成し、クライアント端末2に送信済みの画面のうち最新の画面の画像データとの差分データを更新データとしてクライアント端末2に送信する。したがって、サーバ1が生成するクライアント端末2宛ての送信データのサイズは、送信の度に変動し、単位時間当たりのサーバ1のデータの生成量も変動する。
一方、サーバ1とクライアント端末2とが接続するWANは、複数のユーザによって共有されているので、空き帯域が変動する。空き帯域が変動することと、仮想デスクトップのサーバ1が生成する送信データ量が送信の度に変動することから、空き帯域が少ない場合にサーバ1がクライアント端末2にサイズの大きな更新データを送信すると、ネットワークが輻輳する可能性がある。ネットワークが輻輳すると遅延が発生するため、クライアント端末2において、操作レスポンスが低下する可能性がある。
仮想デスクトップの操作レスポンスが劣化すると、例えば、画面上のカーソルの動きが滑らかでなくなったりして、仮想デスクトップに対するユーザの体感品質を低下させることになる。
第1実施形態では、空き帯域と仮想デスクトップのサーバ1が生成する送信データ量とを考慮して、サーバ1は、空き帯域の少ない場合には更新データの送信を控え、帯域の空いているときに更新データを送信するようにして、送信タイミングを制御する。
図2は、第1実施形態に係るサーバ1の仮想デスクトップの1セッションに係る更新データの送信タイミングの制御方法の一例を示す図である。サーバ1は、クライアント端末2の受信レートと、サーバ1の送信レートと画像更新レートとを用いて、仮想デスクトップのクライアント端末2へのデータの送信タイミングを制御する。
画像更新レートとは、仮想デスクトップの更新データの生成速度である。第1実施形態では、画像更新レートは、未送信の更新データのサイズを未送信となってからの経過時間で割った値で定義される。送信レートとは、単位時間当たりにサーバ1が送信処理を行ったクライアント端末2宛ての送信データのサイズである。送信処理は、例えば、アプリケーション層では、仮想デスクトップのアプリケーションが下位の層とのデータの受け渡し用のバッファにデータを格納することである。また、送信処理は、アプリケーション層よりも下位の層では、アプリケーション層とのデータの受け渡し用のバッファに格納されたデータをパケットに変換し、当該パケットをネットワークに出力するまでの一連の処理の一部又は全部である。画像更新レート及び送信レートは、サーバ1によって計測される。画像更新レートは、「生成レート」の一例である。更新データは、「送信データ」の一例である。
受信レートとは、単位時間当たりにクライアント端末2がサーバ1から受信する仮想デスクトップのデータのサイズである。受信レートは、クライアント端末2によって計測さ
れ、サーバ1に通知される。
仮想デスクトップ側から見た、すなわち、アプリケーション層レベルでみた場合の送信タイミングの制御の指針は、第1実施形態では、画像更新レートを受信レートで割った値が増大する場合には、仮想デスクトップの更新データの送信をスキップすることである。画像更新レートを受信レートで割った値が増大する場合には、クライアント端末2の仮想デスクトップのデータを受信する速度に比べてサーバ1の仮想デスクトップの更新データの生成速度の方が早いことが示され、ネットワークの混雑を招くおそれがある。そこで、第1実施形態では、画像更新レートを受信レートで割った値が増大する場合には、仮想デスクトップの更新データの送信を保留し、遅延の発生又は増大を抑制する。
通信側から見た、すなわち、ネットワーク層レベルで見た送信タイミングの制御の指針は、第1実施形態では、送信レートを受信レートで割った値が増大する場合には、仮想デスクトップの更新データの送信をスキップすることである。WANに十分に空き帯域がある場合には、理論的には、送信レート=受信レートとなる。しかしながら、WANに空き帯域が少ない場合には、送信レート>受信レートとなる。そのため、送信レートを受信レートで割った値が増大する場合には、サーバ1が仮想デスクトップの更新データの送信を保留することで、遅延の増大を抑制する。
例えば、送信レートを受信レートで割った値が1に近く、空き帯域が十分にあることが示される場合には、画像更新レートを受信レートで割った値が大きいとしても、仮想デスクトップの更新データは送信されても問題ない。また、例えば、送信レートを受信レートで割った値が大きく、空き帯域が少ないことが示される場合には、画像更新レートを受信レートで割った値が小さい値であっても、仮想デスクトップの更新データが送信されると、遅延が増大するおそれがある。
すなわち、送信レートを受信レートで割った値と、画像更新レートを受信レートで割った値とは、トレードオフに似た関係にある。
そのため、第1実施形態では、アプリケーション層とネットワーク層との双方の送信タイミングの制御の指針を考慮し、仮想デスクトップの更新データの送信の可否を判別する判別関数を、x*y=βと定義する。xは、画像更新レート÷受信レートの値である。yは送信レート÷受信レートの値である。定数βは、0以上の正の値である。定数βは、例えば、1.8、5、10等の実測に基づいた値に、適宜、設定される。
図2では、判別関数を示すグラフが示されている。x*yの値が定数β未満である領域を送信可能領域、x*yの値が定数β以上である領域を送信スキップ領域とする。xとyとの値が送信可能領域にある場合には、仮想デスクトップの更新データを送信することが判定される。xとyとの値が送信スキップ領域にある場合には、仮想デスクトップの更新データを送信しないことが判定される。
仮想デスクトップの更新データを送信しないことが判定された場合には、第1実施形態では、当該更新データは廃棄される。例えば、廃棄された更新データが、時刻T1に生成された画面の画像データと、時刻T2(T1<T2)に生成された画面の画像データとの差分データであるとする。この場合、廃棄された更新データの次に生成される更新データは、時刻T1に生成された画面の画像データと時刻T3(T2<T3)に生成された画面の画像データとの差分データとなる。
例えば、xとyとの値が送信スキップ領域にあり、更新データの送信がスキップされると、単位時間当たりに送信処理が行われるデータのサイズが小さくなるので、送信レート
が低下する。送信レートが低下すると、送信レートを受信レートで割った値(=y)が低下する。したがって、更新データの送信がスキップ又は連続してスキップされると、送信レートを受信レートで割った値が次第に小さくなるので、xとyとの値が送信可能領域に入るようになり、遅延の少ない状態で仮想デスクトップの更新データがクライアント端末2に送信されるようになる。
例えば、時刻T1の画面の画像データと時刻T2の画面の画像データとの差分データである更新データの送信がスキップされ、その後、時刻T1の画面の画像データと時刻T3の画面の画像データとの差分データである更新データが送信されたことを仮定する。この場合、クライアント端末2の画面は、時刻T1の画面から時刻T3の画面へと遷移することとなる。クライアント端末2では時刻T2の画面は表示されないものの、時刻T1の画面の画像データと時刻T3の画面の画像データとの差分データが、遅延の少ない状態でクライアント端末2に送信されてくる。そのため、ネットワークの輻輳による遅延によって、カーソルの動きが滑らかでないなどの、レスポンスの低下をユーザに感じさせることは抑制される。
<クライアント端末の装置構成>
図3は、クライアント端末2のハードウェア構成の一例を示す図である。クライアント端末2は、例えば、PC(Personal Computer)等の汎用のコンピュータ、スマートフォ
ン及びタブレット端末等の無線情報処理端末、等である。図3のクライアント端末2のハードウェア構成は、PCが想定されている。
クライアント端末2は、ハードウェア構成要素として、CPU(Central Processing Unit)201、主記憶装置202、入力装置203、出力装置204、補助記憶装置20
5、ネットワークインタフェース207を備え、これらはバス209によって電気的に接続されている。
入力装置203は、例えば、キーボード、キーパッド、マウス等のポインティングデバイスである。クライアント端末2がスマートフォンである場合には、入力装置203は、タッチパネルや各種ボタンである。入力装置203から入力されたデータは、CPU 201に出力される。
補助記憶装置205は、様々なプログラムや、各プログラムの実行に際してCPU 201が使用するデータを格納する。補助記憶装置205は、例えば、EPROM(Erasable Programmable ROM)、フラッシュメモリ、又はハードディスクドライブ(Hard Disk Drive)等の不揮発性のメモリである。補助記憶装置205は、例えば、オペレーティングシステム(OS)、仮想デスクトップクライアントプログラム205P、その他様々なアプリケーションプログラムを保持する。仮想デスクトップクライアントプログラム205Pは、クライアント端末2を仮想デスクトップのクライアントとして動作させるためのプログラムである。
主記憶装置202は、CPU 201に、補助記憶装置205に格納されているプログラムをロードする記憶領域および作業領域を提供したり、バッファ、一時メモリとして用いられたりする。主記憶装置202は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)のような半導体メモリを含む。
CPU 201は、補助記憶装置205に保持されたOSや様々なアプリケーションプログラムを主記憶装置202にロードして実行することによって、様々な処理を実行する。CPU 201は、1つに限られず、複数備えられてもよい。
ネットワークインタフェース207は、ネットワークとの情報の入出力を行うインタフェースである。ネットワークインタフェース207は、アクセスネットワークと接続しており、クライアント端末2は、アクセスネットワークを通じてWANに接続する。ネットワークインタフェース207は、有線のネットワークと接続するインタフェース、無線のネットワークと接続するインタフェースを含む。ネットワークインタフェース207は、例えば、NIC(Network Interface Card)、無線LAN(Local Area Network)カード等である。ネットワークインタフェース17で受信されたデータ等は、CPU 201に出力される。
出力装置204は、CPU 201の処理の結果を出力する。出力装置204は、ディスプレイ、プリンタ、スピーカ等の音声出力装置を含む。
なお、図3に示されるクライアント端末2のハードウェア構成は、一例であり、上記に限られず、実施の形態に応じて適宜構成要素の省略や置換、追加が可能である。例えば、クライアント端末2は、可搬記録媒体駆動装置を備え、可搬記録媒体に記録されたプログラムを実行してもよい。可搬記録媒体は、例えば、SDカード、miniSDカード、microSDカード、USB(Universal Serial Bus)フラッシュメモリ、CD(Compact Disc)、DVD(Digital Versatile Disc)、Blu−ray(登録商標) Disc、又はフラッシュメモリカードのような記録媒体である。
図4は、クライアント端末2の機能構成の一例を示す図である。クライアント端末2は、機能構成要素として、データ受信部21、受信帯域計測部22、受信帯域送信部23、画像解凍部24、画像表示部25を備える。これらの機能構成要素は、クライアント端末22のCPU 201が補助記憶装置205に格納されている仮想デスクトップクライアントプログラム205Pを実行することによって達成される機能構成である。
データ受信部21は、サーバ1からクライアント端末2に送信された仮想デスクトップの更新データを受信する。データ受信部21は、受信した更新データを受信帯域計測部22に出力する。データ受信部21は、「クライアント端末」の「受信部」の一例である。
受信帯域計測部22は、データ受信部21から、仮想デスクトップの更新データの入力を受ける。受信帯域計測部22は、所定周期で仮想デスクトップの受信データ量を計測しており、計測結果を、後述の受信計測記録テーブルに記録する。受信帯域計測部22は、更新データと計測結果情報の送信指示とを受信帯域送信部23に出力する。受信帯域計測部22の計測周期は、例えば、20ミリ秒である。ただし、受信帯域計測部22の計測周期は20ミリ秒に限定されない。受信帯域計測部22は、「クライアント端末」の「取得部」の一例である。
受信帯域送信部23は、受信帯域計測部22から更新データの入力を受け、当該更新データを画像解凍部24に出力する。また、受信帯域送信部23は、受信帯域計測部22から受信レート情報の送信指示の入力を受け、受信計測記録テーブルに記録されている受信レート情報を読み出し、サーバ1に送信する。受信レート情報の詳細については、後述される。受信帯域送信部23は、「クライアント端末」の「送信部」の一例である。
画像解凍部24は、受信帯域送信部23から、サーバ1から送信された仮想デスクトップの更新データの入力を受ける。第1実施形態では、更新データは所定の画像圧縮アルゴリズムによって圧縮されているため、画像解凍部24は、更新データを解凍する。画像解凍部24は、解凍した更新データを画像表示部25に出力する。
画像表示部25は、画像解凍部24から解凍された更新データの入力を受ける。画像表
示部25は、解凍された更新データと現在表示中の画面の画像データとから画面の画像データを生成する。更新データは、画面の画像データの差分データであるからである。画像表示部25は、生成した画面の画像データを、例えば、フレームバッファに書込み、出力装置204の一つであるディスプレイに表示させる。
なお、クライアント端末2の機能構成は、図4に示されるものに限定されない。第1実施形態では、図4に示される機能構成は、クライアント端末2のCPU 201が仮想デスクトップクライアントプログラム205Pを実行することによって達成されるものとして説明されたが、これに限定されない。例えば、データ受信部21、画像解凍部24、画像表示部25は、仮想デスクトップクライアントプログラム205Pによって達成され、受信帯域計測部22、受信帯域送信部23は、仮想デスクトップクライアントプログラム205Pとは異なるプログラムによって達成されてもよい。
図5は、受信計測結果記録テーブルの一例である。受信計測結果記録テーブルは、仮想デスクトップのデータの受信に関する計測結果を記録するテーブルである。受信計測結果記録テーブルは、例えば、クライアント端末2の主記憶装置202に格納されている。
受信計測結果記録テーブルの1エントリは、受信帯域計測部22の1計測周期の計測結果に相当する。受信計測結果記録テーブルのエントリは、受信帯域計測部22によって登録される。
受信計測結果記録テーブルの1エントリには、受信時刻、受信サイズ、受信時間の項目が含まれる。「受信時刻」は、計測周期の開始時刻である。「受信サイズ」は、当該計測周期中にクライアント端末2が受信した仮想デスクトップのデータのサイズである。「受信時間」は、当該計測周期の終了時刻から開始時刻を引いた値である。第1実施形態では、計測周期は20ミリ秒と固定値が想定されているので、「受信時間」に格納される値はほぼ20ミリ秒となる。
受信帯域送信部23は、計測結果情報の送信指示の入力を受けると、受信計測結果記録テーブルを参照し、最新のエントリを受信レート情報として読み出し、サーバ1に送信する。受信レート情報は、「受信レートに係る情報」の一例である。
図6は、クライアント端末2の受信帯域計測部22の処理のフローチャートの一例である。図6に示される処理は、クライアント端末2において仮想デスクトップクライアントプログラム205Pの起動を契機に開始される。図6に示される処理の主体は、仮想デスクトップクライアントプログラム205Pを実行するクライアント端末2のCPU 201であるが、便宜上、機能構成要素である受信帯域計測部22を主体として説明される。
OP1では、受信帯域計測部22は、計測周期を20ミリ秒、受信サイズを0に設定する。
OP2では、受信帯域計測部22は、データ受信部11からの仮想デスクトップのデータの入力を待機する。仮想デスクトップのデータがデータ受信部21から入力されると(OP2:YES)、処理がOP3に進む。仮想デスクトップのデータがデータ受信部21から入力されない場合には(OP2:NO)、処理がOP5に進む。
OP3では、受信帯域計測部22は、受信サイズが0である場合に、受信開始時刻を現在時刻に設定する。受信サイズが0でない場合には、OP3の処理は省略される。
OP4では、受信帯域計測部22は、受信サイズを更新する。受信サイズは、現在の受
信サイズの値に、受信したデータのサイズが加算されて更新される。
OP5では、受信帯域計測部22は、現在時刻から受信開始時刻を引いた値が、計測周期以上であるか否かを判定する。現在時刻から受信開始時刻を引いた値が計測周期以上である場合には(OP5:YES)、処理がOP6に進む。現在時刻から受信開始時刻を引いた値が計測周期未満である場合には(OP5:NO)、処理がOP2に進み、OP2からOP5の処理が繰り返し実行される。
OP6では、受信帯域計測部22は、受信計測結果記録テーブルに計測結果を記録する。受信計測結果記録テーブルのエントリの「受信時刻」には、受信開始時刻が記録される。受信計測結果記録テーブルのエントリの「受信サイズ」には、現在の受信サイズが記録される。受信計測結果記録テーブルのエントリの「受信時間」には、現在時刻から受信開始時刻を引いた値が記録される。
OP7では、受信帯域計測部22は、受信帯域送信部23に、受信レート情報の送信指示を出力する。受信帯域送信部23は、受信レート情報の送信指示を受けて、OP6において記録された受信計測結果記録テーブルの最新のエントリを受信レート情報としてサーバ1に送信する。
OP8では、受信帯域計測部22は、受信サイズを0にリセットする。次に処理がOP2に進み、OP2から処理が実行される。
なお、第1実施形態では、受信帯域送信部23は、受信帯域計測部22からの受信レート情報の送信指示の入力を受けて受信レート情報の送信を行うが、これに限定されない。例えば、受信帯域送信部23は、受信帯域計測部22からの送信指示に従うのではなく、受信帯域計測部22の計測周期と同じ周期で、受信計測結果記録テーブルを参照し、最新のエントリから受信レート情報を取得して送信するようにしてもよい。
<サーバの装置構成>
図7は、サーバ1のハードウェア構成の一例を示す図である。サーバ1は、専用又は汎用のコンピュータである。サーバ1は、ハードウェア構成要素として、CPU 101、主記憶装置102、入力装置103、出力装置104、補助記憶装置105、ネットワークインタフェース107を備え、これらはバス109によって電気的に接続されている。CPU、101、主記憶装置102、入力装置103、出力装置104、補助記憶装置105、ネットワークインタフェース107は、クライアント端末2のCPU 201、主記憶装置202、入力装置203、出力装置204、補助記憶装置205、ネットワークインタフェース207と、同様である。サーバ1は、「情報処理装置」の一例である。
サーバ1の補助記憶装置105には、仮想デスクトップサーバプログラム105Pが格納されている。仮想デスクトップサーバプログラム105Pは、サーバ1を仮想デスクトップのサーバとして動作させるためのプログラムである。
なお、サーバ1のハードウェア構成は、図7に示されるものに限定されない。サーバ1が専用のコンピュータである場合には、サーバ1は入力装置103、出力装置104を備えていなくとも良い。
図8は、サーバ1の機能構成の一例を示す図である。サーバ1は、機能構成要素として、画像生成部11、更新画像取得部12、送信済み画像バッファ13、画像圧縮部14、画像更新レート計測部15、受信帯域反映部16、制御部17、送信レート計測部18、画像送信部19を備える。図8に示されるサーバ1の機能構成要素は、例えば、サーバ1
のCPU 101が補助記憶装置105に格納されている仮想デスクトップサーバプログラム105Pを実行することによって達成される機能構成である。図8に示される機能構成が、サーバ1のCPU 101が仮想デスクトップサーバプログラム105Pを実行することによって達成される場合には、仮想デスクトップサーバプログラム105Pは、「情報処理プログラム」の一例である。
画像生成部11は、仮想デスクトップのクライアント端末2のディスプレイに表示される画面の画像データを生成する。画像生成部11は、クライアント端末2からの仮想デスクトップの操作内容を受信した場合には、操作内容に応じて画面を遷移させ、遷移後の画面の画像データを生成する。画像生成部11は、生成した画面の画像データを更新画像取得部12に出力する。
更新画像取得部12は、画像生成部11から画面の画像データの入力を受ける。更新画像取得部12は、画像生成部11から入力される画面の画像データを監視している。送信済み画像バッファ13には、クライアント端末2へ送信済みの画面の画像データのうち、最新の画面の画像データが格納されている。送信済み画像バッファ13は、サーバ1の主記憶装置102内に生成される。
更新画像取得部12は、画面の画像データに変更がある場合に、送信済みバッファに格納されている画面の画像データと、入力された画面の画像データとの差分データを更新データとして取得する。更新画像取得部12は、更新データを画像圧縮部14に出力する。
また、更新画像取得部12は、制御部17から、更新データの送信可否判定の結果の入力を受ける。更新データを送信することが判定された場合には、更新画像取得部12は、当該更新データに対応する入力された画面の画像データを送信済み画像バッファ13に格納して、クライアント端末2に送信済みの最新の画面の画像データを更新する。
更新データを送信しないことが判定された場合には、更新画像取得部12は、当該更新データに対応する入力された画面の画像データを廃棄する。
画像圧縮部14は、更新画像取得部12から、更新データの入力を受ける。画像圧縮部14は、入力された更新データを所定の画像圧縮アルゴリズムによって圧縮する。画像圧縮部14は、圧縮処理後の更新データを画像更新レート計測部15に出力する。
画像更新レート計測部15は、画像圧縮部14から圧縮された更新データの入力を受ける。画像更新レート計測部15は、更新データの入力を監視し、入力される更新データの情報を更新テーブルに記録する。画像更新レート計測部15は、更新データを制御部17に出力する。画像更新レート計測部15は、「情報処理装置」の「第1の取得部」の一例である。
受信帯域反映部16は、クライアント端末2から所定の周期で送信される受信レート情報を受信する。受信帯域反映部16は、受信レート情報を、受信レート情報テーブルに記録する。受信レート情報テーブルは、サーバ1の主記憶装置102に格納されており、クライアント端末2が保有する受信計測結果記録テーブルと同じデータ構造である。受信帯域反映部16は、「情報処理装置」の「受信部」の一例である。
制御部17は、画像更新レート計測部15から更新データの入力を受ける。制御部17は、更新データの送信タイミングを制御する。具体的には、制御部17は、更新データの入力を受けると、当該更新データの送信可否を判定する。更新データを送信することを判定した場合には、制御部17は、当該更新データを送信レート計測部18に出力する。更
新データを送信しないことを判定した場合には、制御部17は、当該更新データを廃棄する。また、制御部17は、更新データの送信可否の判定結果を更新画像取得部12に通知する。
制御部17の更新データの送信可否の判定は、例えば、受信レート、送信レート、画像更新レートに基づいて判定される。受信レートは、受信レート情報テーブルに基づいて取得される。送信レートは、後述の送信計測結果記録テーブルに基づいて取得される。画像更新レートは、後述の画像更新テーブルに基づいて取得される。
制御部17は、例えば、x=画像更新レートを受信レートで割った値、y=送信レートを受信レートで割った値を求め、x*yの値が定数β以上であるか否かを判定することによって、更新データの送信可否を判定する。ただし、更新データの送信可否の判定方法は、これに限定されない。例えば、送信レート、受信レート、画像更新レートは、複数の連続する計測周期の平均値であってもよい。制御部17は、「情報処理装置」の「制御部」の一例である。
送信レート計測部18は、制御部17から、送信することが判定された更新データの入力を受ける。送信レート計測部18は、更新データの入力を監視し、所定の計測周期で入力される更新データのサイズを計測する。送信レート計測部18の計測周期は、例えば、20ミリ秒である。ただし、送信レート計測部18の計測周期はこれに限定されない。送信レート計測部18は、計測結果を、後述の送信計測結果記録テーブルに記録する。送信レート計測部18は、更新データを画像送信部19に出力する。送信レート計測部18は、「情報処理装置」の「第2の取得部」の一例である。
画像送信部19は、送信レート計測部18から更新データの入力を受ける。画像送信部19は、クライアント端末2への更新データを送信バッファに格納する。画像送信部19は、アプリケーション層の機能構成要素であるので、下位のレイヤとのデータ受け渡し用のバッファに更新データを格納することによって、アプリケーション層以下の層に送信処理が移行され、ネットワークに更新データが出力される。
なお、サーバ1の機能構成は、図8に示されるものに限定されない。第1実施形態では、図8に示される機能構成は、サーバ1のCPU 101が仮想デスクトップサーバプログラム105Pを実行することによって達成されるものとして説明されたが、これに限定されない。例えば、画像生成部11、更新画像取得部12、送信済み画像バッファ13、画像圧縮部14、画像送信部19は、仮想デスクトップサーバプログラム105Pによって達成され、画像更新レート計測部15、受信帯域反映部16、制御部17、送信レート計測部18は、仮想デスクトップサーバプログラム105Pとは異なるプログラムによって達成されてもよい。画像更新レート計測部15、受信帯域反映部16、制御部17、送信レート計測部18が、仮想デスクトップサーバプログラム105Pとは異なるプログラムによって達成される場合には、当該プログラムは「情報処理プログラム」の一例である。
図9は、画像更新テーブルの一例である。画像更新テーブルは、更新データの生成レートに関する情報を格納するテーブルである。画像更新テーブルは、例えば、サーバ1の主記憶装置102に格納されている。
画像更新テーブルの1エントリには、経過時刻と未送信圧縮画像サイズの項目が含まれる。画像更新テーブルのエントリは、画像更新レート計測部15に更新データが入力された場合に、画像更新レート計測部15によって生成される。
「経過時間」の項目には、例えば、画像更新テーブルがクリアされてから当該更新データが画像更新レート計測部15に入力されるまでの経過時間が格納される。ただし、これに限らない。画像更新テーブルは、例えば、更新データを送信することが判定された場合に制御部17によってクリアされる。「未送信圧縮画像サイズ」には、更新データのサイズが格納される。
画像更新テーブルは、更新データを送信することが判定された場合に、制御部17によって、全エントリが削除されてクリアされる。したがって、画像更新テーブルには、更新データが最後に送信されて以降の、送信されないことが判定された更新データの情報が格納されていることになる。また、画像更新テーブルの最新のエントリの「経過時間」の値は、最後にクライアント端末2に更新データが送信されてからの、更新データの未送信時間を示すことになる。画像更新テーブルに格納される情報は、「生成レートに関する情報」の一例である。
図10は、送信計測結果記録テーブルの一例である。送信計測結果記録テーブルは、仮想デスクトップのクライアント端末2に送信することが判定された更新データに関する計測結果を記録するテーブルである。送信計測結果記録テーブルは、例えば、サーバ1の主記憶装置102に格納されている。
送信計測結果記録テーブルの1エントリは、送信レート計測部18の1計測周期の計測結果に相当する。送信計測結果記録テーブルのエントリは、送信レート計測部18によって生成される。
送信計測結果記録テーブルの1エントリには、送信時刻、送信サイズ、送信時間の項目が含まれる。「送信時刻」は、計測周期の開始時刻である。「送信サイズ」は、当該計測周期中に送信レート計測部18に入力されたクライアント端末2へ送信することが判定された更新データのサイズである。「送信時間」は、当該計測周期の終了時刻から開始時刻を引いた値である。第1実施形態では、計測周期は20ミリ秒と固定値が想定されているので、「送信時間」はほぼ20ミリ秒となる。送信計測結果記録テーブルに記録される情報は、「送信レートに関する情報」の一例である。
第1実施形態では、便宜上、サーバ1と1台のクライアント端末2との仮想デスクトップの通信について説明されている。サーバ1が複数台のクライアント端末2と仮想デスクトップのセッションを確立する場合には、サーバ1は、各クライアント端末2(各セッション)について、受信レート情報テーブル、送信計測結果記録テーブル、画像更新テーブルを備え、更新データの送信可否の判定処理を行う。なお、受信レート情報テーブル、送信計測結果記録テーブル、画像更新テーブルのデータ構造は、第1実施形態において図示されるものに限定されない。
図11は、サーバ1の受信帯域反映部16の処理のフローチャートの一例である。図11に示される処理は、仮想デスクトップサーバプログラム105Pが起動されるとともに開始される。図11に示される処理の主体は、仮想デスクトップサーバプログラム105Pを実行するCPU 101であるが、便宜上、機能構成要素である受信帯域反映部16を主体として説明する。以降のサーバ1の機能構成要素の処理のフローチャートについても同様とする。
OP11では、受信帯域反映部16は、クライアント端末2から受信レート情報の受信を待機する。クライアント端末2からの受信レート情報を受信すると(OP11:YES)、処理がOP12に進む。
OP12では、受信帯域反映部16は、受信した受信レート情報を、受信レート情報テーブルに反映する。その後、処理がOP11に進み、OP11からの処理が繰り返し実行される。
図12は、サーバ1の更新画像取得部12の処理のフローチャートの一例である。図12に示される処理は、仮想デスクトップサーバプログラム105Pが起動されるとともに開始される。図12に示される処理は、仮想デスクトップサーバプログラム105Pの稼働中、繰り返し実行される。
OP21では、更新画像取得部12は、画像生成部11からの画像データの入力を待機する。画像生成部11から画像データが入力された場合には(OP21:YES)、処理がOP22に進む。
OP22では、更新画像取得部12は、入力された画像データと、送信済み画像バッファ13に格納されている画像データとを比較し、差分があるか否かを判定する。入力された画像データと送信済み画像バッファ13に格納されている画像データとに差分がある場合には(OP22:YES)、処理がOP23に進む。入力された画像データと送信済み画像バッファ13に格納されている画像データとに差分がない場合には(OP22:NO)、処理がOP27に進む。
OP23では、更新画像取得部12は、入力された画像データと送信済み画像バッファ13に格納されている画像データとの差分データを更新データとして取得する。OP24では、更新画像取得部12は、更新データを画像圧縮部14に出力する。
OP25では、更新画像取得部12は、制御部17からの送信判定処理の判定結果の入力を受けて、更新データが送信されることが判定されたか否かを判定する。更新データが送信されることが判定された場合には(OP25:YES)、処理がOP26に進む。更新データが送信されないことが判定された場合には(OP25:NO)、処理がOP27に進む。
OP26では、更新画像取得部12は、OP21で入力された画像データで、送信済み画像バッファ13に格納されている画像データを上書きする。その後、図12に示される処理が終了する。
OP27では、更新画像取得部12は、OP21で入力された画像データを廃棄する。その後、図12に示される処理が終了する。
図13は、サーバ1の画像更新レート計測部15の処理のフローチャートの一例である。図13に示される処理は、仮想デスクトップサーバプログラム105Pが起動されるとともに開始される。
OP31では、画像更新レート計測部15は、更新データの入力を待機する。画像圧縮部14から更新データが入力されると(OP31:YES)、処理がOP32に進む。
OP32では、画像更新レート計測部15は、入力された更新データの情報を画像更新テーブルに反映させる。より具体的には、画像更新レート計測部15は、画像更新テーブルがクリアされてから更新データが入力されるまでの経過時間と更新データのサイズとを画像更新テーブルに記録する。その後、処理がOP31に進み、OP31からの処理が繰り返し実行される。
図14は、サーバ1の送信レート計測部18の処理のフローチャートの一例である。図14に示される処理は、仮想デスクトップサーバプログラム105Pが起動されるとともに開始される。
OP41では、送信レート計測部18は、計測周期を20ミリ秒、送信サイズを0に設定する。なお、サーバ1の送信レートの計測周期とクライアント端末2の受信レートの計測周期とは、同じであっても異なっていてもよい。第1実施形態では、サーバ1の送信レートの計測周期と、クライアント端末2の受信レートの計測周期とは、同じ値に設定されることを想定する。
OP42では、送信レート計測部18は、制御部17からの更新データの入力を待機する。送信レート計測部18に入力される更新データは、圧縮処理されており、クライアント端末2に送信することが判定されている更新データである。送信レート計測部18が更新データの入力を受けた場合には(OP42:YES)、処理がOP43に進む。送信レート計測部18が更新データの入力を受けない場合には(OP42:NO)、処理がOP45に進む。
OP43では、送信レート計測部18は、送信サイズの値が0である場合に、送信開始時刻を現在時刻に設定する。送信サイズの値が0でない場合には、OP43の処理は省略される。
OP44では、送信レート計測部18は、送信サイズに入力された更新データのサイズを加算して、送信サイズを更新する。
OP45では、送信レート計測部18は、現在時刻から送信開始時刻を引いた時間長が計測周期以上であるか否かを判定する。現在時刻から送信開始時刻を引いた時間長が計測周期以上である場合には(OP45:YES)、処理がOP46に進む。現在時刻から送信開始時刻を引いた時間長が計測周期未満である場合には(OP45:NO)、処理がOP42に進む。
OP46では、送信レート計測部18は、送信時刻、送信サイズ、送信時間を送信計測結果記録テーブルに記録する。送信計測結果記録テーブルの送信時刻には、送信開始時刻が格納される。送信計測結果記録テーブルの送信サイズには、現在の送信サイズの値が格納される。送信計測結果記録テーブルの送信時間には、現在時刻から送信開始時刻を引いた時間長が格納される。
OP47では、送信レート計測部18は、送信サイズを0にリセットする。その後、処理がOP42に進み、OP42の処理から繰り返し実行される。
図15は、サーバ1の制御部17の処理のフローチャートの一例である。図15に示される処理は、仮想デスクトップサーバプログラム105Pが起動されるとともに開始される。図15に示される処理は、仮想デスクトップサーバプログラム105Pが稼働中、繰り返し実行される。
OP51では、制御部17は、画像更新レート計測部15から更新データの入力を待機する。制御部17が更新データの入力を受けた場合には(OP51:YES)、処理がOP52に進む。
OP52では、制御部17は、直近のm周期分(mは正の整数)の受信レートを取得し、m周期分の受信レートの平均値を取得する。受信レート(r)は、受信サイズ/受信時
間で求められる。受信サイズと受信時間とは、受信レート情報テーブルの各エントリから取得される。制御部17は、受信レート情報テーブルの最新のm個のエントリそれぞれについて、受信レートを算出し、最新のm個のエントリの受信レートの平均値を取得する。以降、単に、受信レートという場合には、直近のm周期分の受信レートの平均値であるとする。
OP53では、制御部17は、直近のm周期分の送信レートを取得し、m周期分の送信レートの平均値を取得する。送信レート(s)は、送信サイズ/送信時間で求められる。送信サイズと送信時間とは、送信計測結果記録テーブルの各エントリから取得される。制御部17は、送信計測結果記録テーブルの最新のm個のエントリそれぞれについて、送信レートを算出し、最新のm個のエントリの送信レートの平均値を取得する。以降、単に、送信レートという場合には、直近のm周期分の送信レートの平均値であるとする。
OP54では、制御部17は、画像更新レートを取得する。画像更新レート(img)は、未送信の更新データサイズを未送信経過時間で割った値で求められる。制御部17は、未送信の更新データサイズとして、画像更新テーブルの最新のエントリの「未送信圧縮画像サイズ」の値を取得する。制御部17は、未送信経過時間として、画像更新テーブルの最新のエントリの「経過時間」の値を取得する。
OP55では、制御部17は、送信判定処理を行う。送信判定処理の詳細については、後述される。
OP56では、送信判定処理によって、更新データを送信することが判定された場合には(OP56:YES)、処理がOP57に進む。送信判定処理によって、更新データを送信しないことが判定された場合には(OP56:NO)、処理がOP58に進む。
OP57では、更新データを送信することが判定されたので、制御部17は、画像更新テーブルに格納されている全エントリを削除して、画像更新テーブルをクリアする。また、制御部17は、送信レート計測部18に更新データを出力する。
OP58では、更新データを送信しないことが判定されたので、制御部17は、更新データを廃棄する。
OP59では、制御部17は、更新データの送信の判定結果を更新画像取得部12に通知する。その後、図15に示される処理が終了する。
図16は、図15のOP55の送信判定処理のフローチャートの一例である。OP61では、制御部17は、s/r、すなわち、送信レートを受信レートで割った値が定数α以下であるか否かを判定する。定数αは、例えば、0≦α<2の範囲の値をとる。α=0である場合には、OP61の処理は省略される。
送信レート(s)を受信レート(r)で割った値が十分に小さい場合には、ネットワークに十分な空き帯域があることが示される。そのため、OP61では、ネットワークに十分な空き帯域が存在するか否かを判定している。
s/rが定数α以下である場合には(OP61:YES)、処理がOP64に進み、OP64では、制御部17は、更新データを送信することを判定する。その後、図16に示される処理が終了する。s/rが定数αより大きい場合には(OP61:NO)、処理がOP62に進む。
OP62では、制御部17は、以下の数式1が満たされるか否かを判定する。α=0である場合には、数式1は、送信レート(s)を受信レート(r)で割った値と画像更新レート(img)を受信レート(r)で割った値とを乗じるもの、すなわち、x*y<βになる。
数式1が満たされる場合には(OP62:YES)、処理がOP64に進み、OP64では、制御部17は、更新データを送信することを判定する。その後、図16に示される処理が終了する。数式1が満たされない場合には(OP62:NO)、処理がOP63に進み、OP63では、制御部17は、更新データを送信しないことを判定する。その後、図16に示される処理が終了する。
なお、図15、図16の例では、受信レート、送信レートについて、m周期分の平均値を用いたが、これに限られず、最新の1周期分の受信レート、送信レートが用いられてもよい。
<第1実施形態の作用効果>
図17は、第1実施形態に係るサーバ1とクライアント端末2との仮想デスクトップのシミュレーション結果の画像更新レートを受信レートで割った値、送信レートを受信レートで割った値の時系列推移を示すグラフの一例である。図17に示されるグラフでは、x軸は画像更新レートを受信レートで割った値を示す。y軸は、送信レートを受信レートで割った値を示す。シミュレーションでは、α=0、β=1.8に設定されている。
図17のシミュレーション結果では、画像更新レートを受信レートで割った値、送信レートを受信レートで割った値が送信スキップ領域に含まれることになった場合でも、しばらくすると、再度、画像更新レートを受信レートで割った値、送信レートを受信レートで割った値が送信可能領域に戻っている。これは、更新データの送信がスキップされたことで、送信レートが低下し、送信レートを受信レートで割った値(=y)も低下したためである。
図18は、通常の仮想デスクトップの通信と、第1実施形態に係るサーバ1とクライアント端末2との仮想デスクトップの通信と、シミュレーション結果の遅延を比較したグラフである。図18の第1実施形態に係るサーバ1とクライアント端末2との仮想デスクトップの通信は、図17に示されるシミュレーションと同じ仮想デスクトップの通信である。また、図18の通常の仮想デスクトップの通信は、第1実施形態に係るサーバ1とクライアント端末2との仮想デスクトップの通信と、同じ条件下での通信である。同じ条件とは、例えば、サーバ1とクライアント端末2間の帯域変動及び通信遅延の変動、クライアント端末2から発生する操作内容及びサーバ1において生成される画面の画像データ、等が同じであることを示す。
図18では、実線が第1実施形態に係るサーバ1とクライアント端末2との仮想デスクトップの通信のシミュレーション結果を示す。点線が、通常の仮想デスクトップの通信のシミュレーション結果を示す。
図18の第1実施形態に係るサーバ1とクライアント端末2との仮想デスクトップの通信のシミュレーション結果の丸で囲まれている部分は、図17に示されるシミュレーション結果の丸で囲まれている送信スキップ領域内にx、yの値が入っている部分に相当する。すなわち、図18の丸で囲まれている部分は、サーバ1は更新データを送信していないので、遅延時間も0となっている。
図18に示されるように、第1実施形態に係るサーバ1とクライアント端末2との仮想デスクトップの通信では、通常の通信よりも遅延が小さくなる。
したがって、第1実施形態によれば、送信レート、受信レート、画像更新レートに基づいて、更新データの送信可否を判定することで、サーバ1からクライアント端末2への更新データの送信の遅延を小さくすることができる。これによって、ユーザの体感するレスポンスの低下を抑制することができる。
第1実施形態では、更新データの送信可否の判定の際に、送信レートを受信レートで割った値、画像更新レートを受信レートで割った値を用いた判別関数x*y=βを用いる。これによって、アプリケーション層から見た場合の送信タイミングの制御の指針とネットワーク層から見た場合の送信タイミングの制御の指針とのトレードオフに似た関係にある2つの指針を考慮し、より遅延が小さくなるように送信タイミングを制御することができる。
また、第1実施形態では、送信レートを受信レートで割った値が十分小さい、すなわち、空き帯域が十分にあることが推定される場合には、更新データを送信する。これによって、空き帯域が十分にある場合には、判別関数x*y=βを用いた送信可否判定を行わずに済む。
また、第1実施形態では、更新データをクライアント端末2に送信しないことが判定された場合には、当該更新データを廃棄する。これによって、廃棄された更新データに対応する画面の画像データはクライアント端末2には表示されないことになり、クライアント端末2では画面遷移が廃棄された更新データの画面分飛ばされることになる。しかしながら、更新データの遅延を少なくすることができるため、カーソルの動きが鈍い等のクライアント端末2のユーザの体感するレスポンスを低下させることは抑制できる。
<変形例>
第1実施形態では、一般的な仮想デスクトップ技術に対して、更新データの送信可否判定を適用する場合について説明された。仮想デスクトップのアプリケーションでは、トランスポート層のプロトコルとして、UDP(User Datagram Protocol)が用いられることが多い。変形例では、トランスポート層のプロトコルとして、UDPではなく、例えば、UNAP(Universal Network Acceleration Protocol)を用いる仮想デスクトップ技術
に更新データの送信可否判定を適用する場合について説明する。
変形例では、第1実施形態と共通する説明は省略される。変形例では、受信レート及び送信レートの計測方法が、第1実施形態と異なる。
図19は、UNAPのデータグラムのフォーマットを示す図である。UNAPのヘッダには、パケット番号が含まれている。パケット番号は、パケットを特定するための番号である。一方、UNAPのヘッダにはシーケンス番号も含まれている。シーケンス番号は、パケットの並びを特定するための番号であって、再送の際には、シーケンス番号は元の番号と同じ番号になる。パケット番号は、パケット自体を特定するための番号であるので、再送の際には、元のパケットの番号とは異なる番号が付与される。
そのため、UNAPのパケット番号を監視することによって、伝送途中で損失されたパケットを検出することができる。変形例では、サーバ1、クライアント端末2ともに、UNAPのパケット番号を監視し、伝送途中で損失されたパケットについても考慮して、送信レート、受信レートを算出する。
図20は、変形例に係るクライアント端末2の受信計測結果記録テーブルの一例である。変形例に係る受信計測結果記録テーブルは、第1実施形態に係る受信計測結果記録テーブルとは、データ構造が異なる。
変形例に係る受信計測結果記録テーブルのエントリには、区間番号、受信パケット数、受信サイズ、受信時間の項目が含まれる。「区間番号」には、計測区間の番号が格納される。計測区間は、パケット番号によって決められる。例えば、変形例では、計測区間のサイズは64パケットであり、パケット番号で64パケットごとに1区間となる。計測区間のサイズは、64パケットに限定されない。
「受信パケット数」には、当該計測区間で受信されたパケット数が格納される。「受信サイズ」には、当該計測区間で受信されたパケットの合計サイズが格納される。「受信時間」には、当該計測区間の時間長が格納される。
図21は、変形例に係るクライアント端末2の受信帯域計測部22の処理のフローチャートの一例である。図21に示される処理は、クライアント端末2において仮想デスクトップクライアントプログラム205Pの起動を契機に開始される。
OP71では、受信帯域計測部22は、区間番号を1、区間単位を64パケット、受信サイズを0、受信パケット数を0に設定する。区間単位は64パケットに限定されない。
OP72では、受信帯域計測部22は、仮想デスクトップのパケットの受信を待機する。受信帯域計測部22が仮想デスクトップのパケットを受信すると(OP72:YES)、処理がOP73に進む。受信帯域計測部22はアプリケーション層の機能構成要素であるので、実際には、受信帯域計測部22には、パケットではなく、パケットから復元されたデータが入力される。パケットの受信、受信パケットのサイズ、受信パケットのパケット番号等は、トランスポート層のUNAPからアプリケーション層の受信帯域計測部22に通知される。
OP73では、受信帯域計測部22は、受信パケット数が0である場合に、受信開始時刻を現在時刻に設定する。受信パケット数が0でない場合には、OP73の処理は省略される。
OP74では、受信帯域計測部22は、受信サイズと受信パケット数とを更新する。受信サイズは、現在の受信サイズの値に、受信したパケットのサイズが加算されて更新される。受信パケット数は、現在の受信パケット数の値に1が加算されて更新される。
OP75では、受信帯域計測部22は、受信パケットのパケット番号が区間番号に区間単位を乗じた値以上の値であるか否かを判定する。受信パケットのパケット番号が区間番号に区間単位を乗じた値以上の値である場合には(OP75:YES)、処理がOP76に進む。受信パケットのパケット番号が区間番号に区間単位を乗じた値未満の値である場合には(OP75:NO)、処理がOP72に進み、OP72からOP75の処理が繰り返し実行される。
OP76では、受信帯域計測部22は、受信計測結果記録テーブルに計測結果を記録する。受信計測結果記録テーブルのエントリの「区間番号」、「受信パケット数」、及び、「受信サイズ」には、それぞれ、現在の値が記録される。受信計測結果記録テーブルのエントリの「受信時間」には、現在時刻から受信開始時刻を引いた値が記録される。
OP77では、受信帯域計測部22は、受信帯域送信部23に、受信レート情報の送信指示を出力する。受信帯域送信部23は、受信レート情報の送信指示を受けて、OP76において記録された受信計測結果記録テーブルの最新のエントリを受信レート情報としてサーバ1に送信する。
OP78では、受信帯域計測部22は、現在の区間番号に1を加算して区間番号を更新する。また、受信帯域計測部22は、受信パケット数、受信サイズを0にリセットする。次に処理がOP72に進み、OP72から処理が実行される。
図22は、変形例に係るサーバ1の送信計測結果記録テーブルの一例である。変形例に係る送信計測結果記録テーブルは、第1実施形態に係る送信計測結果記録テーブルとは、データ構造が異なる。
変形例に係る送信計測結果記録テーブルのエントリには、区間番号、送信パケット数、送信サイズ、送信時間の項目が含まれる。「区間番号」には、計測区間の番号が格納される。「送信パケット数」には、当該計測区間で送信されたパケット数が格納される。「送信サイズ」には、当該計測区間で送信されたパケットの合計サイズが格納される。「送信時間」には、当該計測区間の時間長が格納される。なお、サーバ1とクライアント端末2とで、計測区間のサイズは、同じである。
変形例では、サーバ1の受信レート情報テーブルは、図20のクライアント端末2の受信計測結果記録テーブルと同じデータ構造である。
図23は、変形例に係るサーバ1の送信レート計測部18のフローチャートの一例である。図23に示される処理は、仮想デスクトップサーバプログラム105Pが起動されるとともに開始される。
OP81では、送信レート計測部18は、区間番号を1、区間単位を64パケット、送信サイズを0、送信パケット数を0に設定する。区間単位は64パケットに限定されない。
OP82では、送信レート計測部18は、仮想デスクトップのパケットの送信を待機する。送信レート計測部18がクライアント端末2へのパケットの送信を検出すると(OP82:YES)、処理がOP83に進む。パケットの送信は、更新データが送信キューに格納された以降のアプリケーション層よりも下位の層の処理である。そのため、変形例では、送信レート計測部18は、パケットの送信、送信パケットのサイズ、送信パケットのパケット番号等は、トランスポート層のUNAPからの通知によって取得する。
OP83では、送信レート計測部18は、送信パケット数の値が0である場合に、送信開始時刻を現在時刻に設定する。送信パケット数の値が0でない場合には、OP83の処理は省略される。
OP84では、送信レート計測部18は、送信サイズに送信されたパケットのサイズを加算して、送信サイズを更新する。また、送信レート計測部18は、送信パケット数に1を加算して、送信パケット数を更新する。
OP85では、送信レート計測部18は、送信パケットのパケット番号が区間番号に区間単位を乗じた値以上の値であるか否かを判定する。送信パケットのパケット番号が区間番号に区間単位を乗じた値以上の値である場合には(OP85:YES)、処理がOP86に進む。送信パケットのパケット番号が区間番号に区間単位を乗じた値未満の値である場合には(OP85:NO)、処理がOP82に進み、OP82からOP85の処理が繰り返し実行される。
OP86では、送信レート計測部18は、区間番号、送信パケット数、送信サイズ、送信時間を送信計測結果記録テーブルに記録する。送信計測結果記録テーブルの送信時間には、現在時刻から送信開始時刻を引いた時間長が格納される。
OP87では、送信レート計測部18は、区間番号に1を加算して区間番号を更新する。また、送信レート計測部18は、送信パケット数及び送信サイズを0にリセットする。その後、処理がOP82に進み、OP82の処理から繰り返し実行される。
変形例では、制御部17の処理は、第1実施形態とほぼ同様である。ただし、第1実施形態では、例えば、図15のOP52、OP53で、直近の過去のm周期分の受信レート、送信レートの平均値が求められていたが、変形例では、直近の過去のm区間分の受信レート、送信レートの平均値が求められる。それ以外の制御部17の処理は、第1実施形態と同様である。
変形例のように、パケットを特定するために付与されるパケット番号を利用して、受信レートを算出する場合には、伝送途中で損失されたパケットの存在を考慮することができる。具体的には、計測区間の単位が64パケットで、1つのパケットが損失されている場合でも、1つの計測区間の受信レートは、実際に受信された63パケットの合計サイズを64パケット受信されているはずの時間長で割って算出される。一方、1つの計測区間の送信レートは、実際に送信された64パケットの合計サイズを64パケット送信された時間長で割って算出される。そのため、パケットロスが発生している場合には、第1実施形態に比べて、変形例の方が、受信レートと送信レートの値の乖離が大きくなる。したがって、変形例によれば、より正確にネットワークの空き帯域を推定することができる。
なお、変形例は、UNAPに限定されず、パケットを特定するパケット番号のような、パケットロスを検出可能なトランスポート層のプロトコルであれば適用可能である。なお、変形例では、送信レート計測部18は、UNAPから通知されるパケット送信の情報に基づいて送信パケットを計測するので、UNAPによる送信処理が、「送信処理」の一例である。UNAPによる送信処理は、例えば、データグラムにUNAPヘッダを付与して下位層のプロトコル(例えば、UDP)にデータグラムを渡すこと等である。
<その他>
第1実施形態では、仮想デスクトップ技術に適用する場合について説明されたが、第1実施形態で説明された技術は、送信の度にデータ量が変動するような技術、アプリケーションについて適用可能である。また、第1実施形態では、クライアント端末2にデータを送信しないことが判定された場合に、サーバ1は当該データを廃棄するが、クライアント端末2にデータを送信しないことが判定された場合のサーバ1の処理はこれに限定されない。例えば、サーバ1は、クライアント端末2にデータを送信しないことが判定された場合に、当該データをバッファ等に保持して当該データの送信を保留し、次に、クライアント端末2へデータを送信することが判定された場合に、バッファ内のデータも送信してもよい。
<記録媒体>
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる非一時的な記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD−ROM、CD−R/W、DVD、ブルーレイディスク、DAT、8mmテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ROM(リードオンリーメモリ)等がある。さらに、SSD(Solid State Drive)は、コンピュータ等から取り外し可能な記録媒体としても、コ
ンピュータ等に固定された記録媒体としても利用可能である。