Method for creating forwarding lists for cluster networking
First Claim
1. A method of distributing packets to server nodes in a cluster of nodes, comprising the steps of:
- receiving a packet at an interface node in the cluster of nodes, the packet including a source address;
matching the packet with a service object;
mapping the source address to one bucket of a plurality of buckets in a packet distribution table associated with the service object matched with the packet, the buckets containing identifiers for the server nodes in the cluster of nodes;
determining if the source address matches a listing in a forwarding list associated with the one bucket to which the source address of the packet is mapped;
if there is a match with a listing in the forwarding list, sending the packet to a node indicated by the match thereby ensuring that an already established connection is not broken; and
if there is not a match with a listing in the forwarding list, sending the packet to a node identified by the one bucket to which the source address of the packet is mapped.
2 Assignments
0 Petitions
Accused Products
Abstract
A scalable cluster system that provides scalable services for client applications is provided with a forwarding list. The scalable services are transparent to the client application. To facilitate this transparent scalability, the system provides a forwarding list. For various operational reasons, such as tuning the system, an operator may change the work distribution weights between nodes of a scalable cluster system. Such a change in work distribution weights may change how packets are assigned to nodes. Forwarding lists are provided so that if the work distribution weights are changed while there are existing connections the forwarding lists allow packets from existing connections to go to the same node as earlier packets from the same connection.
214 Citations
24 Claims
-
1. A method of distributing packets to server nodes in a cluster of nodes, comprising the steps of:
-
receiving a packet at an interface node in the cluster of nodes, the packet including a source address;
matching the packet with a service object;
mapping the source address to one bucket of a plurality of buckets in a packet distribution table associated with the service object matched with the packet, the buckets containing identifiers for the server nodes in the cluster of nodes;
determining if the source address matches a listing in a forwarding list associated with the one bucket to which the source address of the packet is mapped;
if there is a match with a listing in the forwarding list, sending the packet to a node indicated by the match thereby ensuring that an already established connection is not broken; and
if there is not a match with a listing in the forwarding list, sending the packet to a node identified by the one bucket to which the source address of the packet is mapped. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
determining if there is a forwarding list entry in the one bucket to which the source address of the packet is mapped;
if there is no forwarding list entry in the one bucket to which the source address of the packet is mapped then determining there is no match with a listing in a forwarding list; and
if there is a forwarding list entry in the one bucket to which the source address of the packet is mapped, searching the forwarding list for a match with the source address of the packet.
-
-
3. The method, as recited in claim 2, further comprising the steps of:
-
updating a bucket in the packet distribution table of the service object by changing the identifier in the bucket from an old node to a new node; and
updating a forwarding list associated with the updated bucket.
-
-
4. The method, as recited in claim 3, wherein the step of updating the forwarding list comprises the steps of:
-
querying the old node for existing connections; and
adding the existing connections of the old node as entries to the forwarding list.
-
-
5. The method, as recited in claim 4, wherein the service object has a service associated with the service object and wherein the existing connections have packets with a common destination address and source address, and wherein the step of adding the existing connections of the old node to the forwarding list, comprises the steps of:
-
searching the existing connections of the old node for existing connections with destination addresses which match the service of the service object; and
adding found existing connections of the old node with a destination address, which matches the service of the service object to the forwarding list.
-
-
6. The method, as recited in claim 5, further comprising the step of deleting from the forwarding list a listing of a connection of the existing connections that has been terminated.
-
7. The method, as recited in claim 6, further comprising the steps of:
-
checking the protocol of the packet; and
sending the packet to the node identified by the bucket if the protocol is not TCP, wherein the checking the protocol step and the sending the packet step occurs before the determining if the source address matches a listing step.
-
-
8. The method, as recited in claim 7, wherein the source address comprises a client IP address and a client port address.
-
9. The method, as recited in claim 4, wherein the service object has a service associated with the service object and wherein the existing connections have packets with a common destination address and source address, and wherein the step of adding the existing connections of the old node to the forwarding list, comprises the steps of:
-
searching the existing connections of the old node for connections with destination addresses which match the service of the service object; and
adding the existing connections of the old node with a destination address, which matches the service of the service object, and with a source address, which maps to the bucket of the forwarding list to the forwarding list.
-
-
10. The method, as recited in claim 9, further comprising the step of deleting from the forwarding list a listing of a connection of the existing connections that has been terminated.
-
11. The method, as recited in claim 10, further comprising the steps of:
-
checking the protocol of the packet; and
sending the packet to the node identified by the bucket if the protocol is not TCP, wherein the checking the protocol step and the sending the packet step occurs before the determining if the source address matches a listing step.
-
-
12. The method, as recited in claim 11, wherein the source address comprises a client IP address and a client port address.
-
13. The method as recited in claim 1, wherein the mapping of the source address to the one bucket comprises hashing the source address, wherein the one bucket corresponds to the hashed source address.
-
14. The method, as recited in claim 1, further comprising:
-
receiving a second packet at the interface node, matching the second packet with a second service object; and
mapping a source address of the second packet to a second bucket of a second plurality of buckets in a second packet distribution table associated with the second service object matched with the packet, the second bucket containing an identifier for one of the server nodes of the cluster of nodes.
-
-
15. A computer readable storage medium storing instructions that when executed by a computer causes the computer to perform a method of distributing packets to server nodes in a cluster of nodes, comprising the steps of:
-
receiving a packet at an interface node in the cluster of nodes, the packet including a source address;
matching the packet with a service object;
mapping the source address to one bucket of a plurality of buckets in a packet distribution table associated with the service object matched with the packet, the buckets containing identifiers for the server nodes in the cluster of nodes;
determining if the source address matches a listing in a forwarding list associated with the one bucket to which the source address of the packet is mapped;
if there is a match with a listing in the forwarding list, sending the packet to a node indicated by the match; and
if there is not a match with a listing in the forwarding list, sending the packet to a node identified by the bucket to which the source address of the packet is mapped. - View Dependent Claims (16, 17, 18, 19)
determining if there is a forwarding list entry in the one bucket to which the source address of the packet is mapped;
if there is no forwarding list entry in the one bucket to which the source address of the packet is mapped then determining there is no match with a listing in a forwarding list; and
if there is a forwarding list entry in the one bucket to which the source address of the packet is mapped, searching the forwarding list for a match with the source address of the packet.
-
-
17. The computer readable storage medium, as recited in claim 16, further comprising the steps of:
-
updating a bucket in the packet distribution table of the service object by changing the identifier in the bucket from an old node to a new node; and
updating a forwarding list associated with the updated bucket, wherein the step of updating the forwarding list comprises the steps of;
querying the old node for existing connections; and
adding existing connections of the old node as entries to the forwarding list.
-
-
18. The computer readable storage medium, as recited in claim 17, wherein the service object has a service associated with the service object and wherein the existing connections have packets with a common destination address and source address, and wherein the step of adding the existing connections of the old node to the forwarding list, comprises the steps of:
-
searching the existing connections of the old node for existing connections with destination addresses, which match the service of the service object;
adding found existing connections of the old node with a destination address which matches the service of the service object to the forwarding list; and
further comprising the steps of;
deleting from the forwarding list a listing of a connection of the existing connections that has been terminated;
checking the protocol of the packet; and
sending the packet to the node identified by the bucket if the protocol is not TCP, wherein the checking the protocol step and the sending the packet step occurs before the determining if the source address matches a listing step.
-
-
19. The computer readable storage medium, as recited in claim, 17, wherein the service object has a service associated with the service object and wherein the existing connections have packets with a common destination address and source address, and wherein the step of adding the existing connections of the old node to the forwarding list, comprises the steps of:
-
searching the existing connections of the old node for connections with destination addresses, which match the service of the service object;
adding the existing connections of the old node with a destination address which matches the service of the service object and with a source address which maps to the bucket of the forwarding list to the forwarding list; and
further comprising the steps of;
deleting from the forwarding list a listing of a connection of the existing connection that has been terminated;
checking the protocol of the packet; and
sending the packet to the node identified by the bucket if the protocol is not TCP, wherein the checking the protocol step and the sending the packet step occurs before the determining if the source address matches a listing step.
-
-
20. An apparatus for distributing packets to server nodes in a cluster of nodes, wherein one of the server nodes is an interface node, comprising:
-
a receiving mechanism in the interface node that is configured to receive a packet at the interface node in the cluster of nodes, the packet including a source address;
a service object matching mechanism in the interface node that is configured to match the packet with a service object;
a mapping mechanism in the interface node that is configured to map the source address to one bucket of a plurality of buckets in a packet distribution table associated with the service object matched with the packet, the buckets containing identifiers for the server nodes in the cluster of nodes;
a determining mechanism in the interface node that is configured to determine if the source address matches a listing in a forwarding list associated with the one bucket to which the source address of the packet is mapped;
a match sending mechanism in the interface node that is configured to send the packet to a node indicated by the match, if there is a match with a listing in the forwarding list;
a non-match sending mechanism in the interface node that is configured to send the packet to a node identified by the one bucket to which the source address of the packet is mapped. - View Dependent Claims (21, 22, 23, 24)
a forwarding list determining mechanism that is configure to determine if there is a forwarding list entry in the one bucket to which the source address of the packet is mapped;
a no match indicating mechanism that is configure to determine there is no match with a listing in a forwarding list, if there is no forwarding list entry in the one bucket to which the source address of the packet is mapped; and
a forwarding list searching mechanism that is configured to search the forwarding list for a match with the source address of the packet, if there is a forwarding list entry in the one bucket to which the source address of the packet is mapped.
-
-
22. The apparatus, as recited in claim 21, further comprising:
-
a bucket updating mechanism that is configured to update a bucket in the packet distribution table of the service object by changing the identifier in the bucket from an old node to a new node; and
a forwarding list updating mechanism that is configured to update a forwarding list associated with the updated bucket, wherein the forwarding list updating mechanism, comprises;
a querying mechanism that is configured to query the old node for existing connections; and
an adding mechanism that is configured to add existing connections of the old node as entries to the forwarding list.
-
-
23. The apparatus, as recited in claim 22, wherein the service object has a service associated with the service object and wherein the existing connections have packets with a common destination address and source address, and wherein the adding mechanism, comprises:
-
a searching mechanism that is configured to search the old node for existing connections with destination addresses which match the service of the service object;
a found existing connections adding mechanism that is configured to add found existing connections of the old node with a destination address which matches the service of the service object to the forwarding list; and
the apparatus further comprising;
a deleting mechanism that is configured to delete from the forwarding list a listing of a connection of the existing connections that has been terminated;
a protocol checking mechanism that is configured to check the protocol of the packet; and
a non-TCP sending mechanism that is configured to send the packet to the node identified by the bucket if the protocol is not TCP.
-
-
24. The apparatus, as recited in claim 22, wherein the service object has a service associated with the service object and wherein the existing connections have packets with a common destination address and source address, and wherein the adding mechanism, comprises:
-
a searching mechanism that is configured to search existing connections of the old node with destination addresses, which match the service of the service, object;
a found existing connections adding mechanism that is configured to add the existing connections of the old node with a destination address which matches the service of the service object and with a source address which maps to the bucket of the forwarding list to the forwarding list; and
the apparatus further comprising;
a deleting mechanism for deleting from the forwarding list a listing of a connection of the existing connection that has been terminated;
a protocol checking mechanism that is configured to check the protocol of the packet; and
a non-TCP sending mechanism that is configured to send the packet to the node identified by the bucket if the protocol is not TCP.
-
Specification