JP2013512512A - 軽量クライアントを使用してネットワーク上で仮想化コンピューティングサービスとインターフェースするための方法 - Google Patents

軽量クライアントを使用してネットワーク上で仮想化コンピューティングサービスとインターフェースするための方法 Download PDF

Info

Publication number
JP2013512512A
JP2013512512A JP2012541210A JP2012541210A JP2013512512A JP 2013512512 A JP2013512512 A JP 2013512512A JP 2012541210 A JP2012541210 A JP 2012541210A JP 2012541210 A JP2012541210 A JP 2012541210A JP 2013512512 A JP2013512512 A JP 2013512512A
Authority
JP
Japan
Prior art keywords
client
frame buffer
virtual machine
buffer data
image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012541210A
Other languages
English (en)
Inventor
ヴィルク、スティーブン、ディー.
バドガー、ピーター
ロンカディン、ダン
ウィリス、ルディー
セルヴィッジ、ジェームス
Original Assignee
フレームホーク、インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by フレームホーク、インコーポレーテッド filed Critical フレームホーク、インコーポレーテッド
Publication of JP2013512512A publication Critical patent/JP2013512512A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]

Abstract

【解決手段】方法は、クライアントから、仮想マシンにおいて利用可能な仮想サービスを制御することを求める接続要求を受け取るステップを含む。要求は、クライアントの接続要件を記述する複数の接続パラメータを含み、画像プロセッサアルゴリズムを装備する仮想マシンにおいて受け取られる。接続パラメータは、特定の仮想マシンを識別するために画像プロセッサアルゴリズムを使用して照会される。仮想メモリに位置する識別された仮想マシンのためのフレームバッファデータがハイパーバイザを介して直接アクセスされ、読み取られる。フレームバッファデータは、画像プロセッサアルゴリズムを使用して複数の画像データパケットへと処理され、クライアントと関連付けられた表示装置上で提示するためにクライアントへ送信される。画像データパケットの文法は、クライアントに合わせてカスタマイズされ、特定の仮想マシンについての仮想マシンディスプレイの画像を表す。
【選択図】図2−1

Description

