IP Library Granted Patent US 7,970,923
Granted Patent B2
US 7,970,923 · App. 12/568,410 · Granted Jun 28, 2011

Systems and methods for accelerating delivery of a computing environment to a remote user

Assignee: Citrix Systems, Inc.
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 7,970,923
App. No.
12/568,410
Granted
Jun 28, 2011
Kind
B2
Abstract

The present invention is directed towards a method and system for accelerating delivery of a computing environment to a remote client. The computing environment may include a plurality of files comprising an application program and may be streamed to a remote client from a server. Responsive to a determination of whether transmission of the application may be accelerated, an appliance, intercepting the plurality of files, may accelerate transmission of the application program by applying one or more transport layer transmission acceleration techniques to the plurality of files.

Claims (48)

1. A method for accelerating delivery of a computing environment to a remote client, the method comprising:

intercepting, by an appliance deployed as an intermediary between a server and a remote client, a plurality of files comprising an application program streamed by the server responsive to a first request from the remote client to execute an application;

determining, by the appliance, whether the appliance may accelerate transmission of the intercepted plurality of files comprising the application program streamed by the server responsive to the first request;

determining, by the appliance and responsive to determining the appliance may accelerate transmission of the application program, whether the remote client is configured with an acceleration program; and

accelerating, by the appliance and responsive to determining the appliance may accelerate transmission of the application program and that the remote client is configured with the acceleration program, transmission of the application program by applying one or more transport layer transmission acceleration techniques to the intercepted plurality of files comprising the application program streamed by the server responsive to the first request.

2. The method of claim 1 , wherein the one or more transport layer transmission acceleration techniques comprise:

Transmission Control Protocol multiplexing;

Transmission Control Protocol pooling; and

Transmission Control Protocol buffering.

3. The method of claim 1 , further comprising:

transmitting, by the appliance and responsive to a determination that the remote client is not configured with the acceleration program, the acceleration program to the remote client.

4. The method of claim 3 , further comprising automatically installing and executing, by the remote client, the acceleration program upon receipt from the appliance.

5. The method of claim 4 , further comprising:

transmitting, by the appliance to the remote client, a license authorizing execution of the application program by the remote client for a predetermined time;

receiving, by the appliance, a heartbeat message from the remote client indicating that the application program is being executed; and

transmitting, by the appliance and responsive to receiving the heartbeat message, a renewed license authorizing execution of the application program by the remote client for a predetermined time.

6. The method of claim 1 , further comprising:

caching, by the appliance, the plurality of files comprising the application program; and

intercepting, by the appliance, a second request from the remote client for one or more of the plurality of files comprising the application program and transmitting the cached one or more of the plurality of files to the remote client in response to the second request.

7. The method of claim 1 , wherein accelerating transmission of the application program further comprises:

accelerating transmission of the application program from the server to the appliance by applying a first one or more transport layer transmission acceleration techniques to the plurality of files streamed by the server and accelerating transmission of the application program from the appliance to the remote client by applying a second one or more transport layer transmission acceleration techniques to the plurality of files transmitted to the remote client.

8. The method of claim 1 , further comprising receiving, by the appliance from the server, the plurality of files comprising the application program via a pooled transport layer connection between the server and the appliance used by a plurality of clients communicating with the server via the appliance.

9. The method of claim 8 , further comprising:

receiving, by the appliance via the pooled transport layer connection, one or more data packets comprising a multiplexed communication session between the plurality of clients and the server; and

demultiplexing, by the appliance, the multiplexed communication sessions into one or more communications sessions between the server and each of the plurality of clients.

10. The method of claim 1 , wherein determining whether the appliance may accelerate transmission of the application program further comprises:

determining whether the appliance may accelerate transmission of the application program, responsive to a log of past performance of the transport layer transmission acceleration techniques applied to one or more previous transmissions of the plurality of files comprising the application program.

11. A system for accelerating delivery of a computing environment to a remote client, the system comprising:

