Method and apparatus for transparently directing requests for web objects to proxy caches
First Claim
1. A method at a Layer 4 switch for redirecting an HTTP connection request from a client that is directed to an origin server to a proxy cache over a packet-based computer network comprising the steps of:
- receiving at least one packet containing a request message within the HTTP connection, the at least one packet having an IP header comprising a destination address of an origin server, the request message including a complete address of a specified object at the origin server;
modifying, at the packet level, the request message by combining the destination address of the origin server with the complete address; and
forwarding the at least one packet containing the modified request message to the proxy cache over the packet-based network;
wherein the proxy cache is a standard proxy cache and, in the forwarding step, the at least one packet containing the modified request is redirected to the standard proxy cache transparently from the standpoints of both the client and the proxy cache, the proxy cache being able to determine whether it can satisfy the request for the specified object by using the combined destination address of the origin server and the complete address contained in the modified request message.
8 Assignments
0 Petitions
Accused Products
Abstract
In order to transparently redirect an HTTP connection request that is directed to an origin server (107) to a proxy cache (110-1), a proxy redirector (104) translates the destination address of packets directed to the origin server to the address of the proxy. During a handshaking procedure, a TCP connection is transparently established between the client (110-1) and the proxy cache. When the client transmits a GET request to what it thinks is the origin server, which request specifies the complete address of an object at that origin server that it wants a copy of, the proxy redirector modifies the complete address specified in that GET request before it is sent to the proxy cache. Specifically, the IP address of the origin server found in the destination field in the IP header of the one or more packets from the client containing the GET request is added by the proxy redirector as a prefix to the complete URL in the GET request to form an absolute URL. The proxy cache determines from that absolute URL whether it has the requested object stored in its cache. If it does, it sends the object back to the proxy redirector, which masquerades those packets as coming from the origin server by translating their destination address to the address of the client and their source address to that of the origin server. If the proxy does not have the requested object, a separate TCP connection is established between the proxy and the origin server from where the object is retrieved and then forwarded over the TCP connection between the client and the proxy. In order to account for the additional number of bytes in the GET request, an acknowledgement sequence number in packets returned from the proxy that logically follow receipt of the GET request are decremented by that number by the proxy redirector before being forwarded to the client. Similarly, a sequence number in packets transmitted by the client subsequent to the GET request are incremented by that number before being forwarded by the proxy redirector to the proxy cache.
-
Citations
55 Claims
-
1. A method at a Layer 4 switch for redirecting an HTTP connection request from a client that is directed to an origin server to a proxy cache over a packet-based computer network comprising the steps of:
-
receiving at least one packet containing a request message within the HTTP connection, the at least one packet having an IP header comprising a destination address of an origin server, the request message including a complete address of a specified object at the origin server;
modifying, at the packet level, the request message by combining the destination address of the origin server with the complete address; and
forwarding the at least one packet containing the modified request message to the proxy cache over the packet-based network;
wherein the proxy cache is a standard proxy cache and, in the forwarding step, the at least one packet containing the modified request is redirected to the standard proxy cache transparently from the standpoints of both the client and the proxy cache, the proxy cache being able to determine whether it can satisfy the request for the specified object by using the combined destination address of the origin server and the complete address contained in the modified request message. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
translating the destination address in an IP header of the at least one packet containing the modified request message to the address of the proxy cache.
-
-
4. The method of claim 3 further comprising the step of:
translating a source address in the IP header of the at least one packet containing the modified request message from an address of the client to an address of the Layer 4 switch.
-
5. The method of claim 3 further comprising the step of:
in a TCP header in packets received from the proxy cache commencing with an acknowledgment to the modified request message, modifying a value in an acknowledged byte sequence number field to reflect the increased number of bytes in the modified request message resulting from the step of prefixing the complete address with the destination address of the origin server.
-
6. The method of claim 5 wherein the step of modifying the value in the acknowledged byte sequence number field comprises the step of decreasing the value in the acknowledged byte sequence number field by the number of bytes added by prefixing the destination address of the origin server to the complete address in the request message.
-
7. The method of claim 6 further comprising the step of:
translating in the IP header the destination address to the address of the client and the source address to that of the origin server in the packets received from the proxy cache commencing with the acknowledgment to the request message.
-
8. The method of claim 3 further comprising the step of:
modifying a value in a sent byte sequence number field to reflect the increased number of bytes in the modified request message resulting from prefixing the complete address with the destination address of the origin server in a TCP header in packets received from the client following receipt of the request message.
-
9. The method of claim 8 wherein the step of modifying the value in the sent byte sequence number field comprises the step of increasing the value in the sent byte sequence number field by the number of bytes added by prefixing the destination address of the origin server to the complete address in the request message.
-
10. The method of claim 9 further comprising the step of:
translating the destination address to the address of the proxy cache in the IP header in each packet received from the client following receipt of the request message.
-
11. The method of claim 2 further comprising, prior to the step of receiving the at least one packet containing the request message, the steps of:
-
receiving a packet from the proxy cache indicating a maximum segment size that packets sent to it thereafter should have;
reducing by a predetermined number the maximum segment size of packets to be thereafter sent to the proxy cache; and
sending a packet to the client indicating the reduced maximum segment size that packets thereafter sent by the client to the origin server should have.
-
-
12. The method of claim 11 wherein the predetermined number is equal at least to the maximum number of bytes added by the step of prefixing the destination address to the complete address in the request message.
-
13. The method of claim 12 further comprising the steps of:
-
successively shifting to a next packet in the request message overflow bites caused by the step of prefixing the destination address to the complete address in the request message, if the request message is contained within more than one packet; and
changing a length-of-packet parameter in the IP header in a last packet of a multi-packet request message to reflect the bytes shifted into the last packet from a previous packet.
-
-
14. The method of claim 12 further comprising the step of changing a length-of-packet parameter in the IP header to reflect the change in the length of that packet caused by the step of prefixing the destination address to the complete address in the request message, if the request message is contained within one packet.
-
15. The method of claim 1 wherein the request message is a GET request.
-
16. The method of claim of claim 1 further comprising the step of selecting the proxy cache from a plurality of different proxy caches prior to receiving the at least one packet containing the request message.
-
17. The method of claim 1 wherein the request message is a POST request.
-
18. The method of claim 1 wherein the request message is a HEAD request.
-
19. A proxy redirector for redirecting an HTTP connection request from a client that is directed to an origin server to a proxy cache over a packet-based computer network comprising:
-
means for receiving at least one packet containing the request message, the a least one packet having an IP header comprising a destination address of an origin server, the request message including a complete address of a specified object at the origin server;
means for modified the request message by combining the destination address of the origin server with the complete address at the packet level; and
means for forwarding the at least one packet containing the modified request message to the proxy cache over the packet-based network;
wherein the proxy cache is a standard proxy cache and the means for forwarding redirects the at least one packet containing the modified request to the standard proxy cache transparently from the standpoints of both the client and the proxy cache, the proxy cache being able to determine whether it can satisfy the request for the specified object by using the combined destination address of the origin server and the complete address contained in the modified request message. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37)
means for translating the destination address in an IP header of the at least one packet containing the modified request message to the address of the proxy cache.
-
-
22. The proxy redirector of claim 21 further comprising:
means for translating a source address in the IP header of the at least one packet containing the modified request message from an address of the client to an address of the proxy redirector.
-
23. The proxy redirector of claim 21 further comprising:
means for modifying a value in an acknowledged byte sequence number field in a TCP header in packets received from the proxy cache, commencing with an acknowledgment to the modified request message, to reflect the increased number of bytes in the modified request message resulting from prefixing the complete address with the destination address of the origin server.
-
24. The proxy redirector of claim 23 wherein the means for modifying the value in the acknowledged byte sequence number field decreases the value in the acknowledged byte sequence number field by the number of bytes added by prefixing the destination address of the origin server to the complete address in the request message.
-
25. The proxy redirector of claim 24 further comprising:
means for translating in the IP header the destination address to the address of the client and the source address to that of the origin server in the packets received from the proxy cache commencing with the acknowledgment to the request message.
-
26. The proxy redirector of claim 21 further comprising:
means for modifying a value in a sent byte sequence number field to reflect the increased number of bytes in the modified request message resulting from prefixing the complete address with the destination address of the origin server in a TCP header in packets received from the client following receipt of the request message.
-
27. The proxy redirector of claim 26 wherein the means for modifying the value in the sent byte sequence number field increases the value in the sent byte sequence number field by the number of bytes added by prefixing the destination address of the origin server to the complete address in the request message.
-
28. The proxy redirector of claim 27 further comprising:
means for translating the destination address to the address of the proxy cache in the IP header each packet received from the client following receipt of the request message.
-
29. The proxy redirector of claim 20 further comprising:
-
means for receiving a packet from the proxy cache indicating a maximum segment size that packets sent to it thereafter should have;
means for reducing by a predetermined number the maximum segment size of packets to be thereafter sent to the proxy cache; and
means for sending a packet to the client indicating the reduced maximum segment size that packets thereafter sent by the client to the origin server should have.
-
-
30. The proxy redirector of claim 29 wherein the predetermined number is equal at least to the maximum number of bytes added by the prefix of the destination address to the complete address in the request message.
-
31. The proxy redirector of claim 30 further comprising:
-
means for successively shifting to a next packet in the request message overflow bytes caused by the prefix of the destination address to the complete address in the request message, if the request message is contained within more than one packet; and
means for changing a length-of-packet parameter in the IP header in a last packet of a multi-packet request message to reflect the bytes shifted into the last packet from a previous packet.
-
-
32. The proxy redirector of claim 30 wherein the proxy cache further comprises means for changing a length-of-packet parameter in the IP header to reflect the change in the length of that packet caused by the prefix of the destination address to the complete address in the request message, if the length of the request message is contained within one packet.
-
33. The proxy redirector of claim 19 further comprising means for selecting the proxy cache from a plurality of different proxy caches.
-
34. The proxy redirector of claim 19 wherein the means for modifying the request message is a gateway program dynamically loaded on a programmable network element.
-
35. The proxy redirector of claim 19 wherein the request message is a GET request.
-
36. The proxy redirector of claim 19 wherein the request message is a POST request.
-
37. The proxy redirector of claim 19 wherein the request message is a HEAD request.
-
38. A computer readable medium storing computer program instructions which are executable on a computer system implementing a Layer 4 switch for redirecting an HTTP connection request from a client to a proxy cache over a packet-based computer network, said computer program instructions comprising instructions defining the steps of:
-
receiving at least one packet containing the request message, the at least one packet having an IP header comprising a destination address of an origin server, the request message including a complete address of a specified object at the origin server;
modifying, at the packet level, the request message by combining the destination address of the origin server with the complete address; and
forwarding the at least one packet containing the modified request message to the proxy cache over the packet-based network;
wherein the proxy cache is a standard proxy cache and, in the forwarding step, the at least one packet containing the modified request is redirected to the standard proxy cache transparently from the standpoints of both the client and the proxy cache, the proxy cache being able to determine whether it can satisfy the request for the specified object by using the combined destination address of the origin server and the complete address contained in the modified request message. - View Dependent Claims (39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55)
translating the destination address in an IP header of the at least one packet containing the modified request message to the address of the proxy cache.
-
-
41. The computer readable memory of claim 40 wherein said computer program instructions further comprise instructions defining the step of:
translating a source address in the IP header of the at least one packet containing the modified request message from an address of the client to an address of the Layer 4 switch.
-
42. The computer readable memory of claim 40 wherein said computer program instructions further comprise instructions defining the step of:
in a TCP header in packets received from the proxy cache commencing with an acknowledgment to the modified request message, modifying a value in a acknowledged byte sequence number field to reflect the increased number of bytes in the modified request message resulting from the step of prefixing the complete address with the destination address of the origin server.
-
43. The computer readable memory of claim 42 wherein the step of modifying the value in the acknowledged byte sequence number field comprises the step of decreasing the value in the acknowledged byte sequence number field by the number of bytes added by prefixing the destination address of the origin server to the complete address in the request message.
-
44. The computer readable memory of claim 43 wherein said computer program instructions further comprise instructions defining the step of:
translating in the IP header the destination address to the address of the client and the source address to that of the origin server in the packets received from the proxy cache commencing with the acknowledgment to the request message.
-
45. The computer readable memory of claim 40 wherein said computer program instructions further comprise instructions defining the step of:
modifying a value in a sent byte sequence number field to reflect the increased number of bytes in the modified request message resulting from prefixing the complete address with the destination address of the origin server in a TCP header in packets received from the client following receipt of the request message.
-
46. The computer readable memory of claim 45 wherein the step of modifying the value in the sent byte sequence number field comprises the step of increasing the value in the sent byte sequence number field by the number of bytes added by prefixing the destination address of the origin server to the complete address in the fequest message.
-
47. The computer readable memory of claim 46 wherein said computer program instructions further comprise instructions defining the step of:
translating the destination address to the address of the proxy cache in the IP header each packet received from the client following receipt of the request message.
-
48. The computer readable memory of claim 39 wherein said computer program instructions further comprises instructions defining, prior to the step of receiving the at least one packet containing the request message, the steps of:
-
receiving a packet from the proxy cache indicating a maximum segment size that packets sent to it thereafter should have;
reducing by a predetermined number the maximum segment size of packets to be thereafter sent to the proxy cache; and
sending a packet to the client indicating the reduced maximum segment size that packets thereafter sent by the client to the origin server should have.
-
-
49. The computer readable memory of claim 48 wherein the predetermined number is equal at least to the maximum number of bytes added by the step of prefixing the destination address to the complete address in the request message.
-
50. The computer readable memory of claim 49 wherein said computer program instructions further comprise instructions defining the steps of:
-
successively shifting to a next packet in the request message overflow bytes caused by the step of prefixing the destination address to the complete address in the request message, if the request message is contained within more than one packet; and
changing a length-of-packet parameter in the IP header in a last packet of a multi-packet request message to reflect the bytes shifted into the last packet from a previous packet.
-
-
51. The computer readable memory of claim 49 wherein said computer program instructions further comprise instructions defining the step of changing a length-of-packet parameter in the IP header to reflect the change in the length of that packet caused by the step of prefixing the destination address to the complete address in the request message, if the request message is contained within one packet.
-
52. The computer readable memory of claim of claim 38 wherein said computer program instructions further comprise instructions defining the step of selecting the proxy cache from a plurality of different proxy caches prior to receiving the at least one packet containing the request message.
-
53. The computer readable memory of claim 38 wherein the request message is a GET request.
-
54. The computer readable memory of claim 38 wherein the request message is a POST request.
-
55. The computer readable memory of claim 38 wherein the request message is a HEAD request.
Specification