IP Library Granted Patent US 7,047,312
Granted Patent B1
US 7,047,312 · App. 09/739,309 · Granted May 16, 2006

TCP rate control with adaptive thresholds

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,047,312
App. No.
09/739,309
Granted
May 16, 2006
Kind
B1
Abstract

The TCP receiver's advertised window (i.e., the receive buffer of a TCP connection) limits the maximum window and consequently the throughput that can be achieved by the sender. Thus, the idea behind TCP rate control is to match the offered network load to the available resources by modifying at an intermediate network device, the receiver's advertised window in TCP acknowledgments returning to the sources. In this disclosure, we propose a new TCP rate control scheme for a shared buffer where the buffer is logically organized into multiple queues. In the scheme, dynamic buffer thresholds are used to ensure efficient and fair usage of buffer memory among the queues. Conventional schemes allocate buffer space to each queue through the use of static buffer thresholds. This can result in unnecessary packet drops which leads to poor network performance since congested or heavily loaded queues cannot gain access to buffers not utilized by lightly loaded queues.

Claims (165)

1. A method for controlling the transmission of data packets through a network by controlling a Transmission Control Protocol (TCP) rate in a network device having a shared buffer with shared buffer space, the method comprising:

organizing a forward data buffer into one or more queues that store at least one forward data packet;

calculating the network device's advertised window size by:

(1) initializing a timer to a predetermined time interval Δt, and an iteration counter to a predetermined initial value n;

(2) sampling a current queue size q i (n) during the predetermined time interval Δt;

(3) calculating a current error signal e i (n) based, at least in part, upon the current queue size q i (n);

(4) calculating the network device's advertised window size W i (n), based, at least in part, upon the current error signal e i (n) according to the equation: W i (n)=[W i (n−1)+αe i (n)] W min W max , where α, W max , and W min , are predetermined parameters;

(5) resetting the timer, upon expiration of the predetermined interval Δt; and

(6) iterating the iteration counter, upon expiration of the predetermined time interval Δt;

providing the network device's advertised window size to a TCP source; and

calculating a dynamic buffer threshold based, at least in part, upon the sum of the queue sizes and the shared buffer space.

2. The method of claim 1 wherein the step of organizing a forward data buffer further comprises:

organizing the forward data buffer into one or more queues with one queue per service class.

3. The method of claim 1 wherein the at least one forward data packet is stored according to its service class.

4. The method of claim 1 wherein the steps of calculating a current error signal e i (n) and calculating the network device's advertised window size further comprise:

filtering the current error signal e i (n) according to the relation: ê i (n)=(1−β)ê i (n−1)+βe i (n), where β is a predetermined parameter; and

calculating the network device's advertised window size W i (n), based, at least in part, upon the filtered current error signal ê i (n) according to the equation: W i (n)=[W i (n−1)+αê i (n)] W min W max , where α, W max , and W min , are predetermined parameters.

5. The method of claim 1 wherein the step of providing the network device's advertised window size to a TCP source further comprises:

carrying information relating to the network device's advertised window size by returning TCP acknowledgements in a receiver's advertised window field.

6. The method of claim 1 wherein the step of providing the network device's advertised window size to a TCP source further comprises:

updating a TCP receiver's advertised window size.

7. The method of claim 6 wherein the step of updating a TCP receiver's advertised window size further comprises:

identifying whether a packet is an ACK packet, and, if not, putting the non-ACK packet in a reverse data buffer;

determining a service class for the identified ACK packet;

reading the TCP receiver's advertised window size (RW rec ) and a checksum (RCHKSUM) from the identified ACK packet;

determining whether the TCP receiver's advertised window size RW REC , is less than or equal to the calculated network device's advertised window size W i (n) and, if not setting a advertised window field in the identified ACK packet equal to the network device's advertised window size W i (n) and updating the checksum field for the identified ACK packet.

8. The method of claim 1 wherein the step of calculating a dynamic buffer threshold further comprises:

initializing a timer to a predetermined time interval Δs and an iteration counter to a predetermined initial value n;

setting an initial dynamic buffer threshold T(0) equal to a gain constant γ multiplied by a buffer size B and divided by a number of service classes K;

sampling a current queue size q i (n) during the predetermined time interval Δs;

calculating a sum of the sampled current queue size according to the equation:

Q

(

n

)

=

i

=

1

K

q

i

(

n

)

;

