IP Library Granted Patent US 11,349,934
Granted Patent B2
US 11,349,934 · App. 17/138,396 · Granted May 31, 2022

Opportunistic transmission control protocol (TCP) connection establishment

Inventor: Christopher Philip Branch (Romford, GB)
Assignee: CLOUDFLARE, INC.
H04L67/141H04L7/0008H04L67/42H04L69/326
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,349,934
App. No.
17/138,396
Granted
May 31, 2022
Kind
B2
Abstract

A TCP intermediate device receives a first SYN packet from a TCP client to establish a TCP connection between the TCP client and a TCP origin server. Prior to the TCP connection being fully established, the TCP intermediate device transmits a second SYN packet to the TCP origin server. The TCP intermediate device transmits a first SYN-ACK packet to the TCP client. The TCP intermediate device receives a first ACK packet from the TCP client. The TCP intermediate device receives a second SYN-ACK packet from the TCP origin server. The TCP intermediate device transmits a second ACK packet to the TCP origin server as part of establishing the third TCP connection.

Claims (53)

1. A method, comprising:

receiving, at a Transmission Control Protocol (TCP) intermediate device, a first SYN packet from a TCP client that is a first initial message to establish a first TCP connection between the TCP client and a TCP origin server, wherein the TCP intermediate device splits the first TCP connection between the TCP client and the TCP origin server into a second TCP connection between the TCP client and the TCP intermediate device and a third TCP connection between the TCP intermediate device and the TCP origin server;

prior to the second TCP connection being fully established, transmitting, by the TCP intermediated device, a second SYN packet to the TCP origin server, wherein the second SYN packet is a second initial message to establish the third TCP connection between the TCP intermediate device and the TCP origin server;

transmitting a first SYN-ACK packet to the TCP client as part of establishing the second TCP connection;

receiving a first ACK packet from the TCP client as part of establishing the second TCP connection, wherein the second TCP connection is established responsive to processing the first ACK packet;

receiving, a second SYN-ACK packet from the TCP origin server as part of establishing the third TCP connection; and

transmitting a second ACK packet to the TCP origin server as part of establishing the third TCP connection.

2. The method of claim 1 , wherein transmitting the second SYN packet occurs prior to transmitting the first SYN-ACK packet to the TCP client.

3. The method of claim 1 , wherein transmitting the second SYN packet occurs after transmitting the first SYN-ACK packet to the TCP client and prior to receiving the first ACK packet from the TCP client.

4. The method of claim 1 , further comprising:

prior to transmitting the second SYN packet to the TCP origin server, determining that the first SYN packet is addressed to the TCP origin server.

5. The method of claim 1 , further comprising:

prior to transmitting the second SYN packet to the TCP origin server, determining that the first SYN packet is received on a trusted interface or authenticated IP tunnel.

6. The method of claim 1 , further comprising:

prior to transmitting the second SYN packet to the TCP origin server, determining that a number of TCP connection initiations received from the TCP client where a TCP connection is not established does not exceed a threshold.

7. The method of claim 1 , further comprising:

prior to transmitting the second SYN packet to the TCP origin server, determining that a number of TCP connection initiations to the TCP origin server where a TCP connection is not established does not exceed a threshold.

8. A non-transitory machine-readable storage medium that provides instructions that, if executed by a processor, will cause said processor to perform operations including:

receiving, at a Transmission Control Protocol (TCP) intermediate device, a first SYN packet from a TCP client that is a first initial message to establish a first TCP connection between the TCP client and a TCP origin server, wherein the TCP intermediate device splits the first TCP connection between the TCP client and the TCP origin server into a second TCP connection between the TCP client and the TCP intermediate device and a third TCP connection between the TCP intermediate device and the TCP origin server;

prior to the second TCP connection being fully established, transmitting, by the TCP intermediate device, a second SYN packet to the TCP origin server, wherein the second SYN packet is a second initial message to establish the third TCP connection between the TCP intermediate device and the TCP origin server;

transmitting a first SYN-ACK packet to the TCP client as part of establishing the second TCP connection;

receiving a first ACK packet from the TCP client as part of establishing the second TCP connection, wherein the second TCP connection is established responsive to processing the first ACK packet;

