IP Library Granted Patent US 11,496,403
Granted Patent B2
US 11,496,403 · App. 16/798,892 · Granted Nov 8, 2022

Modifying the congestion control algorithm applied to a connection based on request characteristics

Inventor: Jun Ho Choi (Sunnyvale, CA)
Assignee: CLOUDFLARE, INC.
H04L47/27H04L47/193H04L47/283H04L47/37
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,496,403
App. No.
16/798,892
Granted
Nov 8, 2022
Kind
B2
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 (71)

1. A computer-implemented method, comprising:

receiving, over a transport connection between a client device and a server, a first request message;

determining characteristics of the first request message, including one or more contents of the first request message, the one or more contents of the first request message including a first header and a first pathname;

determining a first congestion control algorithm based on the determined characteristics of the first request message, including pattern matching a first keyword of the first pathname with elements of a plurality of congestion control rules;

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 characteristics of the second request message, including one or more contents of the second request message, the one or more contents of the second request message including a second header and a second pathname;

determining a second congestion control algorithm based on the determined characteristics of the second request message, including pattern matching a second keyword of the second pathname with the elements of the plurality of congestion control rules; 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.

2. 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.

3. 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.

4. The computer-implemented method of claim 1 , wherein determining the first congestion control algorithm based on the characteristics of the first request message comprises:

identifying that the 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.

5. The computer-implemented method of claim 1 , wherein determining the second congestion control algorithm based on the characteristics of the second request message comprises:

identifying that the 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.

6. The computer-implemented method of claim 1 , wherein determining the first congestion control algorithm based on the characteristics of the first request message comprises:

parsing the 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.

7. 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 characteristics of the first request message, including one or more contents of the first request message, the one or more contents of the first request message including a first header and a first pathname;

determining a first congestion control algorithm based on the determined characteristics of the first request message, including pattern matching a first keyword of the first pathname with elements of a plurality of congestion control rules

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 characteristics of the second request message, including one or more contents of the second request message, the one or more contents of the second request message including a second header and a second pathname;

determining a second congestion control algorithm based on the determined characteristics of the second request message, including pattern matching a second keyword of the second pathname with the elements of the plurality of congestion control rules; 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.

8. The non-transitory machine-readable storage medium of claim 7 , 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.

9. The non-transitory machine-readable storage medium of claim 7 , 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.

10. The non-transitory machine-readable storage medium of claim 7 , wherein determining the first congestion control algorithm based on the characteristics of the first request message comprises:

identifying that the 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.

11. The non-transitory machine-readable storage medium of claim 7 , wherein determining the second congestion control algorithm based on the characteristics of the second request message comprises:

identifying that the 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.

12. The non-transitory machine-readable storage medium of claim 7 , wherein determining the first congestion control algorithm based on the characteristics of the first request message comprises:

parsing the 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.

13. 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 characteristics of the first request message, including one or more contents of the first request message, the one or more contents of the first request message including a first header and a first pathname;

determine a first congestion control algorithm based on the determined characteristics of the first request message, including pattern matching a first keyword of the first pathname with elements of a plurality of congestion control rules

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 characteristics of the second request message, including one or more contents of the second request message, the one or more contents of the second request message including a second header and a second pathname;

determine a second congestion control algorithm based on the determined characteristics of the second request message, including pattern matching a second keyword of the second pathname with the elements of the plurality of congestion control rules; 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.

14. The apparatus of claim 13 , 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.

15. The apparatus of claim 13 , 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.

16. The apparatus of claim 13 , wherein determining the first congestion control algorithm based on the characteristics of the first request message comprises:

identifying that the 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.

17. The apparatus of claim 13 , wherein determining the second congestion control algorithm based on the characteristics of the second request message comprises:

identifying that the 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.

18. The apparatus of claim 13 , wherein determining the first congestion control algorithm based on the characteristics of the first request message comprises:

parsing the 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.

Assignments (2)
SECURITY INTEREST Recorded May 20, 2024
From: CLOUDFLARE, INC.
To: CITIBANK, N.A.
Reel/Frame 067472/0246 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 24, 2020
From: CHOI, JUN HO
To: CLOUDFLARE, INC.
Reel/Frame 051903/0551 →
Continuity (1)
Related Publication 20210266265A1 · Aug 26, 2021
Cited By (2)
US 12,261,901 US 12,335,158