an appliance deployed as an intermediary device between one or more clients and one or more servers, intercepting a plurality of files comprising an application program streamed by a server responsive to a first request from a remote client to execute an application, determining whether the appliance may accelerate transmission of the intercepted plurality of files comprising the application program streamed by the server responsive to the first request, and determining, responsive to determining the appliance may accelerate transmission of the application program, whether the remote client is configured with an acceleration program; and

a packet engine of the appliance, responsive to determining the appliance may accelerate transmission of the application program and that the remote client is configured with the acceleration program, accelerating transmission of the application program by applying one or more transport layer transmission acceleration techniques to the intercepted plurality of files comprising the application program streamed by the server responsive to the first request.

12. The system of claim 11 , wherein the one or more transport layer transmission acceleration techniques comprise:

Transmission Control Protocol multiplexing;

Transmission Control Protocol pooling; and

Transmission Control Protocol buffering.

13. The system of claim 11 , wherein the appliance further comprises:

a memory element storing a client-side acceleration program; and the appliance:

transmits, responsive to a determination that the remote client is not configured with the acceleration program, the acceleration program to the remote client.

14. The system of claim 13 , wherein the remote client further installs the acceleration program, and executes the acceleration program.

15. The system of claim 14 , wherein the acceleration program is configured to provide a cache for storing the plurality of files comprising the application program in a cache; and

the acceleration program receives authorization to execute the plurality of files comprising the application program in the cache during a pre-defined period of time, and

redirects, responsive to non-expiration of the pre-defined period of time, requests for the plurality of files comprising the application program to the stored plurality of application files in the cache.

16. The system of claim 11 , wherein the appliance further comprises a memory element storing the plurality of files comprising the application program; and

the packet engine intercepts a second request from the remote client for one or more of the plurality of files comprising the application program and transmits the stored one or more of the plurality of files to the remote client in response to the request.

17. The system of claim 11 , wherein the packet engine further accelerates transmission of the application program from the server to the appliance by applying a first one or more transport layer transmission acceleration techniques to the plurality of files streamed by the server and accelerates transmission of the application program from the appliance to the remote client by applying a second one or more transport layer transmission acceleration techniques to the plurality of files transmitted to the remote client.

18. The system of claim 11 , wherein the appliance further receives, from the server, the plurality of files comprising the application program via a pooled transport layer connection between the server and the appliance used by a plurality of clients communicating with the server via the appliance.

19. The system of claim 18 , wherein the appliance further receives, via the pooled transport layer connection, one or more data packets comprising a multiplexed communication session between the plurality of clients and the server; and

the packet engine demultiplexes the multiplexed communication sessions into one or more communications sessions between the server and each of the plurality of clients.

20. The system of claim 11 , wherein the appliance determines whether the appliance may accelerate transmission of the application program responsive to a log of past performance of the transport layer transmission acceleration techniques applied to one or more previous transmissions of the plurality of files comprising the application program.

Assignments (10)
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 →
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 →
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: 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 →
CORRECTIVE ASSIGNMENT TO CORRECT THE FIRST NAME OF THE FIRST ASSIGNOR PREVIOUSLY RECORDED ON REEL 045435 FRAME 0664. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT OF ASSIGNORS INTEREST. Recorded Apr 10, 2018
From: PEDERSEN, BRADLEY J.; SINHA, RAJIV; SUNDARRAJAN, PRABAKAR; TREDER, TERRY
To: CITRIX SYSTEMS, INC.
Reel/Frame 045891/0463 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2018
From: PEDERSEN, BRAD J.; SINHA, RAJIV; SUNDARRAJAN, PRABAKAR; TREDER, TERRY
To: CITRIX SYSTEMS, INC.
Reel/Frame 045435/0664 →
Continuity (3)
Continuation 11734083 · Apr 11, 2007
Provisional Application 60744720 · Apr 12, 2006
Related Publication 20100023582A1 · Jan 28, 2010