IP Library Granted Patent US 10,250,722
Granted Patent B2
US 10,250,722 · App. 14/975,625 · Granted Apr 2, 2019

TCP traffic priority bandwidth management control based on TCP window adjustment

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 10,250,722
App. No.
14/975,625
Granted
Apr 2, 2019
Kind
B2
Abstract

The present disclosure relates to an apparatus, a method, and a non-transitory computer readable storage medium for managing bandwidth in a computer network. The method may identify that a first received packet belongs to a first traffic class and a second received packet belongs to a second traffic class where the first traffic class is associated with a higher priority than the second traffic class. The method may also identify that the first and the second traffic classes compete for shared bandwidth at the computer network. The method may monitor a number of bytes received that are associated with the first traffic class and second traffic class and perform a series of calculations used to adjust a window size according to the relative priorities of the first and the second traffic class.

Claims (89)

1. A method for managing bandwidth in a computer network, the method comprising:

receiving a first packet sent from a first client;

identifying a first traffic class associated with the first packet;

receiving a second packet;

identifying a second traffic class associated with the second packet;

identifying that the first traffic class and the second traffic class are competing for shared bandwidth;

monitoring a first number of bytes received that are associated with the first traffic class over a first interval of time;

calculating a competitive base adjusted window value based on the identified competition for the shared bandwidth;

assigning a first traffic priority index to the first traffic class;

calculating a first traffic class input rate associated with the first number of bytes received that are associated with the first traffic class over the first interval of time;

calculating a first priority window size to associate with packets of the first traffic class that is proportional to the first traffic priority index and to the calculated competitive base adjusted window value and that is inversely proportional to a total priority count, wherein the total priority count is a count of a number of priority classes to which one of the packets is assigned;

calculating a value of a first prioritized adjusted window to include in an acknowledge message to send to the first client, wherein the calculation of the first prioritized adjusted window value is a function of the first priority window size and the competitive base adjusted window value;

transmitting the acknowledge message to the first client, wherein the acknowledge message includes the first prioritized adjusted window value, and the first client changes a first transmitted number of bytes sent in one or more packets; and

receiving the one or more packets over a second interval of time of the first traffic class, wherein the received one or more packets of the first traffic class include a number of bytes corresponding to a changed first number of bytes value.

2. The method of claim 1 , wherein the first priority window size is also inversely proportional a total class input rate, wherein the total class input rate corresponds to the number received bytes that are associated with the first traffic class and that are received over the first interval of time.

3. The method of claim 2 , further comprising calculating a guaranteed window size to assign to the first traffic class.

4. The method of claim 3 , wherein the guaranteed window size assigned to the first traffic class is proportional to a guaranteed traffic rate associated with the first traffic class and the competitive base adjusted window value.

5. The method of claim 4 , wherein the guaranteed window size is also inversely proportional to the total class input rate.

6. The method of claim 5 , wherein the function for calculating the first prioritized adjusted window is further based on the guaranteed window size.

7. The method of claim 6 , wherein the function for the calculation of the first prioritized adjusted window is according to a formula where the first prioritized adjusted window equals the competitive base adjusted window value minus the calculated value of the first priority window size plus the guaranteed window size.

8. The method of claim 1 , further comprising:

monitoring a third number of bytes received that are associated with the second traffic class;

assigning a second traffic priority index to the second traffic class;

calculating a second traffic class input rate associated with the third number of bytes received that are associated with the second traffic class over the first interval of time;

calculating a second priority window size to associate with packets of the second traffic class, wherein the second calculated priority window size is proportional to the second traffic priority;

calculating a value of a second prioritized adjusted window to include in a second acknowledge message to send to a sender of the second packet, wherein the calculation of the second prioritized adjusted window value includes the second priority window size;

transmitting the second acknowledge message to the sender of the second packet, wherein the acknowledge message includes the second prioritized adjusted window value, and the sender of the second packet changes a second transmitted number of bytes value; and

receiving the one or more other packets over the second interval of time, wherein the one or more other packets include a number of bytes corresponding to the changed second transmitted number of bytes value.

9. The method of claim 8 , further comprising:

monitoring a number of bytes received that are associated with the first and the second traffic class over the second interval of time;

calculating a second value of the first prioritized adjusted window size;