本発明は、軽量クライアントを用いて、短距離および長距離にわたって仮想化コンピュータサービスにアクセスし、仮想化コンピュータサービスを制御し、仮想化コンピュータサービスとインターフェースするための方法およびシステムに関する。
仮想環境において、仮想リソースは、ハードウェアプロトコルとソフトウェアプロトコルの組み合わせによってリモートでアクセスされ、制御される。仮想環境は、インターネット上のサービスとして提供される、そのような仮想リソースにアクセスするための基礎をなす技術の「クラウド化」によりクラウドサービスと適切に名付けられた複数の動的に拡張可能な仮想リソースを含む。典型的な仮想環境は、コンピューティングハードウェアの集合体、すなわち、コンピューティングハードウェアの上に位置し、コンピューティングハードウェアと、ハイパーバイザを介してハードウェアにアクセスする、ハイパーバイザの上に位置する複数のゲスト(仮想マシンまたはVM)とへのアクセスを提供するハイパーバイザとみなすことができる。プロトコルを介して仮想環境内の仮想化コンピュータサービス(または単に仮想サービスともいう)に接続し、それをリモートで制御するのに複数のクライアントが使用される。これらのプロトコル/プロトコルの派生プロトコルは、元のグラフィックスストリームより低い帯域幅の通信を可能にするために冗長性除去およびグラフィック命令書換えを使用して、VMと関連付けられたダイレクト・グラフィックス・ストリームの圧縮/伸張において使用される。
上記プロトコルには独自の制限および課題がある。大きな制限は、これらのプロトコルが特定の1つまたは複数のプラットフォーム(グラフィックス/オペレーティングシステム層)に縛られており、オペレーティングシステムまたはグラフィックスチップが圧縮/伸張プロトコルと調和することを必要とすることである。これは、仮想環境内のリモートVMにおいてコマンドを解釈し、実行することができるように、圧縮プロトコルがオペレーティングシステムのグラフィックスの「コンテキスト」を活用することを意味する。そのようなプラットフォーム特有のプロトコルの悪影響には、プログレッシブ画像の圧縮/伸張および解釈のためのシンクライアントと仮想サービス側との両方における高処理能力のCPU使用と、長距離WANネットワーク接続の大きな待ち時間を処理する際の難しさが含まれる。さらに別の不都合点には、ある特定の状況で圧縮を復号するために専用のチップ(グラフィックスチップ)を必要とすること、および別の状況での高ネットワーク消費が含まれる。
加えて、そのようなプラットフォーム特有のソフトウェアベースのプロトコルを策定するための基礎も、オペレーティングシステムのグラフィックス層を介して高速性能を推進するものであった。その結果、オペレーティングシステムのグラフィックスコマンドの直接解釈がそのようなプロトコルの設計にとって決定的に重要になり、その設計がプラットフォーム特有のものになり、これが仮想マシン環境へ引き継がれた。カスタマイズプロトコルの別の欠点は、プロトコルの複雑さにより、低処理能力のシンクライアントやモバイルスマートフォンクラスの機器といった多くの軽量クライアント機器との互換性を欠くことである。
本発明の実施形態が生じるのはこの状況においてである。
本発明の実施形態は、軽量または非軽量のコンピューティング機器を用いて短距離および長距離にわたって仮想化コンピュータサービスにアクセスし、仮想化コンピュータサービスを制御し、仮想化コンピュータサービスとインターフェースすることを可能にする多数の方法および構成を提供する。一実施形態において、方法は、仮想マシンのうちの少なくとも1台が画像プロセッサアルゴリズムを実行する、ハイパーバイザ上で走っている複数の仮想マシンの仮想インフラストラクチャを含むシステムに組み込まれる。ハイパーバイザは、仮想マシンの個々のオペレーティングシステムと対話する。画像プロセッサアルゴリズムは、仮想マシンへの接続を求めるクライアントからの要求を受け取り、接続を管理し、要求されたコンピューティングサービスを提供するように構成される。
一実施形態では、接続要求は、接続要件を定義する複数の接続パラメータと、クライアントと関連付けられた他の環境パラメータとを含む。クライアントによる要求は、仮想インフラストラクチャ内の特定の仮想マシン上で利用可能な仮想化コンピュータサービスへのアクセスを取得し、リモートで制御するためのものである。接続要求を受け取り次第、特定の仮想マシンとは異なる仮想マシン上で実行されている画像プロセッサアルゴリズムが、接続パラメータを解析して仮想化コンピュータサービスと関連付けられた特定の仮想マシンを識別し、ハイパーバイザと対話して、特定の仮想マシンと関連付けられているメモリからフレームバッファデータを獲得する。メモリからのフレームバッファデータは、特定の仮想マシンの仮想マシンディスプレイの画像のグラフィカル出力を定義する。フレームバッファデータは、仮想マシン内のアルゴリズムによって画像データパケットへと処理され、フォーマットされる。画像データパケットは、トランスポート(伝送)プロトコルに基づいてさらにパッケージ化される。次いで画像データパケットは、クライアントの表示装置においてレンダリングするために、トランスポートプロトコルを使用してクライアントへ送信される。レンダリングされた出力は、特定の仮想マシンにおいて現在実行され、またはレンダリングされているグラフィカル要素または非グラフィカル要素、プログラムおよび他の要素のディスプレイを含む仮想マシンディスプレイの画像または部分画像を提示する。
アルゴリズムは、オペレーティングシステムまたはグラフィックスカードではなくハイパーバイザを介してフレームバッファデータに直接アクセスすることにより、仮想マシンディスプレイの高性能画像を送信することができる能力を提供する。その結果画像は、オペレーティングシステムまたはグラフィックス層からのどんな直接または事前の命令もなしで獲得され、よって、アルゴリズムがオペレーティングシステムおよびグラフィックスカードに依存しないものになる。グラフィカル出力はパッケージ化され、クライアント上での複雑な処理を必要としない単純な伝送プロトコルを使用して送信されるため、伝送サービスは、スマートな追跡法および再送信法を利用することができる。これらの実施形態は、クライアントが仮想サービスと近くからも遠くからも対話することを可能にする。グラフィカル出力は、クライアントにおいて容易に伸張し、処理し、レンダリングすることのできる画像データを含み、そのため、超シンクライアントが仮想サービスにアクセスし、仮想サービスを制御することが可能になる。単純なトランスポートプロトコルは、帯域幅の変化、待ち時間、および損失に対して敏感であり、適応的である。
本明細書では例としていくつかの異なる実施形態を提示する。
一実施形態では、クライアントを介してリモートで仮想化コンピュータサービス(または単に「仮想サービス」ともいう)を制御するための方法が開示される。方法は、仮想センタ内の特定の仮想マシンにおいて利用可能な仮想サービスを制御することを求めるクライアントからの接続要求を受け取るステップを含む。接続要求は、クライアントの接続要件を記述する複数の接続パラメータを含み、画像プロセッサアルゴリズムを実行する仮想マシンにおいて受け取られる。接続パラメータは、フレームバッファおよび伝送パラメータを識別するために画像プロセッサアルゴリズムによって照会される。特定の仮想マシンのためのフレームバッファデータが、ハイパーバイザを介して仮想センタ内の仮想メモリの所定の位置から直接アクセスされる。フレームバッファデータは、特定の仮想マシンと関連付けられた仮想マシンディスプレイと関連付けられた画像を表すグラフィカル出力を定義する。フレームバッファデータは、画像プロセッサアルゴリズムを使用し、複数の接続パラメータに基づいて複数の画像データパケットへと処理され、クライアントと関連付けられた表示装置においてレンダリングするためにクライアントへ送信される。レンダリングされたグラフィカル出力は、クライアントにおいて識別された仮想マシンのための仮想マシンディスプレイの画像を提示する。
さらに別の実施形態では、ネットワーク上でクライアントにサービスを提供するための方法が開示される。方法は、仮想化コンピュータサービスを制御することを求めるクライアントからの接続要求を受け取ることを含む。接続要求は、画像プロセッサアルゴリズムを実行している仮想マシンにおいて受け取られ、クライアントの接続要件を定義する複数の接続パラメータを含む。接続パラメータは、要求される種類のサービスを提供する特定のサービス層と、クライアントからの接続要求を満たす仮想化コンピュータサービスを提供するための識別されたサービス層内の特定の仮想マシンとを識別するために、画像プロセッサアルゴリズムを使用して照会される。方法は、識別されたサービス層に接続するステップと、ハイパーバイザを介して直接、仮想メモリ内の所定の位置から特定のサービス層内の特定のVMのためのフレームバッファデータにアクセスするステップとを含む。アクセスされたフレームバッファデータは、複数の接続パラメータに基づき、画像プロセッサアルゴリズムを使用して複数の画像データパケットへと処理され、レンダリングするためにクライアントへ送信される。クライアントへ送信される画像データパケットは、クライアントに特有のものであり、特定の仮想マシンの仮想マシンディスプレイの画像を表す。
別の実施形態では、ネットワーク上でクライアントにサービスを提供するための方法が開示される。方法は、複数の仮想マシンがハイパーバイザ上で実行されている仮想センタ内の少なくとも1台の仮想マシン上で画像プロセッサアルゴリズムを提供するステップを含む。画像プロセッサアルゴリズムを実行している仮想マシンにおいて受け取られる接続要求は、クライアントと関連付けられた接続要件を定義する複数の接続パラメータと、接続要求を満たすことのできる特定の仮想マシンとを識別するように処理される。識別された仮想マシンのためのフレームバッファデータが、ハイパーバイザを介して仮想メモリ内の所定の位置から直接アクセスされ、読み取られる。クライアントに特有の複数の画像データパケットが、接続パラメータに基づき、画像プロセッサアルゴリズムを使用して、読み取られたフレームバッファデータのために生成される。生成された画像データパケットは、読み取られたフレームバッファデータと関連付けられたコンテキスト情報を含む。グラフィカル出力を定義する画像データパケットは、クライアントと関連付けられた表示装置においてレンダリングするためにクライアントへ送信される。レンダリングされた画像データパケットは、クライアントにおいて、識別された仮想マシンと関連付けられた仮想画像ディスプレイの画像を表す。
本発明の別の実施形態では、コンピューティングプロファイルへのユーザアクセスを提供するための方法が開示される。コンピューティングプロファイルは、ユーザのアプリケーションおよびデータへのアクセスを提供するユーザのためのデスクトップを定義する。方法は、クライアントからインターネット接続を介してコンピューティングプロファイルへの接続を要求するステップを含む。要求された接続に応答して、コンピューティングプロファイルのための特定の仮想マシンが識別される。識別された仮想マシンのためのフレームバッファデータが識別され、読み取られる。フレームバッファデータは、接続要求を行ったクライアントの特性に基づいて画像データパケットを生成するように処理される。画像データパケットはクライアントへ転送され、そこで画像データパケットが処理され、クライアントと関連付けられたディスプレイ上で提示される。フレームバッファデータを読み取り、処理し、フレームバッファデータを処理するためのクライアントへ転送するプロセスは、セッションにおいてクライアントと仮想マシンとの間の通信が交換されている間、続行される。
別の実施形態では、仮想マシン(VM)のセッションへのアクセスを提供するための方法が開示される。方法は、VMのセッションへのアクセスを獲得する動作と、VMのためのフレームバッファデータを識別する動作と、フレームバッファデータを読み取り、クライアントの特性に基づいて画像データパケットを生成するように処理する動作と、クライアントの特性のために生成された画像データパケットをクライアントへ転送する動作と、クライアントとVMとの間でバックチャネル通信を交換している間に、セッションにおいて、画像データパケットを読み取り、処理し、転送する動作を繰り返す動作とを含む。
本発明は、以下の詳細な説明を添付の図面および特許請求の範囲と併せて読めば容易に理解されるであろう。
本発明は、以下の詳細な説明を添付の図面と併せて読めば容易に理解されるであろう。
仮想環境において仮想化コンピュータサービスにリモートでアクセスし、制御するのに使用された従来のシステムを示すブロック図である。
本発明の一実施形態による、仮想環境において仮想化コンピュータサービスにリモートでアクセスし、それを制御する際に使用されるシステムを示すブロック図である。
図2−1に示す本発明の別の実施形態を示す図である。
従来のビデオカードの働きを示す簡単なブロック図である。
本発明の一実施形態における、仮想マシンと関連付けられたモニタの仮想画像にアクセスする際のハイパーバイザの働きを示す簡単なブロック図である。
本発明の別の実施形態における、フレームバッファデータを取り込むプロセスを示す簡単なブロック図である。
フレームバッファデータをパッケージ化し、データパケットをクライアントへ送信する際のLFPを実行する画像プロセッサの働きを示す簡単なブロック図である。
本発明の一実施形態における、特定のクライアントに従ったフレームバッファデータのパケット化の例を示す図である。
様々なソースからのフレームバッファデータが帯域内通信によって受け取られ、レンダリングされる一実施形態を示す図である。 帯域外フレームバッファデータがクライアントの表示装置において受け取られ、レンダリングされる一実施形態を示す図である。
本発明の一実施形態における、画像プロセッサアルゴリズム内の様々なモジュールと、様々なモジュールとクライアントとサービスとの間の対話とを識別する簡略化されたブロック図である。
本発明の一実施形態における、システムの様々なモジュールと構成要素との間の詳細な情報の流れを識別するブロック図である。
本発明の一実施形態による、コンピュータシステムのリモートのアクセスおよび制御において使用されるスキャンエンジン内のプロセスフローを定義するブロック図である。
本発明の一実施形態による、コンピュータシステムのリモートのアクセスおよび制御において使用される熱エンジン内のプロセスフローを定義するブロック図である。
本発明の一実施形態による、コンピュータシステムのリモートのアクセスおよび制御において使用されるコンテキストエンジン内のプロセスフローを定義するブロック図である。
本発明の一実施形態による、コンピュータシステムのリモートのアクセスおよび制御において使用される論理エンジン内のプロセスフローを定義するブロック図である。
フレームバッファデータの管理を示すブロック図である。
本発明の一実施形態による、コンピュータシステムのリモートのアクセスおよび制御において使用される接続エンジン内のプロセスフローを定義するブロック図である。
本発明の一実施形態による、コンピュータシステムのリモートのアクセスおよび制御において使用される出力エンジン内のプロセスフローを定義するブロック図である。
本発明の一実施形態による、画像プロセッサアルゴリズムの様々な構成要素と対話するシンクライアントを示すブロック図である。
本発明の一実施形態における、異なる層において提供される仮想化コンピュータサービスへのアクセスを示す簡略化されたブロック図である。
本発明の一実施形態における、ラップトップコンピュータやモバイル機器といった携帯式コンピューティング機器がドッキングを介して仮想環境内の仮想化コンピュータサービスにアクセスするためのやり方を示す図である。
本発明の一実施形態における、仮想環境内の仮想化コンピュータサービスにアクセスするためのPC上のフラッシュドライブを示す図である。
本発明の別の実施形態における、ワイヤレスフィデリティ(WiFi)方式を使用して仮想環境内の仮想化コンピュータサービスにアクセスする携帯情報端末(PDA)を示す図である。
本発明の一実施形態における、リモートクライアントから仮想化コンピュータサービスを制御するのに関与する様々なステップを示すプロセス流れ図である。
次に、仮想環境内のコンピュータシステムをリモートで制御するためのいくつかの例示的実施形態を説明する。本発明は、本明細書に示す具体的詳細の一部または全部がなくても実施され得ることが当業者には明らかであろう。
本発明は、リモートクライアントを介した仮想環境内の仮想マシンにおいて利用可能な仮想化コンピュータサービス(または単に「仮想サービス」ともいう)のアクセスおよび管理を可能にする方法、システム、コンピュータコードを定義するものである。各実施形態は、仮想環境内の、サーバ仮想マシンといった仮想マシンに組み込まれた画像プロセッサアルゴリズムといったアルゴリズムを使用して、仮想サービスとの接続を確立する手段を提供する。仮想サービスを求める要求がサーバ仮想マシン(SVM)において受け取られると、SVM内のアルゴリズムは、仮想サービスを提供する仮想マシン(VM)を識別するために、その上で複数の仮想マシンが走っている仮想環境内のハイパーバイザと対話する。VMを識別し次第、アルゴリズムは、ハイパーバイザを介して、識別されたVMの仮想モニタの画像を表すグラフィカル出力を定義する識別されたVMのメモリからフレームバッファデータにアクセスし、それを読み取る。アルゴリズムは、フレームバッファデータを処理し、フレームバッファデータをパケットへとパッケージ化し、クライアントと関連付けられた表示装置においてレンダリングするために、単純なトランスポートプロトコルを使用して、パッケージ化されたフレームバッファデータをクライアントへ送る。レンダリングされたフレームバッファデータについてのクライアントの表示装置におけるユーザ対話が取り込まれ、データが処理されるSVMおよびハイパーバイザを介して識別されたVMへ再度宛先指定されて、仮想サービスへの制御を提供する。仮想サービスを制御するためのグラフィカルアクセスは、識別された仮想マシンのオペレーティングシステムまたはグラフィックスカードからどんな命令も受け取らずに提供される。
仮想サービスを制御するためのアクセスがグラフィカル出力の取込みによるものであり、オペレーティングシステム/グラフィックスカードからの命令によるものではないため、各実施形態は、各仮想マシンにおいて利用可能な仮想サービスを制御するためのプラットフォームに依存しない解決策を定義し、それによって柔軟で有効なツールを提供する。パッケージ化されたグラフィカル出力は、複雑な計算/処理を使用しなくても解読/伸張することができ、超シンクライアントでさえも仮想サービスにアクセスさせ、仮想サービスを制御させることができる。単純なトランスポートプロトコルは、クライアントが長距離にわたっても短距離にわたっても仮想サービスにアクセスし、仮想サービスを制御することを可能にし、待ち時間および損失のあるネットワーク状況をより自然に扱う。アルゴリズムは、ハイパーバイザと対話してディスプレイの仮想画像を抽出するのであり、オペレーティングシステムと対話してオペレーティングシステムから命令を取り出すのではないため、グラフィカル言語命令を解読し/伸張するためのクライアントにおける高処理能力プロセッサの必要を回避することができる。
アルゴリズムの働きは仮想マシンのオペレーティングシステムには見えない。ハイパーバイザは、すべてのVMについてのメモリ管理を提供し、クライアントによって提供される接続パラメータからの情報とメモリ管理からの情報とを使用して、適切なVMと、識別されたVMのためのディスプレイの仮想画像を表す情報を提供する識別されたVMのためのメモリの特定の位置とを識別する。フレームバッファデータへのアクセスを得るためのハイパーバイザおよび他の構成要素の役割を、図2Aおよび図2Bを参照して詳細に説明する。
様々な実施形態の利点を十分に把握するために、本出願全体においてよく使用される一連の用語をまず詳細に説明する。これらの定義は、各用語に関する一般的な手引きとして提供するものであり、いかなる点においても、これらの用語と関連付けられる変形または均等物に関して限定するものとみなすべきではない。
a.「シンクライアント」とは、本出願で使用する場合、計算処理の一部を別のコンピュータにおいて、普通はサーバ、リモートコンピュータ、または別のネットワークで接続されたコンピューティング機器において行うことができるソフトウェアまたはハードウェア機器である。シンクライアントは、リーンクライアント、スリムクライアントまたはダムクライアントとも呼ばれ、インターフェース(ソフトウェア・シン・クライアント)またはごく最小限の計算処理リソース(ハードウェア・シン・クライアント)を含み、ハードドライブを含まない場合さえもある。実施形態によっては、スマートフォン、携帯情報端末、タブレットコンピュータ、携帯電話、端末などによく見られるように、固体メモリと記憶装置で十分である。一実施形態では、シンクライアントは、そのサーバコンピュータを利用して記憶その他のリソース能力を提供し、機器を端末(すなわち画面とキーボードと入力機器)により近いものとして動作させ得る。超シンクライアントとは、関連付けられたサーバ(またはネットワークで接続されたコンピューティング機器)が計算処理の大部分を提供するクライアントである。超シンクライアントの例にはコンピュータ端末やディスプレイインターフェースが含まれる。また、ファットクライアント(すなわち、すべての標準的な独立型ハードウェアおよびソフトウェアを備えるクライアント)も、ファットクライアントがリモートコンピュータに接続され、リモートコンピュータが処理の大部分を行い、または特定のコンピューティングセッションについてのサービスを提供する場合には、シンクライアントとして動作することができる。
b.「リモート」アクセスクライアントとは、本出願で使用する場合、仮想センタ内のハイパーバイザ上で実行されているSVMおよびVMと同じ場所にあり、または同じ場所にない、インターネットといったネットワーク接続を使用して、SVMを介してVMにアクセスするクライアントをいう。リモートアクセスは、ネットワーク(有線または無線の)接続を確立することができる限り、クライアントが物理的にハードウェアまたはサーバのそばに位置する場合でさえも、リモートとすることができる。例えばユーザは、たとえそのユーザが実際にはデスクトップコンピュータと同じ場所にいたとしても、あるいは地球の裏側にいたとしても、携帯電話のインターフェースを介して自分のデスクトップコンピュータにログインすることもできる。
c.「再フォーマット」とは、本出願で使用する場合、オペレーティングシステム(OS)に依存したフォーマットといった特定のフォーマットで最初に定義されたデータが、アルゴリズムによって規定されるフォーマットに再定義されるプロセスである。アルゴリズムによって定義されるフォーマットはどんなOS特有のフォーマットにも縛られず、複雑でない伸張プロトコルを使用して解読することのできるより普遍的な種類のものとすることができる。データの再フォーマットで使用され得るOS特有のフォーマットの例には、それだけに限らないが、Linux(商標)、OSX(商標)、BeOS(商標)、AIX(商標)、MVS(商標)、Windows(商標)などのためのフレームバッファフォーマットが含まれる。
d.「宛先変更」とは、本出願で使用する場合、既定の位置からアルゴリズムによって定義される新しい位置へデータを再経路指定するプロセスをいう。例えば、特定の仮想マシンからのデータは、普通、個々の仮想メモリに記憶される。本発明では、第2の仮想マシン(VM2)のメモリをローカルで探す第1の仮想マシン(VM1)が、ハイパーバイザを介して第2の仮想マシンの実際のメモリ空間へのアクセスを得る。第2の仮想マシンのメモリ内のデータは第1の仮想マシンのローカルメモリにおいて読み取られ、処理され得る。ハイパーバイザは、当業界において周知のように、あるVMに別のVMの機器/リソースへのアクセスを提供することができる。
e.仮想化コンピュータサービス(または「仮想サービス」)は、本出願で使用する場合、ハードウェアとソフトウェアの両方に関連したサービスを包含する仮想マシンによって提供されるサービスをいう。各仮想マシンにおいて利用可能な仮想サービスの中には、それだけに限らないが、共用物理ハードウェアリソース、ソフトウェアインターフェース、および仮想マシンにおいて実行され、かつ/またはハードウェアリソースにアクセスするのに使用されるプログラムが含まれる。仮想サービスは、リモートデスクトップのためのレンダリング、コンピュータプログラムのリモート処理、リモートゲーム、リモートでホストされる娯楽用ディジタルビデオ録画(DVR)、個人用ビデオ録画(PVR)、およびユーザに割り当てられた記憶装置に記憶されたファイル、通信プログラム、ビデオ、画像、写真、データおよびメタデータへのアクセスを含むデータセンタベースのサービスへの一般的なアクセスを提供することができる。
f.「パッケージ」とは、本出願で使用する場合、ディジタルネットワーク上の通信の基本単位であるデータパケットをいう。データのパッケージ化にはプロトコルによって異なる構造を使用する。データは、アルゴリズムと関連付けられた特定のプロトコルと、サーバ仮想マシンとクライアントとの間でのデータの送信に関与する伝送プロトコルとに従うようにフォーマット(処理)される。伝送プロトコルは、データの種類に応じたパケットのための構造を提供し、例えば、送信元インターネットプロトコル(IP)アドレス、宛先IPアドレス、パケットの順序番号、サービスの種類、フラグなどを含み得る。
g.「サーバ仮想マシン」(SVM)とは、本出願で使用する場合、他の仮想マシンとクライアントとの対話を管理する仮想マシンをいう。SVMは、VMのすべての構成要素を含み、クライアントによって要求される情報を提供するなど、クライアント/サーバ・コンピュータ・システムにおけるクライアントに対するサーバと同様の機能を提供するように構成される。SVMは、対応するVMの特定のメモリ空間にアクセスすることによって情報を提供する。SVMは、SVMがハイパーバイザを介して個々の仮想マシンのメモリへのアクセスを得ることを可能にする、画像アクセスアルゴリズムといったアルゴリズムを装備する。各VMのメモリにアクセスするためのアルゴリズムは、SVMといった特定のVMにおいて提供される必要はなく、仮想センタにおいて走っている各VMにおいて提供することができ、そのとき各VMは、他のVMのSVM管理メモリのように働くことに留意すべきである。
h.「フレームバッファ情報」または「フレームバッファデータ」とは、本出願で使用される場合、通常は、仮想マシンの仮想マシンディスプレイにおいて提示するためにOSによって生成されるビデオ出力データをいう。OSはこのデータを特定のフォーマットで生成し、データは仮想マシン表示画面上でレンダリングされる様々な要素、特徴、画像を定義するあらゆる画素を表すビットマップデータからなる。フレームバッファデータは、データの全画面にわたって、左から右へ、上から下へとトレースされ、リフレッシュされる。各画素は、画面のあらゆる詳細を取り込むために、色、深さ、サイズなどを含むように定義される。フレームバッファ情報は、仮想マシン表示画面上でレンダリングするためにデータが最初に宛先指定された、仮想マシンといったコンピューティングシステムのメモリの特定の部分に記憶されたグラフィカル出力を定義する。
i.接続パラメータは、本出願で使用される場合、クライアントの接続要件および他の環境要件を含むクライアント特性を定義する。接続パラメータは、普通、クライアントとの最初のハンドシェーク時に獲得され、発信元IPアドレスといったクライアントの位置、サイズおよび品質を含む接続機能情報、宛先IPアドレスといった接続すべき仮想サービスの所望の位置、クライアントの種類、解像度、ビット深度、リフレッシュ速度を含むクライアントと関連付けられた表示装置の構成、サービス層識別などを含み得る。
様々な実施形態の理解を容易にするために、従来のプロセスにおいて使用される仮想コンピュータ環境の基本インフラストラクチャの簡単な説明をまず行い、続いて、仮想サービスをリモートで制御するための本発明の実施形態において使用される基本インフラストラクチャ内の新規の特徴を詳細に説明する。
図1に、仮想環境内で仮想化コンピュータサービス(コンピュータシステムまたは単に「仮想サービス」ともいう)のアクセスおよび制御を提供するための従来のプロセスによって使用される典型的な仮想インフラストラクチャの簡単なブロック図を示す。仮想環境は、ハイパーバイザ上で走る複数の仮想マシン(VM)によって共用される物理ハードウェアの集合体を含む。ハイパーバイザまたは仮想マシンモニタは、複数のオペレーティングシステムがホストコンピュータ上で同時に走ることを可能にするコンピュータプラットフォーム仮想化ソフトウェアである。ハイパーバイザは、共用ハードウェアと各VMとの間のインターフェースを提供する。ハイパーバイザは当業界において周知であり、したがって、本出願では詳細に説明しない。
複数のクライアントが、いくつか例を挙げると、リモート・デスクトップ・プロトコル(RDP)、インターネットプロトコル上のPC(PCOIP)、リモート・グラフィックス・ソフトウェア・プロトコル(RGS)、独立型コンピューティング・アーキテクチャ・プロトコル(ICA)といった独自のプロトコルを使用して各VMにおいて利用可能な仮想リソースにアクセスする。クライアントは、ローエンドコンピュータ端末といったシンクライアントとすることもでき、デスクトップコンピュータやラップトップコンピュータなどといったファットクライアントとすることもできる。各クライアントは、サービスまたは接続ブローカを使用して特定のVMにおいて利用可能な仮想リソースにアクセスする。サービスブローカは、クライアントの要求において提供される環境パラメータに基づいて様々なクライアントへの異なるVMのマッピングを提供するディレクトリサービスである。サービスブローカは、クライアントが、適切なプロトコルを使用して直接、対応するオペレーティングシステム(OS)にアクセスし、そのOSと対話することができるように、マッピングまたは接続情報を使用して、要求されたサービスをクライアントに提供する特定のVMを判定する。よって、クライアントが対応するVMからの情報にアクセスするためには、クライアントは、対応するOSプロトコルを理解し、それに従う必要がある。OSは、OSプロトコルに従いクライアントのプロセッサを使用してクライアントにおいて処理される命令のセットを提供する。従来のプロセスの手法は、ユーザがVMにおいて進行しているものにアクセスすることができるように、対応するOSからの命令のセットに基づいて、クライアント上で、VMにおいて実際に発生しているものを再現するという手法であった。この手法は、データ/情報を圧縮、伸張するためにデータ交換の両方の側において、すなわち、個々のVMとクライアントとにおいて処理能力の高いプロセッサを有し、シンクライアントのサイズおよび機能を厳しく制限する結果となった。さらに、従来の手法は非常にプラットフォーム/グラフィックス層中心のものであり、VMにおけるコンピュータシステム/サービスを制御するために、OS/グラフィックカードを利用して、VMのモニタ上で提供される情報をクライアントの表示装置において再現するための命令を与える。
従来のプロセスの制限を克服するために、本発明のある実施形態は、ハイパーバイザと対話して第2の仮想マシン(VM)の仮想マシンディスプレイのグラフィカル出力を表す画像を獲得する、ハイパーバイザ上で走るサーバ仮想マシンといった仮想マシン内で画像プロセッサアルゴリズムといったアルゴリズムを使用する。グラフィカル出力はパッケージ化され、レンダリングするためにクライアントに転送される。レンダリングされたグラフィカル出力は、第2のVMのディスプレイを見ることを可能にし、第2のVMにおいて実行され、またはレンダリングされているグラフィカル要素、アイコン、ディスプレイ、プログラム、リンク、写真、動画、その他のユーザインターフェース操作または非操作を示す。アルゴリズムは、第2のVMのオペレーティングシステムと対話せずに、仮想メモリの所定の位置から直接仮想マシンディスプレイの画像にアクセスしそれを読み取る。その結果、アルゴリズムは第2のVM上で走っているOSのグラフィカル命令に従わなくてもよくなる。
図2−1から図2−3に、本発明の別々の実施形態における、クライアントがどんなOSプロトコルにも縛られずにVMにおいて利用可能な仮想サービスとリモートで対話することを可能にするために仮想マシン層内の仮想マシンにおいて提供されるアルゴリズムを備える仮想インフラストラクチャ(VI)の例示的ブロック図を示す。図2Aおよび図2Bに、VMのフレームバッファ情報にアクセスする際に使用される仮想インフラストラクチャ(VI)の様々な構成要素を示す。図2C−1から図2C−3に、図2−1から図2−3に示す実施形態に対応するフレームバッファ情報へのアクセスの簡略化された図を示す。図2Dおよび図2Eに、アクセスされるフレームバッファデータを、アルゴリズムと、クライアントへフレームバッファデータのパケットを送信する際に関与する伝送プロトコルとの両方の要件に従うようにパッケージ化するプロセスの簡略化されたブロック図を示す。図2Fに、時間の経過と共にどんなデータがクライアントに送られるかを簡略化された図で示す。仮想サービスを制御するためのアルゴリズムの構成要素および機能を、これらの図面を参照して以下で詳細に説明する。
画像プロセッサ:
画像プロセッサが遠くから、超シンクライアントを介して効率よく機能するために、プラットフォームおよびオペレーティングシステムに依存しない画像プロセッサアルゴリズムの設計構造においてはいくつかの基礎をなす原理に依拠する。
依拠する基本原理のうちの1つは、画像表現である。ほとんどの仮想マシン/仮想ゲストは、各ゲストにおいて利用可能なフレームバッファ構造を有する。フレームバッファとは、本出願で使用する場合、仮想マシンのモニタ上に何が表示されるかのメモリにおける表現である。言い換えると、フレームバッファは、処理され、レンダリングされると、仮想マシンの仮想マシンディスプレイを表す仮想画像を提示するグラフィカル出力を定義する仮想マシンのメモリの特定の部分において提供される画像データを含む。一般に、ハイパーバイザ上に位置するオペレーティングシステムは「ヘッドレス」である。すなわち、OSにはモニタが接続されている必要がない。そのような場合、オペレーティングシステムは、モニタといった仮想マシンディスプレイに向けられた出力を、画像データとしてメモリ内の特定の部分へ宛先指定する。モニタに向けられた出力は、一般にコンテキストレスであるビットマップとして表されることに留意すべきである。このメモリ内の画像は、ハイパーバイザによって、個々の仮想マシンへのグラフィカル・コンソール・アクセスを確立するのに使用される。本出願では、「フレームバッファ」という用語は、ビットマップとして表され、各仮想マシン(VM)と関連付けられたメモリの特定の部分に記憶された画像データを指すためのグラフィカル出力と区別なく使用する。
フレームバッファ構造は、通常はモニタへ宛先指定されるはずのグラフィックス信号を代わりにメモリへロードされるように宛先変更するための業界手法である。フレームバッファデータは、ビット深度、水平走査速度および決定されたサイズを有するモニタと同様に扱われる。あるオペレーティングシステム、例えばMac OSX(商標)などでは、フレームバッファは固有のカーネルによってロードされる。他のいくつかのオペレーティングシステムでは、カーネルパラメータが、フレームバッファを有効にするためにスタートアップファイル内で提供される。仮想マシンのメモリ内の位置およびフレームバッファを表す画像のためのそのフォーマットは、対応するオペレーティングシステムによって駆動される。
依拠する別の原理は、画像プロセッサアルゴリズム(または単に「アルゴリズム」ともいう)が自律的に働くようなフレームバッファ構造の適正な解釈および取扱いである。アルゴリズムがプラットフォーム、オペレーティングシステム(OS)およびサービスに依存しないために、アルゴリズムは、フレームバッファ構造から画面上のフレームをどのように評価すべきか判定することができる必要がある。一実施形態において、アルゴリズムは、フレームまたは特定の情報を定義する対象領域が特定のやり方で取り扱われるように、アクティビティおよびカラーコントラスト状況に基づいて、画面上の連続した対象領域を認識することができる。一実施形態において、アルゴリズムは、人間の知覚能力を超える品質を維持することを優先して見る人に満足のいく視覚効果を提供するために、様々な技法を利用して画面の異なる部分を取り込むように構成される。一実施形態において、画面部分は不可逆効果を使用して取り込まれる。不可逆効果は、データがその品質の一部を失うように圧縮される不可逆圧縮法によって得られる。この圧縮データは、伸張されるときに、元のデータと異なるが元のデータに十分に近いデータを提供する。不可逆圧縮法は、当業界において周知であり、メディアアプリケーションをストリーミングするために、オーディオ、ビデオ、グラフィック画像といったマルチメディアデータを圧縮するのに最も広く使用されている。
アルゴリズムがネットワーク上で効率よく、高性能なものになるように、アルゴリズムは、一実施形態では、適正なユーザ体験を可能にするためにユーザ・データグラム・プロトコル(UDP)互換として設計される。UDPは、ハンドシェーク、または受信されるパケットの確認のための措置が行われない「コネクションレス」または「ステートレス」であるという点において、従来の伝送制御プロトコル(TCP)とは異なる。一実施形態において、アルゴリズムのために選択されるプロトコルは、帯域幅変化、待ち時間および損失に対して敏感であり、適応的である。以上ではアルゴリズムを特定の伝送プロトコルを用いて構成されるものとして説明したが、このアルゴリズムは例示とみなすべきであり、限定とみなすべきではない。別の実施形態では、プロトコルが、アルゴリズムによって定義され、求められる品質、性能および機能を提供することができる限り、UDP以外の他のプロトコルとの互換性を有するアルゴリズムを使用することもできる。
前述の基本原理および要件に基づき、次に、図2−1から図2−3を参照して、例示的画像プロセッサアルゴリズムの様々な特徴および機能を説明する。例示的アルゴリズムは、説明する実施形態との整合性を有する基本動作が維持される限り、特殊用途のための多少の改変にも対応し得るはずであることを理解すべきである。図2−1に示す本発明の一実施形態において、画像プロセッサアルゴリズムは、仮想環境内で複数のVMと並行してハイパーバイザ上で走る別個のVMにおいて提供される。アルゴリズムは、VIの既存のインフラストラクチャおよび構成要素を利用し、プラットフォーム/OSに依存しないと同時に、長距離にわたってリモートで、「シン」クライアントとすることも「ファット」クライアントとすることもできるクライアントを介して働くことができる能力を提供する。
さらに図2−1を参照すると、画像プロセッサアルゴリズム155は、複数の他のVM100と並行してハイパーバイザ上で走っているサーバ仮想マシン(SVM)150として働き、ハイパーバイザを介して複数のVM100と対話する仮想マシンにおいて提供される。SVM150は、様々なVM100からのフレームバッファにアクセスし、それらを読み取り、管理する。仮想環境の基本インフラストラクチャは図1を参照して説明したものと同様である。アルゴリズム155を介したSVM150とVM100との間の対話は、VMにとってローカルであり、各VMと関連付けられた仮想モニタ画面上でレンダリングされるはずのフレームバッファ情報を表すグラフィカル出力を取り込むのに、複雑な圧縮技術も高処理能力のCPUも不要である。一実施形態において、アルゴリズムは、ハイパーバイザを介して直接各VM100のフレームバッファデータ110にアクセスし、それを読み取るように設計される。
図2−2に、ハイパーバイザ上で走っているVMのうちのごく少数150だけがアルゴリズム155を独立に装備している本発明の別の実施形態を示す。アルゴリズムを独立に装備するVM150はそれぞれ、ハイパーバイザ上で走っている1台または複数の他のVM100からのフレームバッファデータにアクセスし、それを読み取り、管理する図2−1のSVMと同じ機能を提供する。この実施形態では、アルゴリズムを独立に装備する各VMのフレームバッファデータは、アルゴリズムを独立に装備する他のVMによってアクセスされ、管理され得る。図2−3に、ハイパーバイザ上で走っているすべてのVM150がアルゴリズム155を独立に装備するさらに別の実施形態を示す。画像プロセッサアルゴリズムを独立に装備する各VM150は、仮想センタ内の他のVM100のうちの1台または複数のフレームバッファデータにアクセスし、それを読み取り、管理する図2−1のSVMと同じ機能を提供する。図2−1、図2−2および図2−3に示す各実施形態におけるアルゴリズムは、ハイパーバイザを介して直接VMのフレームバッファデータにアクセスする。VM内のアルゴリズムは、ハイパーバイザ上で走っている他のVMのフレームバッファデータにアクセスするだけに制限されず、ハイパーバイザを介して直接それ自体のフレームバッファデータにアクセスするようにも構成されることに留意すべきである。前述の実施形態は例示のためのものであり、限定と解釈すべきではないことに留意すべきである。したがって当業者は、任意の順列および組み合わせが特定のVM、VMのうちの少数の特定のVM、またはハイパーバイザ上で走っているすべてのVMにおいて画像プロセッサアルゴリズムを独立に提供するために使用されてよく、VMのリソースおよびアクセス可能性に基づくものとし得ることを理解するであろう。
読み取られたフレームバッファデータは、アルゴリズムによって、アルゴリズムの要件に従った画像データパケットへと処理され、アルゴリズムを走らせているVM内の仮想ネットワーク・インターフェース・カード(NIC)へ転送され、そこで画像データパケットは、UDPといった伝送プロトコルの要件に従うようにさらにパッケージ化される。次いでパッケージ化された画像データはUDPプロトコルまたは他の機能的に同等の方式を使用して送信される。
次に、図2Aおよび図2Bを参照して、フレームバッファデータにアクセスし、それを読み取るプロセス、および関与する様々な構成要素の役割を説明する。図2Aに、特定のVMと関連付けられたオペレーティングシステム(OS)によるフレームバッファデータの宛先指定の際に使用される従来の手法を示す。各VMのOSは、通常はVMと関連付けられたモニタにおいて提示される特定のVMについてのグラフィカル出力を表す画像データを取り込むためのビデオドライバを含む。OS内のビデオドライバは画像データを、OSに提示されている物理ビデオカードへ宛先指定する。ビデオカードは、VMのために画像データを解釈してグラフィックス画像にし、解釈されたグラフィックス画像をVMの仮想マシンディスプレイにおいて提示する。普通は専用ハイパーバイザ・アクセス・ツールを備えるVMであるハイパーバイザのためのコマンドセンタにおいて作業する管理者/ユーザは、VMにアクセスし、VMの仮想マシンディスプレイに接続して、VMにおいて利用可能な1つまたは複数のサービスのトラブルシューティングと行い、または一般的に制御する。
公知であるように、フレームバッファの取り込み方には多くのものがある。上記の例は、フレームバッファの取り込み方が変化し、拡張し続けることを想定するために示すものである。例えば、フレームバッファへのアクセスがハイパーバイザの開発者によって決定されることになり、特定のAPIを使用して特定のVMのためのフレームバッファの位置を見つけることができる。APIは、特定のフレームバッファを識別し、それら特定のVMのためのフレームバッファデータを読み取るためのプロトコルを定義し得る。この場合の目標は、フォーマットを問わずにフレームバッファを読み取り、取り込むことである。
通常はVMの仮想モニタへ宛先指定されるグラフィックス画像は、代わりに、フレームバッファデータとして、仮想センタ内の仮想メモリ層の既定の位置へ宛先指定される。画像プロセッサアルゴリズムは、処理されたフレームバッファデータを解釈し、処理し、パッケージ化し、クライアントへ送信するように、ハイパーバイザと直接対話して仮想メモリ層内の既定の位置のところのVMのフレームバッファデータへのアクセスを取得する。
図2Bに、仮想センタ内の仮想グラフィックスカードを使用して、特定の仮想マシンのためのフレームバッファデータにアクセスするプロセスを示す。図2Bに示すように、VM上で走っているOSはビデオドライバを含む。仮想センタにおいて利用可能なハイパーバイザは仮想グラフィックスカードを含む。VMのOSのところのビデオドライバはそれが物理的ビデオ(グラフィックス)カードとして知覚するものと対話する。その代わりにOSは、実際には、ハイパーバイザが個々のVMのOSに物理的グラフィックスカードとして提示している仮想グラフィックスカードと対話している。VMのOSは、普通はVMの仮想マシンディスプレイをターゲットとするデータのアナログまたはディジタル表現をフレームバッファデータへと処理する。グラフィカル出力を表すフレームバッファデータは、VMのグラフィックスドライバを介して仮想グラフィックスカードへ書き込まれる。仮想グラフィックスカードは、さらに、フレームバッファデータを、ハイパーバイザを介してアクセス可能な下にある仮想メモリ層内の対応する所定のメモリ位置へとロードする。
仮想グラフィックスカードは、異なるVMにおいて走っているOSに、ハイパーバイザを介してアクセス可能な下にある仮想メモリ層内の所定のメモリアドレスへフレームバッファ情報を書き込むよう指図する、ハイパーバイザによってすべてのVMに提示される、ビデオ電子装置規格化協会(VESA)カードといった汎用カードである。下にあるメモリ層に記憶されたフレームバッファ情報は、普通、ビットマップの形であることに留意すべきである。ビットマップは未処理のコンテキストレスデータである。アルゴリズムを使用して、仮想マシンは、すべてのVMのために下にあるメモリ、機器およびリソースを管理しているハイパーバイザを介してすべてのVMのフレームバッファデータにアクセスすることができる。フレームバッファ情報(データ)は、多くの場合、例えば、/dev/fb0などといった機器位置を使用し、カーネルを介して利用することができる。ハイパーバイザと同じバス上に位置する、画像プロセッサアルゴリズムといったSVM(例えばLFPサーバなど)内のアルゴリズムは、クライアントからの接続情報を使用し、ハイパーバイザを介して直接特定のVMのためのフレームバッファ情報にアクセスし、それを読み取り、読み取った特定のVMのフレームバッファデータを変更および新しく取得されたフレームバッファデータについて解析し、解析に基づいてフレームバッファデータを処理し、使用されるべき圧縮法を決定し、複数の画像データパケットを生成し、次いでフレームバッファ情報のパケットを、アルゴリズムとUDPといった汎用伝送プロトコルの両方に従うようにパッケージ化し、パッケージ化されたフレームバッファデータを、個々の表示装置においてレンダリングするためにクライアントへ送信し、パケットの到着を測定し、必要に応じてデータを再送信する。フレームバッファデータの処理の間に、フレームバッファデータと関連付けられるコンテキストが判定され、適切なコンテキスト情報がフレームバッファデータと関連付けられる。
図2C−1から図2C−3に、フレームバッファデータを記憶し、フレームバッファデータにアクセスする際に使用されるフローパスの簡略化されたブロック図を示す。図2C−1には、ハイパーバイザ上で走っているVM100上で実行されているOSが、対応するフレームバッファデータを、仮想インフラストラクチャ内の仮想メモリ層内の特定の位置FB1 110へ宛先指定する一実施形態が示されている。したがって、実行時に、VM1 100は、ビデオドライバと仮想グラフィックスカードとの支援を得て、パス110−1で示すように、個々のフレームバッファデータを位置FB1において記憶する。アルゴリズム155は、パス110−2で示すように、ハイパーバイザを介して直接FB1のところのVMのための記憶されたフレームバッファデータにアクセスする。同様に、図2C−2には、ハイパーバイザ上で実行されているVM100上で走っているOSが、LFPアルゴリズム155がFB1からのフレームバッファ情報に直接アクセスすることができるように特定のメモリ位置FB1にフレームバッファデータを記憶する別の実施形態が示されている。図2C−3に示す別の実施形態において、アルゴリズムを走らせているVMはサーバVM150として働き、SVMのOSは、パス110−1で示すようにSVMのフレームバッファ情報が下にあるメモリFB1の特定の部分に記憶されるよう指示し、パス110−2を介して直接、記憶されたFB1からのフレームバッファ情報にアクセスする。
異なるVMからのフレームバッファ情報は、各VM上で実行されているオペレーティングシステムによって駆動され、様々なフォーマットのものである可能性があるはずである。アルゴリズムは、異なるOSによって提示されるフレームバッファ情報へのアクセスを可能にし、状況メッセージの種類からなる、「軽量フレームバッファプロトコル」ツールといったアルゴリズム内で利用可能なフォーマッティングツールを使用して、異なるOSからのフレームバッファ情報を汎用フォーマットのパケットへと変換し、再フォーマットされたフレームバッファ情報を、ユーザ・データグラム・プロトコル(UDP)といった伝送プロトコルを使用してクライアントへ転送するための指図を提供する。前述のように、フレームバッファ情報は、コンテキストが添付されていない未処理のビットマップ情報である。アルゴリズムは、VMのための特定のメモリ位置からフレームバッファデータと関連付けられたビットマップ情報を読み取り、ビットマップデータを解析してアクティビティ領域と非アクティビティ領域とを識別し、解析に基づいてデータにコンテキストを追加し、追加されたコンテキスト情報を有するより小さいパケットを生成する。例えば、データ解析は、フレームと、フレーム内のアクティビティ領域とを識別し得る。コンテキストがロードされたパケットは、アルゴリズムにおいて利用可能なフォーマッティングアルゴリズムを使用してパッケージ化され、SVM内の仮想NICへ転送され、そこでパケットは伝送プロトコルに従うようにさらに別のパッケージ化を施される。完全に処理され、パッケージ化されたデータは、レンダリングするためにクライアントに転送される。フレームバッファデータについての解析およびコンテキストレンダリングのほとんどは、アルゴリズムを使用して、仮想センタの内部においてSVMまたはVM内で、ローカルで行われることに留意すべきである。その結果、クライアント側でさらに解析または解読が行われる必要も、コンテキストを理解するためにフレームバッファデータを解析する必要も生じない。クライアントは、ロードされたコンテキストでビットマップデータを開き、クライアントの表示装置上でレンダリングしさえすればよい。クライアントは、SVMに対して失われた情報を特定し、SVMは要求に応じて再送信する。メッセージの種類およびパケット情報は比較的小さく単純であるため、再送信はわずかなオーバーヘッドで極めて正確に行うことができる。
図2Dに、クライアントへさらなる送信と、レンダリングされたパケットに応答したクライアントからのフィードバックとのためにフレームバッファデータにアクセスし、それをパッケージ化するプロセスを示す。図示のように、仮想メモリ(FB1)の特定の位置において利用可能なVMのフレームバッファデータ110は、フォーマッティングアルゴリズムを含む、LFPといったSVMの画像プロセッサアルゴリズム155によって直接アクセスされる。アルゴリズム155は、API、メモリアドレスなどを使用して、記憶されたフレームバッファ情報にアクセスし、それを読み取ることができる。次いでアルゴリズム155は、SVMのプロセッサを使用し、SVMのメモリ130内で、フレームバッファデータを処理してフレームバッファデータのより小さい画像データパケット203を生成する。フレームバッファデータの処理は、フレームバッファデータを解析してコンテキストを識別すること、および画像データパケット203を生成するときにコンテキスト情報をデータと統合することを含む。フレームバッファデータにアクセスし、それをパッケージ化するプロセスはSVM上で実行されるアルゴリズムに関して説明されているが、アルゴリズムは、SVM上で実行されるだけに制限されず、VM上で実行され、フレームバッファデータにアクセスすることもできることに留意すべきである。画像データパケット203は、クライアントの接続パラメータ要件に従うように画像プロセッサアルゴリズム155内で利用可能なフォーマッティングアルゴリズムを使用して生成され、クライアントに特有ものである。前述のように、接続パラメータは、アルゴリズム155がクライアントのためのパケットを生成するときにこれらの要件を考慮することができるように、許容されるパケットサイズ、クライアントの種類などといったクライアントの特有の詳細を提供する。パケット203は仮想ネットワーク・インターフェース・カード(NIC)140へ転送され、そこでパケットは、アルゴリズムによって提供されたパッケージの上にネットワークパッケージングを追加するためにさらに処理を施される。結果として得られる処理済みのパッケージ204は、アルゴリズムパッケージ情報とネットワークパッケージ情報の両方を含む。完全に処理されたパケット204は、クライアント200と関連付けられた表示装置においてレンダリングするために、伝送プロトコルを使用してクライアント200へ転送される。
さらに図2Dを参照すると、クライアント200をターゲットとするパケットはクライアントNIC210−aによって受信される。クライアントNIC210−aは、各クライアントにおいて利用可能な標準NICカードであり、各パケットの外側のNIC特有のネットワークパッケージ204を除去し、余分なものが除去されたパッケージ203を、クライアントLFPといったクライアントアルゴリズム210−bへ送るのに使用される。クライアントLFP210−bは、VMで提供される画像プロセッサアルゴリズムの簡易バージョンであり、クライアントのNICから受け取られる余分なものが除去されたパッケージを読み取り、データを処理してアルゴリズム特有のパッケージを除去するのに使用される。パッケージ情報の除去後に結果として得られる部分的なフレームバッファデータは、クライアントの表示装置においてアセンブルされ、レンダリングされる。余分なものが除去されたフレームバッファデータは、ビットマップ情報と関連コンテキストとを含み、クライアントに特有のものである。パケットは単純で汎用的なアルゴリズムを使用してパッケージ化されるため、クライアントのLFPアルゴリズムにおける伸張論理も単純であり、複雑な処理を必要とせず、それによって、クライアントにおける重いCPUが回避される。その結果、シンクライアントでさえも、単純な伸張論理を使用してパッケージを伸張することができる。
一実施形態では、レンダリングされた出力における、キーボード打鍵やマウスクリックといった任意のユーザ入力が取り込まれ、バックチャネル通信を介してSVMへ返送され得る。別の実施形態では、接続の状態に関する自動フィードバックが、クライアント機器からSVMへ周期的に送信され得る。これらのユーザ入力および自動フィードバックは、クライアントアルゴリズムおよびクライアントNICを使用してパッケージ化され得る。パッケージ化されたユーザ入力およびフィードバックパケット205はSVMへ返送され、そこで伸張され、処理される。本発明の一実施形態では、ユーザ入力およびフィードバックパケット205は、SVMに転送されて、アルゴリズムに、クライアント200において何がレンダリングされたか、および接続の状態を知らせる。別の実施形態では、ユーザ入力およびフィードバックパケット205は、個々のOSを介して対応するVMにおいて実行されている1つまたは複数のアプリケーションへ転送される。ユーザ入力およびフィードバックパケット205のパッケージ化は、データ宛先に基づくものである。
フレームバッファデータをパッケージ化するのに使用されるフォーマッティングアルゴリズムは、情報を要求するクライアントと関連付けられた情報を利用する。クライアント関連情報は、クライアントの特性を定義し、クライアントの種類、クライアント上で走っているOSの種類、および他の環境依存パラメータを定義する接続パラメータを解析することによって得られる。フォーマッティングアルゴリズムはこの情報を使用してフレームバッファデータをしかるべくパッケージ化する。例えば、図2Eに示す一実施形態では、フォーマッティングアルゴリズムは、良好なリフレッシュ速度を提供する技法を使用してコンテンツ203−bをレンダリングする単純な画像を生成するために携帯電話品質のシンクライアントについてのクライアント関連情報を使用し、他方フォーマッティングアルゴリズムは、より豊富な体験のためにカスタマイズされた複雑な種類のメッセージ203−aを生成するためにデスクトップベースのシンクライアントについてのクライアント関連情報を使用する。また、別の種類のクライアントについてのさらに別のフォーマット、例えば、携帯情報端末品質のシンクライアントについての画像レンダリングコンテンツ203や、テレビモニタ/画面/ディスプレイベースのクライアントについての画像レンダリングコンテンツ203−cなども、フォーマッティングアルゴリズムを使用して生成され得る。さらに、フォーマットされたグラフィカル出力は搬送にUDPを使用するため、クライアントは、長距離にわたっても短距離にわたってサービスにアクセスし、サービスを制御することができる。UDPプロトコルを使用して生成されるグラフィカル出力は、フォーマッティングアルゴリズムから受け取られる特定のクライアントベースのパケットからの様々な入力に基づいて変動する。よって、グラフィカル出力204は、画像レンダリングコンテンツ203に対応し、グラフィカル出力204−aは画像レンダリングコンテンツ203−aに対応し、以下同様である。データの搬送において使用されるUDPは例示であり、限定とみなすべきではないことに留意すべきである。長距離または短距離にわたってサービスにアクセスすることのできるクライアントの能力が維持される限り、他の伝送プロトコルも使用され得る。
前述のように、画像プロセッサアルゴリズムは、アルゴリズムが適切なフレームバッファ情報を取り出し、処理し、パッケージ化し、クライアントへ送信することができるように、ハイパーバイザを介して直接個々のVMのためのフレームバッファ情報にアクセスする。アルゴリズムはどんなOSとも対話せず、その結果、ハイパーバイザからフレームバッファ情報を取り出すためのどんな独自のプロトコルも必要としない。アルゴリズムが適切なVMと関連付けられたフレームバッファを識別するのを支援するために、ハイパーバイザは、クライアント要求を適切なVMのフレームバッファにマップするメモリおよび機器マネージャを含む。クライアントが接続を要求するときに、SVM内のアルゴリズムは、一実施形態では、接続要求と関連付けられた接続パラメータを照会し、クライアントの識別情報と仮想サービスを提供することのできるVMの詳細とを判定し、ハイパーバイザのところのメモリマネージャと対話してVMを識別し、探し出す。接続パラメータからの情報とメモリおよび機器マネージャからのマッピング情報とを使用して、アルゴリズムは、VMを識別し、次いで、ハイパーバイザが機器およびメモリをSVMのところのアルゴリズムに供与するときに、所定のメモリ位置から識別されたVMのフレームバッファに直接アクセスする。
アルゴリズムの機能の上記の一般的理解を踏まえて、次に、アルゴリズムの様々な態様を詳細に説明する。各VMのフレームバッファデータの適切な部分の取込みおよび送信を支援するために、アルゴリズムは複数のモジュールを含む。これらのモジュールは、すべてが単一の画像プロセッサアルゴリズムに統合されていてもよく、独立のモジュールとして存在していてもよい、ソフトウェア(および/またはハードウェア)モジュールである。アルゴリズムに含まれるモジュールの中には、スキャンエンジン、熱エンジン、コンテキストエンジン、論理エンジン、接続エンジン、および出力エンジンが含まれる。
スキャンエンジンは、VMのフレームバッファにおける仮想画像および変化を見分け、フレームバッファの状態維持を時間ベースの構造に記憶するように構成される。図2Fに、各VMのフレームバッファデータについて維持され、送信される時間ベースの構造の例を示す。例えば、クライアント特性情報に基づき、クライアントの画像構造がそのクライアントの表示装置のためにアセンブルされる。一実施形態では、画像構造は、LFPアプリケーションサーバ1から獲得される情報を含み得る。図2F−1に示す別の実施形態では、アプリケーションサーバ1からの情報に加えて、画像構造は、LFP「広告」サーバからの広告情報といった情報や、LFPアプリケーションサーバ3から獲得される情報といった他のアプリケーションサーバ情報も含み得る。画像構造情報に加えて、個々のソースからの画像構造情報と関連付けられた任意のデルタも取り込まれ、パッケージ化され、送信される。各画像構造情報はビットマップ情報として獲得されるため、ビットマップの関連する部分情報だけが各LFPサーバから送信される。よって、図2F−1に示すように、LFPアプリケーションサーバ1からのビットマップ情報は囲み1および囲み2で覆われた領域を除くLFPアプリケーションサーバ1からのすべてのビットマップ情報と任意のデルタとを含む。任意のデルタを含む囲み1についての情報はLFP広告サーバから獲得され、任意のデルタを含む囲み2についての情報はLFPアプリケーションサーバ3から獲得される。様々なソースからのビットマップ情報は帯域内伝送として受け取られる。よって、情報が送信されるときに、画像データは、クライアントの表示装置において伸張され、アセンブルされ、レンダリングされ、各ソースからの関連情報だけが含まれ、それによってネットワーク帯域幅および計算処理リソースが節約される。
帯域内伝送に加えて、アルゴリズムは、帯域外伝送がクライアントにおいてレンダリングされることも可能にする。よって、図2F−2に示すように、表示モニタで見える領域についての帯域内伝送と関連付けられた情報および任意のデルタが、クライアントにおいて獲得され、レンダリングされる。この実施形態では、見えない領域についての情報は獲得されず、それによって、ネットワーク帯域幅および処理リソースが保持される。一実施形態では、クライアントの全画面を使用して、ビデオストリームといった帯域外ストリームがレンダリングされ得る。この実施形態では、アルゴリズムは、帯域外ストリームをレンダリングするために使用される表示領域の量を判定し、クライアントの表示装置上に情報をレンダリングするための可視空間がないため、クライアントのための帯域内伝送パケットを生成することをインテリジェントに回避し、それによって、ネットワークおよび処理リソースおよび処理時間を節約する。よってアルゴリズムは、どのフレームバッファデータがレンダリングされており、どんなソースが使用されているか判定するための知能を提供し、画像構造は判定に基づいて生成される。
図3Bに戻って、熱エンジンは、VMのフレームバッファのグラフィカルフレーム内のアクティビティ領域を位置決めする際の精度のスライディングスケールを有し、アクティビティのレベルを状態アクティビティの速度微分として認識するように構成される。コンテキストエンジンは、熱エンジン出力を評価して、連続した領域を特定の専用の技法で処理するために、アクティビティやコントラストといった要素によって連続した領域を識別することができるかどうか判定するように構成される。論理エンジンは、熱消費率、色彩構成、熱エンジンを介してVMのフレームバッファから獲得された熱領域の対比、コンテキストエンジンからの入力、接続されたシンクライアントのプラットフォーム、接続エンジンから獲得された接続の品質といった様々なモジュールからの入力に基づいて圧縮/伝送にどの技法が用いられるべきか判定するように構成される。また論理エンジンは、解析された画像データ情報を選択された技法を用いて符号化するようにも構成される。
接続エンジンは、例えば、a)初期ハンドシェークおよび進行中の接続品質ダイアログのためにシンクライアントと、b)品質問題を獲得し、それに対処するために論理エンジンと、c)スキャンエンジンに適正なVMのフレームバッファを見るよう指図するためにスキャンエンジンとなど、複数のモジュールと対話するように構成される。接続エンジンは、ユーザ/アセット・ディレクトリ・システムと対話することによって適切なVMのフレームバッファを識別する。また接続エンジンは、VMのフレームバッファ情報の送信を適切に宛先指定することができるように、出力エンジンと対話してクライアントの位置を決定するようにも構成される。
出力エンジンは、カスタムヘッダを設計し、カスタムヘッダと関連付けられるデータとを、UDPといった単純なトランスポートプロトコルを使用して効率よくシンクライアントへ送信するのに最適なパケットサイズを定義するように構成される。
一実施形態では、アルゴリズムは、ハイパーバイザと対話し、VMのOSとは直接対話しない。別の実施形態では、多少のOS対話も可能としてもよい。いずれにせよ、アルゴリズムは、OSから下にあるハードウェアへのグラフィックス命令に対して透過的になる。画像情報を取り込む従来のプロセスは、ATI Technologies Inc.やNVIDIATM(商標)からのグラフィックカードといった、グラフィックカードを使用することによるものであった。これには、多くのCPU処理能力と、仮想環境のオーバーヘッドを増加させるカスタマイズされた圧縮/伸張論理を必要とし、結果的に性能を低下させ、ユーザ満足度を低下させるものとなった。本発明の実施形態では、アルゴリズムは、ハイパーバイザと対話して個々のVMのフレームバッファ情報に直接アクセスする。さらに、フレームバッファデータは未処理のビットマップデータ形式であり、アルゴリズムがその未処理のビットマップデータを再フォーマットするため、グラフィックス命令を解読するための複雑な圧縮/伸張論理に必要が生じない。アルゴリズムは、OSからの実際の命令ではなく、ハイパーバイザを介してフレームバッファを取り出すことに焦点を合わせているため、符号化/復号のための独自のプロトコルの必要が生じず、アルゴリズムがOS/グラフィックスカードに依存しないものとなる。
次に、図3Aおよび図3Bをそれぞれ参照してアルゴリズム内の様々なモジュールを説明する。図3Aおよび図3Bには、特定のVMのためのフレームバッファを活用する際に関与する様々な構成要素の簡略化されたブロック図が示されている。図3Aには、システム構成要素、およびVM内の仮想サービスを制御するための様々な構成要素間の対話の簡単な概要が示されており、図3Bには、画像プロセッサアルゴリズムの様々な構成要素の簡略化されたブロック図が、ハイパーバイザを介して特定のVMのためのフレームバッファを活用し、フレームバッファと関連付けられたデータの送信を対応するクライアントへ宛先指定する際にアルゴリズムによって使用されるプロセスフローと共に示されている。クライアントは、「シン」クライアントとすることも、「ファット」クライアントとすることもできる。シンクライアントは、モバイル機器、携帯情報端末、携帯電話、画面、ネットブック、キオスク、スマートフォン、タブレットまたは他のそのような機器のいずれかを含み得る。ファットクライアントは、デスクトップコンピュータ、ラップトップコンピュータ、ワークステーションなどを含み得る。シンクライアントとファットクライアントとの上記リストは例示であり、限定と解釈すべきではない。
図3Aに示すように、画像プロセッサアルゴリズムといったアルゴリズムは、本発明の一実施形態では、他のVMと並行してハイパーバイザ上で走る、LFP(軽量フレームバッファプロトコル)SVMといったサーバVM内で提供される。SVMは、この実施形態では、他のVMとは異なる。アルゴリズムは、接続要求を受け取り、接続(または環境)パラメータを照会し、接続要求において要求された仮想サービスを提供するVMを識別し、識別されたVMと関連付けられたフレームバッファデータにアクセスし、それを読み取り、フレームバッファデータを画像要素へとパッケージ化し、フレームバッファを周期的にスキャンして連続したアクティビティ領域およびアクティビティのレベルを判定し、コンテキストを識別し、画像要素の処理とパッケージ化とレンダリングするためのクライアントへの送信とに使用すべき適切な(1つまたは複数の)技法を決定し、画像要素を送信するための、スキャンエンジン、熱エンジン、コンテキストエンジン、論理エンジン、接続エンジン、出力エンジンといった複数のモジュールを含む。
アルゴリズム内の各モジュールは、ディレクトリサービス310と対話して要求が適切に宛先指定されるように特定のVM上で利用可能なサービスへのクライアントのマッピングを決定し、時間ベースの状態維持データベース320と対話してある期間にわたるアクティビティのレベルに基づいてアクティビティ領域を記憶し、変化領域データベース330と対話して変化した異なる領域を判定し、フレームを認識し、論理エンジンをそれらの領域だけに集中させ、非アクティビティ領域を無視させるようにし、圧縮法/伝送法データベース340と対話してクライアントへ送信する前に関連する画像領域を圧縮するのに使用すべき適切な(1つまたは複数の)技法を識別する。アルゴリズムの外部にある接続またはサービスブローカが、アルゴリズムのモジュールが識別されたVMと対話して、画像データ要素としてクライアントへさらに送信するためのフレームバッファデータへのアクセスを得ることができるようにVMを識別するのを支援する。送信された画像データ要素はクライアントにおいて受信され、そこで要素は復号され、伸張が行われ、伸張されたデータが、クライアントと関連付けられた表示装置においてレンダリングするために提示される。レンダリングされたデータはクライアントに特有のものであり、特定のVMのVMディスプレイの画像を表す。したがって、レンダリングされたデータは、VMにおいて実行されており、またはレンダリングされているグラフィカル要素、アイコン、ディスプレイ、プログラム、リンク、写真、動画、およびユーザインターフェースの操作または非操作を示す。ユーザ対話がクライアントにおいて有効化され、ユーザ対話は、バックチャネル通信を使用してVMへ返送され、その結果VMにおける仮想化サービスが制御される。アルゴリズムによって提供されるサービスは、特定のVMのVMディスプレイの画像といった表示サービスであることに留意すべきである。
またアルゴリズムは、専用の技法を使用して連続した領域の部分を抽出し、パッケージ化し、パッケージを送信することができるように、スキャンエンジンが特定の種類の連続したアクティビティ領域を有するフレームバッファの部分を判定することも可能にする。一実施形態では、フレームバッファデータが伸張され、クライアントと関連付けられた表示装置上にオーバーレイされる場合に、帯域外ストリームを呼び出すことができる。普通、ビデオコンテンツのマルチメディアデータは、オーディオとビデオ両方のコンテンツを一緒にするためのそのような手法を使用する。
次に、アルゴリズムの様々なモジュール内のフレームバッファデータの対話およびプロセスフローと、リモートクライアントを介してVMにおける仮想サービスにアクセスし、かつ/またはそれを制御するためのシステムの構成要素をより良く理解するために図3Bを見る。前述のように、リモートクライアントは、VMと同じ場所にあっても同じ場所になくてもよいが、インターネットといったネットワークを介してVMに接続されているシンクライアントまたはファットクライアントとすることができる。一例では、プロセスは、クライアント(3.18)が仮想サービスへの接続要求を開始するときに始まる。サーバVM(SVM)といったVMのところの画像プロセッサアルゴリズム内の接続エンジン(3.12)が接続要求を受け取り、解釈し、ポリシ、クライアントの認証情報および位置、ならびにクライアント(3.18)によって要求されたサービスを確認する。接続エンジン(3.12)の機能は図8を参照して説明する。
図8に示すように、また図3Bを相互参照すると、サービスを求めて接続要求がクライアント(3.18または8.4)から受け取られる。要求受信および要求サービスプロセスの間、接続エンジン(3.12)は、初期ハンドシェーク(3.14)のためと、進行中の接続品質のダイアログ(3.15、3.19)を維持するためにクライアント(3.18または8.4)と対話する。接続エンジン(3.12)内の経路指定論理8.3が要求を受け取り、さらに、ディレクトリサービス(8.2)への呼び出し(8.1)を行って、クライアントのポリシ、認証情報および位置、ならびにサービスを確認する。一実施形態では、ディレクトリサービス(8.2)は外部サービスである。初期ハンドシェーク(3.14)の間に交換される情報は、それだけに限らないが、クライアント(8.4)の位置、接続能力(通信接続帯域幅、通信接続の品質)情報、接続すべき仮想サービス(3.0)の所望の位置、クライアント(8.4)の種類、要求されたデータの種類、クライアントと関連付けられたディスプレイの種類、およびクライアント(8.4)と関連付けられたディスプレイの構成(解像度/ビット深度/リフレッシュ速度)を含む1つまたは複数の接続パラメータを識別する。接続パラメータはクライアントの特性を定義する。
また接続エンジン(3.12)は、論理エンジン(8.6)と対話して、初期ハンドシェークおよび進行中のダイアログ(3.19)に基づいてある期間にわたる接続と関連付けられた品質問題(3.15)を提供/更新し、スキャンエンジン(8.5)と対話して、スキャンエンジンに、それを求める要求がシンクライアント(8.4)によって開始されているVMリソース(サービス)と関連付けられた適切なフレームバッファを調べるよう指図し、出力エンジン(8.7)と対話して、送信をクライアント(8.4)の位置へ宛先指定する。
次に図3Bを参照すると、一般に、データセンタの内部のハイパーバイザ(3.0)上に位置する仮想マシンのオペレーティングシステム(OS)は、接続されたモニタを必要とせず、「ヘッドレス」とみなされる。OSがヘッドレスであるこの状況では、OSはその出力をフレームバッファ(3.1)へ宛先指定する。フレームバッファ(3.1)は、特定のVMと関連付けられ、特定のVMのOSによってアクセスされるメモリの特定の部分に記憶された画像と関連付けられた、VMの仮想マシンディスプレイの画像を表すグラフィカル出力を定義する情報である。管理者は伝統的にこのフレームバッファ構造を、個々のゲスト/VMへのグラフィカル・コンソール・アクセスを提供するのに使用してきた。一実施形態では、フレームバッファは、モニタと同様に、駆動されるレートで、ビデオ電子装置規格化協会(VESA)ドライバやエミュレートされたハードウェアドライバといったグラフィックスドライバによってグラフィカルコンソールにおいて更新され得る。しかし、ソフトウェアプロセスといった別のやり方でフレームバッファが更新されてもよい。
一実施形態では、フレームバッファおよび接続エンジン3.12からの接続状態情報を使用して、スキャンエンジン(3.2)は、一般にそれが更新されるのと同じレートで適切なフレームバッファを自動的にスキャンし、フレームバッファの変更の有無を評価する。クライアントの種類など、初期ハンドシェーク(3.14)時に取得される情報を用いて、スキャンエンジン(3.2)は、クライアントの能力またはサービス規則に基づいてフレームバッファ変更を取り込むために設定されたデフォルト値を指定変更しようとしてもよい。一例として、クライアントがフレームバッファデータに典型的なものである可能性のある高リフレッシュ速度に対応できない状況において、スキャンエンジン(3.2)は、フレームバッファ変更のスキャンおよび取込みを抑制してリソースを温存しようとしてもよい。スキャンエンジン(3.2)は、対応する時間ベースの記憶アレイ(3.3)に個々のVMのためのフレームバッファ変更の状態を記憶する。
あるいは、別の実施形態では、スキャンエンジン(3.2)は、VMと関連付けられたグラフィックスドライバが対応するフレームバッファ内の情報を変更するときには通知される(3.21)のを待って潜伏していることができ、次いで、後で通知され次第スキャンを実行することになる。一実施形態では、「syncフラグ」または「sync信号」を使用して、グラフィックスドライバが対応するフレームバッファをいつ更新/リフレッシュするかが判定され、そのため、スキャンエンジンは、データの損失もなく、書込み/リフレッシュ動作の妨害もなく、直後に変更を取り込むことができる。
スキャンエンジンの機能を、図4を参照して説明する。図3Bと図4とを交互に参照すると、スキャンエンジン(3.2)は、スキャンエンジンが、特定のVMと関連付けられたフレームバッファの変更を見分け、フレームバッファ変更の状態維持を時間ベースの構造に記憶することを可能にするための複数の論理を含む。具体的には、スキャンエンジン(3.2)は、スキャン機能(4.3)と通信する接続機能(4.1)を含み得る。ダイアログ(4.2)は、接続される必要のあるフレームバッファの位置、期待されるサイズ、ビット深度およびスキャンレートからなる。ダイアログ(4.2)は、初期ハンドシェークの間に接続エンジンから受け取られる情報から駆動され、進行中のダイアログを介して接続エンジンは接続パラメータによってクライアントとの(接続)を維持する。スキャン機能(4.3)は、フレームバッファのメモリマップ(4.4)に関与し、フレームバッファ内の情報をスキャンし始める。
次いでスキャン機能は、前のスキャンからの変更を探すためにデルタ機能を使用し(4.6)、次いで、熱エンジン(3.4)が使用するためにデルタ状態(4.7)を時間ベースのアレイに記憶する。デルタ状態(4.7)は、グラフィカルフレームバッファ内のアクティビティ領域を表す。接続機能(4.1)は、速度に関してスキャン機能(4.3)が関与するスキャン挙動を変更し、メモリマップ(4.4)のポーズ/再使用または切断および解除を呼び出す。
フレームバッファのスキャンの後で、スキャンされた情報を解釈するために熱エンジン(3.4)がアルゴリズムによって使用される。一実施形態では、熱エンジン(3.4)は、フレームバッファの変更を定義する時間ベースのアレイと、スキャンエンジンによって識別されたデルタ状態とを調べ、アクティビティ領域を評価して、ある一定の期間にわたる持続したアクティビティのレベルを判定する。例えば、熱エンジン(3.4)は、信号増幅探索アルゴリズムを利用して、フレームバッファ情報の粒の粗い領域の感度を上げてもよい。一実施形態では、探索アルゴリズムが機構に対して段階的なトラフとして作用する。例えば、探索アルゴリズムは、総二分探索パターンにより区分された領域において探索を進めてアクティビティがあるかどうか判定し、続いてアクティビティがどこにあるか判定する。アクティビティを発見し次第、探索アルゴリズムは探索パターンを続行して非アクティビティ領域を除外し、実際のアクティビティのレベルだけに変換し、残りの探索を終了する。これにより、ネットワークオーバーヘッド、CPU消費が制限され、探索時間および伝送時間が改善する。加えて、この増幅探索パターンは、コントラスト、色、他のメトリクスの連続に付随するメトリクスなどといった、複数の特性を探索するのに使用することができるという点でも、再利用可能である。一実施形態では、技法が同じままである間に複数の特性を追跡するためのパラメータを調整することができる。
図5に、熱エンジン(3.4)の機能を示す。詳細には、熱エンジン(3.4)は、スキャンエンジン(3.2)によって更新される時間ベースのアレイ(3.3)の変更を追跡、収集、解析し、アレイ探査フィルタ(5.1)といったフィルタを使用して変更を時間ベースのバケットへとグループ化する。解析は、時間の単一の微分とすることもでき、傾向特徴を確立するための複数の微分とすることもできる。各グループは信号増幅アルゴリズム(5.2)へ送られて十分なレベル(「十分」さは、ヒューリスティックアルゴリズムによって決定される)の変更になり、熱の性質および画素詳細レベルが、熱判定機能(5.3)を使用して確立される。この解析は、熱エンジン(3.4)によって識別される熱領域ごとに増幅プロセス(5.4)をループする。解析が完了するまで、色/コントラスト、アクティビティなどを含む熱の異なる属性についてさらに別のループが行われてもよい。熱エンジン(3.4)からの解析の結果は、変化領域データベース(3.5)といったリポジトリに維持され、コンテキストエンジン(3.6)と論理エンジン(3.7)の両方に渡される。一実施形態では、熱エンジン(3.4)からの出力はコンテキストエンジン(3.6)へ提供される。
図3Bに戻って、コンテキストエンジン(3.6)は、熱エンジン(3.5)の出力を取得し、連続したアクティビティ領域を識別し、その領域の境界または他の任意の識別特性を識別しようとする。次に、図6を参照してコンテキストエンジンの機能を説明する。コンテキストエンジンは、熱エンジン出力を評価して、連続した領域をアクティビティとコントラストの両方によって識別し、特殊な条件を備えるフレームとして扱うことができるかどうか判定するための論理を含む。一実施形態では、コンテキストエンジン(3.6)は、単一化アルゴリズム(6.1)を利用し、コンテキストエンジン(3.6)に供与される文法規則ライブラリにおいて利用可能な幾何学的原理、カラーコントラストおよび時間に基づく専用に作成された文法規則(6.2)を使用して、多変数データセットの中からメタパターンを探す。一実施形態では、帯域外処理または他の技法についての選択を行うために、変数の中でも特に最善の帯域幅と最善の体験(切断なし)と最善の中央処理装置(CPU)性能とのバランスをとる完全な境界発見(特異な統一された圧縮セットアップ/分解)を与えることが望ましい。一実施形態では、コンテキストエンジン(3.6)は、より小さいフレームに対して解析を行い、小さいフレームをつなぎ合わせて連続したエンティティとして扱うことによって大きいフレームをアセンブルするように構成される。
コンテキストエンジン(3.6)は、アクティビティに隣接する領域におけるコントラスト差を考慮に入れる。またコンテキストエンジン(3.6)は、持続性の可能性を判定し、代替の技法でアクティビティを処理する値を確立するために、ある一定の期間にわたるアクティビティのレベルも調べる。コンテキストエンジンの出力はコンテキストアレイ(6.3)において維持される。
図3Bに戻って、論理エンジン(3.7)は、様々なソースからの出力を解析し、フレームバッファ内のデータの圧縮および送信にどの技法を用いるべきか判定する。論理エンジン(3.7)は、熱エンジンからのフィード(3.8)、コンテキストエンジン(3.9)からのフィード、初期ハンドシェーク(3.14)からの情報(クライアントの種類、接続のサイズおよびコントラスト解析をそれに対して重み付けするためのビット深度に関する情報)、バックチャネルに沿ったクライアントからの進行中の接続品質のフィード(3.15)といった複数の供給源からのフィードを取り込む。
次に、図7を参照して論理エンジン(3.7)の機能を説明する。論理エンジン(3.7)は、接続エンジン(7.2)、熱エンジン(7.3)、コンテキストエンジン(7.4)から出力を取り込み、解析機能(7.1)を使用して多変数解析を行って、サーバ側の性能と、クライアント側ユーザ体験とネットワーク消費の効率との必要のバランスをとる。一実施形態では、論理エンジンは、フレームバッファ内のデータを圧縮するための最適な技法を選択するのに利用可能な圧縮法のリスト(7.5)を利用する。
アルゴリズムは、データをリフレッシュ/回復するための効率的な手段を提供する。アルゴリズムによって生成される画像データパケットは、仮想マシンディスプレイの画像の特定の部分に相関し、クライアントにおいてその画像の特定の部分をレンダリングするために割り当てられるデータを含む。前述のように、各画像データパケット内のデータは、仮想マシンディスプレイの画像の特定の部分を定義する比較的単純な文法で構成される。生成される画像データパケットの文法が簡略化されたものであるために、紛失パケットを正確で集中した方式で再送信することが可能である。先行技術では、クライアントにおいてディスプレイをリフレッシュするのに、グラフィックス命令と画像データとを保持するパケットのストリームを送信する必要があるはずである。複雑な文法を用いれば、クライアントのところの表示ドライバが画像をレンダリングするためのパケットを復号するのに必要とする完全な命令セットを記述するために、各パケットで送られる画像データを一連の他のパケットに関連付けることができる。多くの場合、表示領域または部分のリフレッシュは、ディスプレイ全体を更新するために複数のパケットを獲得することを必要とする。というのは、パケットは、ディスプレイの特定の部分または部位(1つまたは複数の特定の画素など)に事前に割り当てられず、相関してもいないからである。
よってアルゴリズムは、クライアントにおいてレンダリングされる画像の品質を維持しながら送信されるデータの量を低減することによって、ネットワーク/コンピューティングリソースおよびクライアントへのフレームバッファデータの送信/レンダリングのための時間の最適化を可能にする。さらにいうと、アルゴリズムは、リフレッシュされ、または更新される必要のある表示画面の領域と相関するパケットのうちの特定のもののリフレッシュまたは再送信を可能にする。ディスプレイ全体が周期的に更新され、またはリフレッシュされるが、完全なリフレッシュまたは更新が必要とされないときに、リフレッシュを必要としない領域についてのパケットを送信しないことによって節約される帯域幅は相当な大きさになり得る。本明細書では、クライアントは、アルゴリズムから受け取られる画像データパケットを読み取り、パッケージング情報を除去し、パケットに含まれるデータを復号し、データをクライアントのディスプレイ上の適切な部分にマップし、復号データのマッピングに基づいてクライアントのディスプレイ上の(1つまたは複数の)適切な部分をレンダリングするための必要な論理を含むことに留意すべきである。一実施形態では、クライアントにおける論理は、データのうちのいずれかをそのプログラムされたルーチンによって処理するためのクライアントのローカル表示ドライバを必要とせずに、画像データパケット内のすべてのデータを処理することができる。別の実施形態では、クライアント内の論理は、1つまたは複数のプログラムされたルーチンによってある量の処理を提供するクライアントのローカル表示ドライバを用いて、画像データパケット内のデータを処理することができる。ローカル表示ドライバによって必要とされる処理の部分は、クライアントのディスプレイの特定の部分へのデータのマッピングや色のマッピングなどを含み得る。
データの一部だけが送信されればよい理由はいくつでもあるはずである。理由の中には、接続不良によるデータの損失、特定の部分における高アクティビティによるデータリフレッシュ、アクティビティが非常に低いまたはアクティビティがないことによる周期的リフレッシュなどが含まれ得る。アルゴリズムは、クライアントに必要なデータを提供するために、熱エンジンおよび論理エンジンからの出力を使用してフレームバッファデータの特定の部分におけるアクティビティのレベルを識別し得る。図7A〜図7Cに、クライアントにおいてVMディスプレイの特定の部分をリフレッシュするために特定の画像データパケットが送信されるいくつかの例を示す。本明細書では、最初に、VMディスプレイの画像を表すフレームバッファからすべてのデータがレンダリングするためにクライアントへ送信されることに留意すべきである。VMディスプレイの画像の初期レンダリングの後で、データの特定の部分または全部が周期的にリフレッシュ/更新され得る。図7Aに示す一実施形態では、VMディスプレイの特定の部分のデータは、クライアントにおいてデータをリフレッシュするために周期的に送信される。これは、個々のVMにおけるフレームバッファデータについて記録されたアクティビティがないことに起因するものである場合もある。その結果、クライアントへ送信するために利用可能な新しいデータが生じず、クライアントにおいてすでにレンダリングされている画像の特定の部分をリフレッシュするための古く冗長なデータだけが再送信されることになる。これは、最も古いデータが最初に来る順番で行われることになる。図7Bでは、送信されるデータは、若干の新しいデータと大部分古く冗長なデータとを含み得る。例えば、VM画像ディスプレイの特定の部分についての新しいデータは、Microsoft(商標)Word文書といったアプリケーション画面上の点滅するカーソルと関連付けられていてもよく、冗長なデータは、表示画面の古くなった部分と関連付けられたデータとすることができる。同様に、図7Cでは、画像の特定の部分について送信されるデータは、大部分新しいデータとわずかな古く冗長なデータとを含み得る。例えば、新しいデータは、アプリケーション画面上のタイマと関連付けられていてもよく、古く冗長なデータは、変化していない画像の残りの部分の一部とすることができる。図7A〜図7Cの各矢印の大きさは、クライアントへ送信される個々のデータの量を示す。クライアントへ送られる各画像データパケットの相関性により、画像船体についてのデータを送る必要もなく、リフレッシュ/回復すべき関連データだけを送ることができる。画像データパケットによって送られるVMの表示画面の特定の部分に割り当てられるビットマップデータは、残りのデータがリフレッシュされることを必要とせずにデータの特定の部分をリフレッシュ/回復することを可能にし、それによって待ち時間およびネットワーク/コンピューティングリソースが低減される。
図3Bに戻って、接続品質バックチャネル(3.15)は、受信パケットのパケットヘッダを見守り、パケットのジッタ、損失および順序の乱れの情報に関して報告する情報のUDPストリームである。加えて、UDPストリームは、待ち時間、帯域幅および損失の有意な、永続的調整も見守り、それらを論理エンジン(3.7)に報告する。一実施形態では、論理エンジン(3.7)は、クライアントへ様々な種類のフレームバッファを配信するために呼び出す所定の論理/機能のセットを有する。これらの機能は、様々なフィードから確認される刺激に基づいて特定の組み合わせで使用される圧縮法/伝送法(3.10)の組み合わせである。一実施形態では、論理エンジン(3.7)は、多変数解析によって接続およびクライアントと関連付けられた様々なパラメータおよび特性を考慮に入れる。
例えば、解析段階において、論理エンジンは以下を考慮に入れる。(a)クライアントの種類。クライアントの中には帯域外マルチメディアを扱うことができるものとできないものとがある。携帯電話、デスクトップおよびOSは、ネットワーク挙動を処理し、バッファに入れることができる機能に対して異なる点で影響を及ぼす。その結果、使用される技法は、ネットワーク挙動を考慮に入れ、フレームバッファデータの出力ストリームをしかるべくフォーマットする。加えて、伸張アルゴリズムの中にはあるクライアントにとって重すぎる可能性があり、代替の技法が用いられる必要があるものもある。(b)接続の種類。あるネットワークは、用いられる必要のあり技法の性質を変更し得る待ち時間とジッタ両方の特性を有するものがある。(c)領域のアクティビティレベルおよびサイズ/範囲。異なる条件下では、領域のサイズ/範囲に対応するためのブロックサイズと圧縮法とが用いられるはずである。加えて、異なる条件下では不可逆的圧縮と可逆的圧縮との選択も用いられるはずである。(d)領域の色分布。論理エンジンは、ランダムなサンプルを使用して色彩場の複雑さを確認し、テキストページと画像と一貫した色については異なる圧縮法を用い得る。また論理エンジンは、ランダムな特異点の領域を識別して誤りを回避するためのバランシングエージェントとして、ポアソン分布アルゴリズムも利用する。(e)人間の視覚の許容誤差に合う技法を用いた画像解析。(f)いくつかの技法が、収穫逓減または高い非能率レベル(例:元のデータより大きいペイロードを生じる圧縮など)に遭遇し、技法を調整するシナリオ。(g)コンテキストエンジンは、階層化アルゴリズムを用いて扱うことができる連続した領域を識別し得る。特定の種類のフレームバッファデータにはストリーミングまたは帯域外アルゴリズムを用いることができる。(h)論理エンジンは、層識別法を用いてデータストリームを識別するように構成される。というのは、他のデータ・ストリーム・ソースがそのクライアントへ宛先指定されている可能性もあるからである。
論理エンジンによって用いられ得る圧縮の種類または技法には(それだけに限らないが)、画素スキャン、トリクセル(trixel)(すなわち画素のグループ)、ビットマップ圧縮(不可逆的、JPEGなど)、ビットマップ圧縮(可逆的、PNGなど)、正方形(可変サイズ)、長方形(可変幅、高さ)、伸張ビットマップ、色定数、ビットマップキャッシング、および失効データリフレッシュといった損失管理法が含まれる。前述の用いられる圧縮の種類または技法のリストは例示であり、網羅的または限定的なものとみなすべきではない。圧縮の機能および意図がエコシステムにおいて維持される限り、別の種類の圧縮または技法も使用され得る。
圧縮法/伝送法(3.10)を使用した論理エンジン出力は出力エンジン(3.11)に渡され、出力エンジン(3.11)は、パケットをパッケージ化し、接続エンジン(3.13)によって提供される位置指定に基づいてパケットをシンクライアント位置へ送信する。図9に、出力エンジン1.11の機能を示す。出力エンジンは、宛先経路指定論理9.1を使用して接続エンジン(9.2または3.12)と対話し、そこから最初の要求が受け取られたシンクライアントの位置、クライアントの種類などを決定する。パケットはUDP技術を用いてネットワーク上に置かれ、コンテンツと、ネットワークUDPバッファを扱うことのできる能力を定義するクライアントの種類(3.18)とに基づくカスタムヘッダおよびパケットのサイズ(9.6)でサイズ設定される(9.5)。
クライアントはパッケージ化されたフレームバッファデータを受信し、ヘッダを復号し、指図通りに情報を画面フレーム上に直接配置する(9.7)。基本原則は、非常に軽量で低計算処理のクライアントを有することである。
図3Bに戻って、クライアントは、接続エンジン(3.12)との初期ハンドシェーク(3.14)時に収集された接続情報に基づき、そのマウスクリックおよびキーボード打鍵(3.16)を、UDPストリームによってOSセッションへ送る。加えて、キーボード打鍵/マウスクリックは、変更の可能性の高い領域に関する効率の良いヒントを提供するために、スキャンエンジンと熱エンジンとにも送られる(3.20)。
図10に、シンクライアントと仮想環境内のVM上のアルゴリズムとの間の相互の対話による取込み画像の微調整/更新についての例を示す。具体的には、変更の可能性の高い領域を識別するマウスクリックおよびキーボード打鍵(10.3)が、クライアントからスキャンエンジン(3.2)と熱エンジン(3.4)とに送られる(10.4)。一実施形態では、検出されたマウスクリックおよびキーボード打鍵に基づいて、スキャンエンジンに休止状態から抜け出てユーザ入力をスキャンするよう促すことができ、熱エンジンは、ユーザにとっての肯定的な体験を保証するためにクリック/打鍵によりアクティブ領域に人工的な熱を加えようとし得る。よって、アルゴリズムは、クライアントからの入力に基づいて変更の可能性の高い領域を識別し、これらの領域におけるアクティビティを監視し、変化のデルタを生成し、微調整された情報をレンダリングするためにクライアントに転送することによって取込み画像を微調整する。
クライアントは、クライアントと接続エンジン(3.12)との間で交換され、初期ハンドシェーク時に獲得される接続パラメータにおいて提供される(10.2)宛先経路指定(10.1)に基づいて、パケットにおいて出力エンジン(3.11)から宛先変更されたフレームバッファデータ(10.7)を受信する。パケットは伸張され、クライアントにおいて利用可能な表示機能(10.9)を使用してレンダリングされる。またクライアントは、クライアントOS上で直接復号し、フレームバッファからのデータがすでにレンダリングされているクライアントと関連付けられた画面(10.9)上にオーバーレイすることのできる、OS(3.0)からの帯域外マルチメディアストリーミングのダイレクトストリーム(10.10または3.17)も受信し得る。
一実施形態では、クライアントとアルゴリズムの1つまたは複数のモジュールとの通常の対話に加えて、クライアントは、論理エンジン3.7と対話して、バックチャネルハンドシェークを介した接続品質と関連付けられた情報も交換し、この情報もやはりスキャンエンジンと熱エンジンと10.6に転送される。加えて、バックチャネル通信は、クライアントが、クライアントの表示装置への変更やクライアントにおける1台または複数の表示装置の追加を含む接続パラメータへの動的変更といった接続状態の更新を転送するのにも使用される。スキャンエンジンと熱エンジンとに転送される更新に加えて、クライアントは、VM上で走っているアプリケーションにユーザ対話も転送する。ユーザ対話は、スキャンエンジンによって受け取られ、VMのOSを介して適切なクライアントへ転送される。
一実施形態では、マウス/キーボードと同じ機構およびストリーミング法によって二方向マルチメディアストリーミング通信を行うことができる。ビデオの一例は、正しいソース層へ接続されるべきクライアントと対話することになる、階層化技術による(ユーザフィードバックのための)クライアント上のローカルドライバによるローカル表示と、消費し処理するためのOSへの逆方向のストリーミングであろう。
この特徴は連合の原理に基づいて設計され、複数のソースが同じクライアントへ体験を提供する。そのためには、各ソースストリームが階層化識別を有し、それによって帯域外ストリームを親層と再統合することができることが必要である。加えて、クライアントに複数のソースを宛先指定することができるが、クライアントは、一度に1つのソースとだけしか対話しようとしない可能性もある。したがって、クライアントは、いずれかの時点でソースの所望の状況を伝える(3.19)ことができる能力を有する必要がある。また、スキャンエンジンおよびすべての下流側のサービスも、非優先状況にあるときに、フレームバッファのスキャンを停止することによってリソースを温存するように構成される。
また、Android(商標)携帯電話OSといったいくつかの新しいモバイル・クライアント・オペレーティング・システムは、基本通信プロトコルを動作可能状態に保ったまま、画面アクティビティを分離し、切断するための構造も含む。
同様に、あるシナリオでは、信号(3.19)をスキャンエンジンに送って、スキャンの優先度を下げることができ、よってサーバ側と帯域幅両方のリソースが節約される。一例としては、クライアントがクラウドベースのホスティング・デスクトップ・サービスに加入しており、同時に、別個のクラウドからのDVR娯楽サービスを消費している場合が考えられる。画面上で何が見えるかに応じて、各クラウドサービスは、サービスがクライアント上で見えない場合には、個々のフレームバッファを処理しない場合もある。前述した図2Fには、フレームバッファ情報の選択的表示の概念が示されている。クライアントは、層論理に基づいて処理の必要を伝えるはずである。別の例は、デスクトップの状況とデスクトップ提供者の広告規則エンジンとに依存する、広告ベースの層が画面上に配置されているクライアントへ配信されるホスティング・デスクトップ・サービスとすることができるはずである。
アルゴリズムの働きに関する上記の詳細な説明を踏まえて、次に、図13を参照して様々なプロセス動作を識別するプロセスフローを説明する。プロセスは、動作1310に示すように、クライアントから受け取られる特定のVMへの接続を求める要求から開始する。接続要求は、VM上で走っている仮想サービスにアクセスし、それを制御することを求めるものであり、クライアントの接続要件を定義する複数の接続パラメータを含む。要求は仮想マシンにおいて受け取られ、仮想マシンは画像プロセッサアルゴリズムを実行している。アルゴリズムを備える仮想マシンは、一実施形態では、ハイパーバイザ上で走っているその他のVMのフレームバッファデータにアクセスし、それを制御するサーバ仮想マシンとして動作し得る。アルゴリズムは、動作1320に示すように、接続要求を照会してサービスと位置情報とを識別する。照会に基づき、アルゴリズムは、ハイパーバイザ上で走っている複数のVMの中から、クライアントによって要求されたサービスを提供する特定のVMを識別する。次いでアルゴリズムは、その上で複数のVMが実行されているハイパーバイザを介して、メモリ内の所定の位置にある識別されたVMのフレームバッファ情報に直接アクセスする。フレームバッファは、VMと関連付けられた仮想マシンディスプレイの画像を表すグラフィカル出力を定義する。SVMのところのアルゴリズムは、動作1340に示すように、画像を定義するフレームバッファデータを読み取り、アルゴリズム内に含まれるフォーマッティングプロトコルを使用し、クライアントから初期接続要求と共に獲得された接続パラメータに基づいてフレームバッファデータを画像データパケットへと処理する。パッケージ化された画像パケットは、動作1350に示すように、SVMのネットワーク・インターフェース・カード(NIC)へ転送され、そこで画像パケットは、伝送プロトコルに従うようにさらにパッケージ化され、クライアントと関連付けられた表示装置においてレンダリングするためにクライアントに送信される。レンダリングされたクライアントデータは、識別されたVMと関連付けられた仮想マシンディスプレイの画像を定義する。クライアントは、画像データパケットを復号/伸張し、画像データパケットから得られたデータをアセンブルし、アセンブルされたデータをクライアントにおいてレンダリングする。レンダリングされたグラフィカル出力における、マウスクリックやキーボード打鍵といったユーザ対話を取り込み、VMの微調整および制御のためにアルゴリズムへ返すことができる。
アルゴリズムの上記概要を踏まえ、次に、アルゴリズムを使用する様々なシナリオ/適用例のより詳細な説明を行う。アルゴリズムは、それだけに限らないが、いくつか例を挙げると、デスクトップ適用例、ゲーム適用例、家電適用例、モバイル適用例を含む様々な設定において使用することができることに留意すべきである。上記の適用例のリストは例示であり、限定と解釈すべきではない。アルゴリズムを使用することのできる他の適用例/シナリオも可能である。また、アルゴリズムの全般的機能および様々な構成要素との対話があらゆるシナリオ/適用例の下で同じままであることにも留意すべきである。以下の各項で論じるように、アルゴリズムへのアクセスの仕方およびアルゴリズムの使い方だけが異なる。
デスクトップ適用例:
デスクトップサービスは、パーソナルコンピュータ(PC)、デスクトップ、ラップトップなどといったコンピューティング機器を介して提供される。この適用例の実施形態は、インターネットなどのネットワーク接続を使用し、デスクトップを介して、サーバVM(SVM)において実施されるアルゴリズムを使用する。本明細書では、アルゴリズムはSVMにおいて実施されるものと解釈されるが、「サーバ」という用語は、アルゴリズムが実施されたSVMが、クライアントによって要求されるサービスを提供することによりクライアント/サーバコンピューティングにおけるサーバのように振る舞うことを示すのに使用されるにすぎないことに留意すべきである。SVMは他のVMからの情報を求めるクライアントとして振る舞ってもよく、その場合他のVMはサーバの役割を引き受けることができる。アルゴリズムは、仮想インフラストラクチャにおいて利用可能な任意のVM上で実施されてよい。図12Aに示す一実施形態では、クライアントはPCやラップトップといったデスクトップである。最初に、インターネットなどのネットワークに接続されたデスクトップは、仮想センタ(VC)内で利用可能な仮想サービスにアクセスし、それを制御することを求める接続要求をVCに送る。接続要求は、デスクトップの識別情報を他の接続パラメータと共に含む。デスクトップは、まず、仮想サービスへのアクセスを提供する前に、接続要求において提供される識別情報と他の認証情報とを使用して認証される。一実施形態では、デスクトップはウェブサイトを介して認証され、ウェブサイトは、接続要求から獲得されるデスクトップの識別情報を使用して、仮想センタと関連付けられた、インターネット上で利用可能な仮想インフラストラクチャ(VI)にアクセスすることのできる許可された機器のリストを維持する。デスクトップの識別情報を検証する前述のプロセスは、認証を確立する1つのやり方にすぎず、認証を確立する他のやり方を使用することもできる。認証後に、デスクトップからの接続要求は、VIにおいて他のVMと並行して走るSVMへ送られる。SVM内の画像プロセッサアルゴリズムは、接続パラメータを照会してデスクトップの識別情報、デスクトップの種類、デスクトップと関連付けられた表示装置の種類、要求された仮想サービスの識別情報、サービスを提供するVM上で走っているオペレーティングシステム(OS)、VMのOSと対話するのに使用されるプロトコル、およびデスクトップの他の接続要件を獲得する。よって、接続パラメータは、クライアントと関連付けられた接続その他の環境関連情報を提供し、デスクトップの種類、クライアントの発信元インターネットプロトコル(IP)アドレス、仮想サービスのための宛先IPアドレス、クライアントの種類、クライアント識別情報、クライアントと関連付けられた表示装置の種類、仮想サービスを提供するVM上で走っているOS、VMのOSと対話するのに使用されるプロトコル、利用可能な帯域幅の量、待ち時間の点での機器の位置、接続の品質などを含む。
アルゴリズムは、その上でVIの複数のVMが走っているハイパーバイザと適切に対話して識別されたVMと関連付けられたフレームバッファデータへのアクセスを取得することができるように、デスクトップからの接続要求にサービスすることのできるVMを識別し、OSが識別されたVMにおいてフレームバッファデータをリフレッシュするスキャンレートなどを判定することによって、デスクトップを適切なVMに接続するプロセスを実行する。ハイパーバイザは、VMのグラフィックスドライバと対話して、識別されたVMのためのフレームバッファデータを、ハイパーバイザを介してアクセス可能な仮想メモリ内の所定の位置へ書き込む仮想グラフィックスカードを含む。
SVMのアルゴリズムは、ハイパーバイザを介して直接、仮想メモリ内の所定の位置から識別されたVMのためのフレームバッファデータにアクセスし、それを読み取る。アルゴリズムは、フレームバッファデータにアクセスするときに、適切なアプリケーション・プログラミング・インターフェース(API)を使用してハイパーバイザと対話する。APIは、特定のハイパーバイザに特有のものであり、アルゴリズムは、接続パラメータに基づいて特定のハイパーバイザのために使用すべき適切なAPIを決定する知能を有する。次いでアルゴリズムは、スキャンエンジン、熱エンジン、コンテキストエンジンおよび論理エンジンを使用してフレームバッファデータを読み取り、解析し、接続パラメータに基づく1つまたは複数の技法を使用して、デスクトップに特有の、デスクトップに適するパケットサイズを有する画像データ要素(パケット)を生成し、UDPといった単純で汎用的な伝送プロトコルを使用してクライアントへパケットを転送する。画像データパケットは、アルゴリズム要件と伝送プロトコル要件の両方従うメッセージの種類とパッケージング情報とを含む。
デスクトップは、パケットを受信し、メッセージの種類を読み取り、適切な伸張法を使用してフレームバッファデータを読み取り、デスクトップの表示装置上にレンダリングする。レンダリングされたデータは、VMにおいて実行されており、またはレンダリングされているグラフィカル要素、アイコン、ディスプレイ、プログラム、リンク、写真、動画、およびユーザインターフェースの操作または非操作を示す、識別されたVMの仮想マシンディスプレイの画像の部分を表す。レンダリングされたフレームバッファにおけるユーザ対話および自動フィードバックが、アルゴリズムのクライアント側論理によって受け取られ、パッケージ化され、SVMへ送信される。ユーザ対話は、接続パラメータへの変更/更新と、フレームバッファデータの微調整および更新を可能にするフレームバッファデータとを含むことができる。ユーザ対話は、通常のトラブルシューティングまたは保守の間にVMと関連付けられたコンソールにおいて管理者によって行われる対話と同様のものである。自動フィードバックは、SVM内のアルゴリズムに、接続要求に応答してサービスを提供したVM上で実行されている1つまたは複数のアプリケーションへ宛先指定された接続品質情報およびデータを提供する。ユーザ対話および自動フィードバック情報は、バックチャネル通信を介してアルゴリズムへ返送される。ハイパーバイザを介したVMとクライアントとの間の対話とアルゴリズムとは、ユーザがVMにおける1つまたは複数のサービスを制御することを可能にする。
別の実施形態では、ラップトップが仮想環境内のVMへの接続を要求するクライアントとして働く。ラップトップのためのVMへの接続を確立するプロセスは、デスクトップ適用例に関して前述した実施形態と同様である。この実施形態では、フレームバッファデータは、アルゴリズムとのクライアントの初期ハンドシェーク時に確立された接続パラメータに基づいてラップトップと関連付けられた表示装置のために構成され、この表示装置に特有のものである。
本発明の一実施形態では、画像プロセッサアルゴリズムがユーザのコンピューティングプロファイルへのアクセスを提供する。コンピューティングプロファイルは、本出願で使用する場合、その上で特定のアプリケーションおよびハードウェアが利用可能である/実行されている特定のユーザのために構成されたコンピュータシステムをいう。したがって、ユーザのコンピューティングプロファイルは、ユーザが特定のハードウェア機器およびソフトウェアアプリケーションを用いて構成したカスタマイズされたデスクトップを含み得る。この実施形態では、ユーザがネットワーク上でクライアントを介してハードウェア/ソフトウェアを制御することができるように、接続要求を使用してユーザのこのコンピューティングプロファイルがアクセスされる。クライアントは、この実施形態では、モバイル機器とすることも、ネットワークに接続された、同じ場所または離れた場所にあるデスクトップPCやラップトップコンピュータといった他の任意のコンピューティング機器とすることもできる。クライアントが接続要求を開始するとき、クライアントはまず、ユーザ認証サービスによる認証を受ける。認証が行われ次第、クライアントは、仮想センタと、仮想センタ内のVM上で走っているアルゴリズムへのアクセスを許される。アルゴリズムは、ユーザのコンピューティングプロファイルの画像を表すフレームバッファデータへのアクセスを提供することによりサービスへのアクセスを提供する。
本発明の別の実施形態では、アルゴリズムは、特定のVMの特定のセッションへのユーザアクセスを提供する。この実施形態では、特定のセッションへのアクセスは、ハイパーバイザと画像プロセッサアルゴリズムとを使用して特定のVMのためのフレームバッファデータにアクセスすることによって提供される。一実施形態では、VMとのセッションを確立することにより、ユーザのコンピューティングプロファイルまたはデスクトップへのアクセスが提供される。プロファイルは、ユーザのプロファイルを介してアクセス可能なユーザのデスクトップ、フォルダ、データ、アプリケーション、およびサービスのビューを定義することができる。セッションの間、ユーザは、あたかもユーザが自分のデスクトップまたはコンピュータに対してローカルであるかのように、プロファイルのすべてのインターフェースにアクセスし、それらを利用することができる。セッションの間、ユーザは、本明細書で説明するように、バックチャネルを使用して、すべてのI/O入力(例えば、キーボード入力、マウス入力、ユーザインターフェース入力など)を伝えることができる。セッションの間、ユーザは、自分のコンピュータ(すなわちプロファイル)をオン、オフにし、アプリケーションまたはウィンドウを開いたまま、または閉じたままにし、セッションを離れ、セッションを再接続することができる。
本発明の一実施形態では、アルゴリズムは、フレームバッファデータの動的再サンプリングおよびサイズ変更、またはクライアントと関連付けられたレンダリング機器のサイズおよびフォーマットの変更に対応するために異なるサイズのフレームバッファに接続することを可能にする。よって、ラップトップと関連付けられた表示装置が、異なるサイズ、異なるフォーマットを含む異なる種類に動的に変更されるときに、SVMのところのアルゴリズムは、更新された接続パラメータに基づいて変更を認識し、識別されたVMの読み取られたフレームバッファデータを処理して、変更された表示装置の要件に従う読み取られたフレームバッファデータのための適切な画像データパケットを提供する。
別の実施形態では、アルゴリズムは、クライアント機器の異なる構成についての複数の画像データパケットのセットを生成する能力を有し、したがって、クライアントの起動パラメータの照会に基づいて、異なるサイズ、向き、ビット深度などの画像データパケットを制御し、提供することができる。この実施形態では、アルゴリズムの論理は、クライアントの接続パラメータの照会に基づいて、クライアントと関連付けられた表示装置に特有のサイズ、フォーマット、向き、ビット深度などを有する正しい画像データパケットのセットを識別するための標準スイッチを含み得る。クライアントが接続を切断し、新しい表示装置と再接続する都度、アルゴリズムは、新しいハンドシェークに基づいてフレームバッファデータについての改訂された基準を認識し、改訂された基準と一致するビット深度、サイズ、向きなどを有するフレームバッファデータを表す適切な画像データパケットの(1つまたは複数の)セットを動的に生成する。サイズ変更のために考慮される基準の中には、いくつか例を挙げると、ビット深度、サイズ、向き、フォーマットなどが含まれ得る。場合によっては、アルゴリズムは、対話をより円滑化するために別のフレームバッファに接続することになる。よってアルゴリズムは、クライアントにおける変化する要件に基づいて、フレームバッファデータの動的サイズ変更および再フォーマッティングに対応することができる。
別の実施形態では、アルゴリズムは、クライアントと関連付けられた複数の表示装置上で同時に異なるサイズのフレームバッファデータのレンダリングを可能にする。よって、クライアントがラップトップであり、レンダリングするためにラップトップ自体の画面と一緒にデスクトップの表示装置を使用する場合、アルゴリズムは、ラップトップ画面とデスクトップの表示装置の両方でフレームバッファデータの適切なサイズの同時レンダリングを可能にする。画像データパケットのフォーマッティングに関与する圧縮法は、可逆的圧縮を使用することも不可逆的圧縮を使用することもあることに留意すべきである。データがリフレッシュされている間にアルゴリズムがフレームバッファデータを抽出しないようにするために、syncフラグを使用して、OSによるフレームバッファデータのリフレッシュが完了してはじめてアルゴリズムがデータを受け取るようにしてもよい。
一実施形態では、ラップトップは、図12A−1に示すように、ドッキングステーションを使用して、仮想センタ内の仮想サービスへの接続を確立し得る。ラップトップはドッキングステーションを介してネットワークに接続する。接続要求がラップトップから受け取られるときにアルゴリズムが組み込まれたサーバVMがアクティブになり、接続パラメータに基づいてラップトップを認証する。SVMは、インターネットとアクティブ化されたアルゴリズムとを介してアクセス可能なVM上で走っている様々なサービス/アプリケーションにアクセスすることができる仮想センタの一部とすることができる。仮想センタは、下にある物理ハードウェア、ハイパーバイザ、VM内で実行される様々な種類のオペレーティングシステムを備えるハイパーバイザ上で走っている複数の仮想マシンを含む仮想インフラストラクチャを構成するすべての構成要素を含む。
アルゴリズムは、クライアントにおける1つまたは複数の接続パラメータへの動的変更を検出し、フレームバッファデータの提示を動的にしかるべく調整する。アルゴリズムは、バックチャネルを介して、デスクトップやラップトップといったクライアントと接続品質情報を交換し、ハイパーバイザと対話して接続品質に沿うようにすることによってフレームバッファデータを微調整する。別の実施形態では、図12Bに示すように、フラッシュドライブといったコンピュータ可読媒体上でソフトウェアクライアントを提供することができる。ソフトウェアクライアントを有するフラッシュドライブは、デスクトップコンピューティング機器やラップトップコンピューティング機器といったコンピューティング機器のユニバーサル・シリアル・バス(USB)ポートに差し込み、ラップトップ/デスクトップPCを介してアクセスすることができる。ソフトウェアクライアントは、ソフトウェアクライアントを有するフラッシュドライブが差し込まれているデスクトップPCまたはラップトップを認証するための認証機構を提供する。認証が行われ次第、デスクトップPCまたはラップトップには、下にある共用リソースにアクセスするハイパーバイザ上で実行されている複数のVMを備える仮想インフラストラクチャを含む仮想センタへの信頼できる接続が提供される。認証されたデスクトップPCは、サービスへの接続要求を生成することによってSVMをアクティブ化し、SVMと対話して特定のVMからフレームバッファデータを獲得することができる。
図12Cに示す別の実施形態では、デスクトップPCが、デスクトップPCに供与されるワイヤレスフィデリティ(WiFi)技術といった高速接続を使用して仮想センタに接続することができる。この実施形態では、デスクトップPCによって提供される仮想サービスへの接続要求は、デスクトップPCの識別情報を含む。SVM上で走っているアルゴリズムが接続要求を受け取ると、アルゴリズムは、接続要求と共に提供された接続パラメータを照会して、デスクトップPCを識別し、接続要求において要求されたサービスへのアクセスを提供することができるVMと、ビット深度、許容されるスキャンレート、向きなどを含むデスクトップPCの接続要件とを識別する。アルゴリズムはまず、デスクトップPCを認証し、認証が行われ次第、ハイパーバイザを介して識別されたVMのフレームバッファ情報に直接アクセスし、フレームバッファデータをパッケージ化し、VMの仮想マシンディスプレイの画像を表すパッケージ化されたフレームバッファデータを、WiFi接続を使用してデスクトップPCへ転送する。図12A〜図12Cを参照して前述した実施形態は、VM上で実行されている、クライアントによって要求されたサービスにアクセスし、それらを制御するためのやり方のいくつかの例を表すものである。サービスは、クライアント上で走らせるために設計されたアプリケーションを走らせるVMのディスプレイとすることもできるはずである。
図11に示す別の実施形態では、アルゴリズムは、単一のクライアントを使用してリモートで、異なる層において利用可能な複数のサービスにアクセスするための単純で効果的なツールを提供する。クライアントは、「シン」クライアントとすることも、「ファット」クライアントとすることもできる。この実施形態では、仮想インフラストラクチャは、サービスの複数の「クラウド」を含む。例えば、複数のデスクトップアプリケーションへのアクセスを提供するデスクトップ・アプリケーション・サービス・クラウド1110、複数のオンラインゲームを備えるゲーム・サービス・クラウド1120、マルチメディアコンテンツのオンラインストリームを獲得するための、NetFlix(商標)などによって提供されるようなPVR/DVR/DVDサービスクラウド1130、別の種類のゲーム/アプリケーション・サービス・クラウド1140などを含むことができるはずである。これらのクラウドはそれぞれ、クライアントがアクセスし制御するための特定の種類のサービスを提供する。サービスクラウドの上記リストは例示であり、限定とみなすべきではない。別の種類のサービスクラウドを本発明の実施形態と共に使用することもできる。各クラウドは、ハイパーバイザ上で走っており、下にあるハードウェアにアクセスする複数のVMを備える独自の仮想センタを有する。画像プロセッサアルゴリズム(IPA)が、少なくとも1つのVM内の各クラウドにおいて提供される。一実施形態では、IPAは、別個のサーバVM(SVM)において提供される。別の実施形態では、IPAは、各サービス層内の少数のVMにおいて提供される。IPAは、別の実施形態では、各サービス層内のすべてのVMにおいて提供することができる。
一実施形態では、デスクトップといったクライアントが、適切なIPAにアクセスすることによって各クラウドのところのアプリケーション/サービスにアクセスすることができる。プロセスはクライアントが接続要求を生成することから開始する。接続要求は、クライアントと関連付けられた接続基準および環境を定義する複数の接続パラメータを含む。接続パラメータに含まれるのは、サービス層を識別するサービス層識別情報と、クライアントがアクセスしようとしている特定のサービスである。アルゴリズムは、接続パラメータを照会して、要求されたサービスに関連した特定のサービス層と、要求されたサービスを提供する特定のVMとを識別する。例えば、要求されたサービスは、デスクトップ・アプリケーション・サービス・クラウド内のアプリケーションである場合もある。要求されたサービス層とVMとが識別された後で、アルゴリズムは、ハイパーバイザを介して識別された層内の識別されたVMの要求されたサービスのためのフレームバッファデータに直接アクセスし、フレームバッファデータを解析し、クライアントによって指定されるフォーマットで画像データのパケットを生成する。生成されたパケットはフォーマッティングアルゴリズムとネットワーク要件とに従ってパッケージ化され、復号し、処理し、アセンブルし、レンダリングするためにクライアントへ送信される。アルゴリズムは、クライアントがレンダリングされたフレームバッファを介してサービスを管理することを可能にする。
クライアントが同じクラウド内の別のサービスへのアクセスを求めるときには、クライアントは、既存の接続を打ち切り、新しい接続要求を生成するだけである。アルゴリズムは、新しい接続要求を検出し、新しい接続要求を照会し、例えば、同じデスクトップ・アプリケーション・サービス・クラウド1110内の新しいサービスを識別し、VMから、要求されたサービスのための画像データパケットの形のフレームバッファデータを提供し、VMは、同じVMであってもよく、デスクトップ・アプリケーション・サービス・クラウドのVI内の別のVMであってもよい。画像データパケットはクライアントに特有のフォーマットで提供される。
同様に、クライアントが、ゲーム・サービス・クラウドといった別のクラウド内の別のサービスにアクセスしようとするときには、クライアントは、例えばデスクトップ・アプリケーション・サービス・クラウド1110との既存の接続を打ち切り、接続パラメータにおいて提供される、ゲーム・サービス・クラウド内のオンライン・ゲーム・アプリケーションといった新しいサービスとの新しい接続要求を確立する。アルゴリズムは、新しい接続要求を検出し、要求を照会して新しい接続パラメータを獲得し、新しい接続パラメータを使用してゲーム・アプリケーション・クラウド1120内の新しいゲームアプリケーションへの接続を確立し、ゲーム・アプリケーション・クラウド1120におけるハイパーバイザを使用して新しいゲームアプリケーションのためのフレームバッファデータを獲得し、フレームバッファデータを、接続パラメータに基づいてクライアントの要件に従ったパケットへとパッケージ化し、パッケージ化されたフレームバッファデータをレンダリングするためにクライアントへ送信する。前述のように、異なる表示要件を有するフレームバッファデータの複数のフォーマットが、要求時に、またはフレームバッファデータの初期作成時に同じフレームバッファデータについて動的に生成され、要求通りに、また要求されるときにクライアントに提供され得る。よってアルゴリズムは、独自のプロトコル/ソフトウェアまたは異なるクライアントに関与せずに、あるアプリケーション・サービス・クラウド内のある種類のサービスから、別のアプリケーション・サービス・クラウド内の別の種類のサービスへ切り換える手段を提供する。
上記実施形態は、その時々に、特定の層からのサービスにアクセスし、クライアントにおいてサービスと関連付けられた情報をレンダリングすることの詳細を示すものであったことに留意すべきである。しかし、これらの実施形態は、その時々にただ1つのサービスへのアクセスを提供することだけに制限されず、その時々に複数の層からの複数のサービスを提供するように拡張することもできる。したがって、アルゴリズムは、接続パラメータを使用して複数の層内の複数のサービスからのフレームバッファ情報にアクセスし、クライアントの表示装置においてフレームバッファデータを同時にレンダリングすることを可能にする。複数のサービスからのフレームバッファデータは、画像構造の各部分が個々のサービスからの画像データをレンダリングする、図2Fを参照して論じたのと同様のやり方でレンダリングされる。
上記実施形態は、クライアントが、VM上で走っているどんなオペレーティングシステムとも直接対話せずにVMを制御することを可能にする、効率的で柔軟なツールを説明するものである。アルゴリズムは、VMの仮想モニタにおいてレンダリングされているものを再現するためのOSからの実際のデータではなく、表示装置上でレンダリングするためのフレームバッファデータを要求しているため、データを解釈するのに従うべきどんな独自のプロトコルの必要も生じない。さらに、アルゴリズムから受け取られるデータはすでにコンテキストについて解析されており、アルゴリズムによってクライアントへ送信される画像データパケットには適切なコンテキスト情報が含まれている。その結果、クライアントにおいて画像データを解釈するための解析が不要であり、よって、クライアント側における高処理能力のCPUが回避される。さらに、クライアントとVMとの間のすべての対話はハイパーバイザを介したものであり、VMのOSと直接行われるものではない。アルゴリズムとハイパーバイザ内の仮想ビデオドライバとは、クライアントにおけるフレームバッファデータの解釈を単純で容易なものにするように、指定されたフォーマットですべてのVMからのフレームバッファデータを受け取ることを保証する。これにより、超シンクライアントでさえも、適切な伸張法を使用してフレームバッファデータにアクセスすることが可能になり、このアルゴリズムが、VMにアクセスし、VMを制御するための非常に柔軟なツールセットとなる。さらに、アルゴリズムは、ユーザ・データグラム・プロトコル(UDP)などといった非常に汎用的で単純な伝送プロトコルを使用し、長距離にわたるフレームバッファデータの伝送を可能にする。指定されるフォーマットと単純な伝送プロトコルとの組み合わせは、高速で容易なやり方での再送信を可能にし、アルゴリズムに待ち時間非依存、損失非依存の特性を持たせることができる。本発明の実施形態は、アプリケーションをVI「クラウド」において実行させ続ける手段を提供すると同時に、これらのアプリケーションにリモートでアクセスし、それらを制御するためのツールも提供することに留意すべきである。当業者は、本発明の実施形態の上記その他の利点を容易に想起することができる。
モバイル適用例
デスクトップ適用例に加えて、本発明の教示は、モバイル機器向けのアプリケーション/サービスにアクセスするためにモバイル機器でも都合よく使用することができる。モバイル機器は、シンクライアントと解釈されてもよく、タッチ入力表示装置またはミニキーボードを備える表示装置を有し、ごく限られたコンピューティングリソースを有するポケットサイズのコンピューティング機器であると想定することもできる。モバイル機器には、いくつか例を挙げると、携帯情報端末(PDA)、スマートフォン、タブレットPCといった広範な家電製品が含まれる。モバイル機器の上記リストは例示であり、限定とみなすべきではない。
今日のモバイル機器は、電子メール、インスタントメッセージング、テキストメッセージング、ウェブブラウジングなどといった広範なアプリケーションがホストされる仮想環境を利用することのできる多機能機器である。しかし、そのような豊富なクライアント形態におけるアプリケーションへのアクセスは、データとデータを提供するVMとへのアクセスを可能にするように独自のアプリケーションデータを伸張するための高処理能力のプロセッサを必要とするモバイル機器をもたらす結果になるはずである。モバイル機器内のプロセッサの大きなコンピュータ集約的要件は高くつき、モバイル機器製造者に対し、効率と設計のバランスをとるための絶え間ない課題を提示することになる。加えて、ますます多くのアプリケーションがモバイル機器向けに提供されるにつれて、プロセッサに対する要求がさらに増大し、コンピューティングリソースに対してアプリケーションのバランスをとることが非常に微妙で困難な作業になる。
より多くのアプリケーションのために高処理能力のプロセスを選択する必要性と効率的な設計構造との対立を回避するために、画像プロセッサアルゴリズムを使用して、シンモバイル機器とVM上で走っているサービス/アプリケーションとの間のインターフェースが提供され得る。アルゴリズムは、シンモバイル機器の限られたリソースを利用すると同時に、仮想センタ内の複数のVM上で走っている多数のアプリケーション/サービスにアクセスし、それらを制御することのできる能力を提供することを可能にする。アルゴリズムの一般的機能は、上記で図2〜図10を参照して詳細に説明した。図12A−2を参照してモバイル機器の機能を説明する。
一実施形態では、モバイル機器は、インターネットといったネットワークに接続することによってVM内のサービス/リソースにアクセスする。別の実施形態では、携帯情報端末(PDA)といったモバイル機器が、パーソナルコンピュータ(PC)からのリソースが、ネットワーク上で利用可能な仮想センタ(VC)内の仮想マシン(VM)上で走っているサービスにアクセスすることを可能にする。PCは、インターネットカフェにおいて利用されてもよく、WiFiネットワークの一部とすることもでき、あるいは、広域ネットワーク(WAN)を介してVCにアクセスするデスクトップPCとすることもできる。PCは、バーコードや無線周波数識別(RFID)タグといった識別タグまたは情報を含む。モバイル機器は、機器を識別した後で、セルラネットワーク上でPC機器を認証する。PCの識別情報が認証された後で、PCには、下にある共用リソースにアクセスするハイパーバイザ上で複数のVMが走っている仮想インフラストラクチャ(VI)を含む仮想センタへの信頼できる接続が提供される。認証されたPCは、VC内のVMにおいて利用可能なアプリケーション/サービスにアクセスするためのVC「クラウド」におけるセッションを確立するよう指図される。デスクトップ適用例に関して前述したように、PCは、画像プロセッサアルゴリズムを使用して異なる層において利用可能な複数の種類の仮想サービス/アプリケーションにアクセスすることができてもよい。よって、PCをアクセスポイントとして使用すれば、ユーザはVMにおいて利用可能な複数のサービス/アプリケーションにアクセスし、それらを制御することができる。
同様に、別の実施形態では、モバイル機器は、ドッキングステーションに直接接続されるときに、キーボード、モニタ、およびマウスを用いて、仮想環境内のVMへの接続を要求する独立型クライアントとして働く。モバイル機器のためのVMへの接続を確立するプロセスは、ドッキングステーションを使用したラップトップおよびデスクトップの適用例に関して論じた実施形態と同様である。モバイルクライアントは、WiFiネットワークを使用してネットワーク接続を確立するはずであり、ドッキングステーションは一定の電荷を供給することができる。この実施形態では、フレームバッファデータは、アルゴリズムとのクライアントの初期ハンドシェークの間に確立された接続パラメータに基づいて、モバイル機器と関連付けられた表示装置のために構成される。
モバイル機器セッションは、図2Aを参照して説明した、デスクトップPCまたはラップトップによって確立されるセッションと同様の範囲である。アルゴリズムは、リモートでサービス/アプリケーションにアクセスする手段を提供する。アルゴリズムは、VMから獲得される特定のサービスのためのフレームバッファをスキャンして調べ、アクティビティ領域および各アクティビティ領域におけるアクティビティの量を判定し、アクティビティ領域だけに注目し非アクティビティ領域は無視する論理を有する。これは、変更を有するデータだけが送信されるように、帯域幅とネットワークリソースの節約を可能にするはずである。またアルゴリズムは、フレームまたは帯域外マルチメディアコンテンツを検出するための境界を判定し、そのような帯域外マルチメディアストリーム内のデータを抽出し送信するための専用の技法を使用する論理も有する。帯域外ストリームがモバイル機器において受信されると、ストリームは、モバイル機器によって理解されるフォーマットで処理され、モバイル機器と関連付けられた画面上にオーバーレイされる。
アルゴリズムは、モバイル機器上において利用可能な表示装置以外の表示装置に対応するために、モバイル機器においてレンダリングするためのフレームバッファデータのさらに別のフォーマットを提供する。アルゴリズムは、クライアントとアルゴリズムとの初期ハンドシェークの間の接続情報を使用し、レンダリングするために適切にフォーマットされたフレームバッファデータを提供する。よって、モバイル機器がドッキングステーションを使用してモニタ/表示装置にアクセスする場合、アルゴリズムは、モバイル機器と関連付けられた表示装置の要件を獲得し、対応する表示装置の表示要件に合わせてフォーマットされたフレームバッファデータを要求する。前述のように、適切にフォーマットされたフレームバッファデータが動的に生成され、または、フレームバッファデータについてすでに作成された複数のフォーマットの中からの特定のフォーマットが、アルゴリズムによって送信のために選択される。モバイル機器におけるユーザ対話およびその他のフィードバックが記録され、微調整および更新のためにアルゴリズムに転送される。
本発明の実施形態は、同じ場所に位置し、または同じ場所に位置しない超シンクライアントが、ネットワーク接続を使用してリモートでVCクラウドにおいて利用可能な様々なサービス/アプリケーションにアクセスし、それらを制御することができる能力を提供する。アルゴリズムは、フレームバッファデータを予測可能なフォーマットで提供し、したがって、データの圧縮/伸張のための独自のプロトコルは不要である。すべてのサービスはVMにおいて維持、実行され、複雑な処理およびフォーマッティングは、VM層において利用可能なリソースを使用してVC内のVC層においてアルゴリズムを実行するVMによってローカルで行われる。クライアント側における複雑な処理の必要は生じず、この解決策がより受け入れやすく効果的なものになる。他の利点は当業者には自明であろう。
ゲーム適用例
デスクトップ適用例およびモバイル適用例に加えて、アルゴリズムは、ゲームアプリケーション/サービスを制御するためのより柔軟で効率のよいツールを提供するためにゲーム適用例において使用することもできる。本発明の実施形態は、アルゴリズムの機能的態様を使用して、ゲーム・サービス・クラウドにおいて利用可能なゲームアプリケーション/サービスの制御を提供する。
クライアントは、この実施形態では、PC、シンクライアントまたはモバイル機器であるにせよ、市販されているゲームコンソールといった他の任意のエッジデバイスであるにせよ、他の任意のサービスに使用される任意のクライアントである。ゲームコンソールは、業界で周知のように、テレビ画面やコンピュータモニタといった表示装置に接続された対話式コンピュータシステムであり、ビデオゲームを表示するための表示装置と共に使用することのできるビデオ表示信号を生成する。一実施形態では、ゲームコンソールは、低CPU能力および低メモリを有するネットトップコンピュータで置き換えられ、ネットトップコンピュータのリソースを使用し、ゲームクラウドといったサービスクラウドの仮想センタに、サービスクラウドにおいて利用可能な画像プロセッサアルゴリズムを使用して接続する。ネットトップコンピュータは、業界で周知のように、インターネットへのアクセス、ウェブベースのアプリケーションへのアクセスといった基本動作を行うために設計された、非常に小型で安価で低処理能力のコンピュータである。ゲームクラウド内のサービス/アプリケーションを求める接続要求がネットトップコンピュータにおいて開始される。接続要求は、アルゴリズムにネットトップの接続要件を提供する複数の接続パラメータを含む。アルゴリズムは、接続パラメータを使用して、ネットトップによって要求されたサービス/アプリケーションを提供するVMを識別し、ハイパーバイザを介して適切なフレームバッファデータに直接アクセスし、アルゴリズムによって定義される適切なフォーマットで画像データパケットを生成する。アルゴリズムは、サービス要求に応答して、接続パラメータによって駆動される適切なパッケージにおいて画像データパケットをネットトップへ転送する。マウスクリックやキーボード打鍵といったゲームネットトップにおけるユーザ対話が取り込まれ、バックチャネルを介して微調整および更新のためにアルゴリズムへ転送される。さらにアルゴリズムは、確立されたバックチャネルを介して、サービス品質に関するネットトップからの周期的な更新も受け取る。アルゴリズムは、サービス品質を使用して、フレームバッファデータおよびフレームバッファデータへの周期的更新を適切にパッケージ化し、ネットトップへ送信する。他の利点は当業者には自明であろう。
上記実施形態を考慮して、本発明は、コンピュータシステムに記憶されたデータを伴う様々なコンピュータで実施される動作を用い得ることを理解すべきである。これらの動作は、物理量の物理的操作を必要とするものである。必ずしもそうとは限らないが、普通は、これらの量は、記憶され、転送され、結合され、比較され、また他の操作を施されることが可能な電気信号または磁気信号の形をとる。さらに、行われる操作は、多くの場合、生成する、識別する、判定する、比較するといった用語で言及される。
本発明の一部を構成する本明細書で説明した動作はいずれも有用な機械操作である。また本発明は、これらの操作を行うための機器または装置にも関するものである。装置は、必要な目的のために専用に構築されてもよく、コンピュータに記憶されたコンピュータプログラムによって選択的にアクティブ化され、または構成される汎用コンピュータとすることもできる。特に、様々な汎用機が本明細書の教示に従って書かれたコンピュータプログラムと共に使用されてもよく、必要な操作を行うためのより特殊な装置を構築するほうが好都合な場合もある。
また本発明は、コンピュータ可読媒体上のコンピュータ可読コードとして具現化することもできる。コンピュータ可読媒体は、後でコンピュータシステムによって読み取られ得るデータを記憶することができる任意のデータ記憶装置である。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ(NAS)、読取り専用メモリ、ランダム・アクセス・メモリ、CD−ROM、CD−R、CD−RW、磁気テープ、およびその他の光学的、非光学的データ記憶装置が含まれる。またコンピュータ可読媒体は、コンピュータ可読コードが分散されて記憶され、実行されるように、ネットワークで結合されたコンピュータシステム上に分散させることもできる。
しかし、本発明がこれらの具体的詳細の一部または全部がなくても実施され得ることが当業者には自明であろう。場合によっては、本発明を不必要にあいまいにすることのないように、周知のプロセス操作は詳細に説明していない。
以上の発明は、理解を明確にするために多少詳細に説明されているが、本発明の範囲内である一定の変更および改変が実施され得ることは明らかであろう。したがって、本発明の実施形態は、限定ではなく例示とみなされるべきであり、本発明は本明細書で示す詳細だけに限定されるべきではなく、本発明の範囲内で改変され得るものである。

