US 11,843,657 B2
Distributed load balancer
James Christopher Sorenson, III, Seattle, WA (US); Douglas Stewart Laurence, Mercer Island, WA (US); Venkatraghavan Srinivasan, Seattle, WA (US); Akshay Suhas Vaidya, Bothell, WA (US); and Fan Zhang, Bellevue, WA (US)
Assigned to Amazon Technologies, Inc., Seattle, WA (US)
Filed by Amazon Technologies, Inc., Seattle, WA (US)
Filed on Aug. 31, 2018, as Appl. No. 16/119,288.
Application 16/119,288 is a continuation of application No. 13/864,167, filed on Apr. 16, 2013, granted, now 10,069,903.
Prior Publication US 2018/0375928 A1, Dec. 27, 2018
Int. Cl. H04L 67/1001 (2022.01); H04L 67/1038 (2022.01); H04L 67/288 (2022.01); H04L 67/1023 (2022.01); H04L 45/00 (2022.01); H04L 67/1008 (2022.01); H04L 9/40 (2022.01)
CPC H04L 67/1001 (2022.05) [H04L 67/1023 (2013.01); H04L 67/1038 (2013.01); H04L 67/288 (2013.01); H04L 9/40 (2022.05); H04L 45/72 (2013.01); H04L 67/1008 (2013.01)] 19 Claims
OG exemplary drawing
 
1. A distributed load balancer system, comprising:
one or more processors with associated memory that implement a first ingress node, configured to:
receive a Transmission Control Protocol (TCP) synchronize (SYN) packet to establish a connection for a subsequent packet flow from a client, and responsive to receiving the SYN packet, forward data of the SYN packet to a primary flow tracker;
receive, subsequent to the connection for the subsequent packet flow having been established via the primary flow tracker, one or more packets of the subsequent packet flow; and
responsive to receiving the one of more packets for the subsequent packet flow, forward the one or more packets to a server node;
one or more processors with associated memory that implement the primary flow tracker different from the server node and the first ingress node, wherein the primary flow tracker is configured to:
forward the data of the SYN packet to a flow tracker node to cause the flow tracker node to establish the connection from the client to the server node and store the connection information for the subsequent packet flow;
one or more processors with associated memory that implement the flow tracker node different from the server node, the primary flow tracker and the first ingress node, wherein the flow tracker node is configured to:
send a TCP synchronize-acknowledgment (SYN-ACK) packet to the client, responsive to receiving the data of the SYN packet from the primary flow tracker, to establish the connection from the client to the server node for the subsequent packet flow; and
store state information for the subsequent packet flow at the flow tracker node, the state information comprising connection information for the established connection; and
one or more processors with associated memory that implement a second ingress node, configured to:
receive, subsequent to establishment of the connection, additional packets of the subsequent packet flow from the client sent over the established connection to the server node;
responsive to determining, for a first packet of the additional packets, that no mapping of the received packet flow is maintained at the second ingress node:
identify the flow tracker node, different than the second ingress node, maintaining the state information for the subsequent packet flow;
obtain, from the identified flow tracker node over a network connection, the connection information for the established connection to the server node of the plurality of server nodes, the connection information comprising a mapping for the subsequent packet flow and the server node; and
maintain the mapping for the packet flow and the server node of the obtained connection information at the second ingress node;
responsive to determining, for a second packet of the additional packets, that the mapping of the received packet flow is maintained at the second ingress node, obtain, from the maintained mapping at the ingress node, the mapping for the packet flow and the server node; and
forward packets, including the first packet and second packet, in the received packet flow to the server node according to the obtained mapping.