IP Library › Granted Patent US 8,589,579
Granted Patent B2
US 8,589,579 · App. 12/575,315 · Granted Nov 19, 2013

Systems and methods for real-time endpoint application flow control with network structure component

Inventors: Allen R. Samuels (San Jose, CA); Henry Collins (High Wycombe, GB)
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 8,589,579
App. No.
12/575,315
Filed
Oct 7, 2009
Granted
Nov 19, 2013
Kind
B2
Examiner
CHEEMA, UMAR
Art Unit
2444
USPC
709/231
Abstract

The present solution is directed towards systems and methods to more efficiently control a flow of a data stream traversing at least one intermediary on a network between a client and a server. A sender transmits a first message, comprising a first value of a bandwidth between the first intermediary and a second intermediary determined by the sender, to a first intermediary. The first intermediary establishes a next value of the bandwidth between the first intermediary and the second intermediary. The sender receives from the first intermediary responsive to the first message a second message comprising the established next value of the bandwidth between the first intermediary and the second intermediary. A data transfer manager of the sender, responsive to the second message determines a size of a portion of data queued for transmission to transmit to the first intermediary and a time for transmitting the portion of data queued.

Claims (28)

1. A method to more efficiently control flow of a data stream communicated via a network between a client and a server and traversing at least one intermediary, the method comprising:

transmitting, by a sender to a first intermediary device that is intermediary to the sender and a second intermediary device, a first message comprising a compression ratio of the first intermediary device and a first value of a bandwidth between the first intermediary device and the second intermediary device determined by a first network model of the sender, the second intermediary device is intermediary to the first intermediary device and a receiver, the first intermediary device and the second intermediary device compressing communications between the sender and the receiver;

establishing, by the first intermediary device via a second network model of the first intermediary device, a next value of the compression ratio of the first intermediary device and a next value of the bandwidth between the first intermediary device and the second intermediary device;

receiving, by the sender from the first intermediary device responsive to the first message, a second message comprising the established next value of the bandwidth between the first intermediary device and the second intermediary device and the established next value of the compression ratio of the first intermediary device; and

determining, by a data transfer manager of the sender responsive to an update to the first network model based on the established next value of the bandwidth and the established next value of the compression ratio of the second message, a size of a portion of data queued for transmission to transmit to the first intermediary device and a time for transmitting the portion of data queued to the first intermediary device.

2. The method of claim 1 , wherein the sender comprises one of a server or a client.

3. The method of claim 1 , further comprising establishing by the first intermediary device, the next value of the bandwidth responsive to a difference between the first value of the bandwidth from the first network model of the sender and a current value of the bandwidth of the second network model of the first intermediary device.

4. The method of claim 1 , further comprising transmitting, by the sender to the first intermediary device, a third message comprising a first backlog value of an amount of data to be sent as identified by the first network model of the sender; and receiving, by the sender from the first intermediary device, a fourth message comprising a next backlog value of an amount of data to be sent as identified by the second network model.

5. The method of a claim 1 , further comprising establishing, by the first intermediary device, the next value of the bandwidth between the first intermediary device and the second intermediary device using a difference in time of arrival of two compressed data packets sent consecutively by the second intermediary device.

6. The method of claim 1 , further comprising transmitting, by the sender, the portion of data queued for transmission comprising a portion of real-time data.

7. The method of claim 1 , further comprising transmitting, by the sender, updates from the first network model to the first intermediary device via a message transmitted with the determined portion of data.

8. A method to more efficiently control flow of a data stream communicated via a network between a client and a server and traversing a first and a second intermediary, the method comprising:

transmitting, by a sender to a first intermediary device based on a first network model of the sender, a first message comprising a first bandwidth value of the bandwidth between a first intermediary device and a second intermediary device, a first backlog value of data to be sent by the first intermediary device and a first compression ratio value of data compressed by the first intermediary device and sent to the second intermediary device, the first intermediary device is intermediary to the sender and the second intermediary device, the second intermediary device is intermediary to the first intermediary device and a receiver, the first intermediary device and the second intermediary device compressing communications between the sender and the receiver;

establishing, by the first intermediary device via a second network model of the first intermediary, a next compression ratio value of a compression ratio of data compressed by the first intermediary device and a next bandwidth value between the first intermediary device and the second intermediary device;

receiving, by the sender from the first intermediary device, a second message comprising a next value of the bandwidth between the first intermediary device and the second intermediary device, a next value of the backlog of data to be sent and a next compression ratio value of the data compressed by the first intermediary device; and

determining, by a data transfer manager of the sender responsive to updates to the first network model based on the second message, a size of a portion of data queued for transmission to transmit to the first intermediary device and a time for transmitting the portion of data queued to the first intermediary device.

9. The method of claim 8 , wherein the sender comprises one of a server or a client.

10. The method of a claim 8 , further comprising establishing, by the first intermediary device, the next value of the bandwidth between the first intermediary device and the second intermediary device using a difference in time of arrival of two compressed data packets received by the first intermediary device and sent consecutively by the second intermediary device.

11. The method of claim 8 , further comprising the transmitting, by the sender, the portion of data queued for transmission comprising a portion of real-time data.

12. The method of claim 8 , further comprising transmitting, by the sender, the portion of data queued for transmission comprising a portion of bulk data.

13. A system to more efficiently control flow of a data stream communicated via a network between a client and a server and traversing at least one intermediary, the system comprising:

a sender transmitting via a network to a first intermediary device a first message comprising a compression ratio of the first intermediary device and a first value of a bandwidth between the first intermediary device and a second intermediary device determined by a first network model of the sender, the first intermediary device is intermediary to the sender and the second intermediary device, the second intermediary device is intermediary to the first intermediary device and a receiver the first intermediary device and the second intermediary device compressing communications between the sender and the receiver;

a second network model of the first intermediary device establishing a next value of the compression ratio of the first intermediary device and a next value of the bandwidth between the first intermediary device and the second intermediary device, the first intermediary device sending to the sender a second message comprising the established next value of the bandwidth between the first intermediary device and the second intermediary device; and

a data transfer manager of the sender, in response to updates to the first network model based on the established next value of the bandwidth and the established next value of the compression ratio of the second message, determining a size of a portion of data queued for transmission to transmit to the first intermediary device and a time for transmitting the portion of data queued to the first intermediary device.

14. The system of claim 13 , further comprising a first compression engine on the first intermediary device performing one of compression or decompression of a data stream communicated from a second compression engine of the second intermediary device.

15. The system of claim 13 , wherein the sender comprises one of a server or a client.

16. The system of claim 13 , wherein the second network model of first intermediary device established the next value of the bandwidth responsive to a difference between the first value of the bandwidth from the first network model of the sender and a current value of the bandwidth of the second network model of the first intermediary device.

17. The system of claim 13 , wherein the sender transmits to the first intermediary device, a third message comprising a first backlog value of an amount of data to be sent as identified by the first network model of the sender; and receiving, by the sender from the first intermediary device, a fourth message comprising a next backlog value of an amount of data to be sent as identified by the second network model.

Assignments (9)
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 →
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 →
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 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 →
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 →
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 Mar 7, 2013
From: SAMUELS, ALLEN R.; COLLINS, HENRY
To: CITRIX SYSTEMS, INC.
Reel/Frame 029940/0782 →
Continuity (2)
Provisional Application 61103703 · Oct 8, 2008
Related Publication 20100121972A1 · May 13, 2010