# US 2014/0192639 A1 · 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 2014/0192639 A1
- Document ID: US20140192639A1
- Status: Published application
- Kind: A1
- Application number: 13/144,926
- Filed: 2009-10-29
- Published: 2014-07-10
- Earliest claimed: 2009-01-16
- Assignees: Mainline Net Holdings Limited
- Inventors: Vadim Smirnov
- Web page: https://patentgrep.com/patent/US20140192639A1

## 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 at position 1

-30. (canceled)

### Claim 31

A computer readable medium 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 32 (depends on 31)

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

### Claim at position 4

33-37. (canceled)

### Claim 38

A computer readable medium 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 39 (depends on 38)

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

### Claim 40 (depends on 38)

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

### Claim 41

(canceled)

### Claim 42 (depends on 40)

The computer readable medium of claim 40, 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 43 (depends on 38)

The computer readable medium of claim 38, 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 44 (depends on 43)

The computer readable medium of claim 43, 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 45 (depends on 44)

The computer readable medium of claim 44, 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 46 (depends on 44)

The computer readable medium of claim 44, 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 47 (depends on 38)

The computer readable medium of claim 38, 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 at position 15

-60. (canceled)

### Claim 61

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.

### Claim 62 (depends on 61)

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

### Claim 63

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 64 (depends on 63)

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

### Claim at position 20

-67. (canceled)

### Claim 68

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 69 (depends on 68)

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

### Claim 70 (depends on 68)

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

### Claim 71 (depends on 70)

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

### Claim 72 (depends on 70)

The computing system of claim 70, 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 73 (depends on 68)

The computing system of claim 68, 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 74 (depends on 73)

The computing system of claim 73, 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 75 (depends on 74)

The computing system of claim 74, 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 76 (depends on 74)

The computing system of claim 74, 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 77 (depends on 68)

The computing system of claim 68, 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 at position 31

-90. (canceled)
