Maintaining client affinity in network load balancing systems
First Claim
1. A computer-readable storage medium comprising memory, optical recording media, magnetic recording media, or a combination thereof, the computer-readable storage medium storing computer-executable instructions, which when executed by a node perform steps, the node participating in a plurality of nodes that each receive same incoming packets and that each maintain a corresponding client affinity list and a corresponding set of currently assigned buckets, a client affinity list of a node identifying clients associated with that node, wherein any given client is allowed to be in only one affinity list at any given time, and wherein periodic load-rebalancings cause some buckets to be reassigned between nodes, the steps comprising:
- servicing the set of buckets currently assigned to the node, wherein buckets are periodically added to and removed from the set of buckets currently assigned to the node when there are corresponding load-rebalancings of the plurality of nodes;
receiving packets at the node from a source, the packets having also been received by another node; and
for any given packet of the received packets, deciding whether to service the given packet, the given packet including client data that identifies a client that sent the given packet, anddeciding to service the given packet by determining that the given packet maps to a bucket in the set of buckets currently assigned to the node;
when the given packet does not map to a bucket in the set of buckets currently assigned to the node, deciding to service the given packet by using the client data in the given packet to determine that the client identified in the client data is present in the affinity list; and
deciding to not service the given packet by determining that the client identified in the client data is not present in the affinity list and determining that the given bucket does not map to a bucket in the set of buckets currently assigned to the node.
2 Assignments
0 Petitions
Accused Products
Abstract
Described is a technology in a network load balancing system (node cluster), by which client affinity is preserved across cluster configuration changes, including for new connections from a previous client. Each node maintains a list of the clients that are to remain (have affinity, or “stickiness”) with that node, including following bucket redistribution resulting from convergence. Each affinity list is communicated during convergence so that other nodes may build an exception list or lists. Via a node'"'"'s exception list, the node that owns a bucket corresponding to a client knows of the affinity with another node and thus drops any packets from that client. Affinity may expire, whereby the node having affinity with that client releases it and notifies the node owning the bucket for that client that the client is no longer to be treated as an exception.
42 Citations
20 Claims
-
1. A computer-readable storage medium comprising memory, optical recording media, magnetic recording media, or a combination thereof, the computer-readable storage medium storing computer-executable instructions, which when executed by a node perform steps, the node participating in a plurality of nodes that each receive same incoming packets and that each maintain a corresponding client affinity list and a corresponding set of currently assigned buckets, a client affinity list of a node identifying clients associated with that node, wherein any given client is allowed to be in only one affinity list at any given time, and wherein periodic load-rebalancings cause some buckets to be reassigned between nodes, the steps comprising:
-
servicing the set of buckets currently assigned to the node, wherein buckets are periodically added to and removed from the set of buckets currently assigned to the node when there are corresponding load-rebalancings of the plurality of nodes; receiving packets at the node from a source, the packets having also been received by another node; and for any given packet of the received packets, deciding whether to service the given packet, the given packet including client data that identifies a client that sent the given packet, and deciding to service the given packet by determining that the given packet maps to a bucket in the set of buckets currently assigned to the node; when the given packet does not map to a bucket in the set of buckets currently assigned to the node, deciding to service the given packet by using the client data in the given packet to determine that the client identified in the client data is present in the affinity list; and deciding to not service the given packet by determining that the client identified in the client data is not present in the affinity list and determining that the given bucket does not map to a bucket in the set of buckets currently assigned to the node. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
- 8. In a computing environment, a system comprising, a plurality of nodes, each node including logic executed by memory and a processor, the logic selectively accepting only certain packets based on information contained within each packet, wherein buckets are reassigned among the nodes when there is a load-rebalancing of the plurality of nodes, the system including logic that determines whether a packet maps to a bucket currently owned by that node, and determines whether the packet corresponds to a client with which the node has affinity or whether the packet corresponds to a client with which the node knows of as an exception, and the logic configured to accept the packet when the node has affinity and the packet does not map to a bucket currently owned by that node, and the logic configured to accept the packet when the packet maps to a bucket currently owned by that node and it has been decided that there is no exception associated with the client corresponding to the packet.
-
12. A method implemented by each node in a plurality of load-balancing nodes, each node comprising a processor and memory that perform the method, the method performed by any given node comprising:
-
maintaining hash information indicating hash values that are currently assigned to the given node, wherein when a convergence occurs for the plurality of load-balancing nodes the hash information indicates a new set of hash values currently assigned to the given node in response to the convergence; maintaining an association list of clients associated with the given node; receiving a plurality of packets from clients via network connections between the given node and the clients, respectively; computing a hash value of each received packet; dropping a first plurality of the received packets based on the computed hash values thereof indicating that corresponding buckets are not currently assigned to the given node, unless the nodes that sent such packets are included in the association list; and passing a second plurality of the received packets based on the computed hash values thereof indicating that corresponding buckets are currently assigned to the given node. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20)
-
Specification