Client-side resource-based load-balancing with delayed-resource-binding using TCP state migration to WWW server farm
First Claim
1. A client-side dispatcher for migrating a connection for a high-level client application from an original server to a relocated server, the client-side dispatcher comprising:
- a session table for storing an original server address of the original server and a relocated server address of the relocated server;
an input for receiving first packets from the high-level client application, the first packets having the original server address as a destination address;
an output for outputting to a network second packets, the second packets having the relocated server address as the destination address;
a local packet storage for storing the first packets;
an address translator for converting the destination address of the first packets from the original server address to the relocated server address to generate the second packets;
a packet replayer for sending the second packets to the output;
a first state machine for tracking a sequence of the first packets from the high-level client application;
a second state machine for tracking a sequence of the second packets to the network;
a checksum generator for re-generating a checksum for the second packets containing the relocated server address; and
a sequence-number generator for adjusting a sequence number of incoming packets from the relocated server to match sequence numbers from the original server, and for adjusting an acknowledgement sequence number of outgoing packets to the relocated server to match sequence numbers for the relocated server, whereby packets to the original server are altered for transmission to the relocated server.
2 Assignments
0 Petitions
Accused Products
Abstract
A client-side dispatcher resides on a client machine below high-level client applications and TCP/IP layers. The client-side dispatcher performs TCP state migration to relocate the client-server TCP connection to a new server by storing packets locally and later altering them before transmission. The client-side dispatcher operates in several modes. In an error-recovery mode, when a server fails, error packets from the server are intercepted by the client-side dispatcher. Stored connection packet'"'"'s destination addresses are changed to an address of a relocated server. The altered packets then establish a connection with the relocated server. Source addresses of packets from the server are changed to that of the original server that crashed so that the client application is not aware of the error. In a delayed URL-based dispatch mode, the client-side dispatcher intercepts connection packets before they are sent over the network. Reply packets are faked by the client-side dispatcher to appear to be from a server and then sent to up to the client TCP/IP layers. The client'"'"'s TCP then sends URL packet identifying the resource requested. The client-side dispatcher decodes the URL and picks a server and sends the packet to the server. Reply packets from the server are intercepted, and data packets altered to have the source address of the faked server. Multicast of the initial packet to multiple servers is used for empirical load-balancing by the client. The first server to respond is chosen while the others are reset. Thus the client-side dispatcher picks the fastest of several servers.
-
Citations
20 Claims
-
1. A client-side dispatcher for migrating a connection for a high-level client application from an original server to a relocated server, the client-side dispatcher comprising:
-
a session table for storing an original server address of the original server and a relocated server address of the relocated server;
an input for receiving first packets from the high-level client application, the first packets having the original server address as a destination address;
an output for outputting to a network second packets, the second packets having the relocated server address as the destination address;
a local packet storage for storing the first packets;
an address translator for converting the destination address of the first packets from the original server address to the relocated server address to generate the second packets;
a packet replayer for sending the second packets to the output;
a first state machine for tracking a sequence of the first packets from the high-level client application;
a second state machine for tracking a sequence of the second packets to the network;
a checksum generator for re-generating a checksum for the second packets containing the relocated server address; and
a sequence-number generator for adjusting a sequence number of incoming packets from the relocated server to match sequence numbers from the original server, and for adjusting an acknowledgement sequence number of outgoing packets to the relocated server to match sequence numbers for the relocated server, whereby packets to the original server are altered for transmission to the relocated server. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
a first TCP state for a connection between the high-level client application and the client-side dispatcher;
a second TCP state for a connection between the client-side dispatcher and the relocated server;
a time stamp field for storing a time of a last packet;
a pointer to packets for the connection stored in the local packet storage;
the delta value.
-
-
7. The client-side dispatcher of claim 1 wherein the input is connected to a data-link layer and the output is connected to an IP layer, the address translator being located on a network-interface card below a TCP/IP stack.
-
8. The client-side dispatcher of claim 1 further comprising:
-
an error detector for detecting an error from the original server, the error detector sending a reset packet to the original server to close a connection, the error detector activating the address translator to translate the first packets stored in the local packet storage into the second packets;
wherein the packet replayer sends the second packets to the relocated server to make a new connection with the relocated server instead of with the original server, whereby the connection is migrated from the original server to the relocated server when an error occurs.
-
-
9. The client-side dispatcher of claim 8 wherein the error detector detects the error when the original server does not respond or when incoming data indicates an error.
-
10. The client-side dispatcher of claim 1 wherein the session table is configured by a configuration file, by a remote policy server, or by a local server.
-
11. The client-side dispatcher of claim 1 wherein the original server is a faked server within the client-side dispatcher, the client-side dispatcher generating faked acknowledgement packets having an address of the faked server as a source address, the client-side dispatcher sending the faked acknowledgement packets to the high-level client application to make a connection between the faked server and the high-level client application;
-
and further comprising;
a universal-resource-locator URL means for extracting a URL from a second packet from the high-level client application sent after the connection with the faked server is made, the URL used by the address translator to generate the relocated server address;
a connection migrator for activating the packet replayer to send the second packets over the network to make a new connection with the relocated server;
wherein packets are not sent over the network when the connection with the faked server of the client-side dispatcher is initially made until the connection is migrated to the relocated server after the second packet with the URL is received.
-
-
12. The client-side dispatcher of claim 1 further comprising:
-
multicast means for sending multiple connection-establish packets to multiple servers over the network in response to an initial first packet from the high-level client application;
the client-side dispatcher making a connection with a first server in the multiple servers that sends a response packet, the first server having its response packet received by the client-side dispatcher before response packets from any others of the multiple servers are received;
reset means for sending a reset packet to each of the others of the multiple servers to end connections with all the multiple servers except the first server, whereby the client-side dispatcher performs load balancing by empirically selecting the first server to respond to a multicast of connection-establish packets sent to the multiple servers.
-
-
13. A computer-implemented method of servicing requests for resources from a client application by nodes containing different resources, the computer-implemented method comprising the steps of:
-
making a connection and setting up a session between the client application and an original server specified by the client application;
waiting for a URL request from the client application once the original server has made the connection with the client application;
intercepting the URL request from the client application and decoding the URL request to determine a requested resource;
comparing an identifier for the requested resource to identifiers for resources located on a plurality of nodes and determining a first subset of the plurality of nodes which contain the requested resource and a second subset of the plurality of nodes which do not contain the requested resource;
assigning the URL request to an assigned node in the first subset of the nodes which contain the requested resource, wherein the assigned node is not in the second subset;
transferring the connection and the session setup from the original server to the assigned node containing the requested resource;
reading the requested resource on the assigned node and transmitting the requested resource to the client application, whereby the assigned node is selected based on a location of the requested resource determined from the URL request. - View Dependent Claims (14, 15)
storing packets received from the client application when establishing the connection;
transmitting the packets to the assigned node after the URL request is received, whereby the connection is transferred from the original server to the assigned node by re-transmitting the packets to the assigned node.
-
-
15. The computer-implemented method of claim 13 wherein the original server is a faked server process within a client-side dispatcher on a client machine, the connection being initially made within the client machine without sending packets over a network.
-
16. A computer-program product comprising:
-
a computer-usable medium having computer-readable program code means embodied therein for dispatching packets by a client, the computer-readable program code means in the computer-program product comprising;
network connection means for transmitting and receiving packets from a remote server;
a client application;
a TCP layer receiving requests from the client application, for generating TCP packets including a SYN packet for initiating a connection with a server and a PUSH packet for sending a URL to the server;
an IP layer receiving the TCP packets from the TCP layer, for generating IP packets;
a client-side dispatcher, receiving the IP packets from the IP layer and sending packets to the network connection means, for altering packets to send to a different destination server. - View Dependent Claims (17, 18, 19, 20)
multicast means, in the client-side dispatcher, for generating multiple copies of the SYN packet and altering a destination address in each SYN packet to point to a different one of multiple servers;
first response means, in the client-side dispatcher, for sending the PUSH packet to acknowledge a connection with a first server to send a response packet back, the first server being one of the multiple servers;
reset means, in the client-side dispatcher, for sending reset packets to all the multiple servers except the first server, wherein the PUSH packet is sent only to the second server but the SYN packet is sent to the multiple servers, whereby the first server is assigned by the client-side dispatcher by multicast dispatch to the multiple servers to find the first server to respond.
-
-
18. The computer-program product of claim 16 wherein the computer-readable program code means further comprises:
-
a local packet storage for storing the SYN and PUSH packets;
error means for detecting an error from an original server connected to the client application;
altering means for changing a destination address in the SYN and PUSH packets to a relocated address of a relocated server to generate altered SYN and PUSH packets;
replay means for sending the altered SYN and PUSH packets to the relocated server using the network connection means;
intercept means for blocking an acknowledgement packet from the relocated server and not sending the acknowledgement packet to the client application;
the altering means also changing a source address of data packets from the relocated server to an address of an original server specified by the client application, whereby the client-side dispatcher migrates the connection to the relocated server when the error is detected.
-
-
19. The computer-program product of claim 18 wherein the error occurs when the SYN packet is sent to the original server or when the PUSH packet is sent to the original server.
-
20. The computer-program product of claim 16 wherein the computer-readable program code means further comprises:
-
a universal-resource-locator URL means for extracting a URL from a packet from the client application, the URL indicating a requested resource;
server selection means, coupled to the URL means, for selecting possible destination server from multiple servers, the possible destination servers each having the requested resource; and
policy server means, coupled to the server selection means, for configuring the server selection means with rules for selecting one of the possible destination server as a destination server, whereby the destination server is selected from the possible destination servers.
-
Specification