IP Library › Granted Patent US 7,299,280
Granted Patent B2
US 7,299,280 · App. 10/272,646 · Granted Nov 20, 2007

Method and apparatus for TCP with faster recovery

Assignee: The Regents of University of California
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,299,280
App. No.
10/272,646
Granted
Nov 20, 2007
Kind
B2
Abstract

A method and apparatus for congestion control of a Transmission Control Protocol (TCP) connection. A TCP source monitors received acknowledgments (ACKs) and uses header information associated with the ACKs to determine an amount of data delivered at a TCP receiver. The amount of delivered data, divided by the time requited to deliver the data, gives a measure of instant data rate. The instant data rate is input to a filtering and averaging process to generate an estimate of the end-to-end bandwidth share or data rate of the connection. For the entire duration of the connection, the TCP source updates its estimate of the end-to-end bandwidth share every time an ACK is received. The estimate of the end-to-end bandwidth share is used the reset a congestion window and a slow start threshold whenever packet loss is indicated such as whenever a timeout expires or whenever three (3) duplicate ACKs are received.

Claims (45)

1. A method for setting a congestion control window for transmitting data between a plurality of computing devices across a connection through a computer network, comprising:

generating under control of a first one of the computing devices an estimate of end-to-end bandwidth share currently achieved by the connection of the first one of the computing devices through the computer network, wherein the estimated end-to-end bandwidth share currently achieved by the connection is generated from monitoring a time interval associated with one or more acknowledgement packets received by the first one of the computing devices;

detecting under control of the first one of the computing devices a congestion indicator configured to indicate congestion on the computer network; and

if the congestion indicator is detected, performing the steps comprising:

adjusting under control of the first one of the computing devices the congestion control window and a slow start threshold using the estimated end-to-end bandwidth; and

setting the congestion window to the size of the slow start threshold if the size of the congestion window is greater than the slow start threshold.

2. The method of claim 1 , wherein the time interval is time elapsed between receipt of a prior acknowledgment packet and a current acknowledgment packet, and generating the estimated end-to-end bandwidth share currently achieved by the connection includes:

generating a sample bandwidth share by determining an amount of data acknowledged by the current acknowledgment packet and dividing the amount of data by the time interval; and

filtering the sample bandwidth share to generate the estimated end-to-end bandwidth share currently achieved by the connection.

3. The method of claim 2 further comprising:

updating the estimated end-to-end bandwidth share achieved for the connection for each received acknowledgment packet.

4. The method of claim 2 , wherein the amount of acknowledged data is included as header information in the current acknowledgment packet.

5. The method of claim 2 , wherein the sample bandwidth share is filtered using a discrete time filter.

6. The method of claim 1 , wherein the congestion indicator is a duplicate acknowledgement packet transmitted by one of the computing devices.

7. The method of claim 1 , wherein the congestion indicator is loss of a data packet.

8. The method of claim 1 , wherein the time interval is time elapsed between receipt of a prior acknowledgment packet and a current acknowledgment packet, and generating the estimated end-to-end bandwidth share currently achieved by the connection includes:

determining an amount of data acknowledged by the current acknowledgment packet; and

dividing the amount of data by the time interval.

9. The method of claim 8 , wherein the amount of acknowledged data is included as header information in the current acknowledgment packet.

10. An apparatus for setting a congestion control window for transmitting data between a plurality of computing devices across a connection through a computer network, comprising:

a processor; and

a memory coupled to the processor, the memory having processor executable program instructions stored therein, the program instructions when executed by the processor perform the steps including:

generating under control of a first one of the computing devices an estimate of end-to-end bandwidth share currently achieved by the connection of the first one of the computing devices through the computer network, wherein the estimated end-to-end bandwidth share currently achieved by the connection is generated from monitoring a time interval associated with one or more acknowledgement packets received by the first one of the computing devices;

detecting under control of the first one of the computing devices a congestion indicator configured to indicate congestion on the computer network; and

if the congestion indicator is detected, performing the steps comprising:

adjusting under control of first one of the computing devices the congestion control window and a slow start threshold using the estimated end-to-end bandwidth; and

setting the congestion window to the size of the slow start threshold if the size of the congestion window is greater than the slow start threshold.

11. The apparatus of claim 10 , wherein the time interval is time elapsed between receipt of a prior acknowledgment packet and a current acknowledgment packet, and the program instructions for generating the estimated end-to-end bandwidth share currently achieved by the connection further include:

generating a sample bandwidth share by determining an amount of data acknowledged by the current acknowledgment packet and dividing the amount of data by the time interval; and

filtering the sample bandwidth share to generate the estimated end-to-end bandwidth share currently achieved by the connection.

12. The apparatus of claim 11 , wherein amount of acknowledged data is included as header information in the current acknowledgment packet.

13. The apparatus of claim 11 , wherein the sample bandwidth share is filtered using an exponential filter.

14. The apparatus of claim 11 , wherein the sample bandwidth share is filtered using a discrete time filter.

15. A computer-readable medium storing program instructions for setting a congestion control window for transmitting data between a plurality of computing devices across a connection through a computer network, the program instructions when executed perform the steps comprising:

generating under control of a first one of the computing devices an estimate of end-to-end bandwidth share currently achieved by the connection of the first one of the computing devices through the computer network, wherein the estimated end-to-end bandwidth share currently achieved by the connection is generated from monitoring a time interval associated with one or more acknowledgement packets received by the first one of the computing devices;

detecting under control of the first one of the computing devices a congestion indicator configured to indicate congestion on the computer network; and

if the congestion indicator is detected, performing the steps comprising:

adjusting under control of the first one of the computing devices the congestion control window and a slow start threshold using the estimated end-to-end bandwidth; and

setting the congestion window to the size of the slow start threshold if the size of the congestion window is greater than the slow start threshold.

16. The computer-readable medium of claim 15 , wherein the time interval is time elapsed between receipt of a prior acknowledgment packet and a current acknowledgment packet, and the program instructions for generating the estimated end-to-end bandwidth share comprise:

generating a sample bandwidth share by determining an amount of data acknowledged by the current acknowledgment packet and dividing the amount of data by the time interval; and

filtering the sample bandwidth share to generate the estimated end-to-end bandwidth share currently achieved by the connection.

17. The computer-readable medium of claim 16 , wherein amount of acknowledged data is included as header information in the current acknowledgment packet.

18. The computer-readable medium of claim 16 , wherein the sample bandwidth share is filtered using an exponential filter.

19. The computer-readable medium of claim 16 , wherein the sample bandwidth share is filtered using a discrete time filter.

Assignments (2)
CONFIRMATORY LICENSE Recorded Jul 31, 2009
From: UNIVERSITY OF CALIFORNIA LOS ANGELES
To: NATIONAL SCIENCE FOUNDATION
Reel/Frame 023032/0173 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 7, 2003
From: GERLA, MARIO; SANADIDI, M. YAHYA; CASETTI, CLAUDIO E.; MASCOLO, SAVERIO; LEE, SCOTT S.
To: THE REGENTS OF UNIVERSITY OF CALIFORNIA
Reel/Frame 013963/0404 →
Continuity (2)
Provisional Application 6033036400 · Oct 17, 2001
Related Publication 20030149785A1 · Aug 7, 2003