# US 9,882,831 B2 · Maximizing bandwidth utilization in networks with high latencies and packet drops using transmission control protocol

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 9,882,831 B2
- Document ID: US9882831B2
- Status: Granted
- Kind: B2
- Application number: 13/144,926
- Filed: 2009-10-21
- Published: 2014-07-10
- Granted: 2018-01-30
- Earliest claimed: 2009-01-16
- Assignees: Mainline Net Holdings Limited
- Applicants: Vadim Smirnov
- Inventors: Vadim Smirnov
- Web page: https://patentgrep.com/patent/US9882831B2

## CPC

- H04L 47/10: Flow control; Congestion control
- H04L 47/12: Avoiding congestion; Recovering from congestion
- H04L 47/127: by using congestion prediction
- H04L 47/193: at the transport layer, e.g. TCP related
- H04L 47/27: Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
- H04L 47/283: in response to processing delays, e.g. caused by jitter or round trip time [RTT]
- H04L 47/80: Actions related to the user profile or the type of traffic
- H04L 69/16: Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Disclosed is a method of maximizing the utilization of currently available network path bandwidth by TCP transmissions. Embodiments of the present invention allow to automatically detect and utilize a larger portion of the currently available bandwidth (or even the entire bandwidth) for every specific connection and network path that utilizes the invention. Furthermore, some embodiments of the present invention provide that the software implementing the technology may be running only at the data sender side and may communicate with a standard receiver. According to embodiments of the present invention, the software implementing the invention may be placed between a TCP/IP protocol driver and a Network Interface driver. Such intermediate software may hide the real network state from TCP/IP driver and shift the TCP connection SWND edge by means of Preemptive Spoof Data Acknowledgment and Packet Loss Concealment.

## Claims

### Claim 1

A computer readable memory comprising computer executable instructions, the instructions being configured for execution by a processor and configured to cause the processor to transmit data over a network while avoiding congestion, the transmission being performed according to a protocol that utilizes a sliding window, the instructions being further configured to cause the processor to:
calculate the round trip times (RTT) of transmitted segments; and
modify the size of a sending window based on the calculated RTT and the rate of change of the calculated RTT, wherein said modifications are not dependent on transmission rates;
control the size of a sending window according to a first mode when transmitting data for the first time; and
control the size of a sending window according to a second mode when re-transmitting already transmitted data upon determination that the already transmitted data may have been dropped by the network, and
wherein the first and second modes of controlling the size of the sending window differ.

### Claim 2 (depends on 1)

The computer readable memory of claim 1, wherein the protocol is the Transmission Control Protocol (TCP).

### Claim 3

A computer readable memory comprising computer executable instructions, the instructions being configured for execution by a processor and configured to cause the processor to transmit data over a network while avoiding congestion, the transmission being performed according to a protocol that utilizes a sliding window, the instructions being further configured to cause the processor to:
calculate the round trip times (RTT) of transmitted segments;
determine whether a transmitted segment may have been dropped by the network;
based on the calculated RTT and the determination of whether a segment may have been dropped, determine to operate in one of at least four states, the states indicating progressively larger levels of congestion in the network, wherein
a first, second and third states of the at least four states are associated with progressively larger RTTs and with an absence of dropped segments, and
a fourth state of the at least four states is associated with the determination that a segment may have been dropped;
during operation in the first state, increase the size of a sending window exponentially;
during operation in the second state, increase the size of a sending window linearly;
during operation in the third state, decrease the size of the sending window linearly; and during operation in the fourth state, decrease the size of the sending window, according to a formula different than that used during the third state.

### Claim 4 (depends on 3)

The computer readable memory of claim 3, wherein the protocol is the Transmission Control Protocol (TCP).

### Claim 5 (depends on 3)

The computer readable memory of claim 3, wherein during operation in the fourth state, segments that have been previously transmitted and are determined to have been dropped are retransmitted.

### Claim 6 (depends on 5)

