IP Library Granted Patent US 10,541,909
Granted Patent B2
US 10,541,909 · App. 15/631,073 · Granted Jan 21, 2020

Distributed affinity tracking for network connections

Inventors: Dean Har'el Lorenz (Haifa, IL); Valleriya Perelman (Haifa, IL)
Assignee: International Business Machines Corporation
H04L45/30H04L43/04H04L43/062H04L61/25H04L63/0227H04L67/1006H04L67/1023H04L41/02H04L43/026H04L43/0817H04L67/10
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 10,541,909
App. No.
15/631,073
Granted
Jan 21, 2020
Kind
B2
Abstract

An embodiment of the invention may include a method, computer program product, and system for data transfer management. The embodiment may include receiving a data packet, by a first server, from a load balancer. The received data packet is part of a data flow. The embodiment may include determining, by the first server, whether the received data packet is part of an existing data flow connection served by the first server. Based on determining that the received data packet is not part of an existing data flow served by the first server, the embodiment may include determining, by the first server, whether the received data packet is part of a new data flow connection. Based on determining that the received data packet is not part of a new data flow connection, the embodiment may include notifying, by the first server, the load balancer.

Claims (62)

1. A method for data transfer management, the method comprising:

receiving a data packet, by a first server, from a load balancer, wherein the received data packet is part of a data flow;

determining, by the first server, whether the received data packet is part of an existing data flow connection processed by the first server;

based on determining that the received data packet is not part of an existing data flow processed by the first server, determining, by the first server, whether the received data packet is part of a new data flow connection;

based on determining that the received data packet is not part of a new data flow connection, not processing, by the first server, the received data packet; and

sending a notification from the first server to the load balancer;

receiving a first labeled data packet, by the first server, from the load balancer, wherein the received first labeled data packet is part of the data flow, and wherein the received first labeled data packet is sent via a first mapping;

receiving a second labeled data packet, by a second server, from the load balancer, wherein the received second labeled data packet is part of the data flow, and wherein the received second labeled data packet is sent via a second mapping, and wherein the first mapping and the second mapping are different, and wherein a label of the first labeled data packet and a label of the second labeled data packet are different, and wherein data in the first labeled data packet and data in the second labeled data packet are identical;

dropping the first labeled data packet, by the first server, in response to determining that the first labeled data packet is part of a new data flow connection; and

processing the second labeled data packet, by the second server, in response to determining that the second labeled data packet is part of a new data flow connection.

2. The method of claim 1 , wherein the label of the first labeled data packet is based on a hash function with a first input, wherein the label of the second labeled data packet is based on the hash function with a second input, wherein the first input is determined by a network state prior to a change, and wherein the second input is determined by the network state after the change.

3. The method of claim 1 , further comprising:

in response to not processing, by the first server, the received data packet, forwarding the data flow to a second server.

4. The method of claim 1 , wherein determining, by the first server, whether the received data packet is part of an existing data flow connection processed by the first server comprises:

comparing a tracking characteristic of the received data packet against a list of tracking characteristics for the existing data flow connection currently processed by the first server; and

determining if the tracking characteristic of the received data packet is on the list of tracking characteristics for the existing data flow connection currently processed by the first server.

5. The method of claim 1 , wherein determining, by the first server, whether the received data packet is part of a new data flow connection comprises:

determining if a synchronize (SYN) flag for the received data packet is enabled, wherein an enabled SYN flag indicates the beginning of a new data flow connection.

6. The method of claim 1 , wherein sending the notification from the first server to the load balancer comprises:

informing the load balancer of the failure to process, by the first server, the received data packet; and

providing tracking information, to the load balancer, for the received data packet.

7. A computer program product for data transfer management, the computer program product comprising:

one or more computer-readable storage devices and program instructions stored on at least one of the one or more tangible storage devices, the program instructions comprising:

program instructions to receive a data packet, by a first server, from a load balancer, wherein the received data packet is part of a data flow;

program instructions to determine, by the first server, whether the received data packet is part of an existing data flow connection processed by the first server;

based on determining that the received data packet is not part of an existing data flow processed by the first server, determining, by the first server, whether the received data packet is part of a new data flow connection;

based on determining that the received data packet is not part of a new data flow connection, program instructions to not process, by the first server, the received data packet;

program instructions to send a notification from the server to the load balancer;

program instructions to receive a first labeled data packet, by the first server, from the load balancer, wherein the received first labeled data packet is part of the data flow, and wherein the received first labeled data packet is sent via a first mapping;

