IP Library Granted Patent US 11,017,013
Granted Patent B2
US 11,017,013 · App. 14/628,137 · Granted May 25, 2021

Image cache collaboration between clients in remote desktop environments

Inventor: Lizhu Zhang (Sunnyvale, CA)
Assignee: VMware, Inc.
G06F16/51G06F16/137G06F16/172H04L67/20H04L67/2842
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 11,017,013
App. No.
14/628,137
Granted
May 25, 2021
Kind
B2
Abstract

Image cache collaboration is described to enable multiple clients to share image data in a remote desktop environment. A centralized cache manager maintains information about all image caches on all client devices which have established connections to the server. When an update to a portion of the GUI of a virtual desktop for a first client device is detected, the central cache manager can determine whether any other client devices contain the requested image data in their respective image caches. If such a device is identified, the server transmits a message to the first client device, identifying the second client device that contains the requested image data in its respective image cache. The first client device may then request and receive the image data from the second client device over the LAN on which both devices reside, thereby obtaining the data with less latency.

Claims (40)

1. A method for providing image cache collaboration between multiple client devices in a remote desktop environment, the method comprising:

detecting, by a virtual desktop agent executing on a host server, an update to at least a portion of a graphical user interface (GUI) of a virtual desktop executed on the host server for a first client device;

transmitting an image hash key of the update from the virtual desktop agent executing on the host server to a central cache manager executing on a connection server, wherein the connection server is a separate device from the host server and is configured to establish virtual desktop connection sessions for each of the client devices;

determining, by the central cache manager, that an image cache on a second client device currently contains image data needed to update the GUI of the virtual desktop for the first client device, wherein the central cache manager knows the contents of all image caches of each of the client devices that are connected to the connection server by using an agreed upon caching algorithm between the central cache manager and the client devices, wherein the agreed upon caching algorithm enables the central cache manager to determine, at the time of transmitting the image data to the client devices, whether the image data will be cached by the client devices; and

transmitting a message, from the central cache manager executing on the connection server to the first client device identifying the second client device that contains the image data, wherein the first client device requests the image data from the second client device in response to receiving said message.

2. The method of claim 1 , further comprising:

maintaining a table storing entries associating image hash keys with client devices, wherein each image hash key corresponds to a set of image data for a portion of the GUI, the set of image data stored on a client device identified by the corresponding entry in the table.

3. The method of claim 1 , wherein the first client device and the second client device reside within a first local area network (LAN) and wherein the server resides in a second LAN that is separate and distinct from the first LAN, and wherein the first client device and the second client device connect to the server over a wide area network (WAN) connections.

4. The method of claim 1 , wherein the second client device is configured to listen on a specified port designated for sending image cache data, and wherein:

in response to receiving the message, the first client obtains the internet protocol (IP) address of the second client and establishes a transfer control protocol (TCP) connection with the second client at the specified port.

5. The method of claim 4 , wherein the first client requests the image data from the second client using the connection and the second client transmits the image data from the image cache of the second client to the first client.

6. The method of claim 1 , wherein the virtual desktop is executed on a virtual machine managed by a hypervisor executed on the server, the virtual machine associated with a user of the first client device.

7. The method of claim 1 , wherein the central manager includes a table of image cache entries representing content in all image caches of every client device connected to the connection server.

8. A non-transitory computer readable storage medium comprising one or more sequences of instructions, the instructions when executed by one or more processors causing the one or more processors to execute the operations of:

detecting, by a virtual desktop agent executing on a host server, an update to at least a portion of a graphical user interface (GUI) of a virtual desktop executed on the host server for a first client device;

transmitting an image hash key of the update from the virtual desktop agent executing on the host server to a central cache manager executing on a connection server, wherein the connection server is a separate device from the host server and is configured to establish virtual desktop connection sessions for each of the client devices;

determining, by the central cache manager, that an image cache on a second client device currently contains image data needed to update the GUI of the virtual desktop for the first client device, wherein the central cache manager knows the contents of all image caches of each of the client devices that are connected to the connection server by using an agreed upon caching algorithm between the central cache manager and the client devices, wherein the agreed upon caching algorithm enables the central cache manager to determine, at the time of transmitting the image data to the client devices, whether the image data will be cached by the client devices; and

