Patent ID: 7839783

Claim:
A method of controlling congestion in a network between a first network device and a peer second network device, the method comprising the steps of: establishing, by the first network device, an aggregated virtual connection between the first network device and the peer second device, wherein the aggregated virtual connection has an associated congestion window; setting, by the first network device, the congestion window size to an initial value; in a first state of the first network device, exponentially increasing the congestion window size; in response to the congestion window size exceeding a first threshold value while in the first state, transitioning the first network device to a second state; in the second state, linearly increasing the congestion window size; in response to a round trip time of a connection between the first network device and the peer second network device exceeding a second threshold value while in the second state, transitioning the first network device to a third state; in the third state, maintaining the congestion window size until a packet loss occurs; if the packet loss occurs, transitioning the first network device to a fourth state; in the fourth state, decreasing the congestion window size in proportion to the number of packets lost; detecting a loss of packets; upon detecting the loss of packets, recording a number of outstanding packets at the time of loss detection; recording a number of packets lost in the network during one round trip time; transitioning the first network device to a fifth state, wherein the congestion window size is set to the number of outstanding packets at the time of loss detection, reduced by an amount proportional to the number of packets lost in the network during one round trip time.