The computer readable memory of claim 5, wherein the sending window size is decreased once upon entering the fourth state, and the sending window size is not decreased again until exiting from the fourth state.

### Claim 7 (depends on 3)

The computer readable memory of claim 3, wherein the determination of which state to operate in is based on a difference between the last calculated RTT (NEW_RTT) and a predetermined MIN_RTT value indicating the smallest RTT recently calculated.

### Claim 8 (depends on 7)

The computer readable memory of claim 7, further including calculating the current growth of RTT and wherein the determination of which state to operate in is at least partially based on the current growth of RTT.

### Claim 9 (depends on 8)

The computer readable memory of claim 8, wherein the current growth of RTT is based on a smoothed running average of the changes between consecutive RTTs over a predefined number of acknowledgements.

### Claim 10 (depends on 8)

The computer readable memory of claim 8, wherein the at least four states include a fifth state that indicates a negative current growth of RTT while there is no determination that a segment may have been dropped and the instructions are further configured to cause the processor to:
during operation in the fifth state, keep the sending window constant.

### Claim 11 (depends on 3)

The computer readable memory of claim 3, wherein the instructions are further configured to cause the processor to:
during operation in the third state, determine whether congestion is primarily caused by data sent by the processor, or by data sent by other computers or entities on the network, and using two different formulas for decreasing the sending window based on said determination.

### Claim 12

A computing system connected to a network, the computing system including a processor and a memory, the memory including a plurality of instructions the instructions being configured to cause the processor to transmit data over a network while avoiding congestion, the transmission being performed according to a protocol that utilizes a sliding window, the instructions further causing the processor to perform the steps of:
calculating the round trip times (RTT) of transmitted segments; and
modifying the size of a sending window based on the calculated RTT and the rate of change of the calculated RTT, wherein said modifications are not dependent on transmission rates;
controlling the size of a sending window according to a first mode when transmitting data for the first time; and
controlling the size of a sending window according to a second mode when re-transmitting already transmitted data upon determination that the already transmitted data may have been dropped by the network,
wherein the first and second modes of controlling the size of the sending window differ.

### Claim 13 (depends on 12)

The computing system of claim 12, wherein the protocol is the Transmission Control Protocol (TCP).

### Claim 14

A computing system connected to a network, the computing system including a processor and a memory, the memory including a plurality of instructions the instructions being configured to cause the processor to transmit data over a network while avoiding congestion, the transmission being performed according to a protocol that utilizes a sliding window, the instructions further causing the processor to perform the steps of:
calculating the round trip times (RTT) of transmitted segments;
determining whether a transmitted segment may have been dropped by the network;
based on the calculated RTT and the determination of whether a segment may have been dropped,
determining to operate in one of at least four states, the states indicating progressively larger levels of congestion in the network, wherein
a first, second and third states of the at least four states are associated with progressively larger RTTs and with an absence of dropped segments, and
a fourth state of the at least four states is associated with the determination that a segment may have been dropped;
during operation in the first state, increasing the size of a sending window exponentially; during operation in the second state, increasing the size of a sending window linearly; during operation in the third state, decreasing the size of the sending window linearly; and during operation in the fourth state, decreasing the size of the sending window, according to a formula different than that used during the third state.

### Claim 15 (depends on 14)

The computing system of claim 14, wherein the protocol is the Transmission Control Protocol (TCP).

### Claim 16 (depends on 14)

The computing system of claim 14, wherein during operation in the fourth state, segments that have been previously transmitted and are determined to have been dropped are retransmitted.

### Claim 17 (depends on 16)

The computing system of claim 16, wherein all retransmission of segments that have been determined to have been dropped is performed during operation in the fourth state.

### Claim 18 (depends on 16)

The computing system of claim 16, wherein the sending window size is decreased once upon entering the fourth state, and the sending window size is not decreased again until exiting from the fourth state.

### Claim 19 (depends on 14)

The computing system of claim 14, wherein the determination of which state to operate in is based on a difference between the last calculated RTT (NEW_RTT) and a predetermined MIN_RTT value indicating the smallest RTT recently calculated.

