JP7023384B2 - ユーザおよびシステムヒントを用いて最適化される階層表示リモーティングを与えるコンピュータシステムおよび関連する方法 - Google Patents

ユーザおよびシステムヒントを用いて最適化される階層表示リモーティングを与えるコンピュータシステムおよび関連する方法 Download PDF

Info

Publication number
JP7023384B2
JP7023384B2 JP2020561665A JP2020561665A JP7023384B2 JP 7023384 B2 JP7023384 B2 JP 7023384B2 JP 2020561665 A JP2020561665 A JP 2020561665A JP 2020561665 A JP2020561665 A JP 2020561665A JP 7023384 B2 JP7023384 B2 JP 7023384B2
Authority
JP
Japan
Prior art keywords
bandwidth
fec
graphical content
virtual
ratio
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.)
Active
Application number
JP2020561665A
Other languages
English (en)
Other versions
JP2021517325A (ja
Inventor
モンチロフ ゲオルギー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
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 Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of JP2021517325A publication Critical patent/JP2021517325A/ja
Application granted granted Critical
Publication of JP7023384B2 publication Critical patent/JP7023384B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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
    • 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
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/353Adaptation to the channel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/356Unequal error protection [UEP]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/373Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/27Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/624Altering the ordering of packets in an individual queue
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • 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
    • 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/08Protocols specially adapted for terminal emulation, e.g. Telnet
    • 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/131Protocols for games, networked simulations or virtual reality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/545Gui
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Probability & Statistics with Applications (AREA)
  • Multimedia (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Mobile Radio Communication Systems (AREA)

Description

本発明は、ユーザおよびシステムヒントを用いて最適化される階層表示リモーティングを与えるコンピュータシステムおよび関連する方法に関する。
従来、パーソナルコンピュータは、各々が継続的に所有者または管理者によって個々に管理されるオペレーティングシステムと、アプリケーションと、ユーザ設定との組合せを含む。しかしながら、多くの団体は、現在、それらのユーザの様々な必要性に対処するためによりフレキシブルなオプションを与えるためにアプリケーションおよび/またはデスクトップの仮想化を使用している。デスクトップの仮想化では、ユーザのコンピューティング環境(たとえば、オペレーティングシステム、アプリケーション、および/またはユーザ設定)は、ユーザの物理コンピューティングデバイス(たとえば、スマートフォン、ラップトップ、デスクトップコンピュータ)から分離され得る。クライアントサーバ技術を使用して、「仮想化されたデスクトップ」は、クライアントコンピューティングデバイスのローカルストレージ中にではなくリモートサーバ中に記憶され、それによって管理され得る。
いくつかの異なるタイプのデスクトップ仮想化システムがある。一例として、仮想デスクトップインフラストラクチャ(VDI)は、サーバ上に常駐する仮想マシン内でユーザデスクトップを動作する処理を指す。VDIおよび他のサーバベースのデスクトップ仮想化システムは、集中型の管理およびセキュリティを可能にしながら各ユーザに個人用デスクトップを与え得る。そのようなシステム中のサーバは、仮想デスクトップイメージおよびシステム構成情報ならびに仮想デスクトップを与え、ユーザがそれらに相互接続することを可能にするソフトウェア構成要素のためのストレージを含み得る。たとえば、VDIサーバは、複数の仮想マシンを作成し、維持するための1つまたは複数のハイパーバイザ(仮想マシンマネージャ)と、ハイパーバイザを管理するためのソフトウェアと、接続ブローカーと、仮想デスクトップをプロビジョニングし、管理するためのソフトウェアとを含み得る。いくつかの実施形態では、VDIサーバは、共有サーバベースのホストアプリケーションならびにウェブ/サービスとしてのソフトウェア(SaaS)アプリケーションへのアクセスを与え得る。
デスクトップ仮想化システムは、単一の仮想化サーバまたはサーバグリッドとして相互接続されたサーバの組合せを使用して実装され得る。たとえば、クラウドコンピューティング環境またはクラウドシステムは、クラウドシステムに管理および顧客ポータルを与えるための追加のコンピューティングデバイスとともに、コンピューティングリソース(たとえば、デスクトップ仮想化サーバ)のプールと、記憶ディスクと、ネットワーキングハードウェアと、仮想デスクトップをプロビジョニングし、および/または共有アプリケーションへのアクセスを与えるために使用され得る他の物理リソースとを含み得る。いくつかの実装形態では、サービスとしてのデスクトップ(DaaS)セッションは、異なるテナントまたは企業のためにクラウドコンピューティング環境から動作され得る。
コンピューティングデバイスは、メモリと、フレームバッファを介してクライアントデバイスにリモートで表示されるべき仮想コンピューティングセッションをホストすることであって、クライアントデバイスは、グラフィカルユーザインターフェース(GUI)を介して仮想コンピューティングセッションをレンダリングするように構成される、ホストすることを行うようにメモリと協働するプロセッサとを含み得る。仮想化サーバは、仮想セッション入力に基づいて、およびフレームバッファを分析することなしに仮想コンピューティングセッション内の対話型グラフィックスの領域を検出することと、フレームバッファ内の他のコンテンツよりも高い優先度を対話型グラフィックスの領域に割り当てることと、割り当てられた優先度に基づいてGUI中でレンダリングするためにクライアントデバイスにフレームバッファのコンテンツを送ることとをさらに行い得る。
例示的な実装形態では、コンピューティングデバイスは、仮想セッション入力をキャプチャするように構成され得る。例として、仮想セッション入力は、ウィンドウパターンイベント、スクロールパターンイベント、およびテキストパターンイベントのうちの1つまたは複数を備え得る。一例によれば、プロセッサは、フレームバッファの対応するコンテンツのレンダリングの前にレンダリングするためにクライアントデバイスにテキストパターン入力データを非同期的に送るようにさらに構成され得る。より詳細にはテキストパターン入力データは、テキストデータと関連するテキストメタデータとを備え得、テキストメタデータは、たとえば、フォントタイプと、フォントサイズと、前景色と、背景色と、イタリックと、ボールドと、下線と、行間とのうちの少なくとも1つを備え得る。さらに別の例示的な実装形態では、テキストパターン入力データは、スクロールコンテナ内のテキストパターンに対応し得る。
さらに、プロセッサは、フレームバッファ内の他のコンテンツとは異なるレベルの前方誤り訂正(FEC)をもつ関心領域に対応するフレームバッファのコンテンツを送るように構成され得る。例示的な実施形態では、プロセッサは、第1のチャネルを介してフレームバッファからクライアントコンピューティングデバイスに対話型グラフィックスの領域に対応するグラフィックスデータを送り、第2のチャネルを介してフレームバッファからクライアントコンピューティングデバイスに残りのグラフィックデータを送るように構成され得る。さらに、プロセッサはまた、たとえば、フレームバッファ内の他のコンテンツとは異なる仮想チャネルを介して対話型グラフィックスの領域に対応するグラフィックスデータを送るように構成され得る。
関連する方法は、フレームバッファを介してクライアントデバイスにリモートで表示されるべき仮想コンピューティングセッションをコンピューティングデバイスにおいてホストするステップであって、クライアントコンピューティングデバイスは、GUIを介して仮想コンピューティングセッションをレンダリングするように構成される、ステップを含み得る。本方法は、仮想セッション入力に基づいて、およびフレームバッファを分析することなしにコンピューティングデバイスにおいて仮想コンピューティングセッション内の対話型グラフィックスの領域を検出するステップと、コンピューティングデバイスにおいてフレームバッファ内の他のコンテンツよりも高い優先度を対話型グラフィックスの領域に割り当てるステップと、割り当てられた優先度に基づいてGUI中でレンダリングするためにコンピューティングデバイスからクライアントデバイスにフレームバッファのコンテンツを送るステップとをさらに含み得る。
関連するコンピューティングシステムは、仮想コンピューティングセッションをホストすることとフレームバッファを介して仮想コンピューティングセッションをリモートで表示することとを行うように構成されたサーバと、GUIを介してサーバから仮想コンピューティングセッションにリモートでアクセスするように構成されたクライアントデバイスとを含み得る。サーバは、仮想セッション入力に基づいて、およびフレームバッファを分析することなしに仮想コンピューティングセッション内の対話型グラフィックスの領域を検出することと、フレームバッファ内の他のコンテンツよりも高い優先度を対話型グラフィックスの領域に割り当てることと、割り当てられた優先度に基づいてGUI中でレンダリングするためにクライアントデバイスにフレームバッファのコンテンツを送ることとを行うようにさらに構成され得る。
本開示の様々な態様が実装され得るコンピューティングデバイスのネットワーク環境のブロック図である。 図1に示したクライアントマシンまたはリモートマシンの一実施形態を実施するために有用なコンピューティングデバイスのブロック図である。 本開示の様々な態様が実装され得るクラウドコンピューティング環境の概略ブロック図である。 地理的ロケーションに基づく異なるクラウドサービスポイントオブプレゼンス(POP)のためのラウンドトリップタイム(RTT)を示す図である。 拡張クライアントコンピューティングデバイス表示リモーティング機能をもつ仮想コンピューティングセッションを与えるために様々な実施形態が実装され得る例示的なコンピューティングシステムの概略ブロック図である。 例示的な実施形態による、対話型グラフィックスの優先度付けを通して拡張表示リモーティングを与えるコンピューティングシステムの概略ブロック図である。 例示的な実施形態による、対話型グラフィックスの優先度付けを用いて実行され得るさらなる態様を示す図6のコンピューティングシステムの概略ブロック図である。 図6のシステムに関連する方法態様を示す流れ図である。 例示的な実施形態による、前方誤り訂正(FEC)を通して拡張表示リモーティングを与えるコンピューティングシステムの概略ブロック図である。 例示的な実施形態による、FECを用いて実行され得るさらなる態様を示す図9のコンピューティングシステムの概略ブロック図である。 図9のシステムに関連する方法態様を示す流れ図である。 例示的な実施形態による、ユーザ入力の優先度付けおよび送信を通して拡張表示リモーティングを与えるコンピューティングシステムの概略ブロック図である。 例示的な実施形態による、ユーザ入力の優先度付けおよび送信を用いて実行され得るさらなる態様を示す図12のコンピューティングシステムの概略ブロック図である。 図12のシステムに関連する方法態様を示す流れ図である。
概して、本明細書で開示する実施形態は、仮想コンピューティングセッションへのリモートアクセスを与えるコンピューティングシステムに関する。より詳細には、より多くの作業負荷がクラウドに移動され、データセンターが大陸にわたって統合されるので、作業負荷とクライアントエンドポイントとの間のネットワーク状態がより難しくなり、はるかに高いレイテンシおよびパケットロスで特徴づけられ、クライアントデバイスにおいて仮想コンピューティングセッションをリモートで表示することを困難にする。さらに、高解像度、たとえば、4K、およびマルチモニタ表示は、グラフィックス負荷をさらに高くする。逆に、モバイルデバイスを使用する間に、解像度がより低い間に、Citrix Receiver/Workspaceアプリとの天然様のアプリケーション応答性の期待がある。
リモートで表示される仮想コンピューティングセッションに関する現在のユーザエクスペリエンスは、いくつかの例では、相応して「遅く」なり得る。たとえば、そのような事例は、タイピング、マウスまたはタッチウィンドウのドラッグ、スクロール、アプリの切り替えなどの通常のオフィス作業負荷、複雑な3Dグラフィックスモデルと対話する3D Proの使用事例、XenAppホストアプリを用いたバーチャルリアリティ(VR)の使用事例を含み得る。
本明細書に記載の実施形態は、有利には、いくつかの実装形態ではクラウドコンピューティング環境においてホストされ得る、仮想化サーバによってホストされる仮想セッションからのグラフィックスの拡張配信およびレンダリングを与える。これは、たとえば、帯域幅および/またはシステム負荷への低減されたまたは無視できる影響で、ユーザ入力が仮想コンピューティングセッションに配信され得、および/またはグラフィックスの更新がクライアントコンピューティングデバイスによってグラフィカルユーザインターフェース(GUI)中にレンダリングされ得る改善された品質および/または速度を生じる。
本説明は、例示的な実施形態が示される添付の図面を参照して行われる。しかしながら、多くの異なる実施形態が使用され得、したがって、説明は、本明細書に記載の特定の実施形態に限定されるものと解釈すべきではない。同様の番号は、全体にわたって同様の要素を指す。
以下の開示を読めば当業者なら諒解するように、本明細書で説明される様々な態様は、デバイス、方法またはコンピュータプログラム製品(たとえば、言及される動作またはステップを実行するためのコンピュータ実行可能命令を有する非一時的コンピュータ可読媒体)として具現化され得る。相応して、それらの態様は、完全なハードウェア実施形態、完全なソフトウェア実施形態、またはソフトウェアおよびハードウェア態様を組み合わせた実施形態の形態を取り得る。
さらに、そのような態様は、記憶媒体中にまたはそれの上に組み込まれたコンピュータ可読プログラムコードまたは命令を有する1つまたは複数のコンピュータ可読記憶媒体によって記憶されたコンピュータプログラム製品の形態を取り得る。ハードディスク、CD-ROM、光ストレージデバイス、磁気ストレージデバイス、および/またはそれらの任意の組合せを含む任意の好適なコンピュータ可読記憶媒体が利用され得る。
最初に図1を参照すると、本開示の様々な態様が実装され得る非限定的なネットワーク環境101は、コンピューティング環境101内に設置される1つまたは複数のクライアントマシン102A~102Nと、1つまたは複数のリモートマシン106A~106Nと、1つまたは複数のネットワーク104、104’と、1つまたは複数の機器108とを含む。クライアントマシン102A~102Nは、ネットワーク104、104’を介してリモートマシン106A~106Nと通信する。
いくつかの実施形態では、クライアントマシン102A~102Nは、中間機器108を介してリモートマシン106A~106Nと通信する。図示された機器108は、ネットワーク104とネットワーク104’との間に配置され、ネットワークインターフェースまたはゲートウェイと呼ばれることもある。いくつかの実施形態では、機器108は、データセンター、クラウド中に展開されるか、もしくはクライアントデバイスの範囲にわたってサービスとしてのソフトウェア(SaaS)として配信されるビジネスアプリケーションおよび他のデータへのアクセスをクライアントに与えるためにアプリケーション配信コントローラ(ADC)として動作し、ならびに/または負荷分散などの他の機能を与え得る。いくつかの実施形態では、複数の機器108が使用され得、機器108は、ネットワーク104および/または104’の一部として展開され得る。
クライアントマシン102A~102Nは、一般に、クライアントマシン102、ローカルマシン102、クライアント102、クライアントノード102、クライアントコンピュータ102、クライアントデバイス102、コンピューティングデバイス102、エンドポイント102、またはエンドポイントノード102と呼ばれることがある。リモートマシン106A~106Nは、一般に、サーバ106またはサーバファーム106と呼ばれることがある。いくつかの実施形態では、クライアントデバイス102は、サーバ106によって与えられたリソースへのアクセスを求めるクライアントノードと、他のクライアントデバイス102A~102Nのためのホストされたリソースへのアクセスを与えるサーバ106との両方として機能する能力を有し得る。ネットワーク104、104’は、一般に、ネットワーク104と呼ばれることがある。ネットワーク104は、ワイヤードおよびワイヤレスネットワークの任意の組合せで構成され得る。
サーバ106は、たとえば、ファイルサーバ、アプリケーションサーバ、ウェブサーバ、プロキシサーバ、機器、ネットワーク機器、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバ、仮想化サーバ、展開サーバ、Secure Sockets Layerバーチャルプライベートネットワーク(SSL VPN)サーバ、ファイアウォール、ウェブサーバ、アクティブディレクトリを実行するサーバ、クラウドサーバ、またはファイアウォール機能、アプリケーション機能、もしくは負荷分散機能を与えるアプリケーション加速プログラムを実行するサーバなどの任意のサーバタイプであり得る。
サーバ106は、ソフトウェア、プログラム、実行可能命令、仮想マシン、ハイパーバイザ、ウェブブラウザ、ウェブベースのクライアント、クライアントサーバアプリケーション、シンクライアントコンピューティングクライアント、ActiveXコントロール、Javaアプレット、ソフトIP電話のようなボイスオーバーインターネットプロトコル(VoIP)通信に関係するソフトウェア、ストリーミングビデオおよび/もしくはオーディオのためのアプリケーション、リアルタイムデータ通信を容易にするためのアプリケーション、HTTPクライアント、FTPクライアント、Oscarクライアント、Telnetクライアント、または実行可能命令の任意の他のセットのうちのいずれか1つであり得るアプリケーションを実行するか、動作するか、そうでなければ与え得る。
いくつかの実施形態では、サーバ106は、サーバ106上で実行されるアプリケーションによって生成された表示出力をキャプチャし、クライアントデバイス102にアプリケーションの表示出力を送信するためにシンクライアントまたはリモートディスプレイプロトコルを使用するリモート提示サービスプログラムまたは他のプログラムを実行し得る。
また他の実施形態では、サーバ106は、クライアントデバイス102のユーザに、コンピューティング環境へのアクセスを与える仮想マシンを実行し得る。クライアントデバイス102は、仮想マシンであり得る。たとえば、仮想マシンは、ハイパーバイザ、仮想マシンマネージャ(VMM)、またはサーバ106内の任意の他のハードウェア仮想化技法によって管理され得る。
いくつかの実施形態では、ネットワーク104は、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、ワイドエリアネットワーク中のソフトウェア定義のネットワーキング(SD-WAN)、1次公衆ネットワーク104、および1次プライベートネットワーク104であり得る。追加の実施形態は、モバイルデバイスの間で通信するために様々なプロトコルを使用する携帯電話網のネットワーク104を含み得る。ワイヤレスローカルエリアネットワーク(WLAN)内の短距離通信のために、プロトコルは、802.11と、Bluetoothと、近距離通信(NFC)とを含み得る。
SD-WANエンタープライズの1つの特に有利な実装形態は、より多くのスケーラビリティをもち、クラウドに接続する準備ができているコスト効果の高い形で企業がそれらのWANをレンダリングすることを可能にするCitrix SD-WANによって与えられる。Citrix SD-WANは、個々のSaaSアプリケーションを含むアプリケーションを識別し、ブランチからインターネット、クラウド、またはSaaSにトラフィックをインテリジェントに操作するために統合データベースおよびディープパケットインスペクションを含んでいる。さらに、Citrix SD-WANはまた、セキュアなウェブゲートウェイを介してブランチからインターネットにトラフィックをルーティングする能力を与え、ファイアウォール、URLフィルタリング、および使用課金を含むクラウドベースのセキュリティを与える。
図2は、クライアントデバイス102、機器108および/またはサーバ106の実施形態を実施するのに有用なコンピューティングデバイス100のブロック図を示す。コンピューティングデバイス100は、1つまたは複数のプロセッサ103と、揮発性メモリ122(たとえば、ランダムアクセスメモリ(RAM))と、不揮発性メモリ128と、ユーザインターフェース(UI)123と、1つまたは複数の通信インターフェース118と、通信バス150とを含む。
不揮発性メモリ128は、1つもしくは複数のハードディスクドライブ(HDD)または他の磁気もしくは光学記憶媒体、フラッシュドライブもしくは他の固体記憶媒体などの1つもしくは複数のソリッドステートドライブ(SSD)、1つもしくは複数のハイブリッド磁気およびソリッドステートドライブ、ならびに/またはクラウドストレージなどの1つもしくは複数の仮想ストレージボリューム、またはそのような物理ストレージボリュームと仮想ストレージボリュームもしくはそれのアレイとの組合せを含み得る。
ユーザインターフェース123は、グラフィカルユーザインターフェース(GUI)124(たとえば、タッチスクリーン、ディスプレイなど)と、1つまたは複数の入出力(I/O)デバイス126(たとえば、マウス、キーボード、マイクロフォン、1つまたは複数のスピーカ、1つまたは複数のカメラ、1つまたは複数の生体スキャナ、1つまたは複数の環境センサ、および1つまたは複数の加速度計など)とを含み得る。
不揮発性メモリ128は、オペレーティングシステム115と、1つまたは複数のアプリケーション116と、データ117とを記憶し、したがって、たとえば、オペレーティングシステム115および/またはアプリケーション116のコンピュータ命令は、揮発性メモリ122の外でプロセッサ103によって実行される。いくつかの実施形態では、揮発性メモリ122は、1つもしくは複数のタイプのRAMおよび/またはメインメモリよりも速い応答時間を提供し得るキャッシュメモリを含み得る。データは、GUI124の入力デバイスを使用して入力されるか、またはI/Oデバイス126から受信され得る。コンピュータ100の様々な要素は、通信バス150を介して通信し得る。
図示されたコンピューティングデバイス100は、単に例示的なクライアントデバイスまたはサーバとして示されており、本明細書で説明されるように動作することが可能な好適なハードウェアおよび/またはソフトウェアを有し得る任意のタイプのマシンまたはマシンのセットをもつ任意の計算または処理環境によって実装され得る。
プロセッサ103は、システムの機能を実行するためにコンピュータプログラムなどの1つまたは複数の実行可能命令を実行するために1つまたは複数のプログラマブルプロセッサによって実装され得る。本明細書で使用する「プロセッサ」という用語は、機能、動作、または一連の動作を実行する回路を表す。機能、動作、または一連の動作は、回路にハードコードされるか、またはメモリデバイス中に保持され、回路によって実行される命令としてソフトコードされ得る。プロセッサは、デジタル値を使用しておよび/またはアナログ信号を使用して機能、動作、または一連の動作を実行し得る。
いくつかの実施形態では、プロセッサは、1つまたは複数の特定用途向け集積回路(ASIC)、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックス処理ユニット(GPU)、マイクロコントローラ、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理アレイ(PLA)、マルチコアプロセッサ、または関連メモリをもつ汎用コンピュータで具現化され得る。
プロセッサ103は、アナログ、デジタルまたは混合信号であり得る。いくつかの実施形態では、プロセッサ103は、1つもしくは複数の物理プロセッサ、または1つもしくは複数の仮想(たとえば、遠隔に位置するもしくはクラウド)プロセッサであり得る。複数のプロセッサコアを含むプロセッサおよび/または複数のプロセッサは、命令の並列、同時実行のための機能、または2つ以上のデータに対する1つの命令の並列、同時実行のための機能を与え得る。
通信インターフェース118は、コンピューティングデバイス100がセルラー接続を含む様々なワイヤードおよび/またはワイヤレス接続を通してLAN、WANもしくはSD-WAN、パーソナルエリアネットワーク(PAN)、またはインターネットなどのコンピュータネットワークにアクセスすることを可能にするために1つまたは複数のインターフェースを含み得る。
説明される実施形態では、コンピューティングデバイス100は、クライアントデバイスのユーザに代わってアプリケーションを実行し得る。たとえば、コンピューティングデバイス100は、ハイパーバイザによって管理される1つまたは複数の仮想マシンを実行し得る。各仮想マシンは、ホストされたデスクトップセッションなど、アプリケーションがユーザまたはクライアントデバイスに代わって実行する実行セッションを与え得る。コンピューティングデバイス100はまた、ホストされたデスクトップ環境を与えるために端末サービスセッションを実行し得る。コンピューティングデバイス100は、1つまたは複数のアプリケーションと、1つまたは複数のデスクトップアプリケーションと、1つまたは複数のアプリケーションが実行し得る1つまたは複数のデスクトップセッションとを含むリモートコンピューティング環境へのアクセスを与え得る。
例示的な仮想化サーバ106は、Florida州Fort LauderdaleのCitrix Systems,Inc.(「Citrix Systems」)によって与えられるCitrix Hypervisorを使用して実装され得る。仮想アプリおよびデスクトップセッションは、さらに、同じくCitrix SystemsからのCitrix Virtual Apps and Desktopsによって与えられ得る。Citrix Virtual Apps and Desktopsは、スケーラブルなVDI解決策を実装するオプションに加えて、任意のデバイスからの仮想アプリ、デスクトップ、およびデータセッションを含む仮想セッションへのユニバーサルアクセスを用いて生産性を向上させるアプリケーション仮想化解決策である。
図3を参照すると、クラウド環境、クラウドコンピューティングまたはクラウドネットワークと呼ばれることもあるクラウドコンピューティング環境160が示されている。クラウドコンピューティング環境160は、複数のユーザまたはテナントに共有コンピューティングサービスおよび/またはリソースの配信を与えることができる。たとえば、共有リソースおよびサービスは、限定はしないが、ネットワークと、ネットワーク帯域幅と、サーバと、処理と、メモリと、ストレージと、アプリケーションと、仮想マシンと、データベースと、ソフトウェアと、ハードウェアと、分析と、インテリジェンスとを含むことができる。
クラウドコンピューティング環境160では、(上記で説明されたものなどの)1つまたは複数のクライアント162A~162Cがクラウドネットワーク164と通信している。クラウドネットワーク164は、バックエンドプラットフォーム、たとえば、サーバ、ストレージ、サーバファームまたはデータセンターを含み得る。ユーザまたはクライアント162A~162Cは、単一の団体/テナントまたは複数の団体/テナントに対応することができる。より詳細には、例示的な一実装形態では、クラウドコンピューティング環境160は、単一の団体(たとえば、エンタープライズクラウド)をサービスするプライベートクラウドを与え得る。別の例では、クラウドコンピューティング環境160は、複数の団体/テナントをサービスするコミュニティまたはパブリッククラウドを与え得る。
いくつかの実施形態では、ゲートウェイ機器またはサービスは、クラウドコンピューティングリソースおよび仮想セッションへのアクセスを与えるために利用され得る。たとえば、Citrix Systems,Inc.によって与えられるCitrix Gatewayは、仮想、SaaSおよびウェブアプリケーションへのセキュアなアクセスおよびシングルサインオンをユーザに与えるためにオンプレミス(on-premises)でまたはパブリッククラウド上に展開され得る。さらに、ウェブ脅威からユーザを保護するために、Citrix Secure Web Gatewayなどのゲートウェイが使用され得る。Citrix Secure Web Gatewayは、URLの評判およびカテゴリについて検査するためにクラウドベースのサービスおよびローカルキャッシュを使用する。
またさらなる実施形態では、クラウドコンピューティング環境160は、パブリッククラウドとプライベートクラウドとの組合せであるハイブリッドクラウドを与え得る。パブリッククラウドは、クライアント162A~162Cまたは企業/テナントに対してサードパーティによって維持される公開サーバを含み得る。サーバは、遠く離れた地理的ロケーションに離れて位置するか、またはそうでなく位置し得る。
クラウドコンピューティング環境160は、異なる物理および仮想リソースがそれぞれの環境内での異なる需要に応答して動的に割り当てられ、再び割り当てられる状態でマルチテナント環境またはマルチテナントモデルを通してクライアント162A~162Cを介して複数のユーザをサービスするためにリソースプーリングを与えることができる。マルチテナント環境は、複数のユーザをサービスするためにソフトウェアの単一のインスタンス、アプリケーションまたはソフトウェアアプリケーションを与えることができるシステムまたはアーキテクチャを含むことができる。いくつかの実施形態では、クラウドコンピューティング環境160は、複数のクライアント162A~162Cのためのネットワークにわたって計算能力(たとえば、サーバ時間、ネットワークストレージ)を単方向にプロビジョニングするためにオンデマンドのセルフサービスを与えることができる。例として、サービスをプロビジョニングすることは、Citrix Provisioning Services(Citrix PVS)などのシステムを通して与えられ得る。Citrix PVSは、共有デスクトップイメージを通して複数の仮想デスクトップエンドポイントにパッチ、更新および他の構成情報を配信するソフトウェアストリーミング技術である。クラウドコンピューティング環境160は、1つまたは複数のクライアント162からの異なる需要に応答して動的にスケールアウトかまたはスケールインする弾性を与えることができる。いくつかの実施形態では、クラウドコンピューティング環境160は、与えられた共有サービスおよびリソースに対応する報告を監視、制御および/または生成するために監視サービスを含むかまたは与えることができる。
いくつかの実施形態では、クラウドコンピューティング環境160は、たとえば、サービスとしてのソフトウェア(SaaS)170、サービスとしてのプラットフォーム(PaaS)172、サービスとしてのインフラストラクチャ(IaaS)174、およびサービスとしてのデスクトップ(DaaS)176などの異なるタイプのクラウドコンピューティングサービスのクラウドベースの配信を与え得る。IaaSは、指定された時間期間中に必要とされるインフラストラクチャリソースの使用をレンタルするユーザを指すことがある。IaaSプロバイダは、大きいプールからストレージ、ネットワーキング、サーバまたは仮想化リソースを提供し、必要に応じてより多くのリソースにアクセスすることによってユーザが迅速にスケールアップすることを可能にし得る。IaaSの例は、Washington州SeattleのAmazon.com,Inc.によって与えられるAMAZON WEB SERVICES、Texas州San AntonioのRackspace US,Inc.によって与えられるRACKSPACE CLOUD、California州Mountain ViewのGoogle Inc.によって与えられるGoogle Compute Engine、またはCalifornia州Santa BarbaraのRightScale,Inc.によって与えられるRIGHTSCALEを含む。
PaaSプロバイダは、たとえば、ストレージ、ネットワーキング、サーバまたは仮想化を含むIaaSによって与えられる機能ならびにたとえば、オペレーティングシステム、ミドルウェア、またはランタイムリソースなどの追加のリソースを提供し得る。PaaSの例は、Washington州RedmondのMicrosoft Corporationによって与えられるWINDOWS AZUREと、Google Inc.によって与えられるGoogle App Engineと、California州San FranciscoのHeroku,Inc.によって与えられるHEROKUとを含む。
SaaSプロバイダは、ストレージ、ネットワーキング、サーバ、仮想化、オペレーティングシステム、ミドルウェア、またはランタイムリソースを含むPaaSが与えるリソースを提供し得る。いくつかの実施形態では、SaaSプロバイダは、たとえば、データおよびアプリケーションリソースを含む追加のリソースを提供し得る。SaaSの例は、Google Inc.によって与えられるGOOGLE APPS、California州San FranciscoのSalesforce.com Inc.によって与えられるSALESFORCE、またはMicrosoft Corporationによって与えられるOFFICE 365を含む。SaaSの例はまた、データストレージプロバイダ、たとえばCitrix SystemsからのCitrix ShareFile、California州San FranciscoのDropbox,Inc.によって与えられるDROPBOX、Microsoft Corporationによって与えられるMicrosoft SKYDRIVE、Google Inc.によって与えられるGoogle Drive、またはCalifornia州CupertinoのApple Inc.によって与えられるApple ICLOUDを含み得る。
SaaSと同様に、(ホストされたデスクトップサービスとしても知られる)DaaSは、仮想デスクトップセッションが仮想デスクトップ上で使用されるアプリとともにクラウドサービスとして一般に配信される仮想デスクトップインフラストラクチャ(VDI)の形態である。Citrix SystemsからのCitrix Cloudは、DaaS配信プラットフォームの一例である。DaaS配信プラットフォームは、たとえば、Washington州RedmondのMicrosoft CorporationからのAZURE CLOUD(本明細書では「Azure」)、またはWashington州SeattleのAmazon.com,Inc.によって与えられるAMAZON WEB SERVICES(本明細書では「AWS」)などのパブリッククラウドコンピューティングインフラストラクチャ上でホストされ得る。Citrix Cloudの場合、Citrix Workspaceアプリは、統一されたエクスペリエンスを配信するために(オンプレミスかまたはクラウド中かにかかわらず)アプリ、ファイルおよびデスクトップを一緒にするための単一のエントリポイントとして使用され得る。
次に図4~図5を参照すると、ユーザおよびシステムヒントの組合せを使用して難しいネットワーク状態において最適化された領域検出および配信を含むリモートコンピューティングコンテキスト内での階層表示のためのシステムおよび方法が与えられる。背景として、より多くの作業負荷がクラウドに移動され、データセンターが大陸にわたって統合されるので、作業負荷とクライアントエンドポイントとの間のネットワーク状態はより難しくなり、はるかに高いレイテンシおよびパケットロスで特徴づけられる。たとえば、Citrix Workspaceは、サービスの中でもデスクトップおよびアプリ、たとえばCitrix Virtual Apps and Desktops(CVAD)のクラウドベースの作業負荷、またはクラウド作業負荷と統合されたストアエクスペリエンスをもつオンプレミス作業負荷とのハイブリッド組合せへの統合されたリモートアクセスを与えるサービスである。さらに、サービスとしてのCitrix Gateway(GWaaS)は、ユーザが顧客のオンプレミスのCitrix NetScaler Gatewayをセットアップすることなしにクラウド作業負荷とオンプレミス作業負荷との両方にリモートでアクセスすることを可能にする。しかしながら、クラウドとの間でのネットワークホップは、ネットワークのレイテンシをさらに増加させる。
図4の棒グラフ40は、地理的ロケーションに基づいて異なるCitrix Gatewayのプレゼンスポイント(POP)中の独立コンピューティングアーキテクチャ(ICA)ファイルのラウンドトリップ時間(RTT)を示す。より詳細には、Citrix ICAは、アプリケーションサーバシステムのためのプロプライエタリプロトコルである。それは、任意の単一のプラットフォームに制限されず、サーバとクライアントとの間でデータを受け渡すための仕様を与える。Citrix ICAは、サーバソフトウェア構成要素と、ネットワークプロトコル構成要素と、クライアントソフトウェア構成要素とを含む。すべての測定は、トランスポートプロトコルとしての伝送制御プロトコル(TCP)を介したCitrix High-definition User Experience(HDX)に基づく。Citrix HDX技術は、データセンターから任意のネットワークを介してクライアントコンピューティングデバイスに仮想デスクトップおよびアプリケーションの高品位のユーザエクスペリエンスを配信するために協力するプロトコルおよび能力のセットである。ICA RTTは、HDXセッションの双方向性、たとえば、クリックツー光子時間を測定する。たとえば、これは、Citrix ReceiverまたはCitrix Workspaceアプリ(CWA)をホストするクライアントデバイスにおけるユーザ入力イベント(キーボード、マウス、タッチ、電子ペン)とホストされるアプリケーションによって生成され、CWAをホストするクライアントデバイスにおいて配信される対応するグラフィックスの更新との間の時間差であり得る。ICA RTTがアプリケーションの応答時間、サーバ負荷などによって影響を及ぼされ得るので、ICA RTTは、必ずしもネットワークレイヤ7レイテンシに等しくなるとは限らない。
棒グラフ40を見るとわかるように、アジア太平洋の作業負荷(as-asia-se)でのユーザエクスペリエンス(UX)が特に難しくなっている。しかし、米国においてさえ、50%を超える接続が、たとえば、az-us-wまたはaz-us-scが100ms以上のICA RTTを招いている。1000~2000msのレイテンシをもつ超小型地球局(VSAT:Very Small Aperture Termina)接続を使用するリモートブランチオフィスロケーションにいるユーザの追加の事例ある。棒グラフ40では、「aws」は、Amazon Web Services設備を指し、一方、「az」は、Azure設備を指す。
さらに、高解像度(たとえば、4K)およびマルチモニタ表示は、グラフィックス負荷をさらに高くする。逆に、モバイルデバイスを使用するとき、解像度がより低い間に、Citrix Receiver/Workspaceアプリなどの製品との天然様のアプリケーション応答性の期待があり得る。ユーザエクスペリエンスは、タイピング、マウスまたはタッチウィンドウのドラッグ、スクロール、アプリの切り替えなどの通常のオフィス作業負荷、複雑な3Dグラフィックスモデルと対話する3D Proの使用事例、仮想ホストアプリを用いた、たとえば、CVADによって与えられるアプリおよびデスクトップを用いたバーチャルリアリティ(VR)の使用事例などのいくつかの状況において「遅く」なり得る。
スループットと双方向性との両方を改善するために、本明細書に記載のシステムおよび方法の例示的な実施形態は、TCPの制限の一部を克服するためにトランスポートプロトコルとしてユーザデータグラムプロトコル(UDP)へのシフトを利用し得る。TCPは、加算的な増加乗算的な減少(AIMD:Additive Increments Multiplicative Decrements)輻輳制御アルゴリズムを使用し、レイテンシおよびロスの条件で帯域幅を十分に利用することができない。現代のネットワークでは、帯域幅は、より豊富にある傾向があり、パケットロスは、大部分はエンドポイント干渉(確率損失)によるものであり、輻輳によらない。したがって、若干のパケットロスは、スループットを大幅に低減することなしに許容され得る。たとえば、Google製品ファミリ全体がQUICに移行している。Citrix HDXは、帯域幅割振りに関して依然として十分でありながら難しいネットワーク状態においてTCPよりもよい輻輳およびフロー制御を有するEnlightened Data Transport(EDT)プロトコルという高信頼送信のUDPベースのプロトコルを最近導入した。
250msのRTTおよび片道1%のパケットロスの典型的な海外のWANの場合、トランスポートとしてEDTを介したHDXは、仮想セッションの双方向性は最高2.5倍改善する(程度は作業負荷、たとえば、ノートパッド中のテキスト対画像をもつウェブページのスクロールに依存する)、クライアントドライブマッピングでのファイル転送(リモートファイルコピー)の速度-最高10倍の改善、印刷(ホストアプリケーションからクライアントまたはネットワークマッピングされたプリンタへの印刷)の速度-最高2倍の改善、一般的なUSBリダイレクションの速度-最高35%の改善のようにTCPを介したものよりはるかにうまく実行する。リモーティング技術がよりストリーム指向になり、より双方向的でなくなるほど、信頼できるEDTの利益がより高くなる。したがって、EDTを用いたパフォーマンス改善は、リモート化されている様々な技術およびそれぞれのリモーティング仮想チャネルプロトコルによって異なる。
棒グラフ40中の棒の各々において、関連する鍵によって示されるように、棒の下の部分は、RTT時間<50msであるICAファイルの割合を表し、上の次のセクションは、50~100msのRTT時間を有するICAファイルの割合であり、上の次のセクションは、100~200msのRTT時間を有するICAファイルの割合であり、上の次のセクションは、200~450msのRTT時間を有するICAファイルの割合であり、各棒の最も上のセクションは、RTT時間>450msであるICAファイルの割合を表す。
EDTが、程度の差はあってもすべてのICA仮想チャネル(VC)に利益を与えるが、EDTが、UXの双方向性を常に限定する、あらゆる紛失パケットがパケット再送信を生じることを意味する現在(唯一の)信頼できるプロトコルであるという事実により改善の余地が依然としてある。たとえば、ユーザ入力パケットの紛失は、紛失したパケットが正常に再送信されるまで、後続のユーザ入力パケットの送信の遅延を生じる可能性がある。別の例として、グラフィックス更新パケットの紛失は、紛失したパケットが正常に再送信されるまで、後続のグラフィックス更新パケットの送信の遅延を生じる可能性がある。(最初はあいまいで、変化が停止するとシャープ化される)過渡領域のためのプログレッシブ表示などのHDX Thinwireの改善は、UXを改善するのに役立つが、それらは基礎を成すトランスポートプロトコルの信頼できる性質によって依然として制限される。Thinwireは、CVADにおいて使用されるCitrixデフォルトの表示リモーティング技術である。表示リモーティング技術により、1つのマシン上で生成されたグラフィックスが、表示のために別のマシンに一般にネットワークにわたって送信されることが可能になる。
さらに、現在のグラフィックス領域分析および分類は、CPUおよびメモリ集約的であるフレームバッファ分析に基づく。Microsoft Desktop Deduplication APIなどのAPIが「ダーティー領域」の検出(たとえば、最近変更され、更新を送信する必要があるグラフィックス領域)のための設備を与えるが、それらは、たとえば、CVADによる使用中のすべてのOSおよびグラフィックスドライバモデル上で利用可能でない。さらに、利用可能なときでも、これらのAPIは、グラフィックスデータのセマンティクスに関する追加の緻密な情報、たとえば、静止画像と、速く変化するグラフィックス(ビデオ)と、テキストとの間の差異を与えない。したがって、効率的な動作のために追加のフレームバッファ分析が常に必要とされる。
図5を参照すると、システム50は、クライアントデバイス51がVDIまたはクラウドベースの仮想化インフラストラクチャなどのホストから仮想コンピューティングセッション(たとえば、仮想デスクトップおよびアプリ)にリモートでアクセスし得る表示リモーティングアーキテクチャを示す。図示の例では、クライアントデバイス51は、たとえば、Citrix VDAなどによって与えられる仮想配信機器52によって仮想コンピューティングセッションに接続される。クライアントデバイス51と仮想配信機器52とは、Thinwire(グラフィックス)チャネル53、クライアントドライブマッピング(CDM)チャネル54、ユニバーサルシリアルバス(USB)チャネル55、マルチメディアチャネル56などを含む複数の異なる仮想チャネルを介して通信する。仮想チャネルデータは、仮想チャネルの多重化、たとえば、圧縮、優先度付け、および帯域幅の制限を実行するwinstationドライバ(WD)57を含む、リモートセッションへの成功した完全に機能的な接続を確立するために必要とされる随意のプロトコルドライバのセットをロードすることによって異なる機能を実行する独立コンピューティングアーキテクチャ(ICA)プロトコルスタック49内の一連のドライバをパススルーする。さらに、プロトコルドライバ(PD)58の1つまたは複数のインスタンスは、たとえば、IPフレーミングおよびセキュアなICA(カスタム暗号化)動作を実行し得、一方、トランスポートドライバ(TD)59は、Citrix共通ゲートウェイプロトコル(CGP)またはSOCKS5、WebSockets、TLS、およびTCPなどのTCPスタック動作ならびに/もしくはCGP、(信頼できるトランスポートと信頼できない(非可逆の)トランスポートとの両方のためのオプションをもつ)Enlightened Data Transport(EDT)、データグラムトランスポートレイヤセキュリティ(DTLS)、およびUDPを含むUDPスタック動作を実行する。
図示の例では、winstationドライバ57とプロトコルドライバ58との間で、ICAパケットは圧縮フォーマットのペイロードバイトであり、プロトコルドライバとトランスポートドライバ59との間で、ICAパケットはフレーミングおよび/または内部暗号化を有する。トランスポートドライバ59と(スイッチ、ルータ、ファイアウォール、ゲートウェイ、トラフィック整形器などを含み得る)ネットワークリンク48との間で、ICAパケットは、CGPヘッダ、トランスポートレベルの暗号化(可能な場合)、イーサネットヘッダなどをもつワイヤフォーマットにある。システム50の仮想配信機器52側上に示されている同じ動作はまた、クライアント側上の対応する構成要素によって実行される。システム50が、本明細書に記載の例示的な表示リモーティング技法が実装され得る1つの例示的な構成にすぎず、他の好適なアーキテクチャが異なる実装形態において使用され得ることに留意されたい。
概して、様々な有利な表示リモーティング最適化技法が、システム50の例示的なアーキテクチャ(または他の好適なアーキテクチャ)内で実行され得る。これらは、(レイテンシおよび/またはパケットロスをもつ)難しいネットワーク状態における最適化されたグラフィックスリモーティングを用いる領域の検出、分類および更新優先度付け、ならびに階層表示のための最適化技法を含む。より詳細には、最適化されたグラフィックスリモーティングは、いくつかのエリア中での非可逆送信または信頼できる送信と非可逆送信との組合せを用いて忠実度を犠牲にしてより良い双方向性を達成することと、(帯域幅およびCPUの利用率との何らかのトレードオフで)信頼できる送信の前方誤り訂正(FEC)を用いて重要なエリア中での双方向性をさらに改善することと、非可逆送信のFECを用いて重要なエリア中での忠実度を回復すること(したがって、何らかの帯域幅およびCPUを犠牲にして双方向性とともにより良い品質を達成すること)と、予想されるビットレート、割合損失および/または他のファクタに基づいて最適なFECアルゴリズムを選択することとを行うのに役立ち得る。さらに、いくつかの実装形態では、ユーザおよびシステムヒントが、上記のすべてを容易にするために使用され得、ユーザ入力が、再送信の遅延を回避するためにアグレッシブなFECを用い、帯域幅に対する無視できる影響で送られ得る。これらの様々な態様について、図6~図14に関して以下でさらに説明することにする。
本明細書に記載の例示的な実施形態は、有利には、1つまたは複数の態様を通してユーザエクスペリエンスを改善する機会を与える。第1の態様は、ユーザおよびシステムヒントからの仮想セッション入力の組合せに基づき、フレームバッファ分析を実行する必要なしにより効率的で緻密なグラフィックス領域の検出、分類および更新優先度付けのためのものである。別の態様は、新しいEDT非可逆トランスポートプロトコルを介して信頼できない(非可逆の)方法であまり重要でないまたは過渡的な更新を送ること、たとえば、「撃ちっぱなし」方式で更新を送ることに関する。さらに別の態様は、確実にまたは非可逆な方法でだが、どちらの場合もFECを使用して重要な更新を送ることに関する。したがって、信頼できるトラフィックの場合、再送信は、FECが失敗したときにのみ使用される必要がある。非可逆のトラフィックの場合、FECが失敗したときの再送信は、データセマンティクスに応じて随意である。たとえば、紛失される場合、後続のフレームがより最新のグラフィックスを搬送し得るので、グラフィックスフレームは再送信される必要がなく、したがって、今はもう使われていないグラフィックスフレームを再送信する必要を除去し得る。別の同様の例として、後続のマウスドラッグイベントが現在のマウス位置などを搬送し得るので、紛失された個々のマウスドラッグイベントは再送信される必要がない可能性がある。さらに別の態様は、いずれかの方向での再送信の遅延を回避するためにグラフィックスの更新とユーザ入力との両方のためにFECを利用する。
1つの課題は、帯域幅または逆に有効なコンテンツビットレートとCPUとに対する全体的な影響を最小化するための、およびFEC計算自体におけるレイテンシを回避するためのFECアルゴリズムの選択に関する。たとえば、FECアルゴリズムは、等しいサイズのパケットに適用されるときに、およびオーディオまたはビデオなどの一定のビットレートストリームに適用されるときに最良に動作する。しかしながら、HDXなどの対話型のトラフィックに適用されるとき、データパケットのサイズとビットレートとは保証されず、ユーザのアクティビティ、アプリケーションタイプ、セッション解像度などに実質的に応じて変化することができる。この点について、以下でさらに説明されるように有用な方式でFEC技法を適用するために様々なファクタが考慮され得る。これらのファクタは、輻輳の回避を含み、すなわち、FECは、有効なロスを減少させながら、帯域幅の消費量を増加させ、および/またはデータ送信の有効なビットレートを低下させる。しかも、推定された利用可能な帯域幅を上回るビットレートで送ることは輻輳を生じ得る。別のファクタはコストである。たとえば、帯域幅は、現代のネットワークではより豊富であるが、いくつかのアジアの領域では、米国においてよりも何倍も多く費用がかかることをデータは示している。
考慮すべきさらに別のファクタは双方向性である。次のパケットが送信キューから失われている場合、(たとえば、ユーザが、追加の入力イベント(たとえば、キーボード、マウス、タッチ、ペン入力)を生成していないか、またはホストアプリケーションがさらなるグラフィックスの更新を生成していない(たとえば、現在必要とされるさらなる更新がない)場合)、FEC符号化されたパケットのバッチを完了するために、FECの単純なアプリケーションがダミーパケットを送る必要がある可能性があり、これは、帯域幅を浪費するか、または次のパケットを待機し、これは、遅延をもたらし、FECを使用する目的をくじく。したがって、ビットレートを予測し、対話型トラフィックに所望のFEC符号化を適用することは、所望のパフォーマンスのために有意であり得る。
次に図6~図7を参照すると、例示的な仮想化システム60が示されており、ここで、仮想化サーバ61は、フレームバッファ65を介して1つまたは複数のクライアントコンピューティングデバイス64に表示されるべき仮想コンピューティングセッション63をホストするように構成されたプロセッサ62を例示的に含む。上記のように、クライアントコンピューティングデバイス64は、デスクトップ/ラップトップコンピュータ、スマートフォン、タブレットコンピュータなどの様々な形態を取り得、グラフィカルユーザインターフェース(GUI)66を介して仮想コンピューティングセッションをレンダリングするように構成される。仮想化サーバ61は、さらに、フレームバッファ65を分析することなしにユーザおよび/またはシステムヒントを含み得る仮想セッション入力に基づいて仮想コンピューティングセッション63内の対話型グラフィックスの領域を検出し、フレームバッファ内の対話型グラフィックスの領域により高い優先度を割り当て得る。したがって、フレームバッファ65のコンテンツは、割り当てられた優先度に基づいてGUI中でレンダリングするために仮想チャネル67を介してクライアントコンピューティングデバイス64に送られ得る。すなわち、領域または対話型グラフィックスは、ユーザに関心のあるエリアに関するより速い表示の更新を与えるためにGUIの他のエリア(たとえば、静的バックグラウンドなど)と比較して最初にレンダリング/更新され、それによって、ユーザエクスペリエンスを向上させ得る。さらに、フレームバッファ65は、フレーム内のより高い重要性のエリア(たとえば、対話型グラフィックス領域)を区別するために一行一行分析または走査される必要はないので、これはまた、より速い処理速度および/または低減された計算オーバーヘッドに寄与し得る。
図7の例示的な実装形態では、ユーザ入力から取られるヒントを含む仮想セッション入力をキャプチャするためにUI自動化クライアントエージェントが与えられる。他の実施形態では、ユーザ入力から取られるヒントは、自動化クライアントエージェントの使用を必要としないことがある。たとえば、ユーザ入力ヒントは、それぞれの仮想コンピューティングセッション63にクライアントコンピューティングデバイス64によって与えられるユーザ入力を注入することを担当する仮想化サーバ61サブシステム(図示せず)から直接導出され得る。他のタイプの仮想セッション入力は、仮想コンピューティングセッション63へのフックから収集されるシステムヒントであり得る。概して、仮想セッション入力は、たとえば、ウィンドウパターンイベント、スクロールパターンイベント、およびテキストパターンイベントのうちの1つまたは複数を備え得る。
たとえば、背景として、UI要素は、(たとえば、アプリケーションウィンドウによってサポートされる)ウィンドウパターン、(たとえば、編集制御、文書またはリッチテキストの閲覧および処理制御によってサポートされる)テキストパターン、(たとえば、スクロール可能なビューによってサポートされる)スクロールパターン、(たとえば、表またはスプレッドシートの処理ビューによってサポートされる)格子パターンのうちの1つまたは複数のパターンを公開(またはサポート)し得る。場合によっては、UI要素は埋め込まれるか、そうでなければUI要素の階層を形成し得、たとえば、文書編集ビューは、スクロールパターン内にテキストパターンを備えるスクロールコンテナを含み得る。異なるUI要素パターンは、それぞれ名前が付けられたイベントを発行し得る。たとえば、ウィンドウパターンをサポートするUI要素は、ウィンドウパターンイベント、たとえば、移動する、最大化する、最小化する、閉じるなどを発行し得る。別の例として、テキストパターンをサポートするUI要素は、テキストパターンイベント、たとえば、変更されたテキスト、変更されたテキスト選択などを発行し得る。さらに別の例として、スクロールパターンをサポートするUI要素は、スクロールイベント、たとえば、垂直スクロールアップまたは垂直スクロールダウンイベントなどを発行し得る。
以下でさらに説明されるように、プロセッサ62はまた、ユーザエクスペリエンスをなお一層向上させるためにフレームバッファ65の対応するコンテンツのレンダリングより前のレンダリングのためにクライアントコンピューティングデバイス64にテキストパターンイベントに関連するテキストパターン入力データを非同期的に送るように構成され得る。すなわち、クライアントコンピューティングデバイス64は、フレームバッファ65からの対応するグラフィックスコンテンツが完全に受信される前でさえも変化するテキストを事前レンダリングまたはプレビューし得る。より詳細には、テキストパターン入力データは、テキストデータ(たとえば、ASCIIまたはUTF-8文字、シンボルなど)とフォントタイプ、フォントサイズ、前景色、背景色、イタリック、ボールド、下線、行間などの関連するテキストメタデータとを含み得る。さらに別の例示的な実装形態では、テキストパターン入力データは、スクロールコンテナ内のテキストパターン(スクロールバーをもつテキストウィンドウ)に対応し得る。
さらに、プロセッサ62はまた、以下でさらに説明されるように、フレームバッファ内の他のコンテンツとは異なるレベルのFECをもつ関心領域に対応するフレームバッファ65のコンテンツを送るように構成され得る。図示の例では、プロセッサ62は、フレームバッファからの他のグラフィックスコンテンツとは異なるチャネル上でフレームバッファ65からクライアントコンピューティングデバイス64に対話型グラフィックスの領域に対応するグラフィックスデータを送るように構成される。ここで、対話型グラフィックスデータは、信頼できるチャネル68を介して送られ、残りのグラフィックスデータは、非可逆チャネル69を介してフレームバッファからクライアントコンピューティングデバイスに送られる。さらに、異なる量またはタイプのFECが、これらのチャネルの各々に適用され得、適用されるFECの量はまた、以下でさらに説明されるように、変動されるか、そうでなければ場合によっては調整され得る。
上記は、たとえば、図5に示されたフレームワーク内に与えられ得る様々な実装例を参照してさらに理解されよう。しかしながら、本明細書で説明される技法は、他のシステムアーキテクチャ中にも実装され得ることを理解されよう。領域検出のためのシステムヒントは、1つまたは複数の手法を含み得る。第1の手法は、仮想アプリウィンドウ追跡である。たとえば、これは、トップレベルウィンドウへの更新を列挙し、追跡するCitrix CVAD Seamless App Support Virtual Channel(VC)サブシステムによって与えられ得る。別の手法は、たとえば、Seamless App Support VCサブシステムによって使用される処理監視ドライバによって与えられるような仮想アプリ処理監視である。さらに別の手法は、たとえば、Microsoft UI Automation API(Microsoft Active Accessibility APIの後継)に基づいてホストアプリケーションまたはデスクトップ環境から取り出されるパターン、プロパティおよびイベントを検出することを含み得る。特に、クライアントAPIにより、アプリケーションは、他のアプリケーション中の制御と対話し、それらに関する情報を取り出すことが可能になる。HDXセッション中でエージェントは、ホストアプリケーションおよびデスクトップに関する情報を取り出すためにクライアントAPIを使用し得る。エージェントは、特定のイベント通知に登録し得、特定のUI自動化プロパティおよび制御パターン情報がそれのイベントハンドラに受け渡されることを要求することができる。さらなる手法は、たとえば、HDXトランスポートドライバによって測定され得るネットワークロス割合と、ロスの標準偏差と、レイテンシと、利用可能な帯域幅とを含み得る。ロスの計算がFEC自体の影響を除外し得ることに留意されたい。
ユーザヒントは、キーボード、マウス、タッチまたは他の入力デバイスからのアクティブユーザ入力を含み得る。別の例は、ホストアプリケーションまたはデスクトップの特定のUI要素におけるユーザ入力である。たとえば、これは、ScrollPatternをサポートするUI要素中でのクリックもしくはタップまたはTextPatternをサポートするUI要素中でのキーボード入力などを含み得る。
上記のヒントは、以下でさらに説明されるように、入力として使用され、たとえば、Thinwireによって対話型グラフィックス配信を最適化するために利用され得る。上記のように、Thinwireは、ホストとクライアントとの間でのグラフィックスリモーティングのためのCitrix XenApp Virtual Channel(VC)である。しかしながら、他のグラフィックスリモーティングツールおよびシステムも異なる実施形態において使用され得ることを諒解されよう。
領域の検出、分類および更新優先度付けのための最適化技法に関して、ホストThinwireビットマップマッチポイントアルゴリズムにロケーションヒントを与えることは、より速い、より効率的な(より少ないCPU、メモリ)キャッシュされたビットマップの検出を生じ得る。さらに、ホストThinwireテキスト検出アルゴリズムにロケーションヒントを与えることは、有利には、より速い、より効率的な(より少ないCPU、メモリ)キャッシュされたグリフの検出を生じ得る。
領域の検出のためのシステムヒントは、たとえば、仮想セッション中で動作し、WindowPatternイベントおよびプロパティ更新をリッスンするUI自動化クライアントエージェントからウィンドウ移動によって与えられ得る。これは、仮想セッション中のThinwireグラフィックスコンシューマモジュールへのトリガとして使用され得る。例示的なパラメータは、新旧のウィンドウ位置、サイズを含み得る。
以下は、ウィンドウ移動検出およびグラフィックスリモーティングの最適化のために使用され得る例示的なプロセスフローである。
サーバからクライアントに送られるローカルスクリーンツースクリーンコピー/BitBlit(近似)コマンド。
クライアントにおける露出エリアのローカルフィル
無地を用いる、
または、露出ウィンドウまたはデスクトップバックグラウンドの事前キャッシュされたグラフィックスを用いる。これは、ウィンドウ階層の追跡と、クライアントにおいてキャッシュされるべき重複ウィンドウのウィンドウサーフェスグラフィックスを事前に送ることとを必要とし得る。
<非同期的に>
サーバからクライアントに露出エリアを送る。
<非同期的に>
ホストThinwireビットマップマッチポイントアルゴリズムにロケーションヒント(領域移動)を与える。
今はThinwireから見えるものとして新しいウィンドウエリアを送る
それぞれマッチヒットまたはマッチミスによりキャッシュされたビットマップまたは新しいビットマップ。
この手法がまた、ウィンドウコンテンツがドラッグしながら変化する可能性がある場合をカバーし得ることに留意されたい。
ウィンドウ/コンテナスクロールに関して、これは、上記で説明されたウィンドウ移動手法と同様であるが、ウィンドウ全体の移動とは反対に局地的にスクロールされたエリアが対象となり得る。スクロールのシステムヒントは、たとえば、仮想セッション中で動作し、ScrollPatternおよび/またはScrollItemPatternイベントならびにプロパティ更新をリッスンするUI自動化クライアントエージェントから与えられ得る。これは、仮想セッション中のThinwireグラフィックスコンシューマモジュールへのトリガとして使用され得る。パラメータは、UI制御が水平方向におよび/または垂直方向にスクロール可能であるのかどうか、水平および垂直ビューサイズ、水平および垂直スクロール割合の新旧の値を含み得る。以下は、例示的なプロセスフローである。
サーバからクライアントに送られるローカルスクリーンツースクリーンコピー/BitBlit(近似)コマンド。
無地を用いたクライアントにおける露出エリアのローカルフィル。
<非同期的に>
サーバからクライアントに露出エリアを送る。
<非同期的に>
ホストThinwireビットマップマッチポイントアルゴリズムにロケーションヒント(領域移動)を与える。
今はThinwireから見えるものとしてスクロールコンテナの残りの可視領域(ビューポート)を送る。
それぞれマッチヒットまたはマッチミスによりキャッシュされたビットマップまたは新しいビットマップ。
ここで再度、これは、スクロールされるアイテムコンテンツがスクロールしながら変化する可能性がある場合をカバーし得る。
テキストをもつウィンドウ/コンテナスクロールに関して、上記で説明されたウィンドウ/コンテナスクロールの最適化バージョンが使用され得る。より詳細には、スクロールコンテナの可視領域(ビューポート)の露出エリア内のTextPatternを検出することと、スクロールコンテナの残りの可視領域(ビューポート)内のTextPatternを検出することとの追加のシステムヒントが使用され得る。以下は、例示的なプロセスフローである。
サーバからクライアントに送られるローカルスクリーンツースクリーンコピー/BitBlit(近似)コマンド。
TextPatternが露出エリア内で検出された場合
サーバからクライアントにフォントタイプ、フォントサイズ、前景/背景色、イタリック、ボールド、下線、行間などの属性とともに実際のテキストを送る。
クライアントにおいて受信されたテキストのローカルレンダリング(近似)
<非同期的に>
ホストThinwireテキスト検出アルゴリズムにロケーションヒント(領域)を与える。
そうでない場合
無地を用いたクライアントにおける露出エリアのローカルフィル。
<非同期的に>
ホストThinwireビットマップマッチポイントアルゴリズムにロケーションヒントを与える。
サーバからクライアントに露出エリアを送る。
TextPatternが露出エリア内に実際に存在した場合
それぞれマッチヒットまたはマッチミスによりキャッシュされたおよび/または新しいグリフのセット
そうでない場合
それぞれマッチヒットまたはマッチミスによりキャッシュされたビットマップまたは新しいビットマップ。
<非同期的に>
TextPatternが残りの可視領域内で検出された場合
ホストThinwireテキスト検出アルゴリズムにロケーションヒント(領域)を与える。
そうでない場合
ホストThinwireビットマップマッチポイントアルゴリズムにロケーションヒント(領域移動)を与える。
今はThinwireから見えるものとして残りの可視領域を送る
TextPatternが残りの可視領域に実際に存在した場合
それぞれマッチヒットまたはマッチミスによりキャッシュされたおよび/または新しいグリフのセット。
そうでない場合
それぞれマッチヒットまたはマッチミスによりキャッシュされたビットマップまたは新しいビットマップ。
可能性は低いが、スクロールされるアイテムコンテンツがスクロールしながら変化する可能性がある場合をカバーし得る。
クライアントは、最初に、(非同期的に、実際にはより早く)サーバから受信された属性(テキストメタデータ)をもつ実際のテキストに基づいてユーザに近似の更新を与える。クライアントは、次いで、(非同期的に、実際には後で)テキストグリフ(グラフィックス)を使用して真の最終的なアプリケーション更新を与える。この手法は、有利には、最初に、軽量の近似のフィードバックを与え、その後、コンピューティングパワーおよび帯域幅に関してより重いフィードバックだが、正確な最終的なアプリケーションフィードバックを与えることによって双方向性を改善する。テキストメタデータは、さらなる双方向性の利益を達成するために非可逆トランスポート69を介しておよび/またはFECを用いて送られ得る。
テキスト編集に関して、(たとえば、仮想セッション中に動作し、テキストを含んでいる制御への入力フォーカスを監視するUI自動化クライアントエージェント70からの)TextPatternを含んでいるUI要素中の入力フォーカスのシステムヒントは、仮想セッション中のThinwireグラフィックスコンシューマモジュールへのトリガとして使用され得る。パラメータは、入力フォーカスのロケーション、文字、単語、行、章、ページまたは文書全体のある範囲内のテキスト、フォントタイプ、フォントサイズ、前景/背景色、イタリック、ボールド、下線、行間などを含み得る。以下は、例示的なプロセスフローである。
カーソル(入力フォーカス)の位置を決定する。
TextPatternを含んでいるUI要素中の入力フォーカスを検出する。
以下のうちの1つまたは複数を検出する
(入力チャネルからの)アクティブユーザ入力
テキストの変更(TextChangedEvent)
テキスト選択の変更(TextSelectionChangedEvent)
など。
ホストThinwireテキスト検出アルゴリズムにロケーションヒント(領域)を与える。
入力フォーカスの周りの重要なエリアを決定する
周囲の単語または文字カウント(前後)、フォントタイプおよびサイズ、行間、インデント、箇条書き、テキスト選択範囲などのしきい値に基づく。
VC Writeインターフェース中でQoSを要求する
より高い優先度。
高度なFECを用いて送る。
FECを用いて確実に送るか、またはFECを用いて非可逆的な方式で送る。決定は、カーソル位置に対して更新テキストがどこにあるのかに基づき得る
左/上の場合、すぐの変更は予想されなく、したがって、信頼できる送信を使用する。
右/下の場合、すぐの変更が予想され、したがって、変更が停止するまで非可逆的送信を使用し、次いで、信頼できる送信を使用する。
変更されるテキストエリアのサイズがあるしきい値を上回る場合、テキストをもつウィンドウ/コンテナスクロールについて上記で説明された技法は次のように応答時間を高速化するために使用され得る。
サーバからクライアントにフォントタイプ、フォントサイズ、前景/背景色、イタリック、ボールド、下線、行間などの属性とともに実際のテキストを送る。
クライアントにおいて受信されたテキストのローカルレンダリング(近似)。
<非同期的に>
入力フォーカスの周りの重要なエリアを送る。
上記で説明されたテキストをもつウィンドウ/コンテナスクロールの場合と同様に、クライアントコンピューティングデバイス64は、最初に、(非同期的に、実際にはより早く)仮想化サーバ61から受信された属性(テキストメタデータ)をもつ実際のテキストに基づいてGUI66を通してユーザに近似の更新を与え得る。クライアントコンピューティングデバイス64は、次いで、(非同期的に、実際には後で)テキストグリフ(グラフィックス)を使用して真の最終的なアプリケーション更新を与え得る。この手法は、有利には、最初に、軽量の近似のフィードバックを与え、その後、(コンピューティングパワーおよび帯域幅に関して)より重いが、正確な最終的なアプリケーションフィードバックを与えることによって双方向性を改善する。ここで再度、テキストメタデータは、さらなる双方向性の利益を得るために非可逆トランスポート69を介しておよび/またはFECを用いて送られ得る。
次に図8の流れ図80を参照すると、システム60に関する関連する方法態様について次に説明する。ブロック81から始まり、本方法は、ブロック82において、フレームバッファ65を介してクライアントコンピューティングデバイス64にリモートで表示されるべき仮想コンピューティングセッション63を仮想化サーバ61においてホストすることを含み得る。上記のように、クライアントコンピューティングデバイス64は、GUI66を介して局所的に仮想コンピューティングセッション63をレンダリングする。本方法は、さらに、ブロック83において、仮想セッション入力(たとえば、上記でさらに説明されたユーザおよび/またはシステムヒント)に基づいて、フレームバッファ65を分析することなしに仮想化サーバ61において仮想コンピューティングセッション63内の対話型グラフィックスの領域を検出することと、仮想化サーバにおいてフレームバッファ内の対話型グラフィックスの領域により高い優先度を割り当てることと(ブロック84)を例示的に含む。本方法はまた、上記でさらに説明されたように、割り当てられた優先度に基づいてGUI66中でレンダリングするために仮想化サーバ61からクライアントコンピューティングデバイス64にフレームバッファ65のコンテンツを送ること(ブロック85)を例示的に含む。図8の方法は、ブロック86において例示的に終わる。
図9~図10を参照して、QoSレベルまたはパラメータに基づいて、場合によっては、異なる仮想グラフィックスチャネル(たとえば、信頼できる非可逆チャネル)にわたって適切な程度および/またはタイプのFECを選定することに関する別の例示的な実施形態について次に説明する。図示の例では、コンピューティングシステム90は、上記で説明されたように、フレームバッファ95を介してリモートで表示されるべき仮想コンピューティングセッション93をホストするように構成されたプロセッサ92をもつ仮想化サーバ91と、仮想化サーバから仮想コンピューティングセッションにリモートでアクセスし、GUI96を介して仮想コンピューティングセッションをレンダリングするように構成されたクライアントコンピューティングデバイス94とを例示的に含む。ただし、プロセッサ92は、FEC帯域幅に対するグラフィカルコンテンツ帯域幅の比に基づいてフレームバッファ95内のグラフィカルコンテンツのためのFECデータを生成するようにさらに構成され得る。
さらに、プロセッサ92は、GUI96内での表示のために1つまたは複数の仮想チャネル97を介してクライアントコンピューティングデバイス94にグラフィカルコンテンツと関連するFECデータとをさらに送る。さらに、プロセッサ92はまた、以下でさらに説明されるように、有利には、仮想チャネル97に関連するQoSパラメータを決定し、QoSパラメータの変化に基づいてFEC帯域幅に対するグラフィカルコンテンツ帯域幅の比を選択的に変更するように構成される。
より詳細には、クライアントコンピューティングデバイス94に送られるグラフィカルデータコンテンツはパケットに分割され得、例示的な一実装形態では、QoSパラメータは、パケットロス率であり得る。この場合、FEC帯域幅に対するグラフィカルコンテンツ帯域幅の比は、パケットロス率が増加するにつれて減少し得、逆もまた同じである。すなわち、増加されたパケットロスを緩和するのを助けるためにより多くのFECデータが生成され、(全体的な利用可能な帯域幅のより多くを消費して)クライアントコンピューティングデバイス94に送られ得る。プロセッサ92がまた、送られているFECデータに対するグラフィックスの比を同じく調節しながら全体的な利用可能な帯域幅を増加/または減少させ得るが、場合によっては、プロセッサ92は、仮想チャネル97の全体的な帯域幅を変更することなしにFEC帯域幅に対するグラフィカルコンテンツ帯域幅の比を選択的に変更し得ることに留意されたい。比がどのように変更され得るのかのさらなる詳細および例について、以下でさらに説明する。
図10に示す例示的な実施形態では、たとえば上記で説明された手法を用いて異なるグラフィックスコンテンツを送るために信頼できるチャネル98と非可逆チャネル89との両方が使用される。この場合、異なるチャネル98、99にわたって送られているグラフィックスデータのために異なる比が使用され得る。たとえば、信頼できるチャネルにわたってパケットロスはより少なくなるべきであるので、信頼できるチャネル98上でのFEC帯域幅に対するグラフィカルコンテンツ帯域幅の比は、非可逆チャネル99上でのFEC帯域幅に対するグラフィカルコンテンツ帯域幅の比よりも高くなり得る。さらに、これらの比は、各チャネルに関連するそれぞれのQoS測定値に基づいて調整されるかまたは変更され得、場合によっては、異なるタイプのQoS測定値が、同様に異なるチャネルのために使用され得る。
QoS測定が行われる方式は、異なるタイプの測定で異なり得る。たとえば、上記のようにおよび以下でさらに詳細に説明されるように、ロス、レイテンシ、推定された帯域幅などは、上記で説明されたCitrixアーキテクチャ中のHDXスタックによって測定され得る。予想されるビットレートなどの他の測定は、リモート技術に固有であり得る。たとえば、それらは、ユーザ入力およびグラフィックスを生成するそれぞれの予想されるグラフィックスサブシステムのファクタであり得る。目的は、「重要な」データが遅滞なく送出され、さらに「あまり重要でない」データが許容できる品質のロスで送出されることを保証するために、控えめにだが十分にFECを使用することであり得る。
別の例示的な実装形態では、QoSパラメータはレイテンシに関連し得、FEC帯域幅に対するグラフィカルコンテンツ帯域幅の比は、レイテンシが増加するにつれて減少し得る。すなわち、レイテンシが増加するにつれて、グラフィックスデータに対してより多くのFECデータが送られ、逆もまた同じである。さらに別の例では、QoSパラメータは、グラフィックスチャネル97のための推定された帯域幅に関係し得、FEC帯域幅に対するグラフィカルコンテンツ帯域幅の比は、必要に応じて、より多くのグラフィックスデータまたはFECデータが送られるのを可能にするために推定された帯域幅が増加するにつれて増加または減少し得る。さらに、別の例示的な実装形態では、QoSパラメータは、仮想チャネル97に関連する予想されるビットレートを備え得、FEC帯域幅に対するグラフィカルコンテンツ帯域幅の比は、たとえば、予想されるビットレートが減少するにつれて減少し得、逆もまた同じである。さらに別のQoSパラメータは、仮想化サーバ91に関連するサーバ負荷(たとえば、コンピュータプロセッサにアクセスするために何個の処理がキュー中で待っているのか)に関連し得る。
上記で与えた例以外の他のQoSパラメータが異なる実施形態で使用され得、また、FEC帯域幅に対するグラフィックスコンテンツの比をいつ変更すべきかを決定する際にプロセッサ92が2つ以上のQoSパラメータを考慮に入れ得ることに留意されたい。さらに、いくつかの実装形態では、特定のQoS測定における短い変化またはスパイクを考慮するために比を変更するときに遅延またはヒステリシスが使用され得、変化は、所望される場合、測定されたQoSが異なるしきい値に達するときに行われ得る。
前述は、様々な実装例を参照してさらに理解されよう。ここで再度、これらの例示的な実装形態は、図5に示されるフレームワークのコンテキストで与えられるが、これらの技法は、同様に他の仮想化アーキテクチャ内に適用され得る。概して、パケットロスがあるときにFECを適用することが望ましいことがある。そうでない場合、帯域幅が利益なしで浪費され得る。パケットロスの計算は、独立しており、すなわち、FECによって歪められないことがある。たとえば、FECは、たとえば、WAN上にまたはワイヤレスネットワーク上に固有のランダムパケットロスがある場合、利用可能な帯域幅が依然として限定され、共有される可能性があるが、高い場合、および最大許容レイテンシが限定される上にネットワークRTTに相当するかまたはそれよりも低い場合といったネットワーク状態において望ましいことがある。
仮想化サーバ91は、コンテンツ帯域幅とFEC帯域幅との間で総スループットをどのように分割するのかを決定し得る。たとえば、サーバは、適度なロス率では90%から10%の比を使用し、またはより高いロス率では66%から33%の比を使用することを決定し得る。他の勾配も使用される可能性がある。
仮想化サーバ91はまた、単に発信ストリームにFECを追加し得、これは、全体的な帯域幅使用量を増加させることになる。あるいは、サーバは、全体的な帯域幅使用量を同じ状態にしておき、FECのために残りを使用しながらコンテンツデータレートを調整するか、そうでなければスロットルダウンし得る。後者の手法は、サーバが利用可能な帯域幅を推定し、それを超えないことを保証するネットワークの公正な共有および輻輳回避により寄与する。
仮想化サーバ91は、送信されるべきコンテンツを理想的には同じサイズのパケットのグループ(またはフレーム)にパッケージングし得、ここで、バイト単位のグループサイズは、FEC計算によりコンテンツ帯域幅に最大許容レイテンシを乗算したものとすることができる。たとえば、N個のコンテンツパケットのグループごとに、FECアルゴリズムは、K個のFECパケットを作成し得る。任意の妥当な値のNおよびKが使用され得る。得られた帯域幅分割は、コンテンツのためのN/(N+K)およびFECのためのK/(N+K)である。さらに、コンテンツまたはFECのいずれか最高K個のパケットがグループ送信中で紛失され得、受信側は、元のN個のコンテンツパケットを復元することが依然として可能であることになる。
サーバトランスポートドライバ59において、ICAパケットは、良好な自然境界、たとえば、高スループットモードで約5KBを与える。たとえば、それは、4つのパケットに分割され得る。このような場合、FECは、1つの追加のFECパケットでは、1つのドロップされたパケット(20%のロス)を許容し、2つの追加のFECパケットでは、2つのドロップされたパケット(33%のロス)を許容するように適用され得る。実際には、ロスは時々連続するので、結果はより少なくなり得る。
FECの単純な形態は追加のライブラリを必要としない「排他的論理和」(XOR)である。数学的計算とFECを適用することとの通常2つの部分を有する例示的な実施形態において使用され得るFECおよびライブラリの複数の異なる形態がある。たとえば、Jerasure、Erasure Coding Libraryは、必要な数学プリミティブのためのオープンソースライブラリである。別の例示的な手法は、GF-Completeである。他の好適な手法も使用され得る。
送信されるべきグラフィックス更新を生成するサーバグラフィックスコンシューマモジュールは、最大アプリケーションペイロードサイズ、すなわち、ネットワークの最大転送ユニット(MTU)からたとえば、トランスポート暗号化、信頼性、フレーミング、ICAプロトコルオーバーヘッドなどからの任意のプロトコルオーバーヘッドを減じたものに一致するデータパケットを生成しようと試み得る。グラフィックスモジュールは、周期的に更新を生成し得る。たとえば、フレーム更新は、K個のFECパケットのグループによって保護されるN個のコンテンツパケットのグループに非常に自然にマッピングすることになる。所望の結果のために、レイテンシを最小化するために、フレームサイズは、最大アプリケーションペイロードサイズに等しくなるか、またはそれの倍数になり得る。同様に、ビデオ符号化、たとえば、H.264のために、ネットワーク抽象化レイヤユニット(NALU)は、最大アプリケーションペイロードサイズに一致し得る。
トランスポートドライバ59中でのFEC符号化/復号処理中のレイテンシは、FECを生成する前に送信側/サーバにおいてパケットの完全なグループをバッファしなければならないことから来ることになり、受信機/クライアント側において紛失したパケットを復元することから来ることになる。上記の最適化では、レイテンシは、それをレンダリングし始める前にクライアントにおいてフレーム更新全体を収集しなければならないことによってしか発生しないことになる。
例示的な実施形態は、1つまたは複数のFEC最適化技法を利用し得る。第1の最適化技法は、FECを用いる信頼できるトランスポートまたはチャネル98を介したおよび/またはFECを用いる99の非可逆のトランスポートを介したグラフィックス送信に関与する。この場合、グラフィックスモジュールは、トランスポートとしてEDTを検出し得、これは、EDT高信頼能力およびEDT非可逆の能力を与え得る。(有効なコンテンツビットレートを低下させることが望ましくないと仮定すると)グラフィックスモジュールは、ロス率、レイテンシ、利用可能な帯域幅などのQoSのしきい値を超えることをさらに検出し得、それは、ハイブリッドの信頼できる非可逆のモードにさらに切替え得る。
FECを用いる非可逆トランスポートに関して、いくつかのグラフィックス更新が、たとえば、信頼できるまたは順序どおりの配信を保証しない追加のLossy VC Writeインターフェースを使用して不確実に送られる。さらに、FEC要求は、Lossy VC WriteインターフェースへのQoSパラメータに基づいてトランスポートドライバ59によって処理され得る。Lossy VC Writeインターフェースは、送信されているパケットの状態、たとえば、配信済み、紛失、未知などに関して問い合わされ得るチケットを戻す。グラフィックスモジュールは、任意選択で、それがそれを再送信することを決定し得る場合に送信されたデータを手放さないことがある。
FECに失敗した場合、応答、たとえば、パケットのためのNack/Ackが、EDTトランスポート応答チャネルを介して送られる。パケットに関連するチケットの状態が更新され、チケットを保持するグラフィックスモジュールが更新を受信する。さらに、グラフィックスモジュールは、同じQoS要求で紛失データを再送信するか、よりアグレッシブなFECを要求するか、それを代わりに信頼できるトランスポートを介して送るか、または紛失データについて断念することを決定し、代わりにより最近のデータを送る。
FECを用いる信頼できるトランスポートに関して、他のグラフィックス更新は、依然として信頼できるように送られるが、今度は、FECを使用するためにトランスポートドライバ59に命令するQoSパラメータとともにReliable VC Writeインターフェースを使用して送られる。FECが失敗する場合、EDTトランスポートは、FECなしに信頼できるように送られる任意の他のパケットのように自動的に再送信を処理する。グラフィックスモジュールは、パケットの状態を問い合わせることに関係せず、すなわち、チケットは与えられる必要がない。
FECの使用をトリガするロス率およびレイテンシのしきい値は、信頼できる送信対非可逆送信で異なり得ることに留意されたい。たとえば、しきい値は、信頼できる送信の場合により高くなることができる。さらに、たとえば、CPUおよびメモリとのトレードオフを仮定すると、QoSパラメータはまた、異なる構成に使用するために異なるFECアルゴリズムを暗示し得る。さらに、信頼できる送信と非可逆送信との両方のための要求されたFECの程度は、以下でさらに詳細に説明されるように、入力の数による。
別の最適化技法は、適用されるべきFECの程度または積極性を決定するための入力に関する。ロスに関して、より高い平均割合ロスおよびロスのより高い標準偏差のためにより高いFECが使用され得る。レイテンシに関して、ロスと組み合わせてより高いレイテンシのためにより高いFECが使用され得る。帯域幅に関して、より高い推定された帯域幅のためにより高いFECが使用され得る。
さらに、グラフィックスデータの重要性も考慮に入れられ得る。より詳細には、より重要なデータのためにより高いFECが使用され得る。たとえば、より重要なデータは、ビデオのキーフレーム、クライアントキャッシュに大きいビットマップを追加すること、クライアントキャッシュからビットマップを引き出すこと、クライアントキャッシュ中に(テキストのための)グリフを追加すること、クライアントキャッシュからグリフを引き出すこと、塗りつぶし、スクリーンツースクリーンコピー、近接してアクティブに編集されているテキストなどに関係する可能性がある。一方、あまり重要でないグラフィックスデータは、ビデオの中間フレーム、過渡的なビットマップ、アクティブにスクロールされているテキストなどに関係し得る。同様に、グラフィックスデータのサイズ、たとえば、より小さいデータのためにより高いFECも考慮に入れられ得る。小さいパケットに関して、それらを単に複製するのに最も効率的であり得る。上記のように、他の例は、ビットレート(たとえば、より高いFECがより小さい予想されるビットレートとともに使用され得る)、サーバ負荷(たとえば、より高いFECがより多くのスペア容量とともに使用され得る)などを含む。
さらに別のFEC最適化手法は、周波数、タイプ、および/またはユーザ入力のロケーションに関係する。以下は、高速にタイプ入力し、フォントが大きい、スクロールバーまたはウィンドウタイトルバーのエリアをマウスまたはタッチドラッグすること、ウィンドウ制御領域をクリックまたはタップする(最小化する、最大化する、閉じる)こと、アプリを切り替えるためのaltタブまたは他の組合せなどの例である。これらは、グラフィックス応答からより高い即時ビットレートを示し得る。
別のファクタは、注目するアプリケーションである。たとえば、ウェブブラウザまたはメディアプレーヤは、ワードプロセシングアプリまたは単純なテキストエディタよりも高いビットレートを示し得る。他のファクタは、トップレベルのウィンドウサイズ、表示解像度、およびグラフィックスサブシステムコンシューマモジュール構成(たとえば、フレーム毎秒(FPS))を含み得る。
いくつかの実施形態では、機械学習(ML)のアプリケーションは、MLモデルをトレーニングするために上記の入力を使用して実装され得る。これは、別個の機器にオフロードすることによってリアルタイムで行われ得る。MLモデルが複数の作業負荷で動作されていると、簡略化された静的範囲が、作成され、ビットレートのより効率的でリアルタイムの予測のために使用され得る。
ビットレートに関して、予想されるビットレートが増加する場合、FECの程度が減少され、任意選択で、しきい値レベルの上でオフにされ得る。これは、有効なコンテンツビットレートを増加させるが、有効なロスの関連するリスクを伴う。しかしながら、後続の更新が任意の紛失されたグラフィックス更新に取って代わり得るので、これは望ましいことがある。さらに、推定された帯域幅に達し、輻輳を生じるのを回避するために帯域幅の節約が望まれ得る。
一方、予想されるビットレートが減少する場合、FECの程度は増加され得る。不十分なパケットがFEC符号化されたパケットのグループ/バッチを完了するために送信キュー中で利用可能である場合、トランスポートドライバ59は、遅延を回避するためにダミーパケットを送るか、またはパケットを複製し得る。これは、有効なコンテンツビットレートを減少させるが、ロスのリスクも減少させる。さらに、これは、後続の更新がすぐに予想されない場合に望まれる。さらに、十分な帯域幅が予想され得る。
予想されるビットレートしきい値レベルを下回る場合、グラフィックスコンシューマモジュールは、高品質の更新を送り得る。たとえば、ユーザ入力が停止し、それ以上の変化が予想されない場合、「最終の/シャープな」画像が送られ得る。現在の「ロスレス向けに構築された」システムは、検出された変化が停止するとき高品質の更新を送り、これは、常にある程度の遅延を伴い、双方向性を損なう。ユーザ入力などのヒントを使用することにより、システム90は、高品質の更新をすぐに送る必要を検出することが可能になり、双方向性を改善する。高品質の更新は、たとえば、FECを用いて信頼できるように送られ得る。
さらに図11の流れ図210を参照すると、システム90に関する関連する方法態様について次に説明する。ブロック211から始まり、本方法は、ブロック212において、フレームバッファ95を介してクライアントコンピューティングデバイス94にリモートで表示されるべき仮想コンピューティングセッション93を仮想化サーバ91においてホストすることを例示的に含む。本方法は、ブロック213において、FEC帯域幅に対するグラフィカルコンテンツ帯域幅の比に基づいて仮想化サーバ91においてフレームバッファ95内のグラフィカルコンテンツのためのFECデータを生成することと、GUI96内での表示のために仮想チャネル97を介して仮想化サーバからクライアントコンピューティングデバイス94にグラフィカルコンテンツと関連するFECデータとを送ることとをさらに例示的に含む。本方法はまた、上記でさらに説明されたように、ブロック214において仮想チャネル97に関連するQoSパラメータを決定することと、ブロック215、216において、QoSパラメータの変化に基づいて仮想化サーバ91においてFEC帯域幅に対するグラフィカルコンテンツ帯域幅の比を選択的に変更することとを例示的に含む。
図12~図13を参照して、拡張グラフィックスレンダリング能力を与えるためにユーザ入力データに優先度を付け、分割し、異なる仮想チャネルにわたってそれを送ることに関する別の例示的な実施形態について次に説明する。コンピューティングシステム220は、上記で説明されたように、仮想コンピューティングセッション223をホストするように構成された仮想化サーバ221と、GUI226内の仮想コンピューティングセッションをレンダリングするように構成されたクライアントコンピューティングデバイス224とを例示的に含む。クライアントコンピューティングデバイス224は、1つまたは複数のユーザ入力デバイス231から仮想コンピューティングセッションに関連するユーザ入力データのストリームを受信することと、第1のデータパケットおよび第2のデータパケットにストリームを分類することとを行うように構成されたプロセッサ230を例示的に含む。
より詳細には、第1のデータパケットは、第2のデータパケットよりも高い優先度を有する。プロセッサ230はまた、第1の(たとえば、信頼できる)仮想チャネル228を介して仮想化サーバ221に第1の(すなわち、高優先度のまたは重要な)データパケットを送り、第1の仮想チャネル(たとえば、非可逆チャネル)よりも高いそれに関連するパケットロス率を有する第2の仮想チャネル229を介して仮想化サーバに第2の(より低い)データパケットを送るように構成される。仮想化サーバ221は、第1のデータパケットに基づいてユーザ入力データのストリームを再構成し、それを仮想コンピューティングセッション223に注入するために第2のデータパケットを組み立てるように構成されたプロセッサ222を例示的に含む。
図13に示す例では、データパケット1からNのストリングがユーザ入力のストリーム中に含まれ、第1のデータパケット(ここで、パケット1およびN)は、それぞれ、ユーザ入力データのストリームの開始および終了パケットである。第2のデータパケットは、第1のパケットと最後のパケットとの中間のパケット、すなわち、パケット2からN-1である。このようにして、第1のデータパケットは、有利には、ユーザ入力データのストリーム内の基準のポイントまたはアンカーポイントを定義し、クライアントコンピューティングデバイス224は、(たとえば、開始パケットがパケット1であり、終了パケットがパケットNである)アンカーポイントへの参照とともに第2の仮想チャネル229を介して仮想化サーバ221に第2のデータパケットを送り得る。したがって、プロセッサ222は、有利には、アンカーポイント(すなわち、それぞれ、開始および終了データパケット1およびN)への参照に基づいてユーザ入力データのストリームを再構成し、それを仮想コンピューティングセッション223に注入するために第2のデータパケット(すなわち、パケット2からN-1)を組み立て得る。異なる実施形態では、高優先度パケットを選択し、これらのパケットを参照するための他の手法が使用され得ることに留意されたい。
いくつかの例示的な実施形態では、プロセッサ230はまた、所望される場合、第1のチャネル228を介した通信が遅延される場合に冗長性を与え、ユーザ入力データストリームのより速い再構成を保証するのを助けるために第1のデータチャネル228だけでなく第2の仮想チャネル229を介して第1のデータパケットのうちの1つまたは複数を送るようにさらに構成され得る。また、上記でさらに説明されたように、プロセッサ230はまた有利には、所望される場合、送るより前に第1のデータパケットおよび第2のデータパケットにFECを適用し、さらに、データパケットロス中のスパイクなどに基づいて第1のデータパケットおよび第2のデータパケットの一方または両方に適用されるFECのレベルを選択的に変更し得る。
上位入力のストリームを作成するユーザ入力イベントは、様々な異なるタイプのユーザ入力デバイス231から来るものであり得る。たとえば、ユーザ入力デバイス231がキーボードである場合、第1のデータパケットは、キーボードを介したキーボードイベント入力に対応し得る。ユーザ入力デバイス231がタッチスクリーンである場合、たとえば、第1のデータパケットは、タッチスクリーンを介したタッチアップおよびタッチダウンイベント(たとえば、指がディスプレイにタッチするかまたはそれから離されるときの)入力に対応し得、一方、第2のデータパケットは、タッチスクリーンを介したタッチムーブイベント(たとえば、ディスプレイにタッチしている指がディスプレイに沿って移動されるときの)入力に対応し得る。ユーザ入力デバイス231がマウスである別の例示的な実施形態では、第1のデータパケットは、マウスを介したマウスボタンアップおよびマウスボタンダウンイベント(たとえば、マウスボタンが押下されるかまたは解放されることの)入力に対応し得、一方、第2のデータパケットは、マウスを介したマウスドラッグ(たとえば、マウスボタンが保持され、および/またはポインタが移動される)またはマウスホイールイベント(たとえば、マウスホイールがスクロールアップまたはダウンされる)入力に対応し得る。ユーザ入力デバイス231が電子ペンまたはスタイラスであるさらに別の例示的な実施形態では、第1のデータパケットは、電子ペンを介したペンアップおよびペンダウンイベント(たとえば、電子ペンがディスプレイにタッチするかまたはそれから離されるときの)入力に対応し得、一方、第2のデータパケットは、電子ペンを介したペンドラッグイベント(たとえば、電子ペンがディスプレイにタッチし、ポイントがディスプレイに沿って移動されるときの)入力に対応し得る。しかしながら、異なる実施形態では、第1の(高優先度の)データパケットおよび第2の(より低い優先度の)データパケットの他の入力デバイスおよび指定が使用され得ることに留意されたい。
前述は、様々な実装例を参照してさらに理解されよう。ここで再度、これらの例示的な実装形態は、図5に示されるフレームワークのコンテキストで与えられるが、これらの技法は、同様に他の仮想化アーキテクチャ内に適用され得る。ロスおよびレイテンシのいくつかのしきい値を上回る場合、使用され得る1つ手法は、重要な入力イベント、たとえば、キーボードイベント、タッチダウン、タッチアップ、マウスボタンダウン、マウスボタンアップなどを信頼できるように送ることである。さらに、あまり重要でない入力イベント、たとえば、タッチムーブ、マウスドラッグ、マウスホイール、ペンドラッグは、非可逆的な方法で送られる。さらに、帯域幅への影響は無視できるものになるが、冗長性は、ロスおよびレイテンシの条件における滑らかなユーザエクスペリエンスを保証することになるので、FECまたは単純なパケットの複製は、任意選択で、信頼できるユーザ入力の送信と非可逆的なユーザ入力の送信との一方または両方に適用され得る。これは、上記で説明された低い予想されるビットレート、小さいデータサイズおよび重要なデータファクタに一致する。
上記のように、ユーザ入力は、優先度を付けられ、重要な入力(パケット)と重要でない入力(パケット)とに分類され、それぞれ、信頼できるストリーム228と信頼できない(非可逆)ストリーム229とを介して送られ得る。信頼できるストリームと非可逆ストリームとは、独立しており、非同期であるので、信頼できる入力パケット対非可逆入力パケットはホストにおいて順不同で受信され得、これは、ユーザ入力のセマンティクスを破壊し得る。したがって、重要でない非可逆パケットごとに、クライアントコンピューティングデバイス224は、シーケンス番号によってあらかじめ必要で重要な信頼できるパケットを識別し得る。これは、パケット形成のときにクライアントコンピューティングデバイス224において指定される。重要なパケットは、入力シーケンスの「始まり」、たとえば、ドラッグを始める前のマウスダウンを識別し得る。
非可逆パケットは、ホストにおいてキャッシュされ、それぞれの重要であらかじめ必要なパケットも受信されるまで再生されないことがある(ホストされたアプリ/デスクトップに注入されないことがある)。シーケンスを「終わらせる」重要なパケット、たとえば、マウスボタンアップが受信されると、その後受信され、今は「終わった」必要条件を参照し得るあらゆる重要でない非可逆パケットは破棄される。たとえば、これは、シーケンスを終わらせるマウスボタンアップが受信された後に受信された場合に破棄され得るマウスドラッグで発生し得る。
機会主義的に重要な入力は、いくつかの実装形態では、信頼できるストリームと非可逆ストリームとの両方を介して送られ得る。これは、信頼できるパケットと非可逆パケットとを伴う入力シーケンスが開始するときにホスト側での潜在的な同期ラグをさらに低減する。たとえば、マウスダウンイベントは、信頼できるトランスポートと非可逆トランスポートとの両方を介して送られ得る。上記で説明されたように、マウスドラッグは、対応するシーケンスを開始するマウスダウンが最初に受信される前にホストにおいて保持される。有利には、マウスダウンはマウスドラッグとともに必要条件として配信される場合、ホストは、入力シーケンスを直ちに再生/注入し始めることができる。これは、たとえば、信頼できるストリームと非可逆ストリームとが別様にルーティングされる場合、異なるQoSがトランジットの間にそれらに適用される場合、および/またはパケットが他の理由のために順不同で到着する傾向がある場合に有用であり得る。
追加のFECが、ロス中のスパイクを処理するために同様にある程度の遅延とともに実行され得る。この追加のFEC(またはパケットの複製)が適用される遅延は、ロスのスパイクの持続時間の平均または標準偏差のうちの少なくとも1つに基づいて計算され得る。現代のネットワークでは、ロスのスパイクは、たとえば、確率干渉により発生し得、ここで、損失は、拡散するのではなく連続し、平均ロス割合に一致する。たとえば、5%の平均パケットロスをもつネットワークでは、ロスが2秒の持続時間の間50%にあるロスのスパイクがあり得る。したがって、最初のFECが大きく、5%のパケットロスをカバーするのに十分であり得るが、スパイク中の20%の損失をカバーすることは不十分であり得る。したがって、2秒後に追加のFEC(または複製)を適用することは、場合によっては遅延を伴うが、パケットが配信されるチャンスを改善することになる。連続適用は、スパイクと重なり得るので、これは追加のFECを連続的に適用するよりも良好であり得る。
FECの調節またはスロットリングは、上記で説明された手法と同様の手法を使用して実行され得る。たとえば、クライアントコンピューティングデバイス224は、単語または文のタイピングを監視し、不完全な句または文法を検出して、高いレベルの信頼性で追加の即時のユーザ入力を決定(予期)し得る。言い換えれば、クライアントコンピューティングデバイス224は、不完全な単語または文を予測し、それに応じてFECの程度(たとえば、より途切れた単語/文のためにより大きいFEC)をチューニングし得る。
入力のサイズが一般に小さい場合、FECは、帯域幅およびCPUに対して無視できる影響しか有しないが、信頼できる非可逆送信と組み合わせると、双方向性に対して有意な影響を有する。テスト結果およびデモビデオは、5%のパケットロスで300msのRTTで実行された。EDT高信頼トランスポート単独を介した同じ対話に対してウィンドウの移動、スクロール、ペイントおよび他のタイプの対話で約3倍の双方向性の改善が達成された。
FECは、いくつかの実施形態では、対話型トラフィックのみ、たとえば、上記で説明されたThinwireグラフィックスと同様のリアルタイムオーディオまたはマルチメディアVCに適用され得る。バルクデータ転送VC、たとえば、クライアントドライブマッピング(CDM VCは、一般に、FECを要求するQoSの利益を使用する必要はなく、したがって、帯域幅への影響を最小化するが、FECは、たとえば、追加の帯域幅の使用を犠牲にしてリモートファイル転送の速度を増加させることが所望される場合に、いくつかの実施形態で同様に使用され得る。
図14の流れ図140を参照して、システム220に関する方法態様について次に説明する。ブロック141において始まり、本方法は、ブロック142において、仮想化サーバ221からクライアントコンピューティングデバイス224において仮想コンピューティングセッション223にリモートでアクセスすることと、ブロック143において、クライアントコンピューティングデバイス224において仮想コンピューティングセッションに関連するユーザ入力データのストリームを受信し、第1のデータパケットおよび第2のデータパケットにストリームを分類することとを例示的に含む。上記のように、第1のデータパケットは、第2のデータパケットよりも高い優先度を有する。本方法はまた、ブロック144において、第1の仮想チャネル228を介してクライアントコンピューティングデバイス224から仮想化サーバ221に第1のデータパケットを送ることと、ブロック145において、第1の仮想チャネルよりも高いそれに関連するパケットロス率を有する第2の仮想チャネル229を介してクライアントコンピューティングデバイスから仮想化サーバに第2のデータパケットを送ることとを例示的に含む。したがって、仮想化サーバ221は、上記でさらに説明されたように、有利には、第1のデータパケットに基づいてユーザ入力データのストリームを再構成し、それを仮想コンピューティングセッション223に注入するために第2のデータパケットを組み立て得る。図14の方法は、ブロック146において例示的に終わる。
上記の説明および関連する図面で提示する教示の利益を有する当業者は、多くの変更および他の実施形態を思い浮かぶであろう。したがって、上記は、例示的な実施形態に限定されるものではなく、変更および他の実施形態が、添付の特許請求の範囲に含まれるものとすることを理解されたい。

Claims (21)

  1. メモリと、
    フレームバッファを介してクライアントデバイスにリモートで表示されるべき仮想コンピューティングセッションをホストすることであって、前記クライアントデバイスは、グラフィカルユーザインターフェース(GUI)を介して前記仮想コンピューティングセッションをレンダリングするように構成される、ホストすることと、
    前方誤り訂正(FEC)帯域幅に対するグラフィカルコンテンツ帯域幅の比に基づいて前記フレームバッファ内のグラフィカルコンテンツのためのFECデータを生成することと、
    少なくとも1つの仮想チャネルに関連するサービス品質(QoS)パラメータを決定することと、
    前記QoSパラメータの変化および前記フレームバッファ内のグラフィカルコンテンツデータの優先度に基づいてFEC帯域幅に対するグラフィカルコンテンツ帯域幅の前記比を調整することと、
    前記GUI内での表示のために前記少なくとも1つの仮想チャネルを介して前記クライアントデバイスに前記グラフィカルコンテンツと前記調整されたFECデータとを送ることと
    を行うように前記メモリと協働するプロセッサと
    を備えるコンピューティングデバイス。
  2. 前記クライアントデバイスに送られた前記グラフィカルコンテンツは、パケットに分割され、前記QoSパラメータは、パケットロス率を備え、FEC帯域幅に対するグラフィカルコンテンツ帯域幅の前記比は、前記パケットロス率が増加するにつれて減少する請求項1に記載のコンピューティングデバイス。
  3. 前記プロセッサは、前記少なくとも1つの仮想チャネルの全体的な帯域幅を変更することなしにFEC帯域幅に対するグラフィカルコンテンツ帯域幅の前記比を調整する請求項1に記載のコンピューティングデバイス。
  4. 前記少なくとも1つの仮想チャネルは、信頼できるチャネルと非可逆チャネルとを備え、前記信頼できるチャネル上でのFEC帯域幅に対するグラフィカルコンテンツ帯域幅の比は、前記非可逆チャネル上でのFEC帯域幅に対するグラフィカルコンテンツ帯域幅の比より高い請求項1に記載のコンピューティングデバイス。
  5. 前記QoSパラメータは、ネットワークレイテンシを備え、FEC帯域幅に対するグラフィカルコンテンツ帯域幅の前記比は、ネットワークレイテンシが増加するにつれて減少する請求項1に記載のコンピューティングデバイス。
  6. 前記QoSパラメータは、前記少なくとも1つの仮想チャネルのための推定された帯域幅を備える請求項1に記載のコンピューティングデバイス。
  7. 前記QoSパラメータは、前記少なくとも1つの仮想チャネルに関連する予想されるビットレートを備え、FEC帯域幅に対するグラフィカルコンテンツ帯域幅の前記比は、前記予想されるビットレートが減少するにつれて減少する請求項1に記載のコンピューティングデバイス。
  8. 前記QoSパラメータは、前記コンピューティングデバイスに関連する負荷を備える請求項1に記載のコンピューティングデバイス。
  9. 前記プロセッサは、前記フレームバッファ内の前記グラフィカルコンテンツデータのサイズに基づいてFEC帯域幅に対するグラフィカルコンテンツ帯域幅の前記比を選択的に変更するようにさらに構成された請求項1に記載のコンピューティングデバイス。
  10. フレームバッファを介してクライアントデバイスにリモートで表示されるべき、サーバにおいてホストされる仮想コンピューティングセッションについて、前記クライアントデバイスが、グラフィカルユーザインターフェース(GUI)を介して前記仮想コンピューティングセッションをレンダリングするように構成された状態で、前方誤り訂正(FEC)帯域幅に対するグラフィカルコンテンツ帯域幅の比に基づいて前記サーバ前記フレームバッファ内のグラフィカルコンテンツのためのFECデータを生成するステップと、
    少なくとも1つの仮想チャネルに関連するサービス品質(QoS)パラメータを決定するステップと、
    前記QoSパラメータの変化および前記フレームバッファ内のグラフィカルコンテンツデータの優先度に基づいて前記サーバにおいてFEC帯域幅に対するグラフィカルコンテンツ帯域幅の前記比を調整するステップと、
    前記GUI内でのレンダリングのために少なくとも1つの仮想チャネルを介して前記サーバから前記クライアントデバイスに前記グラフィカルコンテンツと関連するFECデータとを送るステップと
    を備える方法。
  11. 前記クライアントデバイスに送られた前記グラフィカルコンテンツは、パケットに分割され、前記QoSパラメータは、パケットロス率を備え、FEC帯域幅に対するグラフィカルコンテンツ帯域幅の前記比は、前記パケットロス率が増加するにつれて減少する請求項10に記載の方法。
  12. 選択的に変更するステップは、前記少なくとも1つの仮想チャネルの全体的な帯域幅を変更することなしにFEC帯域幅に対するグラフィカルコンテンツ帯域幅の前記比を調整するステップを備える請求項10に記載の方法。
  13. 前記少なくとも1つの仮想チャネルは、信頼できるチャネルと非可逆チャネルとを備え、前記信頼できるチャネル上でのFEC帯域幅に対するグラフィカルコンテンツ帯域幅の比は、前記非可逆チャネル上でのFEC帯域幅に対するグラフィカルコンテンツ帯域幅の比より高い請求項10に記載の方法。
  14. 前記QoSパラメータは、ネットワークレイテンシを備え、FEC帯域幅に対するグラフィカルコンテンツ帯域幅の前記比は、ネットワークレイテンシが増加するにつれて減少する請求項10に記載の方法。
  15. フレームバッファを介してリモートで表示されるべき仮想コンピューティングセッションをホストするように構成されたサーバと、
    前記サーバから前記仮想コンピューティングセッションにリモートでアクセスすることと、グラフィカルユーザインターフェース(GUI)を介して前記仮想コンピューティングセッションをレンダリングすることとを行うように構成されたクライアントデバイスと
    を備え、
    前記サーバは、
    前方誤り訂正(FEC)帯域幅に対するグラフィカルコンテンツ帯域幅の比に基づいて前記フレームバッファ内のグラフィカルコンテンツのためのFECデータを生成することと、
    少なくとも1つの仮想チャネルに関連するサービス品質(QoS)パラメータを決定することと、
    前記QoSパラメータの変化および前記フレームバッファ内のグラフィカルコンテンツデータの優先度に基づいてFEC帯域幅に対するグラフィカルコンテンツ帯域幅の前記比を調整することと、
    前記GUI内での表示のために前記少なくとも1つの仮想チャネルを介して前記クライアントデバイスに前記グラフィカルコンテンツと前記調整されたFECデータとを送ることと
    を行うようにさらに構成されたコンピューティングシステム。
  16. 前記クライアントデバイスに送られた前記グラフィカルコンテンツは、パケットに分割され、前記QoSパラメータは、パケットロス率を備え、FEC帯域幅に対するグラフィカルコンテンツ帯域幅の前記比は、前記パケットロス率が増加するにつれて減少する請求項15に記載のコンピューティングシステム。
  17. 前記サーバは、前記少なくとも1つの仮想チャネルの全体的な帯域幅を変更することなしにFEC帯域幅に対するグラフィカルコンテンツ帯域幅の前記比を調整する請求項15に記載のコンピューティングシステム。
  18. 前記少なくとも1つの仮想チャネルは、信頼できるチャネルと非可逆チャネルとを備え、前記信頼できるチャネル上でのFEC帯域幅に対するグラフィカルコンテンツ帯域幅の比は、前記非可逆チャネル上でのFEC帯域幅に対するグラフィカルコンテンツ帯域幅の比より高い請求項15に記載のコンピューティングシステム。
  19. 前記QoSパラメータは、ネットワークレイテンシを備え、FEC帯域幅に対するグラフィカルコンテンツ帯域幅の前記比は、ネットワークレイテンシが増加するにつれて減少する請求項15に記載のコンピューティングシステム。
  20. サーバでホストされている仮想コンピューティングセッションを、グラフィカルユーザーインターフェース(GUI)を介して前記仮想コンピューティングセッションをレンダリングするように構成されたクライアントデバイスにフレームバッファを介してリモートで表示する場合、前記サーバが、信頼できる仮想チャネルについての前方誤り訂正(FEC)帯域幅に対するグラフィカルコンテンツ帯域幅の第1の比、および非可逆の仮想チャネルについてのFEC帯域幅に対するグラフィカルコンテンツ帯域幅の第2の比に基づいて前記フレームバッファ内のコンテンツに対するグラフィカルなFECデータを生成するステップと、
    前記信頼できる仮想チャネルと前記非可逆の仮想チャネルとに関連付けられたサービス品質(QoS)パラメータを決定するステップと、
    前記QoSパラメータの変更に基づいて、FEC帯域幅に対するグラフィカルコンテンツ帯域幅の第1および第2の比を調整するステップと、
    前記GUI内に表示するために、前記信頼できる非可逆の仮想チャネルを介してグラフィカルコンテンツおよび調整された前記FECデータを前記クライアントデバイスに送信するステップと
    を含み、前記信頼できる仮想チャネル上でのFEC帯域幅に対するグラフィカルコンテンツ帯域幅の比は、前記非可逆の仮想チャネル上でのFEC帯域幅に対するグラフィカルコンテンツ帯域幅の比よりも高い、方法。
  21. サーバでホストされている仮想コンピューティングセッションを、グラフィカルユーザーインターフェース(GUI)を介して前記仮想コンピューティングセッションをレンダリングするように構成されたクライアントデバイスにフレームバッファを介してリモートで表示する場合、前記サーバが、前方誤り訂正(FEC)帯域幅に対するグラフィカルコンテンツ帯域幅の比に基づいて前方フレームバッファ内のグラフィカルコンテンツに対するFECデータを生成するステップと、
    少なくとも1つの仮想チャネルに関連付けられたサービス品質(QoS)パラメータを決定するステップと、
    前記QoSパラメータの変更と前記フレームバッファ内のグラフィカルコンテンツデータのサイズとに基づいて、FEC帯域幅に対するグラフィカルコンテンツ帯域幅の比を調整するステップと、
    前記GUI内に表示するために、前記グラフィカルコンテンツおよび調整された前記FECデータを、前記少なくとも1つの仮想チャネルを介して前記クライアントデバイスに送信するステップと
    を含む、方法。
JP2020561665A 2018-05-04 2019-05-03 ユーザおよびシステムヒントを用いて最適化される階層表示リモーティングを与えるコンピュータシステムおよび関連する方法 Active JP7023384B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862667072P 2018-05-04 2018-05-04
US62/667,072 2018-05-04
PCT/US2019/030650 WO2019213556A1 (en) 2018-05-04 2019-05-03 Computer system providing hierarchical display remoting optimized with user and system hints and related methods

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2021000452A Division JP2021073760A (ja) 2018-05-04 2021-01-05 ユーザおよびシステムヒントを用いて最適化される階層表示リモーティングを与えるコンピュータシステムおよび関連する方法

Publications (2)

Publication Number Publication Date
JP2021517325A JP2021517325A (ja) 2021-07-15
JP7023384B2 true JP7023384B2 (ja) 2022-02-21

Family

ID=66589904

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2020561665A Active JP7023384B2 (ja) 2018-05-04 2019-05-03 ユーザおよびシステムヒントを用いて最適化される階層表示リモーティングを与えるコンピュータシステムおよび関連する方法
JP2021000452A Pending JP2021073760A (ja) 2018-05-04 2021-01-05 ユーザおよびシステムヒントを用いて最適化される階層表示リモーティングを与えるコンピュータシステムおよび関連する方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2021000452A Pending JP2021073760A (ja) 2018-05-04 2021-01-05 ユーザおよびシステムヒントを用いて最適化される階層表示リモーティングを与えるコンピュータシステムおよび関連する方法

Country Status (7)

Country Link
US (4) US11036525B2 (ja)
EP (3) EP3825850B1 (ja)
JP (2) JP7023384B2 (ja)
CN (2) CN112463277B (ja)
AU (3) AU2019262610B2 (ja)
CA (1) CA3097526A1 (ja)
WO (1) WO2019213556A1 (ja)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10877898B2 (en) 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
US11824785B2 (en) 2018-05-04 2023-11-21 Citrix Systems, Inc. Systems and methods for remote computing session display based upon user input event prioritization
CN112463277B (zh) 2018-05-04 2022-06-24 茨特里克斯系统公司 提供利用用户和系统提示优化的分层显示远程处理的计算机系统及相关方法
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
WO2020000136A1 (en) 2018-06-25 2020-01-02 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of i/o requests
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US20200233588A1 (en) * 2019-01-23 2020-07-23 Alibaba Group Holding Limited Efficient lightweight storage nodes
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
US10970212B2 (en) 2019-02-15 2021-04-06 Alibaba Group Holding Limited Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones
US11061834B2 (en) 2019-02-26 2021-07-13 Alibaba Group Holding Limited Method and system for facilitating an improved storage system by decoupling the controller from the storage medium
US10958705B2 (en) * 2019-02-27 2021-03-23 Citrix Systems, Inc. Client computing device providing end-to-end quality of service (QoS) control for software as a service (SaaS) sessions and related methods
US11263029B2 (en) 2019-03-27 2022-03-01 Citrix Systems, Inc. Providing user interface (UI) elements having scrollable content in virtual machine sessions at reduced latency and related methods
US11263028B2 (en) 2019-03-27 2022-03-01 Citrix Systems, Inc. Providing user interface (UI) elements in virtual machine sessions at reduced latency
US11281478B2 (en) 2019-03-27 2022-03-22 Citrix Systems, Inc. Providing user interface (UI) elements having an ordered hierarchy of graphical control elements in virtual machine sessions at reduced latency and related methods
US10891065B2 (en) 2019-04-01 2021-01-12 Alibaba Group Holding Limited Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive
US10922234B2 (en) 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US10908960B2 (en) 2019-04-16 2021-02-02 Alibaba Group Holding Limited Resource allocation based on comprehensive I/O monitoring in a distributed storage system
US11169873B2 (en) 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11074124B2 (en) 2019-07-23 2021-07-27 Alibaba Group Holding Limited Method and system for enhancing throughput of big data analysis in a NAND-based read source storage
US11145334B2 (en) * 2019-08-29 2021-10-12 International Business Machines Corporation Composite video frame replacement
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
CN111290815B (zh) * 2020-01-21 2022-08-02 湖南麒麟信安科技股份有限公司 融合共享用户环境、容器和虚拟机的多模式虚拟桌面的方法及系统
CA3116392A1 (en) * 2020-02-19 2021-08-19 Citrix Systems, Inc. Migration of a desktop workload
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11394654B2 (en) * 2020-03-23 2022-07-19 Telefonaktiebolaget Lm Ericsson (Publ) Data management between local client and cloud based application
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11349936B2 (en) 2020-05-28 2022-05-31 Citrix Systems, Inc. System and related methods providing channel switching between appliances
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11355139B2 (en) * 2020-09-22 2022-06-07 International Business Machines Corporation Real-time vs non-real time audio streaming
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11683126B2 (en) * 2021-03-31 2023-06-20 Versa Networks, Inc. Data packet traffic conditioning through multiple lossy data paths with forward error correction
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
US11700289B2 (en) * 2021-05-31 2023-07-11 Citrix Systems, Inc. User experience analysis for multi-channel remote desktop environments
US11489620B1 (en) 2021-06-09 2022-11-01 Microsoft Technology Licensing, Llc Loss recovery using streaming codes in forward error correction
WO2022260796A1 (en) * 2021-06-09 2022-12-15 Microsoft Technology Licensing, Llc Loss recovery using streaming codes in forward error correction
CN113760753B (zh) * 2021-08-19 2023-07-18 东北大学 基于灰盒模糊技术的quic协议测试方法
CN114035719B (zh) * 2021-10-09 2024-04-26 湖南麒麟信安科技股份有限公司 一种远程桌面流畅度性能评价方法、系统及介质
CN114564135B (zh) * 2022-01-12 2023-08-29 中国电子科技集团公司第十研究所 航空机载软件交互式通信节点时延测试工具
US20230236854A1 (en) * 2022-01-26 2023-07-27 Citrix Systems, Inc. User interface for delivered virtual desktop
TWI812275B (zh) * 2022-06-13 2023-08-11 緯創資通股份有限公司 使用者介面同步捲動系統及使用者介面同步捲動方法
US11888681B1 (en) * 2022-10-13 2024-01-30 Hewlett Packard Enterprise Development Lp Network switch stack failover configuration management
CN117608590B (zh) * 2024-01-24 2024-04-09 长沙科梁科技有限公司 数据组包解包方法、装置和计算机设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130219047A1 (en) 2012-02-21 2013-08-22 Verizon Patent And Licensing, Inc. Desktop control of traffic transmitted to a user device
US20140286440A1 (en) 2013-03-19 2014-09-25 Nvidia Corporation Quality of service management system and method of forward error correction

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6081623A (en) 1995-10-11 2000-06-27 Citrix Systems, Inc. Method for lossless bandwidth compression of a series of glyphs
JP3375537B2 (ja) * 1998-01-23 2003-02-10 沖電気工業株式会社 スペクトラム拡散送信機及び受信機
US6151295A (en) * 1998-02-26 2000-11-21 Wavesat Telecom Inc. OFDM receiving system
EP1009138B8 (en) * 1998-11-30 2006-03-08 Matsushita Electric Industrial Co., Ltd. Data transmission method
JP2001086153A (ja) * 1999-09-09 2001-03-30 Canon Inc データ通信装置、データ通信システム、データ通信方法及び記憶媒体
WO2005034521A1 (en) * 2003-10-06 2005-04-14 Koninklijke Philips Electronics, N.V. Digital television transmission with error correction
EP1605641A1 (en) * 2004-06-08 2005-12-14 Matsushita Electric Industrial Co., Ltd. Mapping of shared physical channels depending on the quality of service class
CN101120333A (zh) * 2005-01-05 2008-02-06 戴维克斯股份有限公司 用于远程用户界面的系统和方法
US8935316B2 (en) 2005-01-14 2015-01-13 Citrix Systems, Inc. Methods and systems for in-session playback on a local machine of remotely-stored and real time presentation layer protocol data
US8423673B2 (en) * 2005-03-14 2013-04-16 Citrix Systems, Inc. Method and apparatus for updating a graphical display in a distributed processing environment using compression
US8171169B2 (en) * 2005-03-14 2012-05-01 Citrix Systems, Inc. Method and apparatus for updating a graphical display in a distributed processing environment
US20070174429A1 (en) 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US8713195B2 (en) * 2006-02-10 2014-04-29 Cisco Technology, Inc. Method and system for streaming digital video content to a client in a digital video network
US8701010B2 (en) 2007-03-12 2014-04-15 Citrix Systems, Inc. Systems and methods of using the refresh button to determine freshness policy
US8504775B2 (en) 2007-03-12 2013-08-06 Citrix Systems, Inc Systems and methods of prefreshening cached objects based on user's current web page
US7809818B2 (en) 2007-03-12 2010-10-05 Citrix Systems, Inc. Systems and method of using HTTP head command for prefetching
US7783757B2 (en) 2007-03-12 2010-08-24 Citrix Systems, Inc. Systems and methods of revalidating cached objects in parallel with request for object
US7584294B2 (en) 2007-03-12 2009-09-01 Citrix Systems, Inc. Systems and methods for prefetching objects for caching using QOS
US7720936B2 (en) 2007-03-12 2010-05-18 Citrix Systems, Inc. Systems and methods of freshening and prefreshening a DNS cache
EP1978664A1 (en) * 2007-04-05 2008-10-08 Alcatel Lucent Transmitting data packets over an air interface
US8200896B2 (en) * 2008-06-06 2012-06-12 Microsoft Corporation Increasing remote desktop performance with video caching
US8856783B2 (en) 2010-10-12 2014-10-07 Citrix Systems, Inc. Allocating virtual machines according to user-specific virtual machine metrics
US8578076B2 (en) 2009-05-01 2013-11-05 Citrix Systems, Inc. Systems and methods for establishing a cloud bridge between virtual storage resources
US8171154B2 (en) * 2009-09-29 2012-05-01 Net Power And Light, Inc. Method and system for low-latency transfer protocol
WO2011072049A2 (en) 2009-12-08 2011-06-16 Citrix Systems, Inc. Systems and methods for a client-side remote presentation of a multimedia stream
US8769428B2 (en) 2009-12-09 2014-07-01 Citrix Systems, Inc. Methods and systems for generating a combined display of taskbar button group entries generated on a local machine and on a remote machine
US8949408B2 (en) * 2009-12-18 2015-02-03 Microsoft Corporation Session monitoring of virtual desktops in a virtual machine farm
US9210436B2 (en) * 2010-01-11 2015-12-08 Sungkyunkwan University Foundation For Corporate Collaboration Distributed video coding/decoding method, distributed video coding/decoding apparatus, and transcoding apparatus
JP6067378B2 (ja) * 2010-01-28 2017-01-25 トムソン ライセンシングThomson Licensing 再送決定する方法及び装置
US8738986B2 (en) * 2010-03-05 2014-05-27 Microsoft Corporation Remote presentation over lossy transport with forward error correction
US20110302506A1 (en) * 2010-06-07 2011-12-08 Peter Noyes Method for Multi-User Collaboration on Visual Content Based Upon the Exchange of Session Data Objects Including New Parameters
US8713474B2 (en) 2010-10-05 2014-04-29 Citrix Systems, Inc. Providing user interfaces and window previews for hosted applications
US8462632B1 (en) * 2010-12-28 2013-06-11 Amazon Technologies, Inc. Network traffic control
US8866701B2 (en) 2011-03-03 2014-10-21 Citrix Systems, Inc. Transparent user interface integration between local and remote computing environments
US9210213B2 (en) 2011-03-03 2015-12-08 Citrix Systems, Inc. Reverse seamless integration between local and remote computing environments
US8902248B1 (en) * 2011-07-14 2014-12-02 Vmware, Inc. Method and system for measuring display performance of a remote application
US20150046599A1 (en) * 2011-09-27 2015-02-12 Google Inc. Multichannel communication systems and methods of using the same
US20130093776A1 (en) * 2011-10-14 2013-04-18 Microsoft Corporation Delivering a Single End User Experience to a Client from Multiple Servers
TW201346656A (zh) * 2012-05-02 2013-11-16 Kye Systems Corp 觸控輸入裝置的訊號發送方法
US9798508B2 (en) * 2012-07-16 2017-10-24 Microsoft Technology Licensing, Llc Implementing previously rendered frame buffer information in a customized GUI display
US9513950B2 (en) * 2012-07-25 2016-12-06 Vmware, Inc. Dynamic resource configuration based on context
US9575649B2 (en) * 2013-04-25 2017-02-21 Vmware, Inc. Virtual touchpad with two-mode buttons for remote desktop client
JP2015076788A (ja) * 2013-10-10 2015-04-20 ソニー株式会社 送信装置、受信装置、送信方法、及び受信方法
US9986242B2 (en) * 2014-01-28 2018-05-29 Vmware, Inc. Enhanced image encoding in a virtual desktop infrastructure environment
JP2015173337A (ja) * 2014-03-11 2015-10-01 日本放送協会 送信装置、受信装置、及び検査ビット数決定方法
US9621445B2 (en) * 2015-01-25 2017-04-11 Valens Semiconductor Ltd. Utilizing known data for status signaling
WO2016126256A1 (en) * 2015-02-05 2016-08-11 Citrix Systems, Inc. Detecting content types and window regions in composited display frames
US10062181B1 (en) 2015-07-30 2018-08-28 Teradici Corporation Method and apparatus for rasterizing and encoding vector graphics
US20170094296A1 (en) * 2015-09-28 2017-03-30 Cybrook Inc. Bandwidth Adjustment For Real-time Video Transmission
US11102516B2 (en) * 2016-02-15 2021-08-24 Nvidia Corporation Quality aware error concealment method for video and game streaming and a viewing device employing the same
CN112463277B (zh) * 2018-05-04 2022-06-24 茨特里克斯系统公司 提供利用用户和系统提示优化的分层显示远程处理的计算机系统及相关方法
US11579830B2 (en) * 2018-10-31 2023-02-14 International Business Machines Corporation Displaying a window of a remote desktop computer on a mobile device with a native layout

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130219047A1 (en) 2012-02-21 2013-08-22 Verizon Patent And Licensing, Inc. Desktop control of traffic transmitted to a user device
US20140286440A1 (en) 2013-03-19 2014-09-25 Nvidia Corporation Quality of service management system and method of forward error correction

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
高畑 一夫 外2名,「無線ネットワークにおけるマルチメディア通信のためのQOS制御」,情報処理学会論文誌,社団法人情報処理学会,2003年03月15日,第44巻,第3号,pp.580-586

Also Published As

Publication number Publication date
JP2021073760A (ja) 2021-05-13
JP2021517325A (ja) 2021-07-15
US11036525B2 (en) 2021-06-15
EP3835955A1 (en) 2021-06-16
AU2019262610B2 (en) 2022-03-03
EP3825850A1 (en) 2021-05-26
US10824450B2 (en) 2020-11-03
AU2020257147A1 (en) 2020-11-26
AU2022203573A1 (en) 2022-06-16
CN112463277B (zh) 2022-06-24
US11138026B2 (en) 2021-10-05
US11294697B2 (en) 2022-04-05
AU2020257147B2 (en) 2021-06-17
EP3788478A1 (en) 2021-03-10
WO2019213556A1 (en) 2019-11-07
EP3825850B1 (en) 2024-08-07
US20210011745A1 (en) 2021-01-14
AU2019262610A1 (en) 2020-11-19
US20190342426A1 (en) 2019-11-07
CA3097526A1 (en) 2019-11-07
US20190339997A1 (en) 2019-11-07
US20190339998A1 (en) 2019-11-07
CN112074812A (zh) 2020-12-11
CN112463277A (zh) 2021-03-09

Similar Documents

Publication Publication Date Title
JP7023384B2 (ja) ユーザおよびシステムヒントを用いて最適化される階層表示リモーティングを与えるコンピュータシステムおよび関連する方法
US11693673B2 (en) Providing user interface (UI) elements having scrollable content in virtual machine sessions at reduced latency and related methods
EP3739848B1 (en) Systems and methods for identifying a context of an endpoint accessing a plurality of microservices
US11693672B2 (en) Providing user interface (UI) elements in virtual machine sessions at reduced latency
US11824785B2 (en) Systems and methods for remote computing session display based upon user input event prioritization
US20200374234A1 (en) Systems and methods for managing streams of packets via intermediary devices
US11693674B2 (en) Providing user interface (UI) elements having an ordered hierarchy of graphical control elements in virtual machine sessions at reduced latency and related methods
US11360600B2 (en) System and method for early media buffering using prediction of user behavior
US20240106761A1 (en) Adaptive scaling of buffers for communication sessions
CN113302588A (zh) 搜索SaaS虚拟应用

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201228

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201228

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20201228

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20210318

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210525

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210820

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210907

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211207

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220111

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220208

R150 Certificate of patent or registration of utility model

Ref document number: 7023384

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150