IP Library Granted Patent US 10,045,252
Granted Patent B2
US 10,045,252 · App. 15/171,044 · Granted Aug 7, 2018

Virtual switch-based congestion control for multiple TCP flows

Inventors: Kanak B. Agarwal (Austin, TX); John Carter (Austin, TX); Wesley M. Felter (Austin, TX); Yu Gu (Cedar Park, TX); Eric J. Rozner (Austin, TX); Keqiang He (Madison, WI)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
H04W28/0289H04L43/16H04L47/11H04L47/27H04L49/70
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,045,252
App. No.
15/171,044
Granted
Aug 7, 2018
Kind
B2
Abstract

At an application executing in conjunction with a vSwitch a determination is made that a first flow from a first VM is experiencing congestion. The first flow is selected for throttling. a second flow is also selected for throttling, the second flow using a portion of a network path used by the first flow in a data network. At the application, a total CWND adjustment is distributed between the first flow and the second flow. A first CWND value associated with the first flow is adjusted by a first portion of the total CWND window, and a second CWND value associated with the second flow is adjusted by a second portion of the total CWND window.

Claims (58)

1. A method comprising:

determining, at an application executing in conjunction with a virtual switch (vSwitch) in a host system, using a processor assigned to the vSwitch in the host system, that a first flow from a first virtual machine (VM) is experiencing congestion;

selecting, at the application, the first flow for throttling;

selecting, at the application, a second flow for throttling, the second flow using a portion of a network path used by the first flow in a data network;

distributing, at the application, a total congestion window (CWND) adjustment to the first flow and the second flow; and

adjusting a first CWND value associated with the first flow by a first portion of the total CWND window, and a second CWND value associated with the second flow by a second portion of the total CWND window.

2. The method of claim 1 , further comprising:

dividing, as a part of the distributing, the total CWND adjustment such that the first portion and the second portion are substantially equal.

3. The method of claim 1 , further comprising:

computing, as a part of the distributing, a fraction such that the first portion adjusts a previous first CWND of the first flow by the fraction and the second portion adjusts a previous second CWND of the second flow by the fraction.

4. The method of claim 1 , further comprising:

computing, as a part of the distributing, the first portion as a function of a flow parameter of the first flow; and

computing, as a part of the distributing, the second portion as a function of a flow parameter of the second flow.

5. The method of claim 4 , wherein the flow parameter of the first flow is a bandwidth used by the first flow, and wherein the flow parameter of the second flow is a bandwidth used by the second flow.

6. The method of claim 1 , wherein the total CWND adjustment is sufficient to reduce a congestion in the network path to below a threshold level of congestion.

7. The method of claim 1 , wherein the second flow is from a second VM coupled with the vSwitch.

8. The method of claim 1 , further comprising: identifying a link in the network path used by the first flow, wherein the link is congested.

9. The method of claim 8 , wherein the portion is the link.

10. The method of claim 1 , further comprising:

computing, as a result of the distributing and the adjusting, at the application, a reduced first CWND value associated with the first flow and a reduced second CWND value associated with the second flow by a second portion of the total CWND window.

11. The method of claim 10 , further comprising:

receiving a response packet responsive to a packet sent in the first flow;

replacing a receiver advertised window (RWND) value in the response packet with the reduced first CWND value, the replacing forming a modified response packet; and

sending the modified response packet to the first VM.

12. The method of claim 10 , further comprising:

receiving in the second flow a number of packets;

dropping, at the application, to form a throttled second flow, responsive to the number of packets exceeding the reduced second CWND value, a second number of packets from the second flow, the second number being obtained by subtracting the reduced second CWND value from the number; and

transmitting to the data network the throttled second flow.

13. The method of claim 1 , further comprising:

computing, as a part of determining that the first flow is congested, that a delay in receiving a response packet responsive to a packet sent in the first flow exceeds a threshold delay.

14. The method of claim 1 , further comprising:

detecting, as a part of determining that the first flow is congested, that a packet sent in the first flow has been lost.

15. The method of claim 1 , further comprising:

sending a notification to a second vSwitch, the notification informing the second vSwitch about the congestion in the network path;

causing, responsive to the sending, at the second vSwitch, a selection of a third flow for throttling at the second vSwitch, the third flow flowing through the second vSwitch, and the third flow being added to a second subset of a second set of flows flowing through the second vSwitch;

causing, responsive to the selection of the third flow at the second vSwitch, a computation of a second total CWND adjustment applicable to the second subset of flows; and

causing, at the second vSwitch, an adjusting of a third CWND value associated with the third flow by a third portion of the second total CWND window.

16. The method of claim 15 , further comprising:

causing, at the second vSwitch, the selection of the third flow responsive to a determination that the third flow uses at least a portion of the network path in which the notification informs of congestion.

17. A computer usable program product comprising a computer readable storage device including computer usable code, the computer usable code when executed causing a processor to carry out operations, the operations comprising:

determining, at an application executing in conjunction with a virtual switch (vSwitch) in a host system, using a processor assigned to the vSwitch in the host system, that a first flow from a first virtual machine (VM) is experiencing congestion;

selecting, at the application, the first flow for throttling;

selecting, at the application, a second flow for throttling, the second flow using a portion of a network path used by the first flow in a data network;

distributing, at the application, a total congestion window (CWND) adjustment to the first flow and the second flow; and

adjusting a first CWND value associated with the first flow by a first portion of the total CWND window, and a second CWND value associated with the second flow by a second portion of the total CWND window.

18. The computer usable program product of claim 15 , the operations further comprising:

transferring over a network from a remote data processing system, the computer usable code; and

storing, responsive to the transferring, the computer usable code in a computer readable storage device in a data processing system.

19. The computer usable program product of claim 15 , the operations further comprising:

downloading the computer usable code, from a server data processing system where the computer usable code is stored, to a remote data processing system over a network, for use in a computer readable storage device associated with the remote data processing system.

20. A data processing system comprising:

a storage device, wherein the storage device stores computer usable program code; and

a processor, wherein the processor executes the computer usable program code, and wherein the computer usable program code comprises:

computer usable code for determining, at an application executing in conjunction with a virtual switch (vSwitch) in a host system, using a processor assigned to the vSwitch in the host system, that a first flow from a first virtual machine (VM) is experiencing congestion;

computer usable code for selecting, at the application, the first flow for throttling;

computer usable code for selecting, at the application, a second flow for throttling, the second flow using a portion of a network path used by the first flow in a data network;

computer usable code for distributing, at the application, a total congestion window (CWND) adjustment to the first flow and the second flow; and

computer usable code for adjusting a first CWND value associated with the first flow by a first portion of the total CWND window, and a second CWND value associated with the second flow by a second portion of the total CWND window.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2016
From: HE, KEQIANG
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038793/0454 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 2, 2016
From: AGARWAL, KANAK B.; CARTER, JOHN; FELTER, WESLEY M.; GU, YU; ROZNER, ERIC J.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038773/0720 →
Continuity (1)
Related Publication 20170353886A1 · Dec 7, 2017
Cited By (1)
US 12,368,591