# US 2023/0056734 A1 · Modifying the congestion control algorithm applied to a connection based on request characteristics

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

- Number: US 2023/0056734 A1
- Document ID: US20230056734A1
- Status: Published application
- Kind: A1
- Application number: 17/982,358
- Filed: 2022-11-07
- Published: 2023-02-23
- Earliest claimed: 2020-02-24
- Assignees: Cloudflare, Inc.
- Applicants: Cloudflare, Inc.
- Inventors: Jun Ho Choi
- Web page: https://patentgrep.com/patent/US20230056734A1

## CPC

- H04L 47/27: Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
- H04L 47/11: Identifying congestion
- H04L 47/193: at the transport layer, e.g. TCP related
- H04L 47/283: in response to processing delays, e.g. caused by jitter or round trip time [RTT]
- H04L 47/37: {Slow start}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

An edge server receives a first request message for transmission to the host device. The edge server determines a first congestion control algorithm based on the first request message, including characteristics of the first request message. The edge server applies the first congestion control algorithm to the transport connection for application to the transmission of the first request message. Subsequently, the edge server receives a second request message for transmission to the host device over the transport connection. Based on the second request message, including characteristics of the second request message, the edge server determines and applies a second congestion control algorithm to the transport connection for application to the transmission of the second request message, wherein the second congestion control algorithm is different from the first congestion control algorithm

## Claims

### Claim 1

A computer-implemented method, comprising:
receiving, over a transport connection between a client device and a server, a first request message;
determining a first congestion control algorithm based on the first request message;
applying the first congestion control algorithm to the transport connection for application to a transmission of a first response message to the first request message;
receiving, over the transport connection from the client device, a second request message;
determining a second congestion control algorithm based on the second request message; and
applying the second congestion control algorithm to the transport connection for application to a transmission of a second response message to the second request message, wherein the second congestion control algorithm is different from the first congestion control algorithm.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, further comprising:
prior to applying the second congestion control algorithm to the transport connection, determining that the transport connection is idle.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, wherein applying the second congestion control algorithm to the transport connection for application to the transmission of the second response message comprises:
determining an expected bandwidth for the transport connection based on a history of the transport connection; and
initiating the second congestion control algorithm with a different value for a state variable based on the expected bandwidth and round-trip time for the transport connection.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, wherein determining the first congestion control algorithm based on the first request message comprises:
identifying characteristics of the first request message; and
determining that the characteristics of the first request message matches one or more congestion control rules.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, wherein determining the first congestion control algorithm based on the first request message comprises:
identifying that a first pathname in the first request message indicates the first request message is a request for first content having a first size greater than a threshold size; and
selecting the first congestion control algorithm from a plurality of congestion control algorithms based on the first content having the first size greater than the threshold size.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, wherein determining the second congestion control algorithm based on the second request message comprises:
identifying that a second pathname in the second request message indicates the second request message is a request for second content having a second size less than a threshold size; and
selecting the second congestion control algorithm from a plurality of congestion control algorithms based on the second content having the second size less than the threshold size.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, wherein determining the first congestion control algorithm based on the first request message comprises:
parsing a first header of the first request message to determine a first size of first content requested in the first request message; and
selecting the first congestion control algorithm from a plurality of congestion control algorithms based on the first content having the first size greater than a threshold size.

### Claim 8

A non-transitory machine-readable storage medium that provides instructions that, when executed by a processor, cause said processor to perform operations comprising:
receiving, over a transport connection between a client device and a server, a first request message;
determining a first congestion control algorithm based on the first request message;
applying the first congestion control algorithm to the transport connection for application to a transmission of a first response message to the first request message;
receiving, over the transport connection from the client device, a second request message;
determining a second congestion control algorithm based on the second request message; and
applying the second congestion control algorithm to the transport connection for application to a transmission of a second response message to the second request message, wherein the second congestion control algorithm is different from the first congestion control algorithm.

### Claim 9 (depends on 8)

The non-transitory machine-readable storage medium of claim 8, wherein the instructions further causes said processor to perform operations comprising:
prior to applying the second congestion control algorithm to the transport connection, determining that the transport connection is idle.

### Claim 10 (depends on 8)