program instructions to receive a second labeled data packet, by a second server, from the load balancer, wherein the received second labeled data packet is part of the data flow, and wherein the received second labeled data packet is sent via a second mapping, and wherein the first mapping and the second mapping are different, and wherein a label of the first labeled data packet and a label of the second labeled data packet are different, and wherein data in the first labeled data packet and data in the second labeled data packet are identical;

program instructions to drop the first labeled data packet, by the first server, in response to determining that the first labeled data packet is part of a new data flow connection; and

program instructions to process the second labeled data packet, by the second server, in response to determining that the second labeled data packet is part of a new data flow connection.

8. The computer program product of claim 7 , wherein the label of the first labeled data packet is based on a hash function with a first input, wherein the label of the second labeled data packet is based on the hash function with a second input, wherein the first input is determined by a network state prior to a change, and wherein the second input is determined by the network state after the change.

9. The computer program product of claim 7 , further comprising:

in response to not processing, by the first server, the received data packet, program instructions to forward the data flow to a second server.

10. The computer program product of claim 7 , wherein determining, by the first server, whether the received data packet is part of an existing data flow connection processed by the first server comprises:

program instructions to compare a tracking characteristic of the received data packet against a list of tracking characteristics for the existing data flow connection currently processed by the first server; and

program instructions to determine if the tracking characteristic of the received data packet is on the list of tracking characteristics for the existing data flow connection currently processed by the first server.

11. The computer program product of claim 7 , wherein determining, by the first server, whether the received data packet is part of a new data flow connection comprises:

program instructions to determine if a synchronize (SYN) flag for the received data packet is enabled, wherein an enabled SYN flag indicates the beginning of a new data flow connection.

12. The computer program product of claim 7 , wherein sending the notification from the first server to the load balancer comprises:

program instructions to inform the load balancer of the failure to process, by the first server, the received data packet; and

program instructions to provide tracking information, to the load balancer, for the received data packet.

13. A computer system for data transfer management, the computer system comprising:

one or more processors, one or more computer-readable memories, one or more computer-readable tangible storage devices, and program instructions stored on at least one of the one or more storage devices for execution by at least of the one or more processors via at least one of the one or more memories, the program instructions comprising:

program instructions to receive a data packet, by a first server, from a load balancer, wherein the received data packet is part of a data flow;

program instructions to determine, by the first server, whether the received data packet is part of an existing data flow connection processed by the first server;

based on determining that the received data packet is not part of an existing data flow processed by the first server, determining, by the first server, whether the received data packet is part of a new data flow connection;

based on determining that the received data packet is not part of a new data flow connection, program instructions to not process, by the first server, the received data packet;

program instructions to send a notification from the server to the load balancer;

program instructions to receive a first labeled data packet, by the first server, from the load balancer, wherein the received first labeled data packet is part of the data flow, and wherein the received first labeled data packet is sent via a first mapping;

program instructions to receive a second labeled data packet, by a second server, from the load balancer, wherein the received second labeled data packet is part of the data flow, and wherein the received second labeled data packet is sent via a second mapping, and wherein the first mapping and the second mapping are different, and wherein a label of the first labeled data packet and a label of the second labeled data packet are different, and wherein data in the first labeled data packet and data in the second labeled data packet are identical;

program instructions to drop the first labeled data packet, by the first server, in response to determining that the first labeled data packet is part of a new data flow connection; and

program instructions to process the second labeled data packet, by the second server, in response to determining that the second labeled data packet is part of a new data flow connection.

14. The computer system of claim 13 , wherein the label of the first labeled data packet is based on a hash function with a first input, wherein the label of the second labeled data packet is based on the hash function with a second input, wherein the first input is determined by a network state prior to a change, and wherein the second input is determined by the network state after the change.

15. The computer system of claim 13 , further comprising:

in response to not processing, by the first server, the received data packet, program instructions to forward the data flow to a second server.

16. The computer system of claim 13 , wherein determining, by the first server, whether the received data packet is part of an existing data flow connection processed by the first server comprises:

program instructions to compare a tracking characteristic of the received data packet against a list of tracking characteristics for the existing data flow connection currently processed by the first server; and

program instructions to determine if the tracking characteristic of the received data packet is on the list of tracking characteristics for the existing data flow connection currently processed by the first server.

17. The computer system of claim 13 , wherein determining, by the first server, whether the received data packet is part of a new data flow connection comprises:

program instructions to determine if a synchronize (SYN) flag for the received data packet is enabled, wherein an enabled SYN flag indicates the beginning of a new data flow connection.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 23, 2017
From: LORENZ, DEAN HAR'EL; PERELMAN, VALLERIYA
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 042793/0966 →
Continuity (1)
Related Publication 20180375758A1 · Dec 27, 2018