IP Library Granted Patent US 9,985,898
Granted Patent B2
US 9,985,898 · App. 14/632,848 · Granted May 29, 2018

System for bandwidth optimization with traffic priority determination

Inventors: Chaitra Maraliga Ramaiah (Karnataka, IN); Praveen Raja Dhanabalan (Tamil Nadu, IN)
Assignee: Citrix Systems, Inc.
H04L47/27H04L47/11H04L47/12H04L47/193H04L47/2433H04L47/56H04L69/16
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 9,985,898
App. No.
14/632,848
Filed
Feb 26, 2015
Granted
May 29, 2018
Kind
B2
Art Unit
2473
USPC
370/235
Abstract

A system for optimizing network traffic is described. The system includes a transport communication protocol (TCP) controller configured to acquire data regarding a flow of a plurality of data packets over a link and to determine TCP characteristics for the flow, a traffic prioritization module configured to assign a flow priority to the flow, and a traffic priority controller configured detect congestion on the link and determine a congestion window size for the flow based on the flow priority and the TCP characteristics.

Claims (52)

1. A first appliance for optimizing network traffic, comprising:

a quality of service (QoS) packet scheduler, executable on one or more processors, coupled to memory, and configured to schedule transmission of a plurality of active data-packet flows over a link, wherein the link is a proxied link between the first appliance and a second appliance;

a traffic prioritization module executable on the one or more processors and configured to assign a flow priority to a flow of the plurality of active data-packet flows over the link;

a traffic priority controller executable on the one or more processors and configured to detect congestion is to occur on the link and responsive to the detection that congestion is to occur, determine a congestion window size for the flow based on at least a number of the plurality of active-data packet flows with the flow priority greater than a predetermined priority and a total congestion window size of the plurality of active-data packet flows greater than a product of a bandwidth and a delay of the link; and

a TCP controller executable on the one or more processors and configured to:

acquire a plurality of data packets corresponding to the flow,

queue the plurality of data packets, and

release the plurality of queued data packets based on instructions received from the QoS packet scheduler and the congestion window.

2. The first appliance of claim 1 , wherein the flow priority includes a first priority flow having a higher priority and a second priority flow having a lower priority.

3. The first appliance of claim 2 , wherein a congestion window for the first priority flow is larger than a congestion window for the second priority flow.

4. The first appliance of claim 1 , wherein the traffic priority controller is further configured to determine a plurality of congestion windows for the plurality of active data-packet flows operating across the link.

5. The first appliance of claim 4 , wherein the traffic priority controller is further configured to:

determine a total number of congested first priority flows from the plurality of active data-packet flows;

determine a total number of congested second priority flows from the plurality of active data-packet flows; and

modify the congestion window size for the flow based on the congested first priority flows and the congested second priority flows.

6. The first appliance of claim 1 , wherein the traffic priority controller is further configured to determine link characteristics comprising a link type and a bandwidth of the link.

7. The first appliance of claim 6 , wherein the traffic priority controller is further configured to:

evaluate a bandwidth delay product for the plurality of data packets sent and received via the flow;

evaluate a queuing delay for the flow; and

determine the total congestion window size for the plurality of active data-packet flows.

8. A method for optimizing network traffic over a link between a first appliance and a second appliance, the method performed by the first appliance and comprising:

acquiring, at a TCP controller of the first appliance, plurality of data packets corresponding to a flow of a plurality of active data-packet flows over the link, wherein the link is a proxied link between the first appliance and a second appliance;

queueing the plurality of data packets;

assigning a flow priority to the flow;

detecting congestion is to occur on the link;

determining, at a traffic priority controller of the first appliance responsive to detecting congestion is to occur, a congestion window size for the flow based on at least a number of the plurality of active-data packet flows with the flow priority greater than a predetermined priority and a total congestion window size of the plurality of active-data packet flows greater than a product of a bandwidth and a delay of the link; and

releasing, at the TCP controller of the first appliance, the plurality of queued data packets based on the congestion window and instructions received from a quality of service (QoS) packet scheduler that schedules the transmission of the plurality of active data-packet flows over the link.

9. The method of claim 8 , wherein the flow priority includes a first priority flow having a higher priority and a second priority flow having a lower priority.

10. The method of claim 9 , wherein a congestion window for the first priority flow is larger than a congestion window for the second priority flow.

11. The method of claim 8 , further comprising determining a plurality of congestion windows for the plurality of active data-packet flows operating across the link.

12. The method of claim 11 , further comprising:

determining a total number of congested first priority flows from the plurality of active data-packet flows;

determining a total number of congested second priority flows from the plurality of active data-packet flows; and

modifying the congestion window size for the flow based on the congested first priority flows and the congested second priority flows.

13. The method of claim 8 , further comprising determining link characteristics comprising a link type and a bandwidth of the link.

14. The method of claim 13 , further comprising:

evaluating a bandwidth delay product for the plurality of data packets sent and received via the flow;

evaluating a queuing delay for the flow; and

determining the total congestion window size for the plurality of active data-packet flows.

15. A non-transitory computer readable storage medium that stores a set of instructions that are executable by at least one processor of a first appliance to cause the first appliance to perform a method for optimizing network traffic over a link between the first appliance and a second appliance, the method comprising:

acquiring, at a TCP controller of the first appliance, a plurality of data packets corresponding to a flow of a plurality of active data-packet flows over the link, wherein the link is a proxied link between the first appliance and the second appliance;

queueing the plurality of data packets;

assigning a flow priority to the flow;

detecting congestion is to occur on the link;

determining, at a traffic priority controller of the first appliance responsive to detecting congestion is to occur, a congestion window size for the flow based on at least a number of the plurality of active-data packet flows with the flow priority greater than a predetermined priority and a total congestion window size of the plurality of active-data packet flows greater than a product of a bandwidth and a delay of the link; and

releasing, at the TCP controller of the first appliance, the plurality of queued data packets based on the congestion window and instructions received from a quality of service (QoS) packet scheduler that schedules the transmission of the plurality of active data-packet flows over the link.

16. The non-transitory computer readable storage medium of claim 15 , wherein the flow priority includes a first priority flow having a higher priority and a second priority flow having a lower priority.

17. The non-transitory computer readable storage medium of claim 16 , wherein a congestion window for the first priority flow is larger than a congestion window for the second priority flow.

18. The non-transitory computer readable storage medium of claim 17 , wherein the set of instructions that are executable by the at least one processor of the first appliance to cause the first appliance to further perform:

determining a total number of congested first priority flows from the plurality of active data-packet flows;

determining a total number of congested second priority flows from the plurality of active data-packet flows; and

modifying the congestion window size for the flow based on the congested first priority flows and the congested second priority flows.

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 Feb 26, 2015
From: RAMAIAH, CHAITRA MARALIGA; DHANABALAN, PRAVEEN RAJA
To: CITRIX SYSTEMS, INC.
Reel/Frame 035043/0846 →
Continuity (1)
Related Publication 20160255009A1 · Sep 1, 2016