calculating a second value of the second prioritized adjusted window size;

transmitting a third acknowledge message to the first client that includes the second value of the first prioritized adjusted window size;

transmitting a fourth acknowledge message to the sender of the second packet that includes the second value of the second prioritized adjusted window size;

receiving a plurality of additional packets from the client over a third interval of time, wherein the plurality of additional packets received from the first client over the third interval of time includes a number of bytes corresponding to the second value of the first prioritized adjusted window size; and

receiving a plurality of other packets from the sender of the second packet over the third interval of time, wherein the plurality of additional packets received from the sender of the second packet over the third interval of time includes a number of bytes corresponding to the second value of the second prioritized adjusted window size.

10. The method of claim 1 , wherein the competitive base adjusted window value corresponds to a number of bytes associated with competitive traffic received over the first interval of time.

11. A non-transitory computer-readable storage medium having embodied thereon a program executable by a processor for performing a method for managing bandwidth in a computer network, the method comprising:

receiving a first packet sent from a first client;

identifying a first traffic class associated with the first packet;

receiving a second packet;

identifying a second traffic class associated with the second packet;

identifying that the first traffic class and the second traffic class are competing for shared bandwidth;

monitoring a first number of bytes received that are associated with the first traffic class over a first interval of time;

calculating a competitive base adjusted window value based on the identified competition for the shared bandwidth;

assigning a first traffic priority index to the first traffic class;

calculating a first traffic class input rate associated with the first number of bytes received that are associated with the first traffic class over the first interval of time;

calculating a first priority window size to associate with packets of the first traffic class that is proportional to the first traffic priority index and to the calculated competitive base adjusted window value and that is inversely proportional to a total priority count, wherein the total priority count is a count of a number of priority classes to which one of the packets is assigned;

calculating a value of a first prioritized adjusted window to include in an acknowledge message to send to the first client, wherein the calculation of the first prioritized adjusted window value is a function of the first priority window size and the competitive base adjusted window value;

transmitting the acknowledge message to the first client, wherein the acknowledge message includes the first prioritized adjusted window value, and wherein the first client changes a first transmitted number of bytes sent in one or more packets; and

receiving the one or more packets over a second interval of time of the first traffic class, wherein the received one or more packets of the first traffic class include a number of bytes corresponding to a changed first number of bytes value.

12. The non-transitory computer-readable storage medium of claim 11 , wherein the first priority window size is also inversely proportional to a total class input rate, and the total class input rate corresponds to the number received bytes that are associated with the first traffic class and that are received over the first interval of time.

13. The non-transitory computer-readable storage medium of claim 12 , the program further executable to calculate a guaranteed window size to assign to the first traffic class.

14. The non-transitory computer-readable storage medium of claim 13 , wherein the guaranteed window size assigned to the first traffic class is proportional to a guaranteed traffic rate associated with the first traffic class and the competitive base adjusted window value.

15. The non-transitory computer-readable storage medium of claim 14 , wherein the guaranteed window size is also inversely proportional to the total class input rate.

16. The non-transitory computer-readable storage medium of claim 15 , wherein the function for calculating the first prioritized adjusted window also includes the guaranteed window size.

17. The non-transitory computer-readable storage medium of claim 16 , wherein the function for the calculation of the first prioritized adjusted window is according to a formula where the first prioritized adjusted window equals the competitive base adjusted window value minus the calculated value of the first priority window size plus the guaranteed window size.

18. The non-transitory computer-readable storage medium of claim 11 , the program further executable to:

monitor a third number of bytes received that are associated with the second traffic class;

assign a second traffic priority index to the second traffic class;

calculate a second traffic class input rate associated with the third number of bytes received that are associated with the second traffic class over the first interval of time;

calculate a second priority window size to associate with packets of the second traffic class, wherein the second calculated priority window size is proportional to the second traffic priority index;

calculate a value of a second prioritized adjusted window to include in a second acknowledge message to send to a sender of the second packet, wherein the calculation of the second prioritized adjusted window value includes the second priority window size;

transmit the second acknowledge message to the sender of the second packet, wherein the acknowledge message includes the second prioritized adjusted window value, and the sender of the second packet changes a second transmitted number of bytes value; and