### Claim 20 (depends on 19)

The computing system of claim 19, wherein the instructions further cause the processor to perform the step of calculating the current growth of RTT and wherein the determination of which state to operate in is at least partially based on the current growth of RTT.

### Claim 21 (depends on 20)

The computing system of claim 20, wherein the current growth of RTT is based on a smoothed running average of the changes between consecutive RTTs over a predefined number of acknowledgements.

### Claim 22 (depends on 20)

The computing system of claim 20, wherein the at least four states include a fifth state that indicates a negative current growth of RTT while there is no determination that a segment may have been dropped and the instructions are further configured to cause the processor to perform the step of:
during operation in the fifth state, keeping the sending window constant.

### Claim 23 (depends on 14)

The computing system of claim 14, wherein the instructions are further configured to cause the processor to perform the step of:
during operation in the third state, determining whether congestion is primarily caused by the operation of the processor, or by data sent by other computers or entities on the network, and using two different formulas for decreasing the sending window based on said determination.

### Claim 24

A method for transmitting data over a network by a computer while avoiding congestion, the transmission being performed according to a protocol that utilizes a sliding window, in particular according to the Transmission Control Protocol (TCP), and in which a receiving side advertises a receiver window size (RWND), said sliding window being utilized preferably at least in a congestion avoidance phase and in a retransmit phase, the method comprising the steps of:
calculating the round trip times (RTT) of transmitted segments;
modifying the size of a sending window (SWND) based on a currently calculated RTT value wherein, in particular during said congestion avoidance phase, said window size modifications are not limited by RWND and let SWND grow beyond RWND to allow faster transmission rates;
determining whether a transmitted segment may have been dropped by the network;
based on the calculated RTT and the determination of whether a segment may have been dropped, determining to operate in one of at least four states, the states indicating progressively larger levels of congestion in the network, wherein
a first, second and third states of the at least four states are associated with progressively larger RTTs and with an absence of dropped segments, and in particular with said congestion avoidance phase, and
a fourth state of the at least four states is associated with the determination that a segment may have been dropped, and in particular with said retransmit phase;
during operation in the first state, increasing the size of a sending window exponentially;
during operation in the second state, increasing the size of a sending window linearly;
during operation in the third state, decreasing the size of the sending window linearly; and
during operation in the fourth state, in particular in said retransmit phase, decreasing the size of the sending window, according to a formula different than that used during the third state, in particular according to a rule that is different from the rules used in said congestion avoidance phase.

### Claim 25 (depends on 24)

The method of claim 24, wherein during operation in the fourth state, segments that have been previously transmitted and are determined to have been dropped are retransmitted, wherein preferably all retransmission of segments that have been determined to have been dropped is performed during operation in the fourth state, and wherein further preferably the sending window size is decreased once upon entering the fourth state and not decreased again until exiting from the fourth state.

### Claim 26 (depends on 24)

The method of claim 24, wherein the determination of which state to operate in is based on a difference between the last calculated RTT (NEW RTT) and a predetermined MIN RTT value indicating the smallest RTT recently calculated, preferably further including calculating the current growth of RTT, in particular calculating the current growth of RTT based on a smoothed running average of the changes between consecutive RTTs over a predefined number of acknowledgements, the determination of which state to operate in being at least partially based on the current growth of RTT.

### Claim 27 (depends on 26)

The method of claim 26, wherein said states include a fifth state that indicates a negative current growth of RTT while there is no determination that a segment may have been dropped and the method further includes the step of:
during operation in the fifth state, keeping the sending window constant.

### Claim 28 (depends on 24)

The method of claim 24 further comprising, during operation in the third state, determining whether congestion is primarily caused by the operation of the method of claim 24, or by data sent by other computers or entities on the network, and using two different formulas for decreasing the sending window based on said determination.

### Claim 29 (depends on 24)