determining whether the sum of the sampled current queue size is less than the product of the gain constant and the buffer size γB;

if so, updating the dynamic buffer threshold according to min{T(n−1)+ΔT, γB}, where ΔT is a step size that controls the rate at which the dynamic buffer threshold changes;

if not, updating the dynamic buffer threshold according to max{T(n−1)−ΔT, T min }, where T min is a predetermined minimum size for the dynamic buffer threshold;

resetting the timer, upon expiration of the predetermined interval Δs; and

iterating the iteration counter, upon expiration of the predetermined time interval Δs.

9. The method of claim 8 wherein the step of calculating a sum of the sampled current queue size further comprises:

filtering the sum of the sampled current queue size Q(n) according to the relation: {circumflex over (Q)}(n)=(1−φ){circumflex over (Q)}(n−1)+φQ(n), wherein φ is a predetermined parameter.

10. An apparatus for controlling the transmission of data packets through a network by controlling a Transmission Control Protocol (TCP) rate in a network device having a shared buffer with shared buffer space, the apparatus comprising:

a forward data buffer, organized into one or more queues that store at least one forward data packet;

a network device's advertised window size calculation module further comprising:

(1) a timer, initially set to a predetermined time interval Δt, and an iteration counter initially set to a predetermined initial value n;

(2) a current queue size sampler that samples a current queue size q i (n) during the predetermined time interval Δt;

(3) a current error signal calculation module that calculates a current error signal e i (n) based, at least in part, upon the current queue size q i (n); and

(4) a window size calculation module that calculates the network device's advertised window size W i (n), based, at least in part, upon the current error signal e i (n) according to the equation: W i (n)=[W i (n−1)+αe i (n)] W min W max , where α, W max , and W min , are predetermined parameters;

a feed back module that provides the network device's advertised window size to a TCP source; and

a dynamic buffer threshold module that calculates a dynamic buffer threshold based, at least in part, upon the sum of the queue sizes and the shared buffer space.

11. The apparatus of claim 10 wherein the current error signal calculation module further comprises:

a filter module that filters the current error signal e i (n) according to the relation: ê i (n)=(1−β)ê i (n−1)+βe i (n), where β is a predetermined parameter; and

wherein the window size calculation module calculates the network device's advertised window size W i (n), based, at least in part, upon the filtered current error signal ê i (n) according to the equation: W i (n)=[W i (n−1)+αê i (n)] W min W max , where α, W max , and W min , are predetermined parameters.

12. The apparatus of claim 10 wherein the feed back module further comprises:

an advertised window size updating module that updates a TCP receiver's advertised window size.

13. The apparatus of claim 12 wherein the advertised window size updating module further comprises:

an ACK packet identification module that identifies whether a packet is an ACK packet, and, if not, puts the non-ACK packet in a reverse data buffer;

an ACK packet classifier that determines a service class for the identified ACK packet;

an advertised window size reader that reads a TCP receiver's advertised window size (RW rec ) and a checksum (RCHKSUM) from the identified ACK packet;

a window size comparison module that determines whether the TCP receiver's advertised window size RW REC , is less than or equal to the calculated network device's advertised window size W i (n) and, if not sets an advertised window field in the identified ACK packet equal to the calculated network device's advertised window size W i (n) and updates the checksum field for the identified ACK packet.

14. The apparatus of claim 10 wherein the dynamic buffer threshold module further comprises:

a timer initially set to a predetermined time interval Δs and an iteration counter initially set to a predetermined initial value n;

a current queue size sampler that samples a current queue size q i (n) during the predetermined time interval Δs;

a current queue size calculation module that calculates a sum of the sampled current queue size according to the equation:

Q

(

n

)

=

i

=

1

K

q

i

(

n

)

,

where K is a number of service classes;

a dynamic buffer threshold determiner that determines whether the sum of the sampled current queue size is less than the product of a gain constant γ and a buffer size B;

and an updating module that updates the dynamic buffer threshold if the sum of the sampled current queue size is less than the product of the gain constant γ and the buffer size B, according to min{T(n−1)+ΔT, γB}, where ΔT is a step size that controls the rate at which the dynamic buffer threshold changes and if the sum of the sampled current queue size is not less than the product of a gain constant γ and a buffer size B, updates the dynamic buffer threshold according to max{T(n−1)−ΔT, T min }, where T min is a predetermined minimum size for the dynamic buffer threshold.

15. The apparatus of claim 14 wherein the current queue size calculation module further comprises:

