Method and apparatus for performing a fast service lookup in cluster networking
First Claim
1. A method for performing a fast lookup to determine a service being provided by server nodes within a cluster of nodes, the method comprising:
- receiving a packet at an interface node in the cluster of nodes, the packet including a source address specifying a location of a client that the packet originated from, and a destination address specifying a service provided by the cluster of nodes;
using the destination address to perform a first lookup into a first lookup structure containing identifiers for scalable services, wherein a scalable service is a service that provide more server node capacity for the scalable service as demand for the scalable service increases;
if an identifier for the scalable service is returned for the packet, looking up a server node in the cluster of nodes to send the packet to based upon the source address of the packet, and sending the packet to the server node;
if no identifier for the scalable service is returned for the packet, sending the packet to a server instance in the cluster of nodes that provides a non-scalable service; and
allowing the server node to send return communications directly to the client without forwarding the return communications through the interface node.
2 Assignments
0 Petitions
Accused Products
Abstract
One embodiment of the present invention provides a system that uses a destination address of a packet to perform a fast lookup to determine a service that is specified by the destination address. The system initially receives a packet at an interface node in the cluster of nodes. This packet includes a source address specifying a location of a client that the packet originated from, and the destination address specifying a service provided by the cluster of nodes. The system uses the destination address to perform a first lookup into a first lookup structure containing identifiers for scalable services. Note that a scalable service is a service that provides more server node capacity for the scalable service as demand for the scalable service increases. If no identifier for a scalable service is returned during the first lookup, the system sends the packet to a server node in the cluster of nodes that provides a non-scalable service.
231 Citations
22 Claims
-
1. A method for performing a fast lookup to determine a service being provided by server nodes within a cluster of nodes, the method comprising:
-
receiving a packet at an interface node in the cluster of nodes, the packet including a source address specifying a location of a client that the packet originated from, and a destination address specifying a service provided by the cluster of nodes;
using the destination address to perform a first lookup into a first lookup structure containing identifiers for scalable services, wherein a scalable service is a service that provide more server node capacity for the scalable service as demand for the scalable service increases;
if an identifier for the scalable service is returned for the packet, looking up a server node in the cluster of nodes to send the packet to based upon the source address of the packet, and sending the packet to the server node;
if no identifier for the scalable service is returned for the packet, sending the packet to a server instance in the cluster of nodes that provides a non-scalable service; and
allowing the server node to send return communications directly to the client without forwarding the return communications through the interface node. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
wherein mapping the source address includes using a hash function that maps different source addresses to different entries in the packet distribution table in a substantially random manner, and wherein the hash function always maps a given source address to the same entry in the packet distribution table.
-
-
3. The method of claim 1, wherein the first lookup structure is a hash table containing the identifiers for the scalable services.
-
4. The method of claim 1, further comprising if the first lookup does not return an identifier for a scalable service, using the destination address to perform a second lookup into a second lookup structure containing identifiers for scalable services.
-
5. The method of claim 4, wherein the first lookup structure includes identifiers for scalable services that use a first load balancing policy to distribute packets between server nodes, and wherein the second lookup structure includes identifiers for scalable services that use a second load balancing policy.
-
6. The method of claim 1, wherein a scalable service is provided by multiple server nodes in the cluster of nodes so that the scalable service provides more server node capacity for the scalable service as demand for the scalable service increases.
-
7. The method of claim 6, wherein the second load balancing policy keeps related services for a given source address on the same server node.
-
8. The method of claim 1, further comprising if no scalable service is returned for the packet, sending the packet to a server instance on the interface node.
-
9. The method of claim 1, further comprising:
-
periodically sending checkpointing information from a primary packet distribution table (PDT) server to a secondary PDT server so that the secondary PDT server is kept in a consistent state with the primary PDT server; and
if the primary PDT server fails, allowing the secondary PDT server to take over for the primary PDT server.
-
-
10. The method of claim 1, further comprising periodically sending checkpointing information from a master packet distribution table (PDT) server to a slave PDT server located on the interface node.
-
11. A computer readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for performing a fast lookup to determine a service being provided by server nodes within a cluster of nodes, comprising:
-
receiving a packet at an interface node in the cluster of nodes, the packet including a source address specifying a location of a client that the packet originated from, and the a destination address specifying a service provided by the cluster of nodes;
using the destination address to perform a first lookup into a first lookup structure containing identifiers for scalable services, a scalable service being provided by multiple server nodes in the cluster of nodes so that the scalable service provides more server node capacity for the scalable service as demand for the scalable service increases, wherein a scalable service is a service that provide more server node capacity for the scalable service as demand for the scalable service increases;
if an identifier for the scalable service is returned for the packet, looking up a server node in the cluster of nodes to send the packet to based upon the source address of the packet, and sending the packet to the server node;
if no identifier for a scalable service is returned for the packet, sending the packet to a server node in the cluster of nodes that provides a non-scalable service; and
allowing the server node to send return communications directly to the client without forwarding the return communications through the interface node. - View Dependent Claims (12, 13, 14, 15, 16)
wherein mapping the source address includes using a hash function that maps different source addresses to different entries in the packet distribution table in a substantially random manner, and wherein the hash function always maps a given source address to the same entry in the packet distribution table.
-
-
13. The computer-readable storage medium of claim 11, wherein the first lookup structure is a hash table containing the identifiers for the scalable services.
-
14. The computer-readable storage medium of claim 11, wherein the method further comprises, if the first lookup does not return an identifier for a scalable service, using the destination address to perform a second lookup into a second lookup structure containing identifiers for scalable services.
-
15. The computer-readable storage medium of claim 11, wherein the method further comprises periodically sending checkpointing information from a primary packet distribution table (PDT) server to a secondary PDT server so that the secondary PDT server is kept in a consistent state with the primary PDT server;
- and
if the primary PDT server fails, allowing the secondary PDT server to take over for the primary PDT server.
- and
-
16. The computer-readable storage medium of claim 11, wherein the method further comprises periodically sending checkpointing information from a master packet distribution table (PDT) server to a slave PDT server located on the interface node.
-
17. An apparatus that performs a fast lookup to determine a service being provided by server nodes within a cluster of nodes, comprising:
-
a receiving mechanism that is configured to receive a packet at an interface node in the cluster of nodes, the packet including a source address specifying a location of a client that the packet originated from, and a destination address specifying a service provided by the cluster of nodes;
a first lookup mechanism that is configured to use the destination address to perform a first lookup into a first lookup structure containing identifiers for scalable services, a scalable service being provided by multiple server nodes in the cluster of nodes so that the scalable service provides more server node capacity for the scalable service as demand for the scalable service increases; and
a server node identification mechanism, wherein if an identifier for the scalable service is returned for the packet, the server node identification mechanism is configured to look up a server node in the cluster of nodes to send the packet to based upon the source address of the packet; and
a sending mechanism that is configured to send the packet to the server node, wherein the sending mechanism is further configured to send the packet to a server node in the cluster of nodes that provides a non-scalable service if no identifier for a scalable service is returned for the packet; and
a return communication mechanism configured to send return communications directly to the client without forwarding the return communications through the interface node. - View Dependent Claims (18, 19, 20, 21, 22)
wherein mapping the source address includes using a hash function that maps different source addresses to different entries in the packet distribution table in a substantially random manner, and wherein the hash function always maps a given source address to the same entry in the packet distribution table.
-
-
19. The apparatus of claim 17, wherein the first lookup structure is a hash table containing the identifiers for the scalable services.
-
20. The apparatus of claim 17, further comprising a second lookup mechanism, wherein if the first lookup mechanism does not return an identifier for a scalable service, the second lookup mechanism is configured to use the destination address to perform a second lookup into a second lookup structure containing identifiers for scalable services.
-
21. The apparatus of claim 20, further comprising:
-
a checkpointing mechanism that is configured to periodically send checkpointing information from a primary packet distribution table (PDT) server to a secondary PDT server so that the secondary PDT server is kept in a consistent state with the primary PDT server; and
a failover mechanism that is configured to allow the secondary PDT server to take over for the primary PDT server if the primary PDT server fails.
-
-
22. The apparatus of claim 21, wherein the checkpointing mechanism is additionally configured to periodically send checkpointing information from the primary PDT server to a slave PDT server located on the interface node.
Specification