transmitting a message, from the central cache manager executing on the connection server to the first client device identifying the second client device that contains the image data, wherein the first client device requests the image data from the second client device in response to receiving said message.

9. The non-transitory computer readable storage medium of claim 8 , further comprising instructions to cause the one or more processors to:

maintain a table storing entries associating image hash keys with client devices, wherein each image hash key corresponds to a set of image data for a portion of the GUI, the set of image data stored on a client device identified by the corresponding entry in the table.

10. The non-transitory computer readable storage medium of claim 8 , wherein the first client device and the second client device reside within a first local area network (LAN) and wherein the server resides in a second LAN that is separate and distinct from the first LAN, and wherein the first client device and the second client device connect to the server over a wide area network (WAN) connections.

11. The non-transitory computer readable storage medium of claim 8 , wherein the second client device is configured to listen on a specified port designated for sending image cache data, and wherein:

in response to receiving the message, the first client obtains the internet protocol (IP) address of the second client and establishes a transfer control protocol (TCP) connection with the second client at the specified port.

12. The non-transitory computer readable storage medium of claim 11 , wherein the first client requests the image data from the second client using the connection and the second client transmits the image data from the image cache of the second client to the first client.

13. The non-transitory computer readable storage medium of claim 8 , wherein the virtual desktop is executed on a virtual machine managed by a hypervisor executed on the server, the virtual machine associated with a user of the first client device.

14. The non-transitory computer readable storage medium of claim 8 , wherein the central manager includes a table of image cache entries representing content in all image caches of every client device connected to the connection server.

15. A computing system, comprising:

one or more processors; and

memory including instructions that when executed by the one or more processors, cause the computing system to:

detect, by a virtual desktop agent executing on a host server, an update to at least a portion of a graphical user interface (GUI) of a virtual desktop executed on the host server for a first client device;

transmit an image hash key of the update from the virtual desktop agent executing on the host server to a central cache manager executing on a connection server, wherein the connection server is a separate device from the host server and is configured to establish virtual desktop connection sessions for each of the client devices;

determine, by the central cache manager, that an image cache on a second client device currently contains image data needed to update the GUI of the virtual desktop for the first client device, wherein the central cache manager knows the contents of all image caches of each of the client devices that are connected to the connection server by using an agreed upon caching algorithm between the central cache manager and the client devices, wherein the agreed upon caching algorithm enables the central cache manager to determine, at the time of transmitting the image data to the client devices, whether the image data will be cached by the client devices; and

transmit a message, from the central cache manager executing on the connection server to the first client device identifying the second client device that contains the image data, wherein the first client device requests the image data from the second client device in response to receiving said message.

16. The computing system of claim 15 , wherein the memory further includes instructions that cause the computing system to:

maintain a table storing entries associating image hash keys with client devices, wherein each image hash key corresponds to a set of image data for a portion of the GUI, the set of image data stored on a client device identified by the corresponding entry in the table.

17. The computing system of claim 15 , wherein the first client device and the second client device reside within a first local area network (LAN) and wherein the computing device resides in a second LAN that is separate and distinct from the first LAN, and wherein the first client device and the second client device connect to the computing device over wide area network (WAN) connections.

18. The computing system of claim 15 , wherein the second client device is configured to listen on a specified port designated for sending image cache data, and wherein:

in response to receiving the message, the first client obtains the internet protocol (IP) address of the second client and establishes a transfer control protocol (TCP) connection with the second client at the specified port.

19. The computing system of claim 18 , wherein the first client requests the image data from the second client using the connection and the second client transmits the image data from the image cache of the second client to the first client.

20. The computing system of claim 15 , wherein the virtual desktop is executed on a virtual machine managed by a hypervisor executed on the computing device, the virtual machine associated with a user of the first client device.

Assignments (4)
PATENT ASSIGNMENT Recorded Aug 5, 2024
From: VMWARE LLC
To: OMNISSA, LLC
Reel/Frame 068327/0365 →
SECURITY INTEREST Recorded Jul 3, 2024
From: OMNISSA, LLC
To: UBS AG, STAMFORD BRANCH
Reel/Frame 068118/0004 →
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0314 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2015
From: ZHANG, LIZHU
To: VMWARE, INC.
Reel/Frame 034999/0967 →