a filter that filters the sum of the sampled current queue size Q(n) according to the relation: {circumflex over (Q)}(n)=(1−φ){circumflex over (Q)}(n−1)+φQ(n), wherein φ is a predetermined parameter.

16. An article of manufacture for controlling the transmission of data packets through a network by controlling a Transmission Control Protocol (TCP) rate in a network device having a shared buffer with shared buffer space, the article of manufacture comprising:

at least one processor readable carrier; and

instructions carried on the at least one carrier;

wherein the instructions are configured to be readable from the at least one carrier by at least one processor and thereby cause the at least one processor to operate so as to:

organize a forward data buffer into one or more queues that store at least one forward data packet;

calculate a network device's advertised window size by:

(1) initializing a timer to a predetermined time interval Δt, and an iteration counter to a predetermined initial value n;

(2) sampling a current queue size q i (n) during the predetermined time interval Δt;

(3) calculating a current error signal e i (n) based, at least in part, upon the current queue size q i (n);

(4) calculating the network device's advertised window size W i (n), based, at least in part, upon the current error signal e i (n) according to the equation: W i (n)=[W i (n−1)+αe i (n)] W min W max , where α, W max , and W min , are predetermined parameters;

(5) resetting the timer, upon expiration of the predetermined interval Δt; and

(6) iterating the iteration counter, upon expiration of the predetermined time interval Δt;

provide the network device's advertised window size to a TCP source; and

calculate a dynamic buffer threshold based, at least in part, upon the sum of the queue sizes and the shared buffer space.

17. The article of manufacture of claim 16 wherein the instructions are configured to be readable from the at least one carrier by at least one processor and thereby cause the at least one processor to operate so as to:

organize the forward data buffer into one or more queues with one queue per service class.

18. The article of manufacture of claim 16 wherein the instructions are configured to be readable from the at least one carrier by at least one processor and thereby cause the at least one processor to operate so as to:

store the at least one forward data packet according to its service class.

19. The article of manufacture of claim 16 wherein the instructions are configured to be readable from the at least one carrier by at least one processor and thereby cause the at least one processor to operate so as to:

filter the current error signal e i (n) according to the relation: ê i (n)=(1−β)ê i (n−1)+βe i (n), where β is a predetermined parameter; and

calculate the network device's advertised window size W i (n), based, at least in part, upon the filtered current error signal ê i (n) according to the equation: W i (n)=[W i (n−1)+αê i (n)] W min W max , where α, W max , and W min , are predetermined parameters.

20. The article of manufacture of claim 16 wherein the instructions are configured to be readable from the at least one carrier by at least one processor and thereby cause the at least one processor to operate so as to:

carry information relating to the network device's advertised window size by returning TCP acknowledgements in a receiver's advertised window field.

21. The article of manufacture of claim 16 wherein the instructions are configured to be readable from the at least one carrier by at least one processor and thereby cause the at least one processor to operate so as to:

update a TCP receiver's advertised window size.

22. The article of manufacture of claim 21 wherein the instructions are configured to be readable from the at least one carrier by at least one processor and thereby cause the at least one processor to operate so as to:

identify whether a packet is an ACK packet, and, if not, put the non-ACK packet in a reverse data buffer;

determine a service class for the identified ACK packet;

read a TCP receiver's advertised window size (RW rec ) and a checksum (RCHKSUM) from the identified ACK packet;

determine whether the TCP receiver's advertised window size RW REC , is less than or equal to the calculated network device's advertised window size W i (n) and, if not setting an advertised window field in the identified ACK packet equal to the calculated network device's advertised window size W i (n) and updating the checksum field for the identified ACK packet.

23. The article of manufacture of claim 16 wherein the instructions are configured to be readable from the at least one carrier by at least one processor and thereby cause the at least one processor to operate so as to:

initialize a timer to a predetermined time interval Δs and an iteration counter to a predetermined initial value n;

set an initial dynamic buffer threshold T(0) equal to a gain constant γ multiplied by a buffer size B and divided by a number of service classes K;

sample a current queue size q i (n) during the predetermined time interval Δs;

calculate a sum of the sampled current queue size according to the equation:

Q

(

n

)

=

i

=

1

K

q

i

(

n

)

;

determine whether the sum of the sampled current queue size is less than the product of the gain constant and the buffer size γB;