receiving, a second SYN-ACK packet from the TCP origin server as part of establishing the third TCP connection; and

transmitting a second ACK packet to the TCP origin server as part of establishing the third TCP connection.

9. The non-transitory machine-readable storage medium of claim 8 , wherein transmitting the second SYN packet occurs prior to transmitting the first SYN-ACK packet to the TCP client.

10. The non-transitory machine-readable storage medium of claim 8 , wherein transmitting the second SYN packet occurs after transmitting the first SYN-ACK packet to the TCP client and prior to receiving the first ACK packet from the TCP client.

11. The non-transitory machine-readable storage medium of claim 8 , the operations further comprising:

prior to transmitting the second SYN packet to the TCP origin server, determining that the first SYN packet is addressed to the TCP origin server.

12. The non-transitory machine-readable storage medium of claim 8 , the operations further comprising:

prior to transmitting the second SYN packet to the TCP origin server, determining that the first SYN packet is received on a trusted interface or authenticated IP tunnel.

13. The non-transitory machine-readable storage medium of claim 8 , the operations further comprising:

prior to transmitting the second SYN packet to the TCP origin server, determining that a number of TCP connection initiations received from the TCP client where a TCP connection is not established does not exceed a threshold.

14. The non-transitory machine-readable storage medium of claim 8 , the operations further comprising:

prior to transmitting the second SYN packet to the TCP origin server, determining that a number of TCP connection initiations to the TCP origin server where a TCP connection is not established does not exceed a threshold.

15. An apparatus, comprising:

a processor; and

a non-transitory machine-readable storage medium that provides instructions that, if executed by the processor, will cause the processor to carry out operations including:

receive, at a Transmission Control Protocol (TCP) intermediate device, a first SYN packet from a TCP client that is a first initial message to establish a first TCP connection between the TCP client and a TCP origin server, wherein the TCP intermediate device is to split the first TCP connection between the TCP client and the TCP origin server into a second TCP connection between the TCP client and the TCP intermediate device and a third TCP connection between the TCP intermediate device and the TCP origin server;

prior to the second TCP connection being fully established, transmit a second SYN packet to the TCP origin server, wherein the second SYN packet is a second initial message to establish the third TCP connection between the TCP intermediate device and the TCP origin server;

transmit a first SYN-ACK packet to the TCP client as part of establishing the second TCP connection;

receive a first ACK packet from the TCP client as part of establishing the second TCP connection, wherein the second TCP connection is to be established responsive to processing the first ACK packet;

receive, a second SYN-ACK packet from the TCP origin server as part of establishment of the third TCP connection; and

transmit a second ACK packet to the TCP origin server as part of establishment of the third TCP connection.

16. The apparatus of claim 15 , wherein transmission of the second SYN packet is to occur prior to transmission of the first SYN-ACK packet to the TCP client.

17. The apparatus of claim 15 , wherein transmission of the second SYN packet is to occur after transmission of the first SYN-ACK packet to the TCP client and prior to receipt of the first ACK packet from the TCP client.

18. The apparatus of claim 15 , the operations further including:

prior to transmission of the second SYN packet to the TCP origin server, determine that the first SYN packet is addressed to the TCP origin server.

19. The apparatus of claim 15 , the operations further including:

prior to transmission of the second SYN packet to the TCP origin server, determine that the first SYN packet is received on a trusted interface or authenticated IP tunnel.

20. The apparatus of claim 15 , the operations further including:

prior to transmission of the second SYN packet to the TCP origin server, determine that a number of TCP connection initiations received from the TCP client where a TCP connection is not established does not exceed a threshold.

21. The apparatus of claim 15 , the operations further including:

prior to transmission of the second SYN packet to the TCP origin server, determine that a number of TCP connection initiations to the TCP origin server where a TCP connection is not established does not exceed a threshold.

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 Mar 24, 2022
From: BRANCH, CHRISTOPHER PHILIP
To: CLOUDFLARE, INC.
Reel/Frame 059388/0480 →
Continuity (2)
Provisional Application 62956120 · Dec 31, 2019
Related Publication 20210203728A1 · Jul 1, 2021