TRANSACTION ACCELERATOR FOR CLIENT-SERVER COMMUNICATIONS SYSTEMS
First Claim
1. A system for accelerating protocol interactions over transport connections between a client and a server communicating over a network path, the system comprising:
- a first proxy in proximity to the client;
a second proxy in proximity to the server, wherein the first proxy and the second proxy include logic for determining whether both the first proxy and the second proxy are in the network path from the client to the server; and
a connection interception mechanism that, when the first and second proxies are determined to be in the network path, is configured to (1) transparently terminate, at the first proxy, a client-to-server transport connection, thereby forming a first intercepted connection between the first proxy and the client, (2) transparently terminate, at the second proxy, a server-to-client transport connection, thereby forming a second intercepted connection between the second proxy and the server, and (3) establish a third connection between the first proxy and second proxy,wherein as part of a bandwidth optimization mechanism, the first proxy is configured to;
store data patterns in a first data store, wherein each stored data pattern is associated with a reference;
receive one or more messages from the client over the first intercepted connection;
modify said client messages at least in part by replacing one or more data patterns of the client messages with associated references; and
transmit said modified client messages to the second proxy over the third connection, andthe second proxy is configured to;
store data patterns in a second data store, wherein each stored data pattern is associated with a reference;
receive one or more messages from the server over the second intercepted connection;
modify said server messages at least in part by replacing one or more data patterns of the server messages with associated references; and
transmit said modified server messages to the first proxy over the third connection.
19 Assignments
0 Petitions
Accused Products
Abstract
Self-discovering transaction accelerators improve communications between a client and a server. A client directs a message to a server. A client-side transaction accelerator intercepts the message, terminates the connection with the client, and accelerates the request by replacing segments of data with references. The accelerated request is forwarded to a server-side transaction accelerator through a new connection. The server-side transaction accelerator reconstructs the message by replacing the reference with segment data in a persistent segment store accessible to the server-side transaction accelerator. The reconstructed request is then provided to the server. Accelerations may occur in any direction of communication. Persistent segment stores can be pre-populated with segment data from other transaction accelerators and anticipated transactions. The persistent segment store can store segments that are data segmented based on content of the data and can be independent of transaction protocol, application, and device.
648 Citations
43 Claims
-
1. A system for accelerating protocol interactions over transport connections between a client and a server communicating over a network path, the system comprising:
-
a first proxy in proximity to the client; a second proxy in proximity to the server, wherein the first proxy and the second proxy include logic for determining whether both the first proxy and the second proxy are in the network path from the client to the server; and a connection interception mechanism that, when the first and second proxies are determined to be in the network path, is configured to (1) transparently terminate, at the first proxy, a client-to-server transport connection, thereby forming a first intercepted connection between the first proxy and the client, (2) transparently terminate, at the second proxy, a server-to-client transport connection, thereby forming a second intercepted connection between the second proxy and the server, and (3) establish a third connection between the first proxy and second proxy, wherein as part of a bandwidth optimization mechanism, the first proxy is configured to; store data patterns in a first data store, wherein each stored data pattern is associated with a reference; receive one or more messages from the client over the first intercepted connection; modify said client messages at least in part by replacing one or more data patterns of the client messages with associated references; and transmit said modified client messages to the second proxy over the third connection, and the second proxy is configured to; store data patterns in a second data store, wherein each stored data pattern is associated with a reference; receive one or more messages from the server over the second intercepted connection; modify said server messages at least in part by replacing one or more data patterns of the server messages with associated references; and transmit said modified server messages to the first proxy over the third connection. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A method for accelerating protocol interactions over transport connections between a client and a server communicating over a network path, wherein a first proxy is in proximity to the client and a second proxy is in proximity to the server, the method comprising:
-
determining, with the first proxy and the second proxy, whether both the first proxy and the second proxy are in the network path from the client to the server; when the first and second proxies are determined to be in the network path, as part of a connection interception mechanism; (1) transparently terminating, at the first proxy, a client-to-server transport connection, thereby forming a first intercepted connection between the first proxy and the client, (2) transparently terminating, at the second proxy, a server-to-client transport connection, thereby forming a second intercepted connection between the second proxy and the server, and (3) establishing a third connection between the first proxy and second proxy; storing data patterns in a first data store at the first proxy and storing data patterns in a second data store at the second proxy, wherein each stored data pattern is associated with a reference; and transforming data transmissions sent from the client to be received by the server by; receiving, at the first proxy from the client, one or more client messages over the first intercepted connection, modifying said client messages at least in part by replacing one or more data patterns of the client messages with associated references; transmitting, from the first proxy to the second proxy, said modified client messages over the third connection; reconstructing, at the second proxy, the client messages by replacing references with associated data patterns obtained from the second data store, or if no such associated data pattern exists, obtained by sending a resolution request to the first proxy; and transmitting, from the second proxy to the server, the reconstructed client messages over the second intercepted connection. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
-
29. A transaction accelerator for providing protocol acceleration to one or more clients intercommunicating with one or more servers over one or more transport connections, the one or more clients and one or more servers being coupled to a network, the transaction accelerator comprising:
-
an interception module that intercepts packets of one or more transport messages sent from a first host and destined for a second host, thereby creating an intercepted connection between the first host and the transaction accelerator; a transport module that receives the intercepted packets and that acts as a transparent proxy end point for a transport connection between the first host and the second host; a segment store comprising segment entries, wherein a segment entry comprises a segment reference and segment data, wherein a segment reference is globally unique, and wherein the segment store is configured to maintain segment entries independent of a particular application, protocol, or instance of a transport connection; and an acceleration module, coupled to the transport module and the segment store, configured to; receive a payload via the transport module; replace one or more sequences of data in the payload with one or more segment references corresponding to one or more segment data in the segment store; and transmit the modified payload to a second transaction accelerator coupled to the second host. - View Dependent Claims (30, 31)
-
-
32. A transaction accelerator system for providing protocol acceleration to one or more client processes that issue requests to one or more servers over one or more transport connections, the one or more client processes running on a general purpose computer coupled to a network over which the transport connections exist, wherein the requests and corresponding reponses constitute messages delivered over the transport connection, the transaction accelerator system comprising:
-
a communication path from a client process, wherein the communication path diverts packets of one or more transport messages belonging to an accelerated network connection; a transport module that receives said diverted packets and acts as a transparent proxy end point for the transport connection between the client process and a server; a segment store comprising segment entries, wherein a segment entry comprises a segment reference and segment data that is segmented from a payload based, at least in part, on content of the payload, wherein segment references are globally unique, and wherein the segment store is configured to maintain segment entries independent of a particular application, protocol, or instance of a transport connection; and an acceleration module, coupled to the segment store, configured to; receive a payload from the client process via the transport module; partition the payload'"'"'s data into one or more segments based, at least in part, on content of the payload; identify one or more segments in the segment store that have segment data matching the data of the partition segments; replace matching segment data in the payload with corresponding segment references obtained from the segment store to form an encoded payload; and transmit the encoded payload to a second transaction accelerator coupled to the second host.
-
-
33. A method for providing protocol acceleration to one or more client processes that issue requests to one or more servers over one or more transport connections, the one or more client processes running on a general purpose computer coupled to a network over which the transport connections exist, wherein the requests and corresponding reponses constitute messages delivered over the transport connection, the method comprising:
-
providing a communication path from a client process, wherein the communication path diverts packets of one or more transport messages belonging to an accelerated network connection; receiving the said diverted packets at a transport module that acts as a transparent proxy end point for the transport connection between the client process and a server; storing segment entries in a segment store, wherein a segment entry comprises a segment reference and segment data that is segmented from a payload based, at least in part, on content of the payload, wherein segment references are globally unique, and wherein the segment store is configured to maintain segment entries independent of a particular application, protocol, or instance of a transport connection; receiving a payload at an acceleration module from the client process via the transport module; partitioning the payload'"'"'s data into one or more segments based, at least in part, on content of the payload; identifying one or more segments in the segment store that have segment data matching the data of the partition segments; replacing matching segment data in the payload with corresponding segment references obtained from the segment store to form an encoded payload; and transmitting the encoded payload to a second transaction accelerator coupled to the second host.
-
-
34. A system for optimizing communication between a client and a server. across a wide area network (WAN), the system comprising:
-
a proxy pair configured to intercept communications between the client and the server and relay the client-server communications across the WAN between the proxy pair; wherein as part of a bandwidth reduction mechanism, the proxy pair is configured to substitute data patterns in the client-server communications with references for transmission across the WAN; and wherein as part of an application protocol optimization mechanism, the proxy pair is configured to modify an application protocol of the client-server communications. - View Dependent Claims (35, 36, 37, 38)
-
-
39. A method for optimizing communication between a client and a server across a wide area network (WAN), the method comprising:
-
intercepting communications between the client and the server; relaying the client-server communications across the WAN between a proxy pair; substituting, by the proxy pair as part of a bandwidth reduction mechanism, data patterns in the client-server communications with references for transmission across the WAN; and modifying, by the proxy pair as part of an application protocol optimization mechanism, an application protocol of the client-server communications. - View Dependent Claims (40, 41, 42, 43)
-
Specification