The method of claim 24, wherein the modifying of the size of the sending window is further based on the variation of the calculated RTT over a period of time.

### Claim 30 (depends on 24)

The method of claim 24, wherein the modifying of the size of the sending window comprises, during said congestion avoidance phase, increasing the size of the sending window exponentially or linearly if transmission rate is above or equal to a threshold that depends on a currently calculated RTT value and decreasing the size of the sending window if transmission rate is below that threshold.

### Claim 31

A computing system connected to a network, the computing system including a processor and a memory, the memory including a plurality of instructions, the instructions being configured to cause the processor to transmit data over a network while avoiding congestion, the transmission being performed according to a protocol that utilizes a sliding window, in particular according to the Transmission Control Protocol (TCP), and in which a receiving side advertises a receiver window size (RWND), said sliding window being utilized preferably at least in a congestion avoidance phase and in a retransmit phase, the instructions further causing the processor to perform the steps of:
calculating the round trip times (RTT) of transmitted segments;
modifying the size of a sending window (SWND) based on a currently calculated RTT value wherein, in particular during said congestion avoidance phase, said window size modifications are not limited by RWND and let SWND grow beyond RWND to allow faster transmission rates;
determining whether a transmitted segment may have been dropped by the network;
based on the calculated RTT and the determination of whether a segment may have been dropped, determining to operate in one of at least four states, the states indicating progressively larger levels of congestion in the network, wherein
a first, second and third states of the at least four states are associated with progressively larger RTTs and with an absence of dropped segments, and in particular with said congestion avoidance phase, and
a fourth state of the at least four states is associated with the determination that a segment may have been dropped, and in particular with said retransmit phase;
during operation in the first state, increasing the size of a sending window exponentially;
during operation in the second state, increasing the size of a sending window linearly;
during operation in the third state, decreasing the size of the sending window linearly; and
during operation in the fourth state, in particular in said retransmit phase, decreasing the size of the sending window, according to a formula different than that used during the third state, in particular according to a rule that is different from the rules used in said congestion avoidance phase.

### Claim 32 (depends on 31)

The computing system of claim 31, wherein during operation in the fourth state, segments that have been previously transmitted and are determined to have been dropped are retransmitted, wherein preferably all retransmission of segments that have been determined to have been dropped is performed during operation in the fourth state, and wherein further preferably the sending window size is decreased once upon entering the fourth state and not decreased again until exiting from the fourth state.

### Claim 33 (depends on 31)

The computing system of claim 31, wherein the determination of which state to operate in is based on a difference between the last calculated RTT (NEW RTT) and a predetermined MIN RTT value indicating the smallest RTT recently calculated, and wherein the instructions preferably further cause the processor to perform the step of calculating the current growth of RTT, in particular calculating the current growth of RTT based on a smoothed running average of the changes between consecutive RTTs over a predefined number of acknowledgements, the determination of which state to operate being at least partially based on the current growth of RTT.

### Claim 34 (depends on 33)

The computing system of claim 33, wherein said states include a fifth state that indicates a negative current growth of RTT while there is no determination that a segment may have been dropped and the instructions are further configured to cause the processor to perform the step of:
during operation in the fifth state, keeping the sending window constant.

### Claim 35 (depends on 31)

The computing system of claim 31, wherein the instructions are further configured to cause the processor to perform the step of:
during operation in the third state, determining whether congestion is primarily caused by the operation of the processor, or by data sent by other computers or entities on the network, and using two different formulas for decreasing the sending window based on said determination.

### Claim 36 (depends on 31)

The computing system of claim 31, wherein the modifying of the size of the sending window is further based on the variation of the calculated RTT over a period of time.

### Claim 37 (depends on 31)

The computing system of claim 31, wherein the modifying of the size of the sending window comprises, during said congestion avoidance phase, increasing the size of the sending window exponentially or linearly if transmission rate is above or equal to a threshold that depends on a currently calculated RTT value and decreasing the size of the sending window if transmission rate is below that threshold.
