Wide area load balancing of web traffic
First Claim
1. A method of facilitating redirection of traffic between a server and a client to between the client and a selected one from a plurality of replicas, the method comprising:
- receiving a packet from a client, the packet having a destination identifier associated with a server;
when the packet is a start packet, at the client side, adding a tag to the start packet to indicate that the start packet is to be forwarded by a device other than a client side device to a plurality of replicas that each duplicates the data content of the server, wherein the tag is an option byte having one of two states that indicate whether redirection is permissible or impermissible;
storing the destination identifier of the start packet;
after storing the destination identifier of the start packet and tagging the start packet, sending the start packet to the server;
for a first acknowledgement packet associated with the start packet that is received first, storing and associating a source identifier of the first acknowledgement packet with the stored destination identifier of the start packet;
after storing and associating the source identifier of the first acknowledgement packet, sending the first acknowledgement packet to the client;
prior to storing and associating the source identifier of the first acknowledgement packet, cracking the first acknowledgement packet to obtain the source identifier when the first acknowledgement packet has been encapsulated;
when cracked, encapsulating the cracked acknowledgement packet with the destination identifier stored for the associated start packet, wherein the encapsulated first acknowledgement packet is sent to the client; and
when a second acknowledgement packet associated with the start packet is received after the first acknowledgement packet, inhibiting sending of the second acknowledgement to the client.
1 Assignment
0 Petitions
Accused Products
Abstract
Methods and apparatus are described for intelligently for intelligently routing a request to a device (e.g., replica or server). A packet is received (e.g., by the client'"'"'s gateway router) from a client, and the packet has a destination identifier associated with a server. When the packet is a start packet, a tag is added to the start packet to indicate that the start packet should be forwarded to any replica that duplicates the data content of the server. The destination identifier of the start packet is stored for later use. After storing the destination identifier of the start packet and tagging the start packet, the start packet is sent to the server. When the start packet has a tag indicating that the start packet should be forwarded to any replica that duplicates the data content of the server, the start packet is encapsulated and sent to each replica associated with the server. A replica device then receives a start packet sent from the client to the server. The start packet is encapsulated. The encapsulated start packet is cracked to determine the client'"'"'s address. When the replica device is active and not busy, an immediate acknowledgement packet is sent to the client in response to the received start packet. When a first acknowledgement packet associated with the start packet is received (e.g., at the client gateway router), a source identifier of the first acknowledgement packet is stored and associated with the stored destination identifier of the start packet. After storing and associating the source identifier of the first acknowledgement packet, the first acknowledgement packet is sent to the client. Subsequent packets (e.g., after the start and acknowledgement packets) are then sent between the client and sender of the first acknowledgement packet.
-
Citations
32 Claims
-
1. A method of facilitating redirection of traffic between a server and a client to between the client and a selected one from a plurality of replicas, the method comprising:
-
receiving a packet from a client, the packet having a destination identifier associated with a server; when the packet is a start packet, at the client side, adding a tag to the start packet to indicate that the start packet is to be forwarded by a device other than a client side device to a plurality of replicas that each duplicates the data content of the server, wherein the tag is an option byte having one of two states that indicate whether redirection is permissible or impermissible; storing the destination identifier of the start packet; after storing the destination identifier of the start packet and tagging the start packet, sending the start packet to the server; for a first acknowledgement packet associated with the start packet that is received first, storing and associating a source identifier of the first acknowledgement packet with the stored destination identifier of the start packet; after storing and associating the source identifier of the first acknowledgement packet, sending the first acknowledgement packet to the client; prior to storing and associating the source identifier of the first acknowledgement packet, cracking the first acknowledgement packet to obtain the source identifier when the first acknowledgement packet has been encapsulated; when cracked, encapsulating the cracked acknowledgement packet with the destination identifier stored for the associated start packet, wherein the encapsulated first acknowledgement packet is sent to the client; and when a second acknowledgement packet associated with the start packet is received after the first acknowledgement packet, inhibiting sending of the second acknowledgement to the client. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A computer system operable to facilitate redirection of traffic between a server and a client to between the client and a selected one from a plurality of replicas, the computer system comprising:
-
a memory; and a processor coupled to the memory, wherein at least one of the memory and the processor are adapted to provide; receiving a packet from a client, the packet having a destination identifier associated with a server; when the packet is a start packet, at the client side, adding a tag to the start packet to indicate that the start packet is to be forwarded by a device other than a client side device to a plurality of replicas that each duplicates the data content of the server, wherein the tag is an option byte having one of two states that indicate whether redirection is permissible or impermissible; storing the destination identifier of the start packet; after storing the destination identifier of the start packet and tagging the start packet, sending the start packet to the server; for a first acknowledgement packet associated with the start packet that is received first, storing and associating a source identifier of the first acknowledgement packet with the stored destination identifier of the start packet; after storing and associating the source identifier of the first acknowledgement packet, sending the first acknowledgement packet to the client; prior to storing and associating the source identifier of the first acknowledgement packet, cracking the first acknowledgement packet to obtain the source identifier when the first acknowledgement packet has been encapsulated; when cracked, encapsulating the cracked acknowledgement packet with the destination identifier stored for the associated start packet, wherein the encapsulated first acknowledgement packet is sent to the client; and when a second acknowledgement packet associated with the start packet is received after the first acknowledgement packet, inhibiting sending of the second acknowledgement to the client. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A computer program product for facilitating redirection of traffic between a server and a client to between the client and a selected one from a plurality of replicas, the computer program product comprising:
-
at least one computer readable medium; computer program instructions stored within the at least one computer readable product configured for; receiving a packet from a client, the packet having a destination identifier associated with a server; when the packet is a start packet, at the client side, adding a tag to the start packet to indicate that the start packet is to be forwarded by a device other than a client side device to a plurality of replicas that each duplicates the data content of the server, wherein the tag is an option byte having one of two states that indicate whether redirection is permissible or impermissible; storing the destination identifier of the start packet; after storing the destination identifier of the start packet and tagging the start packet, sending the start packet to the server; for a first acknowledgement packet associated with the start packet that is received first, storing and associating a source identifier of the first acknowledgement packet with the stored destination identifier of the start packet; after storing and associating the source identifier of the first acknowledgement packet, sending the first acknowledgement packet to the client; prior to storing and associating the source identifier of the first acknowledgement packet, cracking the first acknowledgement packet to obtain the source identifier when the first acknowledgement packet has been encapsulated; when cracked, encapsulating the cracked acknowledgement packet with the destination identifier stored for the associated start packet, wherein the encapsulated first acknowledgement packet is sent to the client; and when a second acknowledgement packet associated with the start packet is received after the first acknowledgement packet, inhibiting sending of the second acknowledgement to the client. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A method of facilitating redirection of traffic between a server and a client to between the client and a nearest replica selected from a plurality of replicas, the method comprising:
-
at the client side, receiving a packet that is traveling between a client and a server or between the client and a replica; when the received packet is a start packet that is traveling from the client to the server, at the client side, adding a tag to the start packet to indicate that the start packet is to be forwarded by a device other than a client side device to a plurality of replicas that each duplicates the data content of the server, wherein the tag is an option byte having one of two states that indicate whether redirection is permissible or impermissible; for the received packet that is an acknowledgement packet that is received first and spoofs the server, obtaining a source identifier of the replica from the acknowledgement when the acknowledgement originates from the replica and then sending the acknowledgement packet to the client; for the received packet that is an acknowledgement packet that is not received first and spoofs the server, inhibiting sending of the second acknowledgement to the client; and when the received packet is a subsequent packet received after the start packet and the acknowledgement packet, altering the subsequent packet so that it goes to the replica when the subsequent packet originates from the client, wherein the alteration is based on the obtained source identifier from the acknowledgement packet. - View Dependent Claims (17, 18, 19, 20)
-
-
21. A computer system operable to facilitate redirection of traffic between a server and a client to between the client and a nearest replica selected from a plurality of replicas, the computer system comprising:
-
a memory; and a processor coupled to the memory, wherein at least one of the memory and the processor are adapted to provide; at the client side, receiving a packet that is traveling between a client and a server or between the client and a replica; when the received packet is a start packet that is traveling from the client to the server, at the client side, adding a tag to the start packet to indicate that the start packet is to be forwarded by a device other than a client side device to a plurality of replicas that each duplicates the data content of the server, wherein the tag is an option byte having one of two states that indicate whether redirection is permissible or impermissible; for the received packet that is an acknowledgement packet that is received first and spoofs the server, obtaining a source identifier of the replica from the acknowledgement when the acknowledgement originates from the replica and then sending the acknowledgement packet to the client; for the received packet that is an acknowledgement packet that is not received first and spoofs the server, inhibiting sending of the second acknowledgement to the client; and when the received packet is a subsequent packet received after the start packet and the acknowledgement packet, altering the subsequent packet so that it goes to the replica when the subsequent packet originates from the client, wherein the alteration is based on the obtained source identifier from the acknowledgement packet. - View Dependent Claims (22, 23, 24, 25)
-
-
26. A computer program product for facilitating redirection of traffic between a server and a client to between a server and a client to between the client and a nearest replica selected from a plurality of replicas, the computer program product comprising:
-
at least one computer readable medium; computer program instructions stored within the at least one computer readable product configured for; at the client side, receiving a packet that is traveling between a client and a server or between the client and a replica; when the received packet is a start packet that is traveling from the client to the server, at the client side, adding a tag to the start packet to indicate that the start packet is to be forwarded by a device other than a client side device to a plurality of replicas that each duplicates the data content of the server, wherein the tag is an option byte having one of two states that indicate whether redirection is permissible or impermissible; for the received packet that is an acknowledgement packet that is received first and spoofs the server, obtaining a source identifier of the replica from the acknowledgement when the acknowledgement originates from the replica and then sending the acknowledgement packet to the client; for the received packet that is an acknowledgement packet that is not received first and spoofs the server, inhibiting sending of the second acknowledgement to the client; and when the received packet is a subsequent packet received after the start packet and the acknowledgement packet, altering the subsequent packet so that it goes to the replica when the subsequent packet originates from the client, wherein the alteration is based on the obtained source identifier from the acknowledgement packet. - View Dependent Claims (27, 28, 29, 30)
-
-
31. An apparatus product for facilitating redirection of traffic between a server and a client to between the client and a selected one from a plurality of replicas, the apparatus comprising:
-
means for receiving a packet from a client, the packet having a destination identifier associated with a server; means for when the packet is a start packet, at the client side, adding a tag to the start packet to indicate that the start packet should is to be forwarded by a device other than a client side device to a plurality of replicas that each duplicates the data content of the server, wherein the tag is an option byte having one of two states that indicate whether redirection is permissible or impermissible; means for storing the destination identifier of the start packet; means for after storing the destination identifier of the start packet and tagging the start packet, sending the start packet to the server; means for, for a first acknowledgement packet associated with the start packet that is received first, storing and associating a source identifier of the first acknowledgement packet with the stored destination identifier of the start packet; means for after storing and associating the source identifier of the first acknowledgement packet, sending the first acknowledgement packet to the client; means for prior to storing and associating the source identifier of the first acknowledgement packet, cracking the first acknowledgement packet to obtain the source identifier when the first acknowledgement packet has been encapsulated; means for when cracked, encapsulating the cracked acknowledgement packet with a source address associated with the packet, wherein the encapsulated first acknowledgement packet is sent to the client; and means for when a second acknowledgement packet associated with the start packet is received after the first acknowledgement packet, inhibiting sending of the second acknowledgement to the client.
-
-
32. An apparatus product for facilitating redirection of traffic between a server and a client to between the client and a nearest replica selected from a plurality of replicas, the apparatus comprising:
-
means for at the client side, receiving a packet that is traveling between a client and a server or between the client and a replica; means for when the received packet is a start packet that is traveling from the client to the server, at the client side, adding a tag to the start packet to indicate that the start packet is to be forwarded by a device other than a client side device to a plurality of replicas that each duplicates the data content of the server, wherein the tag is an option byte having one of two states that indicate whether redirection is permissible or impermissible; means for, for the received packet that is an acknowledgement packet that is received first and spoofs the server, obtaining a source identifier of the replica from the acknowledgement when the acknowledgement originates from the replica and then sending the acknowledgement packet to the client; means for, for the received packet that is an acknowledgement packet that is not received first and spoofs the server, inhibiting sending of the second acknowledgement to the client; and means for when the received packet is a subsequent packet received after the start packet and the acknowledgement packet, altering the subsequent packet so that it goes to the replica when the subsequent packet originates from the client, wherein the alteration is based on the obtained source identifier from the acknowledgement packet.
-
Specification