if so, updating the dynamic buffer threshold according to min{T(n−1)+ΔT, γB}, where ΔT is a step size that controls the rate at which the dynamic buffer threshold changes;

if not, updating the dynamic buffer threshold according to max{T(n−1)−ΔT, T min }, where T min is a predetermined minimum size for the dynamic buffer threshold;

reset the timer, upon expiration of the predetermined interval Δs; and

iterate the iteration counter, upon expiration of the predetermined time interval Δs.

24. The article of manufacture of claim 23 wherein the instructions are configured to be readable from the at least one carrier by at least one processor and thereby cause the at least one processor to operate so as to:

filter the sum of the sampled current queue size Q(n) according to the relation: {circumflex over (Q)}(n)=(1−φ){circumflex over (Q)}(n−1)+φQ(n), wherein φ is a predetermined parameter.

Assignments (15)
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 61087/0386) Recorded May 18, 2023
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: AVAYA MANAGEMENT L.P.; AVAYA INC.; INTELLISIST, INC.; AVAYA INTEGRATED CABINET SOLUTIONS LLC
Reel/Frame 063690/0359 →
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 48612/0598) Recorded May 18, 2023
From: GOLDMAN SACHS BANK USA., AS COLLATERAL AGENT
To: AVAYA INC.; INTELLISIST, INC.; AVAYA INTEGRATED CABINET SOLUTIONS LLC; OCTEL COMMUNICATIONS LLC; VPNET TECHNOLOGIES, INC.; ZANG, INC. (FORMER NAME OF AVAYA CLOUD INC.); HYPERQUALITY, INC.; HYPERQUALITY II, LLC; CAAS TECHNOLOGIES, LLC; AVAYA MANAGEMENT L.P.
Reel/Frame 063691/0294 →
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 53955/0436) Recorded May 18, 2023
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: AVAYA MANAGEMENT L.P.; AVAYA INC.; INTELLISIST, INC.; AVAYA INTEGRATED CABINET SOLUTIONS LLC
Reel/Frame 063705/0023 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded May 4, 2023
From: AVAYA INC.; AVAYA MANAGEMENT L.P.; INTELLISIST, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 063542/0662 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded May 3, 2023
From: AVAYA MANAGEMENT L.P.; AVAYA INC.; INTELLISIST, INC.; KNOAHSOFT INC.
To: WILMINGTON SAVINGS FUND SOCIETY, FSB [COLLATERAL AGENT]
Reel/Frame 063742/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS AT REEL 48612/FRAME 0582 Recorded Apr 26, 2023
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: AVAYA HOLDINGS CORP.; AVAYA INC.; AVAYA MANAGEMENT L.P.
Reel/Frame 063456/0428 →
RELEASE OF SECURITY INTEREST IN PATENTS AT REEL 57700/FRAME 0935 Recorded Apr 26, 2023
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: AVAYA HOLDINGS CORP.; AVAYA INC.; AVAYA MANAGEMENT L.P.
Reel/Frame 063458/0303 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Aug 5, 2022
From: AVAYA INC.; INTELLISIST, INC.; AVAYA MANAGEMENT L.P.; AVAYA CABINET SOLUTIONS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 061087/0386 →
SECURITY INTEREST Recorded Oct 4, 2021
From: AVAYA MANAGEMENT LP
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 057700/0935 →
SECURITY INTEREST Recorded Sep 25, 2020
From: AVAYA INC.; AVAYA MANAGEMENT L.P.; INTELLISIST, INC.; AVAYA INTEGRATED CABINET SOLUTIONS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 053955/0436 →
SECURITY INTEREST Recorded Mar 15, 2019
From: AVAYA MANAGEMENT L.P.
To: CITIBANK, N.A.
Reel/Frame 048612/0582 →
SECURITY INTEREST Recorded Mar 15, 2019
From: AVAYA MANAGEMENT L.P.
To: GOLDMAN SACHS BANK USA
Reel/Frame 048612/0598 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 12, 2019
From: AVAYA HOLDINGS LIMITED
To: AVAYA MANAGEMENT L.P.
Reel/Frame 048577/0492 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2010
From: NORTEL NETWORKS LIMITED
To: AVAYA HOLDINGS LIMITED
Reel/Frame 023998/0799 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 18, 2000
From: AWEYA, JAMES; OUELLETTE, MICHEL; MONTUNO, DELFIN Y.
To: NORTEL NETWORKS LIMITED
Reel/Frame 011384/0769 →