IP Library Granted Patent US 11,843,540
Granted Patent B2
US 11,843,540 · App. 17/687,352 · Granted Dec 12, 2023

System and method for deterministic hash addressing

Inventors: Hossein Lotfi (Bellevue, WA); Janardhan Iyengar (Truckee, CA); Patrick R. McManus (Warren, ME); Artur Bergman (Denver, CO); Joel Jaeggli (Mountain View, CA); Ryan Landry (Denver, CO)
Assignee: Fastly, Inc.
H04L45/7453
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,843,540
App. No.
17/687,352
Granted
Dec 12, 2023
Kind
B2
Abstract

Methods and apparatus are disclosed herein that enable an infrastructure service to route messages to various servers, even if the servers are not addressed by individual public network addresses. The infrastructure service distributed messages by processing a portion of the message through a hash function. By utilizing a reverse hash process, a server can determine a custom port number that will cause the hash algorithm to route a reply message directly to the selected server even when addressed to a communal address.

Claims (33)

1. A method of operating an infrastructure service that provides content to end users on behalf of an origin server, comprising:

distributing incoming messages to a group of multiple servers communally addressed by a first address at least by processing a portion of a first incoming message through a hash function to produce first hash results, and using the first hash results to determine a first receiving server, from the group of multiple servers, to receive the first incoming message;

selecting the first receiving server to receive content from the origin server;

sending a request for first content to the origin server, the request comprising a tuple expected to be modified into a modified tuple, the modified tuple expected to be included in a reply message from the origin server, and the tuple configured such that the modified tuple processed through the hash function will produce second hash results, the second hash results configured to determine that the first receiving server will receive the reply message from the origin server;

receiving the reply message, comprising the modified tuple from the origin server;

processing the modified tuple through the hash function to produce the second hash results; and

sending the reply message to the first receiving server.

2. The method of claim 1 , wherein the tuple comprises a source address and a source port.

3. The method of claim 2 , wherein the source address and source port are expected to be copied as a destination address and a destination port in the reply message.

4. The method of claim 1 , wherein the tuple comprises source and destination elements, and wherein the modified tuple comprises the tuple with the source and destination elements switched.

5. The method of claim 1 , wherein the portion of the first incoming message comprises a second tuple.

6. The method of claim 1 , wherein the selecting step occurs responsive to the first receiving server receiving a content request from an end user for the first content, wherein the first content is not cached at the first receiving server.

7. The method of claim 6 , further comprising sending the first content to the end user.

8. The method of claim 1 , wherein the tuple is selected from a plurality of potential tuples, each potential tuple configured to predetermine results of the hash function such that the predetermined hash results determine that the first receiving server will receive the reply message from the origin server.

9. An infrastructure service comprising:

A group of multiple servers communally addressed by a first address, comprising a first receiving server;

A load balancer 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 and configured to be executed by the processing system, wherein the program instructions, when executed by the processing system, instruct the load balancer to distribute incoming messages to the group of multiple servers at least by processing a portion of a first incoming message through a hash function to produce first hash results, and using the first hash results to determine the first receiving server to receive the first incoming message;

the first receiving server comprising:

one or more server computer readable storage media;

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

server program instructions stored on the one or more server computer readable storage media and configured to be executed by the server processing system, wherein the server program instructions, when executed by the server processing system, instruct the first receiving server to send a request for first content to an origin server, the request comprising a tuple expected to be modified into a modified tuple, the modified tuple expected to be included in a reply message from the origin server, and the tuple configured such that the modified tuple processed through the hash function will produce second hash results, the second hash results configured to determine that the first receiving server will receive the reply message from the origin server;

wherein the program instructions, when executed by the processing system, further instruct the load balancer to:

receive the reply message from the origin server;

process at least a portion of the reply message through the hash function to produce the predetermined hash results; and

send the reply message to the first receiving server.

10. The infrastructure service of claim 9 , wherein the tuple comprises a source address and a source port.

11. The infrastructure service of claim 10 , wherein the program instructions, when executed by the processing system, expect the source address and source port to be copied as a destination address and a destination port in the reply message.

12. The infrastructure service of claim 9 , wherein the tuple comprises source and destination elements, and wherein the reply message comprises the information expected to be copied with the source and destination elements switched.

13. The infrastructure service of claim 9 , wherein the portion of the first incoming message comprises a tuple.

14. The infrastructure service of claim 9 , wherein the tuple is selected from a plurality of potential tuples, each potential tuple configured to predetermine results of the hash function such that the predetermined hash results determine that the first receiving server will receive the reply message from the origin server.

Assignments (2)
SECURITY INTEREST Recorded May 1, 2024
From: FASTLY, INC.
To: FIRST-CITIZENS BANK & TRUST COMPANY, AS ADMINISTRATIVE AGENT
Reel/Frame 067281/0500 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2023
From: LOTFI, HOSSEIN; IYENGAR, JANARDHAN; MCMANUS, PATRICK R.; BERGMAN, ARTUR; JAEGGLI, JOEL; LANDRY, RYAN
To: FASTLY, INC.
Reel/Frame 064590/0063 →
Continuity (3)
Provisional Application 63186937 · May 11, 2021
Provisional Application 63157261 · Mar 5, 2021
Related Publication 20220286398A1 · Sep 8, 2022