receive the one or more other packets over the second interval of time, wherein the one or more other packets include a number of bytes corresponding to the changed second transmitted number of bytes value.

19. The non-transitory computer-readable storage medium of claim 18 , program further executable to:

monitor a number of bytes received that are associated with the first and the second traffic class over the second interval of time;

calculate a second value of the first prioritized adjusted window size;

calculate a second value of the second prioritized adjusted window size;

transmit a third acknowledge message to the first client that includes the second value of the first prioritized adjusted window size;

transmit a fourth acknowledge message to the sender of the second packet that includes the second value of the second prioritized adjusted window size;

receive a plurality of additional packets from the client over a third interval of time, wherein the plurality of additional packets received from the first client over the third interval of time includes a number of bytes corresponding to the second value of the first prioritized adjusted window size; and

receive a plurality of other packets from the sender of the second packet over the third interval of time, wherein the plurality of additional packets received from the sender of the second packet over the third interval of time includes a number of bytes corresponding to the second value of the second prioritized adjusted window size.

20. An apparatus for managing bandwidth in a computer network, the apparatus comprising:

a network interface that receive a first packet sent from a first client and that receives a second packet;

a memory; and

a processor, wherein:

the processor executing instructions out of the memory:

identifies a first traffic class associated with the first packet,

identifies a second traffic class associated with the second packet,

identifies that the first traffic class and the second traffic class are competing for shared bandwidth,

monitors a first number of bytes received that are associated with the first traffic class over a first interval of time,

calculates a competitive base adjusted window value based on the identified competition for the shared bandwidth,

assigns a first traffic priority index to the first traffic class,

calculates a first traffic class input rate associated with the first number of bytes received that are associated with the first traffic class over the first interval of time,

calculates a first priority window size to associate with packets of the first traffic class that is proportional to the first traffic priority index and to the calculated competitive base adjusted window value and that is inversely proportional to a total priority count, wherein the total priority count is a count of a number of priority classes to which one of the packets is assigned, and

calculates a value of a first prioritized adjusted window to include in an acknowledge message to send to the first client, wherein the calculation of the first prioritized adjusted window value is a function of the first priority window size and the competitive base adjusted window value, wherein the network interface:

transmits the acknowledge message to the first client, wherein the acknowledge message includes the first prioritized adjusted window value, and the first client changes a first transmitted number of bytes sent in one or more packets, and

receives the one or more packets over a second interval of time of the first traffic class, wherein the received one or more packets of the first traffic class include a number of bytes corresponding to a changed first number of bytes value.

Assignments (22)
FIRST LIEN IP SUPPLEMENT Recorded Jun 30, 2025
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 071777/0641 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 9, 2022
From: QUEST SOFTWARE INC.
To: SONICWALL US HOLDINGS INC.
Reel/Frame 059912/0097 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS Recorded Feb 2, 2022
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.
Reel/Frame 059096/0683 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS Recorded Feb 2, 2022
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.
Reel/Frame 059105/0479 →
CHANGE OF NAME Recorded Jun 19, 2018
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 046393/0009 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: QUEST SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046327/0347 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: QUEST SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046327/0486 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS RECORDED AT R/F 040581/0850 Recorded May 22, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 046211/0735 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED AT REEL: 040587 FRAME: 0624. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 28, 2017
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 044811/0598 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Nov 10, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040587/0624 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Nov 9, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040581/0850 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040039/0642) Recorded Oct 31, 2016
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0016 →
RELEASE OF SECURITY INTEREST Recorded Oct 31, 2016
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0467 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040039/0642 →
RELEASE OF REEL 037848 FRAME 0001 (TL) Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040028/0152 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040030/0187 →
RELEASE OF REEL 037848 FRAME 0210 (NOTE) Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040031/0725 →
RELEASE OF REEL 037847 FRAME 0843 (ABL) Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040017/0366 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (ABL) Recorded Feb 18, 2016
From: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 037847/0843 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (NOTES) Recorded Feb 18, 2016
From: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 037848/0210 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (TERM LOAN) Recorded Feb 18, 2016
From: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037848/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 18, 2015
From: MAO, MIAO; CHEN, ZHONG
To: DELL SOFTWARE INC.
Reel/Frame 037336/0851 →