IP Library Granted Patent US 11,128,562
Granted Patent B2
US 11,128,562 · App. 16/572,838 · Granted Sep 21, 2021

Fast reroute for connections over outbound paths

Inventors: Joao Taveira Araujo (San Francisco, CA); Lennert Buytenhek (San Francisco, CA); Lorenzo Saino (San Francisco, CA); Raul Leonardo Landa Gamiochipi (San Francisco, CA)
Assignee: Fastly, Inc.
H04L45/28H04L9/0643H04L45/22H04L45/24H04L45/42H04L63/02H04L63/166H04L43/0823H04L47/12
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,128,562
App. No.
16/572,838
Granted
Sep 21, 2021
Kind
B2
Abstract

A server detects a failure of an outbound path based on at least a measure of forward progress made on a connection between the server and an end point. In response to the failure, the server generates a hash value based at least on an identifying value of the connection and a failure counter associated with the measure of forward progress made on the connection. The server then selects a next outbound path for the packet flow based on at least the hash value generated in response to the failure. The server also sends the packet flow over the next outbound path to the end point.

Claims (43)

1. A method of operating a server in an infrastructure service to reroute a packet flow sent from the server to an end point over an outbound path, the method comprising:

detecting a failure of the outbound path based on at least a measure of forward progress made on a connection between the server and the end point;

in response to the failure, generating a hash value based at least on an identifying value of the connection and a failure counter associated with the measure of forward progress made on the connection;

selecting a next outbound path for the packet flow based on at least the hash value generated in response to the failure; and

sending the packet flow over the next outbound path to the end point.

2. The method of claim 1 wherein detecting the failure of the outbound path occurs when the measure of forward progress made on the connection indicates an absence of any forward progress for an amount of time.

3. The method of claim 2 further comprising incrementing the failure counter each time the measure of forward progress made on the connection indicates the absence of any forward progress for the amount of time.

4. The method of claim 1 wherein the outbound path from the server to the end point traverses two or more networks and wherein the next outbound path from the server to the end point traverses at least one network not traversed by the outbound path.

5. The method of claim 1 wherein generating the hash value comprises generating an input to a hash function from at least the identifying value and the failure counter and executing the hash function using the input to produce the hash value.

6. The method of claim 5 wherein generating the input to the hash function comprises mixing the failure counter with a set of identifying values in a tuple associated with the connection, wherein the set of identifying values includes the identifying value.

7. The method of claim 6 wherein the set of identifying values in the tuple comprises a protocol identifier, a source Internet protocol (IP) address, a source port, a target IP address, and a target port.

8. The method of claim 7 wherein sending the packet flow over the next outbound path to the end point comprises sending the packet to a router with the failure counter encoded in a subset of bits of a firewall marker of each packet.

9. The method of claim 8 wherein the connection comprises a transmission control protocol (TCP) connection.

10. A computing apparatus comprising:

one or more computer readable storage media;

a processing system operatively coupled with the one or more computer readable storage media; and

program instructions stored on the one or more computer readable storage media for operating a server in an infrastructure service to reroute a packet flow sent from the server to an end point over an outbound path;

wherein the program instructions, when executed by the processing system, direct the server to at least:

detect a failure of the outbound path based at least on a measure of forward progress made on a connection between the server and the end point;

in response to the failure, generate a hash value based at least on an identifying value of the connection and a failure counter associated with the connection;

select a next outbound path for the packet flow based on the hash value; and

send the packet flow over the next outbound path from the server to the end point.

11. The computing apparatus of claim 10 wherein the program instructions direct the server to detect the failure of the outbound path when the measure of forward progress made on the connection indicates an absence of any forward progress for an amount of time.

12. The computing apparatus of claim 11 wherein the program instructions direct the server to increment the failure counter each time the measure of forward progress made on the connection indicates the absence of any forward progress for the amount of time.

13. The computing apparatus of claim 10 wherein the outbound path from the server to the end point traverses two or more networks and wherein the next outbound path from the server to the end point traverses at least one network not traversed by the outbound path.

14. The computing apparatus of claim 10 wherein to generate the hash value, the program instructions direct the server to generate an input to a hash function from at least the identifying value and the failure counter and execute the hash function using the input to produce the hash value.

15. The computing apparatus of claim 14 wherein to generate the input to the hash function, the program instructions direct the server to substitute the failure counter for at least one of a set of identifying values in a tuple associated with the connection, wherein the set of identifying values includes the identifying value.

16. The computing apparatus of claim 15 wherein the set of identifying values in the tuple comprises a protocol identifier, a source Internet protocol (IP) address, a source port, a target IP address, and a target port.

17. The computing apparatus of claim 16 the program instructions direct the server to encode the failure counter in a subset of bits of a firewall marker of each packet.

18. The computing apparatus of claim 17 wherein the connection comprises a transport layer connection.

19. A system for rerouting packets in a packet flow sent from the server to an end point over an outbound path, the system comprising:

means for detecting a failure of the outbound path based at least on a measure of forward progress made on a connection between the server and the end point;

means for encoding a failure counter associated with the connection in a firewall marker of each of the packets of the packet flow;

means for selecting a routing table from a set of routing tables based on the firewall marker in each of the packets;

means for generating a hash value based at least on identifying values of the connection and the failure counter associated with the connection;

means for selecting a next outbound path for the packet flow based on the hash value; and

means for sending the packet flow over the next outbound path to the end point.

20. The system of claim 19 further comprising:

means for incrementing the failure counter each time the measure of forward progress made on the connection indicates the absence of any forward progress for the amount of time;

wherein detecting the failure of the outbound path occurs when the measure of forward progress made on the connection indicates an absence of any forward progress for an amount of time;

wherein the outbound path from the server to the end point traverses two or more networks and wherein the next outbound path from the server to the end point traverses at least one network not traversed by the outbound path;

wherein the identifying values of the connection, comprise a protocol identifier, a source Internet protocol (IP) address, a source port, and a target IP address; and

wherein the connection comprises a transport layer connection.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 19, 2021
From: ARAUJO, JOAO TAVEIRA; BUYTENHEK, LENNERT; SAINO, LORENZO; LANDA GAMIOCHIPI, RAUL LEONARDO
To: FASTLY, INC.
Reel/Frame 057231/0918 →
SECURITY INTEREST Recorded Feb 17, 2021
From: FASTLY, INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AND COLLATERAL AGENT
Reel/Frame 055316/0616 →
Continuity (3)
Provisional Application 62767328 · Nov 14, 2018
Provisional Application 62732667 · Sep 18, 2018
Related Publication 20200120018A1 · Apr 16, 2020