IP Library Granted Patent US 7,729,249
Granted Patent B2
US 7,729,249 · App. 11/941,815 · Granted Jun 1, 2010

Systems and methods for improving TCP-friendliness of delay-based congestion control

Assignee: Microsoft Corporation
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,729,249
App. No.
11/941,815
Granted
Jun 1, 2010
Kind
B2
Abstract

Disclosed herein is a novel technique that greatly improves the TCP-friendliness of CTCP over such under-buffered network links without degrading the protocol efficiency to utilize the link capacity. Instead of using a pre-defined threshold, the disclosed approach, which may be referred to herein as “CTCP-TUBE,” dynamically adjusts the threshold based on the network setting in which the flow is operating. The backlogged packets of a regular TCP may be estimated along the same path by emulating the behavior of a regular TCP flow in runtime. Based on this, a threshold is set so as to ensure good TCP-friendliness. CTCP-TUBE can automatically adapt to different network configurations and also concurrent competing flows.

Claims (33)

1. A processor-implemented method for improving TCP-friendliness of delay-based congestion control, the method comprising:

choosing an initial value for a bottleneck queue size threshold;

estimating, via the processor, the bottleneck queue size once every round trip interval;

estimating, via the processor, a number of backlogged packets of a regular transfer control protocol (TCP) flow;

detecting that a packet loss has occurred; and

upon detection that a packet loss has occurred, updating the value of the bottleneck queue size threshold based on the estimated number of backlogged packets of the regular TCP flow calculated during the round trip interval immediately preceding the round trip interval in which the packet loss was detected.

2. The method of claim 1 , wherein, if the bottleneck queue size reaches the threshold, then the network is congested.

3. The method of claim 1 , wherein the bottleneck queue size corresponds to the amount of data backlogged in the bottleneck queue.

4. The method of claim 1 , wherein the amount of data backlogged in the bottleneck queue corresponds to the amount of data that was injected into the network in the last round but does not pass through the network in the current round.

5. The method of claim 1 , wherein estimating the bottleneck queue size comprises estimating the bottleneck queue size based on a comparison between an actual throughput and an estimate of a throughput that would be achieved if the network path is not overrun.

6. The method of claim 5 , wherein estimating the bottleneck queue size comprises estimating the bottleneck queue size based on an estimation of a transmission delay of a packet.

7. The method of claim 5 , wherein the actual throughput is based on a TCP sending window size and a round trip interval.

8. The method of claim 7 , wherein the estimate of the throughput that would be achieved is based on a TCP sending window size and an estimate of a transmission delay of a packet.

9. The method of claim 1 , wherein the round trip time is a period corresponding to a time taken for a data packet to travel from a sender to a receiver plus a time taken for a corresponding acknowledgement to travel from the receiver back to the sender.

10. A processor-implemented method for improving TCP-friendliness of delay-based congestion control, the method comprising:

choosing an initial value for a bottleneck queue size threshold;

periodically estimating, via the processor, the bottleneck queue size based on a comparison between an actual throughput and an estimate of a throughput that would be achieved if the network path is not overrun;

estimating, via the processor, a number of backlogged packets of a regular transfer control protocol (TCP) flow; and

updating, via the processor, the value of the bottleneck queue size threshold when a packet loss is detected.

11. The method of claim 10 , further comprising;

updating the threshold with an exponentially moving average.

12. The method of claim 10 , wherein estimating the bottleneck queue size comprises estimating the bottleneck queue size based on a difference between the actual throughput and the estimate of the throughput that would be achieved if the network path is not overrun.

13. The method of claim 10 , wherein estimating the bottleneck queue size comprises estimating the bottleneck queue size based on an estimation of a transmission delay of a packet.

14. The method of claim 10 , further comprising:

bounding the threshold with a range from a minimum to a maximum.

15. A processor-implemented method for improving TCP-friendliness of delay-based congestion control, the method comprising:

computing a delay window;

computing a conventional congestion window;

determining an advertised window from a receiver;

defining, via the processor, a transfer control protocol (TCP) sending window as the minimum of the delay window, the congestion window, and the advertised window; and

determining, via the processor, an amount of data backlogged in a bottleneck queue based on the TCP sending window.

16. The method of claim 15 , wherein determining the amount of data backlogged in the bottleneck queue is also based on an estimate of a transmission delay of a packet.

17. The method of claim 15 , wherein determining the amount of data backlogged in the bottleneck queue is also based on a round trip time taken for a data packet to travel from a sender to a receiver and back to the sender.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034542/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 5, 2008
From: TAN, KUN; SRIDHARAN, MURARI; SONG, JINGMIN
To: MICROSOFT CORPORATION
Reel/Frame 020760/0780 →
Continuity (2)
Provisional Application 6095989900 · Jul 16, 2007
Related Publication 20090022055A1 · Jan 22, 2009