Claims
- 1. An apparatus for directing communications over a network between a client and at least one content server, comprising:
a control component that is arranged to receive a resource request from the client, select a new content server when the control component determines that at least one determined condition exists, and select a previously selected content server when the at least one determined condition fails to exist, wherein the determined condition includes the client is unassociated with another content server and the client is associated with another content server that is maintaining a maximum number of resource requests associated with the client; and a switch component that is arranged to direct a data flow between the client and the selected content server such that the selected content server provides the requested resource to the client over the network.
- 2. The apparatus of claim 1, further comprising a memory component that is arranged to cooperate with the control component to maintain a list of each data flow that is associated with the requested resource.
- 3. The apparatus of claim 1, wherein the control component employs a table to list each data flow that is associated with a connection to the requested resource.
- 4. The apparatus of claim 1, wherein the control component categorizes a plurality of data packets for each data flow.
- 5. The apparatus of claim 1, wherein the control component determines when an event is associated with the data flow.
- 6. The apparatus of claim 5, wherein the control component categorizes each event.
- 7. The apparatus of claim 1, further comprising a flow signature that is associated with the data flow, wherein the flow signature is compared to a set of rules for handling each data flow that is associated with a connection to the requested resource.
- 8. The apparatus of claim 7, wherein the flow signature includes information about a source and a destination for each data packet in the data flow.
- 9. The apparatus of claim 7, wherein the flow signature includes a timestamp.
- 10. The apparatus of claim 1, wherein the switch component collects metrics regarding each connection to each resource.
- 11. The apparatus of claim 1, further comprising a server array controller that includes the action of the control component and switch component.
- 12. The apparatus of claim 1, wherein the control component is arranged to compare an identifier associated with the client to entries in a flow table to determine when the at least one determined condition exists.
- 13. The apparatus of claim 1, wherein the control component is arranged to maintain a connection count that is associated with the number of connections between the client and a selected content server, wherein the connection count is amended when a new connection is established between the client the selected content server.
- 14. The apparatus of claim 13, wherein the connection count is compared to the maximum number of resource requests that is associated with the client to determine when the at least one determined condition exists.
- 15. The apparatus of claim 13, wherein the connection count is associated with a source address and a destination address, wherein the source address is associated with the client and the destination address is associated with the resource request.
- 16. The apparatus of claim 1, wherein the resource request is identified by a TCP synchronization request in the data flow.
- 17. The apparatus of claim 1, wherein the switch component caches content server selections and directs at least one data flow based on a cached content server selection
- 18. A method for directing communications over a network between a client and at least one content server, comprising:
receiving a data flow that includes a resource request; identifying the client that is associated with the resource request; selecting a content server to handle the resource request when the identified client is unassociated with another content server, and when the identified client is associated with another content server that is maintaining a maximum number of resource requests; caching connection information that is associated with the selected content server and the identified client; selecting a previously selected content server from the cached connection information when the identified client is associated with the previously selected content server, wherein the cached connection information indicates that the previously selected content server is maintaining less than a maximum number of resource requests with the identified client; and directing the data flow between the selected content server and the identified client.
- 19. A method as in claim 18, further comprising:
initializing a connection count that is associated with the identified client when the connection information is cached; and updating the connection count when the content server is selected from the cached connection information.
- 20. A method as in claim 18, further comprising maintaining a table for the cached connection information, wherein the table includes at least one entry that is associated with the identified client when a connection between the identified client and the requested resource is alive.
- 21. A method as in claim 20, further comprising removing an entry from the table when the connection between the identified client and the requested resource is dead.
- 22. A method as in claim 20, further comprising removing an entry from the table when a time stamp that is associated with the table entry exceeds a time limit.
- 23. A method as in claim 18, further comprising monitoring a connection time that is associated with the connection between the identified client and the associated content server, and selecting the content server with a load-balancing algorithm to provide the selected content server to handle the resource request when the connection time exceeds a maximum connection time limit.
- 24. A method as in claim 23, wherein the selected content server corresponds to the previously selected content server.
- 25. A method as in claim 23, wherein the selected content server is different from the previously selected content server.
- 26. A method as in claim 18, wherein selecting a content server further comprises selecting a content server with a load-balancing algorithm when the identified client is unassociated with another content server, and when the identified client is associated with another content server that is maintaining the maximum number of resource requests.
- 27. A method as in claim 18, wherein identifying the client further comprises identifying at least a portion of a source address for the client that is associated with the resource request.
- 28. A method as in claim 18, wherein identifying the client further comprises identifying at least a portion of a source port for the client that is associated with the resource request.
- 29. A method as in claim 18, wherein the resource request is identified by a TCP synchronization request in the data flow.
- 30. A method as in claim 29, further comprising:
transforming the TCP synchronization request for the selected server; and forwarding the transformed TCP Synchronization request to the selected server.
- 31. A method as in claim 18, further comprising:
receiving a synchronization acknowledgement from the selected server; transforming the synchronization acknowledgement for the identified client; and forwarding the transformed synchronization acknowledgement to the identified client.
- 32. A method as in claim 18, wherein directing the data flow between the selected content server and the client further comprises:
transforming the data flow for the identified client; and forwarding the transformed data flow to the identified client.
- 33. An apparatus for directing communications over a network between a client and at least one content server, comprising:
a means for receiving a data flow that is arranged to receive a data flow that includes a resource request; a means for identifying the client that is arranged to identify a client that is associated with the resource request; a means for selecting a new content server that is arranged to select a new content server to handle the resource request when at least one determined condition occurs, including the client is unassociated with another content server and the client is associated with another content server that is maintaining a maximum number of resource requests associated with the client; a means for selecting a previously selected content server that is arranged to select a previously selected content server when the client that is associated with resource request is associated with the previously selected content server, and the previously selected content server is maintaining less than the maximum number of resource requests with the client; and a means for directing the data flow that is arranged to direct the data flow between the selected content server and the client.
- 34. An apparatus as in claim 33, the means for selecting a new content server further comprising a means for load balancing, wherein the means for load balancing is arranged to select the new content server by employing a load-balancing algorithm.
- 35. An apparatus as in claim 34, wherein the means for load balancing is part of a non-segmented controller.
- 36. An apparatus as in claim 35, wherein the means for load balancing is part of a control segment in a segmented controller.
- 37. An apparatus as in claim 35, wherein the load balancing algorithm is active when the at least one determined condition occurs, and the load balancing algorithm is inactive when the previously selected content server is maintaining less than the maximum number of resource requests with the client.
- 38. An apparatus as in claim 32, wherein the means for directing the data flow includes a cache for storing previous selections of content servers.
- 39. A method for directing communications over a network between a client and at least one content server, the comprising:
receiving a data flow that includes a resource request; identifying the client that is associated with the resource request; selecting a content server to handle the resource request when the identified client is unassociated with another content server; caching the connection information associated with the selected content server and the identified client; expiring cached connection information when a time limit associated with the cached connection information exceeds a predetermined time limit; selecting a previously selected content server when the identified client that is associated with the resource request is associated with the previously selected content server; and directing the data flow between the selected content server and the identified client.
- 40. A method as in claim 39, further comprising updating cached connection information when the identified client that is associated with the resource request is associated the previously selected content server.
- 41. A method as in claim 39, wherein expiring the cached connection information includes marking the cached connection information as expired.
RELATED APPLICATION DATA
[0001] This application claims the benefit under 35 U.S.C. §119(e) of U.S. patent application Ser. No. 09/814,415, filed on Mar. 21, 2001, which is based upon U.S. Provisional Application No. 60/191,019, filed Mar. 21, 2000.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60191019 |
Mar 2000 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
09814415 |
Mar 2001 |
US |
Child |
10150422 |
May 2002 |
US |