The non-transitory machine-readable storage medium of claim 8, wherein applying the second congestion control algorithm to the transport connection for application to the transmission of the second response message comprises:
determining an expected bandwidth for the transport connection based on a history of the transport connection; and
initiating the second congestion control algorithm with a different value for a state variable based on the expected bandwidth and round-trip time for the transport connection.

### Claim 11 (depends on 8)

The non-transitory machine-readable storage medium of claim 8, wherein determining the first congestion control algorithm based on the first request message comprises:
identifying characteristics of the first request message; and
determining that the characteristics of the first request message matches one or more congestion control rules.

### Claim 12 (depends on 8)

The non-transitory machine-readable storage medium of claim 8, wherein determining the first congestion control algorithm based on the first request message comprises:
identifying that a first pathname in the first request message indicates the first request message is a request for first content having a first size greater than a threshold size; and
selecting the first congestion control algorithm from a plurality of congestion control algorithms based on the first content having the first size greater than the threshold size.

### Claim 13 (depends on 8)

The non-transitory machine-readable storage medium of claim 8, wherein determining the second congestion control algorithm based on the second request message comprises:
identifying that a second pathname in the second request message indicates the second request message is a request for second content having a second size less than a threshold size; and
selecting the second congestion control algorithm from a plurality of congestion control algorithms based on the second content having the second size less than the threshold size.

### Claim 14 (depends on 8)

The non-transitory machine-readable storage medium of claim 8, wherein determining the first congestion control algorithm based on the first request message comprises:
parsing a first header of the first request message to determine a first size of first content requested in the first request message; and
selecting the first congestion control algorithm from a plurality of congestion control algorithms based on the first content having the first size greater than a threshold size.

### Claim 15

A apparatus, comprising:
a processor;
a non-transitory machine-readable storage medium coupled with the processor that stores instructions that, when executed by the processor, cause said processor to perform the following:
receive, over a transport connection between a client device and a server, a first request message;
determine a first congestion control algorithm based on the first request message;
apply the first congestion control algorithm to the transport connection for application to a transmission of a first response message to the first request message;
receive, over the transport connection from the client device, a second request message;
determine a second congestion control algorithm based on the second request message; and
apply the second congestion control algorithm to the transport connection for application to a transmission of a second response message to the second request message, wherein the second congestion control algorithm is different from the first congestion control algorithm.

### Claim 16 (depends on 15)

The apparatus of claim 15, wherein the instructions further cause said processor to perform the following:
prior to applying the second congestion control algorithm to the transport connection, determine that the transport connection is idle.

### Claim 17 (depends on 15)

The apparatus of claim 15, wherein applying the second congestion control algorithm to the transport connection for application to the transmission of the second response message comprises:
determining an expected bandwidth for the transport connection based on a history of the transport connection; and
initiating the second congestion control algorithm with a different value for a state variable based on the expected bandwidth and round-trip time for the transport connection.

### Claim 18 (depends on 15)

The apparatus of claim 15, wherein determining the first congestion control algorithm based on the first request message comprises:
identifying characteristics of the first request message; and
determining that the characteristics of the first request message matches one or more congestion control rules.

### Claim 19 (depends on 15)

The apparatus of claim 15, wherein determining the first congestion control algorithm based on the first request message comprises:
identifying that a first pathname in the first request message indicates the first request message is a request for first content having a first size greater than a threshold size; and
selecting the first congestion control algorithm from a plurality of congestion control algorithms based on the first content having the first size greater than the threshold size.

### Claim 20 (depends on 15)

The apparatus of claim 15, wherein determining the second congestion control algorithm based on the second request message comprises:
identifying that a second pathname in the second request message indicates the second request message is a request for second content having a second size less than a threshold size; and
selecting the second congestion control algorithm from a plurality of congestion control algorithms based on the second content having the second size less than the threshold size.

### Claim 21 (depends on 15)

The apparatus of claim 15, wherein determining the first congestion control algorithm based on the first request message comprises:
parsing a first header of the first request message to determine a first size of first content requested in the first request message; and
selecting the first congestion control algorithm from a plurality of congestion control algorithms based on the first content having the first size greater than a threshold size.
