Stateless load balancing of connections
Abstract
A capability is provided for statelessly load balancing Transmission Control Protocol (TCP) connections across a set of servers. A load balancer receives a TCP SYN packet from a client, selects a server for a TCP connection for the client, forms a modified TCP SYN packet including an address of the client, and propagates the modified TCP SYN packet toward the server. The server receives the modified TCP SYN packet, forms a TCP SYN+ACK packet including an identifier (e.g., n bits of an address, an n-bit server index based on mapping information of the load balancer, or the like) of the server, and propagates the modified TCP SYN+ACK packet toward the load balancer. The load balancer receives a TCP packet from the client on the TCP connection, determines a server associated with the TCP connection based on information included within the TCP packet, and propagates the TCP packet toward the server.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . An apparatus, comprising:
a processor and a memory communicatively connected to the processor, the processor configured to:
send, from a client device, a client packet comprising a client sequence number and a client acknowledgment number;
receive, at the client device, a server response packet comprising padding information;
compute, by the client device based on the client sequence number and the padding information, a next client sequence number; and
send, from the client device, a client response packet comprising the next client sequence number.
2 . The apparatus of claim 1 , wherein the client packet is a synchronization packet, wherein the client sequence number is an initial client sequence number for a connection being requested by the client device.
3 . The apparatus of claim 2 , wherein the synchronization packet is a Transmission Control Protocol (TCP) synchronization (SYN) packet.
4 . The apparatus of claim 1 , wherein the server response packet is a synchronization acknowledgement packet.
5 . The apparatus of claim 4 , wherein the synchronization acknowledgement packet is a Transmission Control Protocol (TCP) synchronization+acknowledgement (SYN+ACK) packet.
6 . The apparatus of claim 1 , wherein the client packet is a client data packet comprising data to be communicated to a server via a connection between the client device and the server.
7 . The apparatus of claim 6 , wherein the server response packet is a server acknowledgment from the server acknowledging receipt of the client data packet.
8 . The apparatus of claim 1 , wherein the padding information is configured to manipulate computation of the next client sequence number by the client device.
9 . The apparatus of claim 1 , wherein the padding information comprises an odd number of bytes.
10 . The apparatus of claim 1 , wherein the padding information comprises a whitespace character.
11 . An apparatus, comprising:
a processor and a memory communicatively connected to the processor, the processor configured to:
receive, by a server from a client, a synchronization message for a transport layer connection between the client and the server, wherein the synchronization message comprises an initial client sequence number for the transport layer connection;
determine, by the server based on the synchronization message, whether the client supports transport layer timestamps; and
send, from the server toward the client based on a determination that the client supports timestamps, a server response packet including a timestamp option header.
12 . The apparatus of claim 11 , wherein, to determine whether the client supports transport layer timestamps, the processor is configured to:
determine whether the synchronization message includes a timestamp option header.
13 . The apparatus of claim 11 , wherein the server response packet further includes a value inserted by the server, wherein the value inserted by the server includes a parity bit.
14 . The apparatus of claim 13 , wherein the processor is configured to:
determine a value of the parity bit based on a client sequence number and a client acknowledgment number.
15 . The apparatus of claim 11 , wherein the synchronization message comprises a Transmission Control Protocol (TCP) SYN message and the server response packet comprises a TCP server response packet.
16 . An apparatus, comprising:
a processor and a memory communicatively connected to the processor, the processor configured to:
receive, by a server from a client, a client packet of a transport layer connection between the client and the server, the client packet having a client packet size;
generate, by the server based on the client packet, a server response for the client; and
segment, by the server based on the client packet size and a maximum segment size, the server response into a plurality of segments including a first segment and at least one additional segment.
17 . The apparatus of claim 16 , wherein, to segment the server response into the plurality of segments, the processor is configured to:
determine, based on the client packet size, whether to configure the first segment to have a first segment size smaller than the maximum segment size.
18 . The apparatus of claim 16 , wherein, to segment the server response into the plurality of segments, the processor is configured to:
configure the first segment based on the client packet size and the maximum segment size.
19 . The apparatus of claim 18 , wherein, to configure the first segment, the processor is configured to:
include, within the first segment, a smaller number of bytes than a number of bytes indicated by the maximum segment size.
20 . The apparatus of claim 16 , wherein the processor is configured to:
send, from the server toward the client, a first server response packet including the first segment.Join the waitlist — get patent alerts
Track US2017149935A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.