Claims (52)

  1. ネットワーク上でクライアントにサービスを提供するための方法であって、
    前記クライアントから、前記クライアントの接続要件を定義する複数の接続パラメータを含み、画像プロセッサアルゴリズムを実行する仮想マシンにおいて受け取られる、特定の仮想マシン上で利用可能な仮想化コンピュータサービスを制御することを求める接続要求を受け取るステップと、
    前記クライアントからの前記要求を満たす前記仮想化コンピュータサービスを提供する前記特定の仮想マシンを識別するために前記画像プロセッサアルゴリズムを使用して前記接続パラメータを照会するステップと、
    ハイパーバイザを介して仮想メモリ内の所定の位置から、仮想メモリ内の前記所定の位置から読み取られ、前記特定の仮想マシンの仮想マシンディスプレイと関連付けられた画像を表すグラフィカル出力を定義する、前記特定の仮想マシンのためのフレームバッファデータにアクセスするステップと、
    前記複数の接続パラメータに基づき、前記画像プロセッサアルゴリズムを使用して、前記フレームバッファデータを複数の画像データパケットへと処理するステップと、
    前記クライアントに特有のものであり、前記仮想マシンディスプレイの前記画像を表す前記画像データパケットを、前記クライアントと関連付けられた表示装置上で提示するために前記クライアントへ送信するステップと
    を含む方法。
  2. 前記画像データパケットが、画像プロセッサアルゴリズムに関連したパッケージング情報とネットワーキングに関連したパッケージング情報とを含む請求項1に記載の方法。
  3. 前記フレームバッファデータを処理する前記ステップが、
    前記特定の仮想マシンの前記フレームバッファデータを解析してコンテキストを判定するステップと、
    前記解析に基づいて前記特定の仮想マシンの前記フレームバッファデータに適切なコンテキスト情報を関連付けるステップと、
    前記特定の仮想マシンの前記フレームバッファデータを前記コンテキスト情報と一緒に記憶するステップと
    をさらに含む請求項1に記載の方法。
  4. 前記特定の仮想マシンの前記フレームバッファデータを周期的にスキャンするステップと、
    スキャンされたフレームバッファデータを前記特定の仮想マシンのための前記記憶されたフレームバッファデータと比較することによって変更領域を判定するステップと、
    前記変更領域と関連付けられた前記コンテキスト情報を記憶することを含む、前記変更領域を解析および送信のために前記特定の仮想マシンと関連付けられた時間ベースの記憶アレイに記憶するステップと
    をさらに含む請求項3に記載の方法。
  5. 前記フレームバッファデータをスキャンする前記ステップが、
    前記特定の仮想マシンの前記フレームバッファデータのリフレッシュの状況を識別する、前記特定の仮想マシンの前記フレームバッファデータと関連付けられたsync信号を照会するステップと、
    前記sync信号の前記照会に基づいて前記特定の仮想マシンの前記フレームバッファデータの前記スキャンを行うステップと
    をさらに含む請求項4に記載の方法。
  6. 前記特定の仮想マシンのための前記フレームバッファデータのリフレッシュの前に前記sync信号を設定するステップと、
    前記特定の仮想マシンのための前記フレームバッファデータの前記リフレッシュが完了し次第、前記sync信号をリセットするステップと
    をさらに含む請求項5に記載の方法。
  7. 前記仮想マシンにおける前記フレームバッファデータの前記周期的スキャンが、前記仮想マシンにおける前記フレームバッファデータのリフレッシュレート、または前記クライアントと関連付けられた前記接続パラメータによって駆動されるレートの1つで行われる請求項5に記載の方法。
  8. 前記仮想マシンにおける前記フレームバッファデータをスキャンする前記ステップが、
    前記特定の仮想マシンと関連付けられたグラフィックスドライバから受け取られる、前記特定の仮想マシンの前記フレームバッファデータの変更を知らせる通知を受け取るステップと、
    前記通知に基づいて前記特定の仮想マシンの前記フレームバッファデータをスキャンするステップと
    をさらに含む請求項5に記載の方法。
  9. 前記読み取られたフレームバッファデータを処理する前記ステップが、
    前記時間ベースの記憶アレイを解析して前記フレームバッファデータ内の高アクティビティ領域を判定するステップと、
    前記フレームバッファデータの前記高アクティビティ領域内の連続したアクティビティ領域を判定するステップと、
    前記連続したアクティビティ領域内の伝送法を適用しやすい特徴を前記時間ベースの記憶アレイ内のフレームバッファデータのグループへとグループ化するステップと、
    前記クライアントと関連付けられた前記接続パラメータに基づいて、前記時間ベースの記憶アレイから時間ベースのフレームバッファ・データ・ストリームにおいて前記クライアントへ、前記連続したアクティビティ領域のグループを、前記フレームバッファデータと関連付けられた導出コンテキスト情報を含めて送信するステップと
    をさらに含む請求項4に記載の方法。
  10. 前記画像データパケットを送信する前記ステップが、
    前記接続パラメータに基づいて前記クライアントと関連付けられた前記表示装置との互換性を有するフォーマットを判定するステップと、
    前記フレームバッファデータと関連付けられた前記コンテキストに基づいて、前記フレームバッファデータを、前記クライアントと関連付けられた前記表示装置との互換性を有する前記フォーマットへ変換する際に使用される1つまたは複数の変換法を識別するステップと、
    前記フレームバッファデータを、前記1つまたは複数の変換法を使用して、前記識別されたフォーマットに従った、前記フレームバッファデータと関連付けられた前記コンテキスト情報を含む画像データパケットへと変換するステップと、
    前記フォーマットされた画像データパケットを、前記クライアントの前記表示装置においてレンダリングするために前記クライアントへ送信するステップと
    をさらに含む請求項9に記載の方法。
  11. 前記フレームバッファデータの変更領域と関連付けられた1つまたは複数の特性を検査するステップと、
    前記識別された変換法を使用し、前記1つまたは複数の特性に基づいて前記変更領域と関連した前記フレームバッファデータの部分を抽出するステップと、
    前記識別された変換法を使用して、ビデオクリップである前記フレームバッファデータの前記抽出された部分を、前記フレームバッファデータの前記コンテキスト情報を含む帯域外ストリームとして前記クライアントへ送信するステップと
    をさらに含む請求項9に記載の方法。
  12. 前記クライアントと関連付けられた前記表示装置における変更を識別する、前記クライアントと関連付けられた接続パラメータへの変更を動的に検出するステップと、
    前記クライアントにおいて検出された前記接続パラメータへの前記変更に基づいて、前記特定の仮想マシンの前記フレームバッファデータを動的に再サンプリングし、適切な画像データパケットへとサイズ変更し、前記クライアントの前記表示装置における前記フレームバッファデータのレンダリングを可能にするステップと
    をさらに含む請求項9に記載の方法。
  13. それぞれが別個の種類のものである、前記クライアントと関連付けられた複数の表示装置を検出するステップと、
    前記クライアントの各種の表示装置との互換性を有するフォーマットを判定するステップと、
    前記1つまたは複数の変換法を使用して、それぞれが前記クライアントと関連付けられた特定の種類の表示装置との互換性を有する前記フォーマットを使用して前記フレームバッファデータを変換することによって生成され、それぞれが前記フレームバッファデータと関連付けられたコンテキスト情報を含む画像データパケットの複数のセットを生成するステップと、
    前記画像データパケットの各セットを、前記クライアントの前記個々の表示装置においてレンダリングするために前記クライアントへ送信するステップと
    をさらに含む請求項9に記載の方法。
  14. 各画像データパケットが、前記クライアントにおいて前記仮想マシンディスプレイの前記画像の特定の部分を定義し、レンダリングするために割り当てられたデータを含み、前記画像の前記特定の部分が少なくとも1画素によって定義される請求項1に記載の方法。
  15. 前記フレームバッファデータが前記仮想マシンのオペレーティングシステムによって作成され、前記フレームバッファデータへのアクセスが、前記クライアントと前記仮想マシンとの間のインターフェースを提供するハイパーバイザによって提供される請求項1に記載の方法。
  16. ネットワーク上でクライアントにサービスを提供するための方法であって、
    前記クライアントから、前記クライアントの接続要件を定義する複数の接続パラメータを含み、画像プロセッサアルゴリズムを実行する仮想マシンにおいて受け取られる、仮想化コンピュータサービスを制御することを求める接続要求を受け取るステップと、
    それぞれが別個の種類のサービスをホストするサービス層の中の要求された種類のサービスを提供する特定のサービス層と、前記クライアントからの前記接続要求を満たす前記仮想化コンピュータサービスを提供するための前記特定のサービス層内の特定の仮想マシンとを識別するために前記画像プロセッサアルゴリズムを使用して前記接続パラメータを照会するステップと、
    前記特定の仮想化コンピュータサービスを提供する前記特定のサービス層に接続するステップと、
    前記特定のサービス層内のハイパーバイザを介して仮想メモリ内の所定の位置から、仮想メモリ内の前記所定の位置から読み取られ、前記識別されたサービス層内の前記特定の仮想マシンの仮想マシンディスプレイと関連付けられた画像を表すグラフィカル出力を定義する、前記特定の仮想マシンのためのフレームバッファデータにアクセスするステップと、
    前記複数の接続パラメータに基づき、前記画像プロセッサアルゴリズムを使用して、前記フレームバッファデータを複数の画像データパケットへと処理するステップと、
    前記クライアントに特有のものであり、前記仮想マシンディスプレイの前記画像を表す前記画像データパケットを、前記クライアントと関連付けられた表示装置上で提示するために前記クライアントへ送信するステップと
    を含む方法。
  17. 各画像データパケットが、前記クライアントにおいて前記仮想マシンディスプレイの前記画像の特定の部分を定義し、レンダリングするように割り当てられたデータを含み、前記画像の前記特定の部分が少なくとも1画素によって定義される請求項16に記載の方法。
  18. 前記クライアントによって要求された新しい仮想化コンピュータサービスを定義する前記クライアントにおける接続パラメータの変更を検出するステップと、
    前記識別された仮想マシンへの前記接続を切断するステップと、
    前記クライアントによって要求された前記新しい仮想化コンピュータサービスを提供する特定の新しい仮想マシンを識別するために、前記画像プロセッサアルゴリズムを使用して前記変更された接続パラメータを照会するステップと、
    前記変更された接続パラメータの前記照会に基づいて、前記特定の新しい仮想マシンと関連付けられた仮想メモリ内の所定の位置における前記特定の新しい仮想マシンのためのフレームバッファデータへのアクセスを可能にする前記特定の新しい仮想マシンへの接続を確立するステップと、
    前記特定の新しい仮想マシンと関連付けられた仮想メモリ内の前記所定の位置から、前記特定の仮想マシンのための仮想メモリ内の前記所定の位置から読み取られ、前記画像プロセッサアルゴリズムを使用した送信と前記クライアントの表示装置上での提示とのために、前記クライアントに特有のものであり、前記新しい仮想化コンピュータサービスが実行されている前記新しい仮想マシンと関連付けられた特定の新しい仮想ディスプレイの画像を表す複数の画像データパケットへと処理される、前記特定の新しい仮想マシンのための前記フレームバッファデータにアクセスするステップと
    をさらに含む請求項16に記載の方法。
  19. 前記接続を切断する前記ステップが前記識別されたサービス層から切断するステップをさらに含む請求項18に記載の方法。
  20. ネットワーク上でクライアントにサービスを提供するための方法であって、
    複数の仮想マシンが実行されているハイパーバイザ上で実行されている少なくとも1台の仮想マシン上で画像プロセッサアルゴリズムを提供するステップと、
    前記少なくとも1台の仮想マシンの前記画像プロセッサアルゴリズムにおいて、前記クライアントから受け取られた接続要求を処理して、前記クライアントと関連付けられた接続要件を定義する複数の接続パラメータと、前記接続要求を満たすことのできる仮想化コンピュータサービスを有する特定の仮想マシンとを識別するステップと、
    前記ハイパーバイザを介して仮想メモリ内の所定の位置から、前記仮想メモリ内の前記所定の位置から読み取られ、前記特定の仮想マシンの仮想マシンディスプレイと関連付けられた画像を表すグラフィカル出力を定義する、前記特定の仮想マシンのためのフレームバッファデータにアクセスするステップと、
    前記複数の接続パラメータに基づき、前記画像プロセッサアルゴリズムを使用して、前記フレームバッファデータを、前記読み取られたフレームバッファデータと関連付けられたコンテキスト情報を含む複数の画像データパケットへと処理するステップと、
    前記クライアントと関連付けられた表示装置上で提示するために、前記クライアントに特有のものであり、前記VMディスプレイの前記画像を表す前記画像データパケットを前記コンテキスト情報と共に前記クライアントへ送信するステップと
    を含む方法。
  21. それぞれが他の仮想マシンの対応するフレームバッファデータにアクセスし、それを読み取るように構成された複数の仮想マシンにおいて独立に画像プロセッサアルゴリズムを提供するステップ
    をさらに含む請求項20に記載の方法。
  22. それぞれが他の仮想マシンの対応するフレームバッファデータにアクセスし、それを読み取るように構成された、前記ハイパーバイザ上で実行されている前記複数の仮想マシンのそれぞれにおいて独立に画像プロセッサアルゴリズムを提供するステップ
    をさらに含む請求項20に記載の方法。
  23. 前記読み取られたフレームバッファデータを処理するステップが、
    前記仮想化コンピュータサービスを提供する前記特定の仮想マシンの前記フレームバッファデータを解析するステップと、
    前記解析に基づいて前記フレームバッファデータについてのコンテキストを判定するステップと、
    前記フレームバッファデータについての適切なコンテキスト情報を関連付けるステップと、
    それぞれが前記フレームバッファデータの少なくとも一部分と、前記フレームバッファデータの前記部分についての前記関連付けられたコンテキスト情報とを含む、前記フレームバッファデータのための複数の画像データパケットを生成するステップと
    をさらに含む請求項20に記載の方法。
  24. ユーザのアプリケーションおよびデータへのアクセスを提供する前記ユーザのためのデスクトップを定義するコンピューティングプロファイルへのユーザアクセスを提供する方法であって、
    a)クライアントからインターネット接続を介して前記コンピューティングプロファイルへの接続を要求するステップと、
    b)前記要求された接続に応答して前記コンピューティングプロファイルのための仮想マシンを識別するステップと、
    c)前記識別された仮想マシンのためのフレームバッファデータを識別するステップと、
    d)前記フレームバッファデータを読み取るステップと、
    e)前記接続要求を行った前記クライアントの特性に基づいて前記フレームバッファデータを処理し、画像データパケットを生成するステップと、
    f)前記クライアントにおいて処理され、前記クライアントのディスプレイ上で提示される前記画像データパケットを前記クライアントへ転送するステップと、
    g)セッションの間に前記ステップ(d)〜(f)を繰り返し、同時に、前記クライアントと前記仮想マシンとの間でバックチャネル通信を交換するステップと
    を含む方法。
  25. 各画像データパケットが、前記クライアントにおいて前記仮想マシンディスプレイの前記画像の特定の部分を定義し、レンダリングするように割り当てられたデータを含み、前記画像の前記特定の部分が少なくとも1画素によって定義される請求項24に記載の方法。
  26. 前記フレームバッファデータを処理する前記ステップが、
    前記フレームバッファデータを解析してコンテキストを判定するステップと、
    前記解析に基づいて前記フレームバッファデータにコンテキスト情報を関連付けるステップと、
    1つまたは複数の変換法を使用して、前記クライアントと関連付けられた表示装置との互換性を有する前記フレームバッファデータのための画像データパケットを生成するステップと
    をさらに含む請求項24に記載の方法。
  27. 前記クライアントと前記仮想マシンとの間の前記バックチャネル通信が、前記仮想マシン上で実行されている1つまたは複数のアプリケーションへのデータを含む請求項24に記載の方法。
  28. 前記クライアントにおける画像データパケットの処理が、パッケージング情報を除去すること、および前記データを前記クライアントの前記ディスプレイの特定の部分へマップすることをさらに含む請求項24に記載の方法。
  29. 仮想マシン(VM)のセッションへのアクセスを提供するための方法であって、
    (a)前記VMの前記セッションへのアクセスを獲得するステップと、
    (b)前記VMのためのフレームバッファデータを識別するステップと、
    (c)前記フレームバッファデータを読み取るステップと、
    (d)前記クライアントの特性に基づいて前記フレームバッファデータを処理し、画像データパケットを生成するステップと、
    (e)前記クライアントの前記特性のために生成された前記画像データパケットを前記クライアントへ転送するステップと、
    (f)前記VMの前記セッションにアクセスしている時間の間にステップ(c)〜(e)を繰り返し、同時に、前記クライアントと前記VMとの間でバックチャネル通信を交換するステップと
    を含む方法。
  30. 各画像データパケットが、前記クライアントにおいて仮想マシンディスプレイの画像の特定の部分を定義し、レンダリングするように割り当てられたデータを含み、前記画像の前記特定の部分が少なくとも1画素によって定義される請求項29に記載の方法。
  31. 前記クライアントの前記特性が、前記クライアントの位置、接続すべき仮想サービスの位置、クライアントの種類、ディスプレイの種類、接続品質、通信接続帯域幅、要求されるデータの種類、および解像度、ビット深度、リフレッシュ速度を含む前記クライアントと関連付けられたディスプレイの構成のうちのいずれか1つまたは複数を含む1つまたは複数の接続パラメータによって定義される請求項30に記載の方法。
  32. 前記セッションへのアクセスを獲得する前記ステップが、前記VMへのクライアントのマッピングと関連付けられた情報を提供するサービスブローカと、前記VMと関連付けられた前記フレームバッファデータにアクセスするためのAPIを提供する、ハイパーバイザ上で走るVM上で実行されている画像プロセッサアルゴリズムとを介したものである請求項30に記載の方法。
  33. 前記画像プロセッサアルゴリズムが、前記セッションを走らせている同じVM上、または前記セッションを走らせている前記VMとは異なるVM上のいずれか1つで独立に実行される請求項32に記載の方法。
  34. 前記クライアントにおける前記画像データパケットが、パッケージング情報を除去し、前記画像データパケット内の前記データを前記クライアントの前記ディスプレイの特定の部分にマップするように処理される請求項32に記載の方法。
  35. ネットワーク上でクライアントへサービスを提供するためのシステムであって、
    a)そのうちの少なくとも1台が、
    (i)特定の仮想マシンにおいて利用可能な仮想化コンピュータサービスを制御することを求める前記クライアントからの接続要求を検出し、
    (ii)前記接続要求を照会することによって前記仮想化コンピュータサービスを提供する前記特定の仮想マシンを識別し、
    (iii)ハイパーバイザを介して仮想メモリ内の所定の位置から、前記特定の仮想マシンの仮想マシンディスプレイと関連付けられた画像を表すグラフィカル出力を定義する前記特定の仮想マシンのフレームバッファデータにアクセスし、それを読み取り、
    (iv)前記読み取られたフレームバッファデータを、前記フレームバッファデータと関連付けられたコンテキスト情報を含む画像データパケットへと処理し、
    (v)前記クライアントに特有のものであり、前記仮想マシンディスプレイの前記画像を表す前記特定の仮想マシンの前記画像データパケットを、前記クライアントと関連付けられた表示装置上で提示するために前記クライアントへ送信する
    ための論理を含む画像プロセッサアルゴリズムを実行している、ハイパーバイザ上で走るように構成された1台または複数の仮想マシン
    を備えるシステム。
  36. a)前記1台または複数の仮想マシンへのクライアントのマッピングを提供し、前記接続要求と関連付けられた情報を認証するためのディレクトリサービスと、
    b)アクティビティ領域のグループと、ある期間にわたるアクティビティ領域のグループに対する変更とを記憶するための時間ベースの記憶アレイサービスと、
    c)コンテキスト依存圧縮を提供するのに使用される前記フレームバッファデータをパッケージ化するための圧縮法/伝送法を提供するための圧縮法サービスと
    をさらに含む請求項35に記載のシステム。
  37. ネットワーク上でクライアントにサービスを提供するためのシステムであって、
    a)そのうちの少なくとも1台が、その他の仮想マシンと並行して、
    (i)(ia)特定の仮想マシン上で利用可能な仮想化コンピュータサービスを制御することを求める、前記クライアントの接続要件を定義する複数の接続パラメータを識別する前記クライアントからの接続要求を検出し、
    (ib)前記仮想化コンピュータサービスを提供する前記特定の仮想マシンを識別するために前記接続パラメータを照会し、
    (ic)ハイパーバイザと対話して前記特定の仮想マシンのフレームバッファデータに直接アクセスし、
    (id)前記特定の仮想マシンの前記フレームバッファデータをスキャンして、前記特定の仮想マシンの前記フレームバッファデータにおける変更を含む前記特定の仮想マシンの仮想マシンディスプレイの画像を見分け、変更を含む前記フレームバッファデータを前記特定の仮想マシンと関連付けられた時間ベースの記憶アレイへと処理する
    ように構成されたスキャンエンジンと、
    (ii)(iia)前記フレームバッファデータと関連付けられた特性に基づいて連続した領域を判定し、前記フレームバッファデータと関連付けられるコンテキストを判定する
    ように構成されたコンテキストエンジンと、
    (iii)(iiia)前記フレームバッファデータを解析し、
    (iiib)前記判定されたコンテキストに基づいて、前記フレームバッファデータを、前記フレームバッファデータと関連付けられたコンテキスト情報を統合するように処理し、
    (iiic)前記クライアントに特有のものであり、前記仮想マシンディスプレイの前記画像を表す、前記特定の仮想マシンの関連コンテキスト情報を含む前記処理されたフレームバッファデータを、前記クライアントと関連付けられた表示装置上で提示するために前記クライアントへ送信する
    ように構成された論理エンジンと
    を含む画像プロセッサアルゴリズムを実行している、ハイパーバイザ上で走るように構成された1台または複数の仮想マシン
    を備えるシステム。
  38. 前記画像プロセッサアルゴリズムが、前記時間ベースの記憶アレイと対話して前記フレームバッファデータ内のアクティビティを探索し、前記探索に基づいて前記フレームバッファデータ内のアクティビティ領域とアクティビティのレベルとを識別し、非アクティビティ領域を無視するように構成されている探索アルゴリズムを備える熱エンジンをさらに含む請求項37に記載のシステム。
  39. 前記スキャンエンジンおよび前記熱エンジンが、バックチャネルを介して、前記特定の仮想マシンの前記フレームバッファデータ内の変更の可能性の高い領域を定義するユーザ対話を受け取るようにさらに構成されている請求項37に記載のシステム。
  40. 前記1台または複数の仮想マシンへの複数のクライアントのマッピングのリポジトリであるディレクトリサービスと、前記クライアントからの接続要求を認証するためのポリシを確認するように構成されたポリシおよび認証サービスとをさらに含む請求項39に記載のシステム。
  41. 前記画像プロセッサアルゴリズムが、
    前記クライアントと対話して接続パラメータを獲得し、前記クライアントと関連付けられた進行中の接続品質を判定し、
    前記ポリシおよび認証サービスと対話して前記クライアントから受け取られる接続パラメータを認証し、前記接続要求を扱うための1つまたは複数のポリシを判定し、
    前記論理エンジンと対話して進行中の接続品質と関連付けられた最新の接続パラメータを提供し、
    前記ディレクトリサービスと対話して、前記クライアントへ前記要求された仮想化コンピュータサービスを提供することができる前記特定の仮想マシンを識別し、
    前記スキャンエンジンと対話して、前記特定の仮想マシンのための前記適切なフレームバッファデータへ誘導する
    ように構成された接続エンジンをさらに含む請求項40に記載のシステム。
  42. 前記画像プロセッサアルゴリズムが、前記処理されたフレームバッファデータを、前記接続パラメータに基づいて、前記要求に応答して提示するための前記クライアントへの効率の良い送信に最適なようにサイズ設定された画像データパケットとして送信するための出力エンジンをさらに含む請求項41に記載のシステム。
  43. 前記画像プロセッサアルゴリズムが、前記ハイパーバイザ上で走っている複数の仮想マシンのうちの1つまたは複数で独立に実行可能であり、その場合、前記画像プロセッサアルゴリズムが、前記ハイパーバイザ上で走っている他の仮想マシンの対応するフレームバッファデータにアクセスし、それらを読み取るのに使用される請求項37に記載のシステム。
  44. 前記画像プロセッサアルゴリズムが、前記ハイパーバイザ上で走っている前記仮想マシンのうちのそれぞれで独立に実行可能であり、その場合、前記仮想マシンのそれぞれの前記画像プロセッサアルゴリズムが、前記ハイパーバイザ上で走っている他の仮想マシンの対応するフレームバッファデータにアクセスし、それらを読み取るのに使用される請求項37に記載のシステム。
  45. 複数のサービス層をさらに含み、前記複数のサービス層のそれぞれが前記クライアントによって要求される特定の種類のサービスを提供し、前記複数のサービス層のそれぞれが1台または複数の仮想マシンを含み、前記仮想マシン上で走る前記画像プロセッサアルゴリズムが、前記複数のサービス層のそれぞれにおける前記仮想マシンの前記フレームバッファデータにアクセスするように構成されている請求項37に記載のシステム。
  46. 前記複数のサービス層のそれぞれにおける前記仮想マシンのうちの少なくとも1台が前記画像プロセッサアルゴリズムを独立に実行している請求項45に記載のシステム。
  47. 前記クライアントが、前記画像プロセッサアルゴリズムを実行する前記仮想マシンから受け取られる前記画像データパケットを処理するように構成された論理を含み、前記画像データパケットの前記処理が、
    前記画像データパケットからパッケージング情報を除去すること、および
    前記データを前記クライアントの前記ディスプレイの特定の部分にマップすること
    を含む請求項37に記載のシステム。
  48. 仮想センタ内の仮想マシンのプロセッサ上で実行されるとネットワーク上でクライアントにサービスを提供するように構成されている、コンピュータ可読媒体上に実施された画像プロセッサアルゴリズムであって、
    サービスを要求する前記画像プロセッサアルゴリズムを実行している前記仮想マシンにおいて、前記クライアントから、前記クライアントの接続要件を定義する複数の接続パラメータを含む接続要求を受け取るためのプログラミング論理と、
    前記クライアントからの前記要求を満たす前記サービスを提供する特定の仮想マシンを識別するために前記接続パラメータを照会するためのプログラミング論理と、
    前記特定の仮想マシンと関連付けられたハイパーバイザを介して、仮想メモリ内の所定の位置から、仮想メモリ内の前記所定の位置から読み取られ、前記特定の仮想マシンの仮想マシンディスプレイと関連付けられた画像を表すグラフィカル出力を定義する、前記特定の仮想マシンのためのフレームバッファデータにアクセスするためのプログラミング論理と、
    前記複数の接続パラメータに基づき、前記画像プロセッサアルゴリズムを使用して、前記読み取られたフレームバッファデータを複数の画像データパケットへと処理するためのプログラミング命令と、
    前記クライアントに特有のものであり、前記仮想マシンディスプレイの前記画像を表す前記画像データパケットを、前記クライアントと関連付けられた表示装置上で提示するための前記クライアントへ送信するためのプログラミング論理と
    を備える画像プロセッサアルゴリズム。
  49. 前記アクセスされたフレームバッファデータを処理するための前記プログラミング論理が、
    前記識別された仮想マシンの前記フレームバッファデータを解析してコンテキストを判定するためのプログラミング論理と、
    前記解析に基づいて前記特定の仮想マシンの前記フレームバッファデータに適切なコンテキスト情報を関連付けるためのプログラミング論理と
    をさらに含む請求項48に記載の画像プロセッサアルゴリズム。
  50. 前記特定の仮想マシンの前記フレームバッファデータを周期的にスキャンするためのプログラミング論理と、
    スキャンされたフレームバッファデータを前記特定の仮想マシンのために記憶されたフレームバッファデータと比較することによって変更領域を判定するためのプログラミング論理と、
    解析および送信のために前記仮想マシンと関連付けられた時間ベースの記憶アレイに、前記変更領域と関連付けられたコンテキスト情報を記憶することを含め、前記変更領域を記憶するためのプログラミング論理と
    をさらに含む請求項49に記載の画像プロセッサアルゴリズム。
  51. 前記フレームバッファデータをスキャンするための前記プログラミング論理が、
    前記特定の仮想マシンの前記フレームバッファデータのリフレッシュの状況を識別する、前記特定の仮想マシンの前記フレームバッファデータと関連付けられたsync信号を照会するためのプログラミング論理と、
    前記sync信号の前記照会に基づいて、前記特定の仮想マシンの前記フレームバッファデータの前記スキャンを行うためのプログラミング論理と
    をさらに含み、
    前記スキャンが、前記仮想マシンにおける前記フレームバッファデータのリフレッシュレートで、または前記クライアントと関連付けられた前記接続パラメータのうちの1つまたは複数によって駆動されるレートで周期的に行われる
    請求項50に記載の画像プロセッサアルゴリズム。
  52. 前記特定の仮想マシンのための前記フレームバッファデータのリフレッシュの前に前記sync信号を設定するためのプログラミング論理と、
    前記特定の仮想マシンのための前記フレームバッファデータの前記リフレッシュが完了し次第、前記sync信号をリセットするためのプログラミング論理と
    をさらに含む請求項51に記載の画像プロセッサアルゴリズム。
