IP Library Granted Patent US 8,918,456
Granted Patent B2
US 8,918,456 · App. 13/786,419 · Granted Dec 23, 2014

Systems and algorithm for interfacing with a virtualized computing service over a network using a lightweight client

Inventors: Stephen D Vilke (Danville, CA); Peter Badger (San Anselmo, CA); Dan Roncadin (San Francisco, CA); Rudy Willis (Clayton, CA); James Selvidge (Berkeley, CA)
Assignee: Citrix Systems, Inc.
H04L67/42G06F9/45558G06F15/163G06F9/4445G06F2009/45595G06F9/54
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,918,456
App. No.
13/786,419
Granted
Dec 23, 2014
Kind
B2
Abstract

Systems and algorithm for providing a service to a client includes defining a virtual infrastructure in which a plurality of virtual machines are running on a virtualization layer with at least one of the virtual machine executing an image processor algorithm. The image processor algorithm is configured to access framebuffer data of a specific virtual machine that includes the service to be controlled, process the framebuffer data to generate image data packets with contextual information by scanning the framebuffer data to discern the image of the virtual machine display, obtaining connection parameters and client characteristics of a connection to the client, analyzing the framebuffer data to balance performance of the connection and performance of the specific virtual machine, and selecting a compression technique for processing the framebuffer data to generate image data packets. The image data packets are transmitted to the client for presenting on a display device.

Claims (33)

1. A system for providing a service to a client over a network, comprising:

a) one or more virtual machines configured to run on a virtualization layer, wherein at least one of the virtual machines is a server virtual machine executing an image processor algorithm, the image processor algorithm includes logic, which when executed by the processor of the virtual machine is configured to,

(i) access framebuffer data of a specific virtual machine that includes the service to be controlled, directly from a predetermined location of virtual memory available through the virtualization layer, the framebuffer data defining graphical output representing an image associated with a virtual machine display of the specific virtual machine;

(ii) process the framebuffer data of the specific virtual machine to generate image data packets with contextual information, the logic for processing is configured to,

(iia) scan the framebuffer data of the specific virtual machine to discern an image of the virtual machine display of the specific virtual machine including any changes in the framebuffer data of the specific virtual machine;

(iib) obtain connection parameters and client characteristics associated with a connection to the client;

(iic) perform analysis of the framebuffer data to balance performance of the connection and performance of the specific virtual machine including quality of the image of the virtual machine display of the specific virtual machine;

(iid) select a compression technique for processing the framebuffer data based on the analysis to generate image data packets; and

(iii) transmit the image data packets of the specific virtual machine to the client for presenting on a display device associated with the client.

2. The system of claim 1 , wherein the connection parameters include information obtained from an initial handshake with the client and information related to ongoing quality of connection with the client.

3. The system of claim 2 , wherein the ongoing quality of connection information is obtained periodically through a backchannel communication.

4. The system of claim 1 , wherein the selected compression technique is configured to encode mapping information for the framebuffer data in each image data packet, the mapping information correlating to portions of an image of the virtual machine display to enable rendering of the corresponding portions of the image at a display device of the client.

5. The system of claim 1 , wherein the selected compression technique is configured to obtain and process a portion of the framebuffer data of the virtual machine display, the generated image data packets for the portion assigned to render the corresponding portion of the virtual machine display at the client.

6. The system of claim 5 , wherein the logic is configured to identify levels of activity within the portion of the framebuffer data and analyze the levels of activity within the portion of the framebuffer data to determine which ones of the data is to be transmitted through the image data packets for updating the corresponding portion of the image data at the client.

7. The system of claim 6 , wherein the logic is configured to perform the analysis periodically, frequency of analysis driven by the levels and types of activity detected within the portion of the framebuffer data.

8. The system of claim 1 , wherein the image processor algorithm includes a layer identification algorithm to uniquely identify data associated with a specific layer of the framebuffer data transmitted to the client, the layer identification used to integrate image data packets associated with the specific layer with a parent layer of the framebuffer data.

