# US 9,883,013 B2 · Receive window auto-tuning

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

- Number: US 9,883,013 B2
- Document ID: US9883013B2
- Status: Granted
- Kind: B2
- Application number: 14/882,298
- Filed: 2015-10-13
- Published: 2016-02-04
- Granted: 2018-01-30
- Earliest claimed: 2005-09-30
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Kevin T. Weston; Abolade Gbadegesin; Deepak Bansal; Murari Sridharan; Sanjay N. Kaniyar
- Web page: https://patentgrep.com/patent/US9883013B2

## CPC

- H04L 69/163: In-band adaptation of TCP data exchange; In-band control procedures
- 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/30: in combination with information about buffer occupancy at either end or at transit nodes
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Methods of tuning a receive window. A receiving device and a sending device may be in communication over a network. The receiving device may advertise a receive window to the sending device. The size of the receive window may be adjusted over time based on one or more connection parameters, application parameters and/or operating system parameters.

## Claims

### Claim 1

A method performed on a computing device, the method comprising:
receiving, by the computing device from a second device according to a communications protocol, data;
determining, by the computing device based on a bandwidth and a round-trip time, a size of a receive window of the communications protocol;
adjusting, by the computing device based on a scaling factor, the determined size of the receive window of the communications protocol, where the scaling factor is based on a ratio involving a first amount of data received in a receive buffer during a time period and a second amount of data removed from the receive buffer during the time period; and
advertising, by the computing device to the second device, the size of the adjusted receive window.

### Claim 2 (depends on 1)

The method of claim 1 where the size of the receive window is further based on a size of a receive buffer of the computing device.

### Claim 3 (depends on 1)

The method of claim 1 where the size of the receive window is further based on a percentage of buffer space of the computing device.

### Claim 4 (depends on 1)

The method of claim 1 where the size of the receive window is further based on a speed at which an application can consume the received data.

### Claim 5 (depends on 1)

The method of claim 1 where the size of the receive window is further based on an estimated state of the second device.

### Claim 6 (depends on 1)

The method of claim 1 where the size of the receive window is determined to be a product of the bandwidth and the round-trio time and the scaling factor.

### Claim 7 (depends on 1)

The method of claim 1 where the size of the receive window is further based on an amount of a receive buffer used by a particular connection.

### Claim 8

A computing device comprising:
memory that comprises a receive buffer into which the computing device receives data from a second device according to a communications protocol;
a processor via which the computing device determines, based on a bandwidth and a round-trip time, a size of a receive window of the communications protocol;
the processor via which the computing device adjusts, based on a scaling factor, the determined size of the receive window of the communications protocol, where the scaling factor is based on a ratio involving a first amount of data received in a receive buffer during a time period and a second amount of data removed from the receive buffer during the time period; and
a network interface via which the computing device advertises, to the second device, the size of the adjusted receive window.

### Claim 9 (depends on 8)

The computing device of claim 8 where the size of the receive window is further based on a size of the receive buffer of the computing device.

### Claim 10 (depends on 8)

The computing device of claim 8 where the size of the receive window is further based on a percentage of buffer space of the computing device.

### Claim 11 (depends on 8)

The computing device of claim 8 where the size of the receive window is further based on a speed at which an application can consume the received data.

### Claim 12 (depends on 8)

The computing device of claim 8 where the size of the receive window is further based on an estimated state of the second device.

### Claim 13 (depends on 8)

The computing device of claim 8 where the size of the receive window is determined to be a product of the bandwidth and the round-trip time and the scaling factor.

### Claim 14 (depends on 8)

The computing device of claim 8 where the size of the receive window is further based on an amount of the receive buffer used by a particular connection.

### Claim 15

At least one computer storage device that comprises computer-executable instructions that, based on execution by a computing device that includes at least one processor and memory, configure the computing device to perform actions comprising:
receiving, by the computing device from a second device according to a communications protocol, data;
determining, by the computing device based on a bandwidth and a round-trip time, a size of a receive window of the communications protocol;
adjusting, by the computing device based on a scaling factor, the determined size of the receive window of the communications protocol, where the scaling factor is based on a ratio involving a first amount of data received in a receive buffer during a time period and a second amount of data removed from the receive buffer during the time period; and
advertising, by the computing device to the second device, the size of the adjusted receive window.

### Claim 16 (depends on 15)

The at least one computer storage device of claim 15 where the size of the receive window is further based on a size of a receive buffer of the computing device.

### Claim 17 (depends on 15)

The at least one computer storage device of claim 15 where the size of the receive window is further based on a percentage of buffer space of the computing device.

### Claim 18 (depends on 15)

The at least one computer storage device of claim 15 where the size of the receive window is further based on a speed at which an application can consume the received data.

### Claim 19 (depends on 15)

The at least one computer storage device of claim 15 where the size of the receive window is further based on an estimated state of the second device, or where the size of the receive window is further based on an amount of a receive buffer used by a particular connection.

### Claim 20 (depends on 15)

The at least one computer storage device of claim 15 where the size of the receive window is determined to be a product of the bandwidth and the round-trip time and the scaling factor.