JP2012541210A 2009-11-25 2010-11-24 軽量クライアントを使用してネットワーク上で仮想化コンピューティングサービスとインターフェースするための方法 Pending JP2013512512A (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US26465409P 2009-11-25 2009-11-25
US61/264,654 2009-11-25
US12/784,454 US8676949B2 (en) 2009-11-25 2010-05-20 Methods for interfacing with a virtualized computing service over a network using a lightweight client
US12/784,468 2010-05-20
US12/784,468 US8392497B2 (en) 2009-11-25 2010-05-20 Systems and algorithm for interfacing with a virtualized computing service over a network using a lightweight client
US12/784,454 2010-05-20
PCT/US2010/058119 WO2011066472A1 (en) 2009-11-25 2010-11-24 Methods for interfacing with a virtualized computing service over a network using a lightweight client

Publications (1)

Publication Number Publication Date
JP2013512512A true JP2013512512A (ja) 2013-04-11

Family

ID=44063000

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012541210A Pending JP2013512512A (ja) 2009-11-25 2010-11-24 軽量クライアントを使用してネットワーク上で仮想化コンピューティングサービスとインターフェースするための方法

Country Status (6)

Country Link
US (5) US8676949B2 (ja)
EP (1) EP2504762A4 (ja)
JP (1) JP2013512512A (ja)
KR (1) KR101773638B1 (ja)
CN (1) CN102713848B (ja)
WO (1) WO2011066472A1 (ja)

Families Citing this family (173)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9678803B2 (en) 2007-06-22 2017-06-13 Red Hat, Inc. Migration of network entities to a cloud infrastructure
US9495152B2 (en) 2007-06-22 2016-11-15 Red Hat, Inc. Automatic baselining of business application service groups comprised of virtual machines
US9354960B2 (en) 2010-12-27 2016-05-31 Red Hat, Inc. Assigning virtual machines to business application service groups based on ranking of the virtual machines
US9727440B2 (en) * 2007-06-22 2017-08-08 Red Hat, Inc. Automatic simulation of virtual machine performance
US9569330B2 (en) 2007-06-22 2017-02-14 Red Hat, Inc. Performing dependency analysis on nodes of a business application service group
US8782637B2 (en) * 2007-11-03 2014-07-15 ATM Shafiqul Khalid Mini-cloud system for enabling user subscription to cloud service in residential environment
US8968087B1 (en) * 2009-06-01 2015-03-03 Sony Computer Entertainment America Llc Video game overlay
US8549093B2 (en) 2008-09-23 2013-10-01 Strategic Technology Partners, LLC Updating a user session in a mach-derived system environment
US9092910B2 (en) 2009-06-01 2015-07-28 Sony Computer Entertainment America Llc Systems and methods for cloud processing and overlaying of content on streaming video frames of remotely processed applications
US9723319B1 (en) * 2009-06-01 2017-08-01 Sony Interactive Entertainment America Llc Differentiation for achieving buffered decoding and bufferless decoding
US8676949B2 (en) 2009-11-25 2014-03-18 Citrix Systems, Inc. Methods for interfacing with a virtualized computing service over a network using a lightweight client
US8233408B2 (en) * 2009-12-10 2012-07-31 Wei Lu Mobile cloud architecture based on open wireless architecture (OWA) platform
US8911295B2 (en) * 2010-02-12 2014-12-16 Comviva Technologies Limited Method and system for online mobile gaming
US8799362B2 (en) * 2010-03-09 2014-08-05 Avistar Communications Corporation Scalable high-performance interactive real-time media architectures for virtual desktop environments
US8712153B2 (en) * 2010-03-09 2014-04-29 Dynamic Invention Llc Subpixel-based image down-sampling
US8649595B2 (en) * 2010-03-09 2014-02-11 Dynamic Invention Llc Subpixel-based image down-sampling
JP5241763B2 (ja) * 2010-03-24 2013-07-17 株式会社日立製作所 通信システムおよび通信システムの制御方法
CN102870392B (zh) * 2010-04-30 2016-07-13 交互数字专利控股公司 网络通信中的轻量协议和代理
WO2011162743A1 (en) * 2010-06-21 2011-12-29 Hewlett-Packard Development Company, L.P. System for testing and certifying a virtual appliance on a customer computer system
JP5609308B2 (ja) * 2010-06-24 2014-10-22 株式会社リコー 画像処理システム、画像処理装置、情報処理装置、及び画像処理方法
US20110321044A1 (en) * 2010-06-29 2011-12-29 Samsung Sds Co., Ltd. Client hypervisor-based terminal device and operating method thereof
US8601129B2 (en) * 2010-06-30 2013-12-03 International Business Machines Corporation Hypervisor selection for hosting a virtual machine image
CN103038749B (zh) 2010-07-01 2017-09-15 纽戴纳公司 为了优化群集特定配置的使用而按进程类型在群集之间分割进程
US20120028712A1 (en) * 2010-07-30 2012-02-02 Britesmart Llc Distributed cloud gaming method and system where interactivity and resources are securely shared among multiple users and networks
US8918499B2 (en) * 2010-08-09 2014-12-23 International Business Machines Corporation Method and system for end-to-end quality of service in virtualized desktop systems
WO2012051422A2 (en) * 2010-10-13 2012-04-19 Zte (Usa) Inc. System and method for multimedia multi-party peering (m2p2)
US20120182993A1 (en) * 2011-01-14 2012-07-19 International Business Machines Corporation Hypervisor application of service tags in a virtual networking environment
US10142218B2 (en) 2011-01-14 2018-11-27 International Business Machines Corporation Hypervisor routing between networks in a virtual networking environment
US8909761B2 (en) * 2011-02-08 2014-12-09 BlueStripe Software, Inc. Methods and computer program products for monitoring and reporting performance of network applications executing in operating-system-level virtualization containers
US20120233549A1 (en) * 2011-03-07 2012-09-13 Avaya Inc. Virtual desktop integration based on proximity and context
WO2012128744A1 (en) * 2011-03-18 2012-09-27 Hewlett-Packard Development Company, L.P. Sharing internet capability of a mobile computing device with a client computing device using a virtual machine
US9130899B1 (en) 2011-04-27 2015-09-08 Cisco Technology, Inc. Integrated user interface for unified communications applications
US9389826B2 (en) * 2011-06-07 2016-07-12 Clearcube Technology, Inc. Zero client device with integrated network authentication capability
US9191454B2 (en) * 2011-06-27 2015-11-17 Microsoft Technology Licensing, Llc Host enabled management channel
US8990292B2 (en) * 2011-07-05 2015-03-24 Cisco Technology, Inc. In-network middlebox compositor for distributed virtualized applications
US8745102B2 (en) * 2011-07-12 2014-06-03 PLAiR Media, Inc. Distributed storage method and system
US20130019179A1 (en) * 2011-07-14 2013-01-17 Digilink Software, Inc. Mobile application enhancements
US8924507B2 (en) * 2011-09-02 2014-12-30 Microsoft Corporation Cross-frame progressive spoiling support for reduced network bandwidth usage
CN102355501B (zh) * 2011-09-28 2017-06-13 华为技术有限公司 一种数据处理方法、接入审核设备及系统
US8776043B1 (en) 2011-09-29 2014-07-08 Amazon Technologies, Inc. Service image notifications
US9626700B1 (en) 2011-09-29 2017-04-18 Amazon Technologies, Inc. Aggregation of operational data for merchandizing of network accessible services
US10147123B2 (en) 2011-09-29 2018-12-04 Amazon Technologies, Inc. Electronic marketplace for hosted service images
US9530156B2 (en) * 2011-09-29 2016-12-27 Amazon Technologies, Inc. Customizable uniform control user interface for hosted service images
US20130093776A1 (en) * 2011-10-14 2013-04-18 Microsoft Corporation Delivering a Single End User Experience to a Client from Multiple Servers
US20130111404A1 (en) * 2011-11-02 2013-05-02 Microsoft Corporation User interface for saving documents using external storage services
US20130143657A1 (en) * 2011-11-14 2013-06-06 Amazon Technologies, Inc. Input Mapping Regions
US9348552B2 (en) * 2011-11-16 2016-05-24 Cisco Technology, Inc. Network appliance for transcoding or enriching virtual desktop infrastructure desktop images
US9679279B1 (en) 2012-02-27 2017-06-13 Amazon Technologies Inc Managing transfer of hosted service licenses
US9055139B1 (en) 2012-03-12 2015-06-09 Cisco Technology, Inc. Display protocol interception in the network for services and network-based multimedia support for VDI
US10913003B2 (en) * 2012-03-13 2021-02-09 Sony Interactive Entertainment LLC Mini-games accessed through a sharing interface
US11406906B2 (en) * 2012-03-13 2022-08-09 Sony Interactive Entertainment LLC Network connected controller for direct to cloud gaming
US9345966B2 (en) 2012-03-13 2016-05-24 Sony Interactive Entertainment America Llc Sharing recorded gameplay to a social graph
EP2642395B1 (de) * 2012-03-21 2018-12-19 ServiceTrace e.K. Verfahren und Vorrichtung zum Ausführen von Workflow-Skripten
US9258371B1 (en) 2012-03-23 2016-02-09 Amazon Technologies, Inc. Managing interaction with hosted services
US9397987B1 (en) 2012-03-23 2016-07-19 Amazon Technologies, Inc. Managing interaction with hosted services
US9043588B2 (en) * 2012-05-08 2015-05-26 Alcatel Lucent Method and apparatus for accelerating connections in a cloud network
US8676984B2 (en) * 2012-05-23 2014-03-18 International Business Machines Corporation Live directory of cloud tenants to enable inter-tenant interaction via cloud
US9064216B2 (en) * 2012-06-06 2015-06-23 Juniper Networks, Inc. Identifying likely faulty components in a distributed system
CN102868910B (zh) * 2012-10-19 2015-04-08 上海大亚科技有限公司 基于云平台的视频点播系统及视频点播扩展控制的方法
US8862695B2 (en) * 2012-10-29 2014-10-14 Vmware, Inc. Performance enhancement in virtual desktop infrastructure (VDI)
JP6011247B2 (ja) * 2012-10-29 2016-10-19 ブラザー工業株式会社 画像処理システム,画像処理装置,および情報処理装置
CN108525299B (zh) * 2012-11-16 2021-09-21 索尼互动娱乐美国有限责任公司 一种用于增强远程服务的计算机应用的系统和方法
US9015714B2 (en) * 2012-11-27 2015-04-21 Citrix Systems, Inc. Diagnostic virtual machine created to monitor cluster of hypervisors based on user requesting assistance from cluster administrator
US20140149559A1 (en) * 2012-11-29 2014-05-29 Inside Secure Virtual private network (vpn) system utilizing configuration message including vpn character configuration string
FR3000339A1 (fr) * 2012-12-20 2014-06-27 France Telecom Procede de traitement de requetes d'acces a des services de virtualisation informatique, passerelle de virtualisation et navigateur web
US8954546B2 (en) * 2013-01-25 2015-02-10 Concurix Corporation Tracing with a workload distributor
IN2013CH00443A (ja) * 2013-02-01 2015-07-31 Samsung Electronics Company
US20130283281A1 (en) 2013-02-12 2013-10-24 Concurix Corporation Deploying Trace Objectives using Cost Analyses
US8997063B2 (en) 2013-02-12 2015-03-31 Concurix Corporation Periodicity optimization in an automated tracing system
US8924941B2 (en) 2013-02-12 2014-12-30 Concurix Corporation Optimization analysis using similar frequencies
US9521188B1 (en) * 2013-03-07 2016-12-13 Amazon Technologies, Inc. Scheduled execution of instances
CN104052718B (zh) * 2013-03-14 2017-06-23 鸿富锦精密工业(深圳)有限公司 数据中心及其为客户端提供虚拟服务的方法
US9665474B2 (en) 2013-03-15 2017-05-30 Microsoft Technology Licensing, Llc Relationships derived from trace data
US9553787B1 (en) 2013-04-29 2017-01-24 Amazon Technologies, Inc. Monitoring hosted service usage
CN103414763A (zh) * 2013-07-24 2013-11-27 华为技术有限公司 控制管理设备的方法和相关设备
JP6048336B2 (ja) * 2013-07-25 2016-12-21 富士ゼロックス株式会社 情報処理システム、情報処理装置及びプログラム
JP6064822B2 (ja) * 2013-07-25 2017-01-25 富士ゼロックス株式会社 情報処理システム、情報処理装置及びプログラム
CA2920050C (en) * 2013-08-02 2019-04-02 Huawei Technologies Co., Ltd. Image display method and apparatus
US9292415B2 (en) 2013-09-04 2016-03-22 Microsoft Technology Licensing, Llc Module specific tracing in a shared module environment
US11663025B2 (en) * 2013-09-23 2023-05-30 Bankvault Pty Ltd Maintenance of and caching of suspended virtual computers in a pool of suspended virtual computers
CN104516703B (zh) * 2013-09-30 2018-02-16 中国电信股份有限公司 在安卓终端上实现虚拟桌面屏幕分辨率自动适配的方法和系统
US9465834B2 (en) * 2013-10-11 2016-10-11 Vmware, Inc. Methods and apparatus to manage virtual machines
US9378391B2 (en) * 2013-10-11 2016-06-28 Centrify Corporation Method and apparatus for creating switchable desktops with separate authorizations
US9332046B2 (en) 2013-10-17 2016-05-03 Cisco Technology, Inc. Rate-adapted delivery of virtual desktop image elements by an edge server in a computer network environment
EP3061072A4 (en) * 2013-10-22 2017-07-19 Citrix Systems Inc. Method and system for displaying graphics for a local virtual machine
US10127062B2 (en) 2013-10-22 2018-11-13 Citrix Systems, Inc. Displaying graphics for local virtual machine by allocating textual buffer
EP3066836B1 (en) * 2013-11-05 2021-09-01 UTC Fire & Security Americas Corporation, Inc. Drawing operation replay in memory
US9805479B2 (en) * 2013-11-11 2017-10-31 Amazon Technologies, Inc. Session idle optimization for streaming server
US9634942B2 (en) 2013-11-11 2017-04-25 Amazon Technologies, Inc. Adaptive scene complexity based on service quality
US9641592B2 (en) 2013-11-11 2017-05-02 Amazon Technologies, Inc. Location of actor resources
US9413830B2 (en) 2013-11-11 2016-08-09 Amazon Technologies, Inc. Application streaming service
US9582904B2 (en) 2013-11-11 2017-02-28 Amazon Technologies, Inc. Image composition based on remote object data
US9604139B2 (en) 2013-11-11 2017-03-28 Amazon Technologies, Inc. Service for generating graphics object data
CN105765528B (zh) 2013-11-13 2019-09-24 微软技术许可有限责任公司 具有可配置原点定义的应用执行路径跟踪的方法、系统和介质
US9532103B2 (en) * 2013-12-16 2016-12-27 Vmware, Inc. Multi-user support for set top boxes and game consoles
CN103677964B (zh) * 2013-12-30 2017-02-15 杭州冰特科技有限公司 一种虚拟机控制系统
JP5878938B2 (ja) * 2014-01-29 2016-03-08 株式会社ソニー・コンピュータエンタテインメント 配信システム、配信方法、配信プログラム
WO2015118874A1 (ja) * 2014-02-06 2015-08-13 日本電気株式会社 ネットワークシステム、ネットワーク制御方法および制御装置
EP3103012B1 (en) * 2014-02-07 2022-04-06 Telefonaktiebolaget LM Ericsson (publ) A technique for operating a system controller of a virtualized application cluster
US20170131958A1 (en) * 2014-03-21 2017-05-11 Nokia Technologies Oy Method and apparatus for controlling smart objects with a collage user interface using normalized user interface descriptors
US9432286B2 (en) * 2014-03-27 2016-08-30 Telefonaktiebolaget L M Ericsson (Publ) Method and system for hitless upgrade of chassis in virtualized environment
KR102206351B1 (ko) * 2014-04-28 2021-01-22 삼성전자 주식회사 전자 장치 및 이의 작업 연계 방법
CN105224379B (zh) * 2014-05-26 2018-05-18 北京云巢动脉科技有限公司 一种基于虚拟机的多对一接入的图像处理方法
US20150355946A1 (en) * 2014-06-10 2015-12-10 Dan-Chyi Kang “Systems of System” and method for Virtualization and Cloud Computing System
KR101607755B1 (ko) 2014-06-17 2016-03-30 주식회사 씨디에스 Usb 메모리 접근에 따른 클라우딩 시스템
KR102308782B1 (ko) 2014-08-19 2021-10-05 삼성전자주식회사 메모리 컨트롤러, 스토리지 디바이스, 서버 가상화 시스템 및 서버 가상화 시스템에서의 스토리지 디바이스 인식 방법
US10628186B2 (en) 2014-09-08 2020-04-21 Wirepath Home Systems, Llc Method for electronic device virtualization and management
EP3015950A1 (en) 2014-10-28 2016-05-04 Targus Group International, Inc. Power and data adapter, and related systems and methods
US9900420B2 (en) 2014-12-15 2018-02-20 Targus International Llc Power and data adapter
US20160198021A1 (en) * 2015-01-02 2016-07-07 Citrix Systems, Inc. Dynamic protocol switching
WO2016121882A1 (ja) 2015-01-29 2016-08-04 日本電気株式会社 データファイル登録管理システム、方法、管理装置とプログラム
US9900182B2 (en) 2015-02-11 2018-02-20 Dell Products L.P. Client side redirection with pluggable authentication and authorization
WO2016183553A1 (en) 2015-05-14 2016-11-17 Walleye Software, LLC Query dispatch and execution architecture
US9558529B2 (en) 2015-05-22 2017-01-31 Dell Products, L.P. Rendering video data in an information handling system using a management controller
CN104915412B (zh) * 2015-06-05 2018-07-03 北京京东尚科信息技术有限公司 一种动态管理数据库连接的方法及系统
KR20160147449A (ko) * 2015-06-15 2016-12-23 한국전자통신연구원 적응형 가상 데스크탑 운영체제 서비스 제공장치 및 그 방법
KR102328193B1 (ko) 2015-06-24 2021-11-18 한국전자통신연구원 가상 데스크탑 서비스를 위한 장치 및 방법
US9996377B2 (en) 2015-06-30 2018-06-12 International Business Machines Corporation Virtual machine migration via a mobile device
CN106326002B (zh) * 2015-07-10 2020-10-20 阿里巴巴集团控股有限公司 资源调度方法、装置及设备
US9439197B1 (en) 2015-08-10 2016-09-06 Planetary Network Technologies, Inc. Method and apparatus for directed adaptive control of dynamic channel selection in wireless networks
US9832791B2 (en) 2015-08-04 2017-11-28 Network Performance Research Group Llc Method and apparatus for use of simultaneous multiple channels in the dynamic frequency selection band in wireless networks
US10104665B2 (en) 2015-08-10 2018-10-16 Network Performance Research Group Llc Method and apparatus for providing dynamic frequency selection spectrum access in peer-to-peer wireless networks
US9807625B2 (en) * 2015-08-10 2017-10-31 Network Performance Research Group Llc Method and apparatus for using time shifted analysis based on gathering non-encrypted information from packets
KR20170047747A (ko) * 2015-10-23 2017-05-08 한국전자통신연구원 화면 압축 서비스 방법 및 그 방법을 수행하는 가상 네트워크 장치
JPWO2017073050A1 (ja) * 2015-10-28 2018-08-16 日本電気株式会社 サーバ端末装置、クライアント端末装置、シンクライアントシステム、制御方法およびプログラム記録媒体
US10368247B2 (en) 2015-11-25 2019-07-30 Network Performance Research Group Llc Cloud DFS super master detector location systems and methods
CN106817386B (zh) * 2015-11-27 2020-03-10 华为技术有限公司 一种多会话下远程服务的数据处理方法和系统
US10324745B2 (en) * 2016-02-01 2019-06-18 Airwatch, Llc Thin client with managed profile-specific remote virtual machines
US10339205B2 (en) * 2016-02-22 2019-07-02 International Business Machines Corporation Efficient handling of bi-directional data
KR101742258B1 (ko) * 2016-02-29 2017-05-31 경희대학교 산학협력단 웹 기반 가상 데스크탑 프로토콜을 이용한 컨텐츠 제공 방법 및 장치
CN105786519B (zh) * 2016-03-17 2021-04-09 瑞芯微电子股份有限公司 安卓设备程序管理方法和安卓设备
EP3443500B1 (en) * 2016-05-16 2022-04-27 Nokia Technologies Oy Security in virtualized networks
US10152386B1 (en) 2016-07-29 2018-12-11 Nutanix, Inc. Efficient disaster rollback across heterogeneous storage systems
US11423144B2 (en) 2016-08-16 2022-08-23 British Telecommunications Public Limited Company Mitigating security attacks in virtualized computing environments
WO2018033350A1 (en) 2016-08-16 2018-02-22 British Telecommunications Public Limited Company Reconfigured virtual machine to mitigate attack
GB2553597A (en) * 2016-09-07 2018-03-14 Cisco Tech Inc Multimedia processing in IP networks
US10705566B2 (en) 2016-09-09 2020-07-07 Targus International Llc Systems, methods and devices for native and virtualized video in a hybrid docking station
US10785311B2 (en) 2016-11-08 2020-09-22 Pearson Education, Inc. Secure cloud-managed content delivery computer ecosystem
US10623460B2 (en) * 2016-11-18 2020-04-14 Google Llc Streaming application environment with remote device input synchronization
US10783046B2 (en) 2016-11-22 2020-09-22 Nutanix, Inc. Executing resource management operations in distributed computing systems
US10200249B1 (en) * 2016-12-09 2019-02-05 Amazon Technologies, Inc. Network traffic management for virtualized graphics devices
EP3355188B1 (en) 2017-01-31 2021-08-25 OpenSynergy GmbH Instrument display on a car dashboard by checking frames of a gui by a realtime os
US10360059B2 (en) * 2017-02-12 2019-07-23 Guardicore Ltd. Correlation of network connections and processes in a virtualized computing environment
US20180239628A1 (en) * 2017-02-22 2018-08-23 Nutanix, Inc. Hypervisor agnostic customization of virtual machines
US10460415B2 (en) 2017-04-10 2019-10-29 Intel Corporation Contextual configuration adjuster for graphics
US11216563B1 (en) * 2017-05-19 2022-01-04 Amazon Technologies, Inc. Security assessment of virtual computing environment using logical volume image
US10663498B2 (en) 2017-07-20 2020-05-26 Targus International Llc Systems, methods and devices for remote power management and discovery
US11231448B2 (en) 2017-07-20 2022-01-25 Targus International Llc Systems, methods and devices for remote power management and discovery
US10866943B1 (en) 2017-08-24 2020-12-15 Deephaven Data Labs Llc Keyed row selection
US20190082051A1 (en) * 2017-09-13 2019-03-14 Teleperformance Se Dynamic computing environment allocation for contact center interaction
US11477304B2 (en) * 2018-01-30 2022-10-18 Hewlett-Packard Development Company, L.P. Conversion to an internet protocol stream
CN108494871B (zh) * 2018-04-08 2022-02-22 上海微穹信息科技有限公司 云端虚拟机及其图像识别方法、系统和虚拟机瘦客户端
CN110389812B (zh) * 2018-04-20 2023-05-12 伊姆西Ip控股有限责任公司 用于管理虚拟机的方法、设备和计算机可读存储介质
US10462216B1 (en) * 2018-05-04 2019-10-29 Citrix Systems, Inc. WebRTC API redirection with interception techniques
US10874941B2 (en) 2018-06-01 2020-12-29 At&T Intellectual Property I, L.P. Virtualized gaming emulation as a network service
US10666565B2 (en) * 2018-06-08 2020-05-26 Citrix Systems, Inc. Method to measure relative QOS gains and to reduce the variance in QOS for similar connections for during bandwidth contention
CN109062671A (zh) * 2018-08-15 2018-12-21 无锡江南计算技术研究所 一种轻量级的高性能互连网络软件虚拟化方法
US10643569B1 (en) 2018-10-16 2020-05-05 Red Hat Israel, Ltd. Adjusting virtual machine GPU refresh rate to remote desktop stream frame rate
WO2020101223A1 (ko) * 2018-11-15 2020-05-22 전자부품연구원 서버리스 클라우드 컴퓨팅에서 에이피아이 제공 방법
CN113196205A (zh) 2018-12-19 2021-07-30 泰格斯国际有限责任公司 用于便携式电子设备的显示和坞接装置
CN113424567B (zh) * 2018-12-21 2024-03-12 株式会社Ntt都科摩 终端、无线通信方法以及系统
US11017334B2 (en) 2019-01-04 2021-05-25 Targus International Llc Workspace management system utilizing smart docking station for monitoring power consumption, occupancy, and usage displayed via heat maps
US11360534B2 (en) 2019-01-04 2022-06-14 Targus Internatonal Llc Smart workspace management system
US10653966B1 (en) 2019-02-07 2020-05-19 Skill, Inc Controlling peer-tournament client operation with segmentation of clients
US11888961B2 (en) * 2019-02-14 2024-01-30 Telefonaktiebolaget Lm Ericsson (Publ) Methods and apparatus for transmitting capability information
US11526587B2 (en) * 2019-02-26 2022-12-13 One Identity LLC Privileged access management for applications
CN110062161B (zh) * 2019-04-10 2021-06-25 Oppo广东移动通信有限公司 图像处理器、图像处理方法、拍摄装置和电子设备
KR102106155B1 (ko) * 2019-05-14 2020-04-29 아토리서치(주) 가상머신 토폴로지 상태 모니터링 방법 및 장치
AU2020333961A1 (en) 2019-08-22 2022-02-24 Targus International Llc Systems and methods for participant-controlled video conferencing
AU2020346791A1 (en) 2019-09-09 2022-03-24 Targus International Llc Systems and methods for docking stations removably attachable to display apparatuses and docking stand assemblies
CN113419801B (zh) * 2021-06-16 2022-12-27 中移(杭州)信息技术有限公司 表单渲染方法、终端、装置和计算机可读存储介质
US11665541B2 (en) * 2021-06-23 2023-05-30 EMC IP Holding Company LLC 5G zero client monitor
CN117170877B (zh) * 2023-10-26 2024-02-23 西安羚控电子科技有限公司 无人机虚拟化任务管理装置与方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060089992A1 (en) * 2004-10-26 2006-04-27 Blaho Bruce E Remote computing systems and methods for supporting multiple sessions
US20070198656A1 (en) * 2006-01-24 2007-08-23 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine executing in a terminal services session and hosting a requested computing environment
JP2009181419A (ja) * 2008-01-31 2009-08-13 Toshiba Corp 通信装置、方法及びプログラム
JP2009187379A (ja) * 2008-02-07 2009-08-20 Toshiba Corp 仮想計算機サーバ装置、更新画像検出方法およびプログラム

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH087715B2 (ja) * 1990-11-15 1996-01-29 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理装置及びアクセス制御方法
US6343313B1 (en) * 1996-03-26 2002-01-29 Pixion, Inc. Computer conferencing system with real-time multipoint, multi-speed, multi-stream scalability
CN1402852A (zh) * 1999-10-22 2003-03-12 动感天空公司 面向目标的视频系统
US7050835B2 (en) 2001-12-12 2006-05-23 Universal Display Corporation Intelligent multi-media display communication system
US20040031052A1 (en) * 2002-08-12 2004-02-12 Liberate Technologies Information platform
US7477205B1 (en) * 2002-11-05 2009-01-13 Nvidia Corporation Method and apparatus for displaying data from multiple frame buffers on one or more display devices
US7644407B2 (en) * 2004-03-05 2010-01-05 Intel Corporation Method, apparatus and system for seamlessly sharing a graphics device amongst virtual machines
US7747086B1 (en) * 2005-07-28 2010-06-29 Teradici Corporation Methods and apparatus for encoding a shared drawing memory
US8274518B2 (en) * 2004-12-30 2012-09-25 Microsoft Corporation Systems and methods for virtualizing graphics subsystems
US8200796B1 (en) * 2005-05-05 2012-06-12 Digital Display Innovations, Llc Graphics display system for multiple remote terminals
US7200576B2 (en) * 2005-06-20 2007-04-03 Microsoft Corporation Secure online transactions using a captcha image as a watermark
WO2008073618A2 (en) * 2006-11-06 2008-06-19 Devicevm, Inc. Instant on platform
US20080209223A1 (en) 2007-02-27 2008-08-28 Ebay Inc. Transactional visual challenge image for user verification
US7856440B2 (en) * 2008-02-29 2010-12-21 International Business Machines Corporation Method and system for separating content identifiers from content reconstitution information in virtual machine images
WO2010021631A1 (en) * 2008-08-22 2010-02-25 Hewlett-Packard Development Company, L.P. Remote graphics console and virtual media access to virtual machine guests
US8073990B1 (en) * 2008-09-23 2011-12-06 Teradici Corporation System and method for transferring updates from virtual frame buffers
US8224885B1 (en) * 2009-01-26 2012-07-17 Teradici Corporation Method and system for remote computing session management
US20100268762A1 (en) * 2009-04-15 2010-10-21 Wyse Technology Inc. System and method for scrolling a remote application
US8441494B2 (en) * 2009-04-23 2013-05-14 Vmware, Inc. Method and system for copying a framebuffer for transmission to a remote display
US8392596B2 (en) * 2009-05-26 2013-03-05 Red Hat Israel, Ltd. Methods for detecting and handling video and video-like content in remote display system
US8473958B2 (en) * 2009-05-31 2013-06-25 Red Hat Israel, Ltd. Adjusting client display devices based on settings included in a notification from remote virtual machine host prior to connection establishment
US8676949B2 (en) * 2009-11-25 2014-03-18 Citrix Systems, Inc. Methods for interfacing with a virtualized computing service over a network using a lightweight client

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060089992A1 (en) * 2004-10-26 2006-04-27 Blaho Bruce E Remote computing systems and methods for supporting multiple sessions
US20070198656A1 (en) * 2006-01-24 2007-08-23 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine executing in a terminal services session and hosting a requested computing environment
JP2009181419A (ja) * 2008-01-31 2009-08-13 Toshiba Corp 通信装置、方法及びプログラム
JP2009187379A (ja) * 2008-02-07 2009-08-20 Toshiba Corp 仮想計算機サーバ装置、更新画像検出方法およびプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6014049826; Tristan Richardson: 'Virtual Network Computing' IEEE Internet Computing Volume 2, Number 1, 199802, 33-38 *

Also Published As

Publication number Publication date
US8918455B2 (en) 2014-12-23
US8918456B2 (en) 2014-12-23
US8392497B2 (en) 2013-03-05
US20130346479A1 (en) 2013-12-26
CN102713848A (zh) 2012-10-03
CN102713848B (zh) 2016-08-24
US20130268580A1 (en) 2013-10-10
KR20120106778A (ko) 2012-09-26
US20110126198A1 (en) 2011-05-26
US8676949B2 (en) 2014-03-18
US20110126110A1 (en) 2011-05-26
US9183025B2 (en) 2015-11-10
US20150106814A1 (en) 2015-04-16
WO2011066472A1 (en) 2011-06-03
KR101773638B1 (ko) 2017-08-31
EP2504762A4 (en) 2014-06-04
EP2504762A1 (en) 2012-10-03

Similar Documents

Publication Publication Date Title
US9183025B2 (en) Systems and algorithm for interfacing with a virtualized computing service over a network using a lightweight client
EP2279602B1 (en) Systems and methods for remoting multimedia plugin calls
US9009219B2 (en) Native viewer use for service results from a remote desktop
EP2719148B1 (en) Web-browser based desktop and application remoting solution
US20170308401A1 (en) Stateless instance backed mobile devices
CN102413150B (zh) 服务器、虚拟桌面控制方法以及虚拟桌面控制系统
US20200304562A1 (en) Instance backed mobile devices
EP2649533B1 (en) Methods and systems for facilitating a remote desktop session utilizing long polling
US9591081B2 (en) Virtual desktop access using wireless devices
KR20150013860A (ko) 클라이언트 없는 클라우드 컴퓨팅
EP2815559B1 (en) Client bandwidth emulation in hosted services
US10623377B1 (en) On-premises data access and firewall tunneling
US20170154018A1 (en) System and method for display stream compression for remote desktop protocols
US20180227347A1 (en) Virtualizing audio and video devices using synchronous a/v streaming
CN111712799A (zh) 供在非边缘装置和边缘装置上执行的模型的自动分布
WO2015196586A1 (zh) 虚拟桌面的配置、获取方法及装置
US11196817B1 (en) Intelligently managing resource utilization in desktop virtualization environments
KR20170088232A (ko) 웹기반 브이디아이의 랜더링 성능 향상을 제공하는 그래픽 처리시스템
WO2020060618A1 (en) Processing files via edge computing device
KR20130004593A (ko) 휴대용 자급식 노드 컴퓨터를 위한 방법 및 장치
US10045146B2 (en) Wireless display that accesses remote resources for display data

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130930

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20140204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141125

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150512