9. The system of claim 8 , wherein the framebuffer data associated with the specific layer is related to a particular streaming data transmitted to the client.

10. An image processor algorithm embodied on a non-transitory computer-readable storage medium, the image process algorithm when executed on a processor of a virtual machine within a virtual center is configured to provide a service to a client over a network, the image processor algorithm comprising:

(i) programming logic for accessing framebuffer data of a specific virtual machine directly from a predetermined location of virtual memory available through a virtualization layer, the framebuffer data defining graphical output representing an image associated with a virtual machine display of the specific virtual machine, the specific virtual machine including the service to be controlled;

(ii) programming logic for processing the framebuffer data of the specific virtual machine to generate image data packets with contextual information, the programming logic for processing includes programming logic to,

scan the framebuffer data of the specific virtual machine to discern the image of the virtual machine display of the specific virtual machine including any changes in the framebuffer data of the specific virtual machine;

obtain connection parameters and client characteristics associated with a connection to the client;

perform analysis of the framebuffer data to balance performance of the connection and performance of the specific virtual machine;

select a compression technique for processing the framebuffer data based on the analysis to generate image data packets; and

(iii) programming logic for transmitting the image data packets of the specific virtual machine to the client for presenting on a display device associated with the client.

11. The image processor algorithm of claim 10 , wherein the programming logic for obtaining connection parameters includes programming logic for obtaining information from an initial handshake with the client and programming logic for obtaining information related to ongoing quality of connection with the client.

12. The image processor algorithm of claim 11 , wherein the programming logic for obtaining quality of connection information is configured to periodically poll backchannel communication to determine the ongoing quality of connection.

13. The image processor algorithm of claim 10 , wherein the programming logic within the selected compression technique is configured to encode mapping information for the framebuffer data in each image data packet, the mapping information correlating to portions of an image of the virtual machine display to enable rendering of the corresponding portions of the image at a display device of the client.

14. The image processor algorithm of claim 10 , wherein the programming logic within the selected compression technique is configured to obtain and process a portion of the framebuffer data of the virtual machine display, the generated image data packets for the portion assigned to render the corresponding portion of the virtual machine display at the client.

15. The image processor algorithm of claim 14 , wherein the programming logic within the selected compression technique is configured to identify levels of activity within the portion of the framebuffer data and analyze the levels of activity within the portion of the framebuffer data to determine which ones of the data is to be transmitted through the image data packets for updating the corresponding portion of the image data at the client.

16. The image processor algorithm of claim 15 , wherein the programming logic within the selected compression technique is configured to perform the analysis periodically, frequency of analysis driven by the levels and types of activity detected within the portion of the framebuffer data.

17. The image processor algorithm of claim 10 , wherein the programming logic within the image processor algorithm includes a layer identification algorithm that is configured to uniquely identify data associated with a specific layer of the framebuffer data transmitted to the client, the identification of the specific layer used during integration of image data packets of the specific layer with a parent layer of the framebuffer data.

18. The image processor algorithm of claim 17 , wherein the framebuffer data associated with the specific layer is related to a particular streaming data transmitted to the client.

Assignments (11)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 23, 2014
From: FRAMEHAWK, INC.
To: CITRIX SYSTEMS, INC.
Reel/Frame 032033/0605 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 27, 2013
From: FRAMEHAWK, LLC
To: FRAMEHAWK, INC.
Reel/Frame 031689/0173 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 26, 2013
From: VILKE, STEPHEN D; BADGER, PETER; RONCADIN, DAN; WILLIS, RUDY; SELVIDGE, JAMES
To: FRAMEHAWK, LLC
Reel/Frame 031682/0631 →
Continuity (3)
Continuation 12784468 · May 20, 2010
Provisional Application 61264654 · Nov 25, 2009
Related Publication 20130346479A1 · Dec 26, 2013