IP Library Granted Patent US 8,069,225
Granted Patent B2
US 8,069,225 · App. 10/640,405 · Granted Nov 29, 2011

Transparent client-server transaction accelerator

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,069,225
App. No.
10/640,405
Granted
Nov 29, 2011
Kind
B2
Abstract

In a network that conveys requests from clients to servers and responses from servers to clients, a network transaction accelerator for accelerating transactions involving data transfer between at least one client and at least one server over a network comprising a client-side engine, a server-side engine and a transaction predictor configured to predict, based on past transactions, which transactions are likely to occur in the future between the client and server. The transaction predictor might be in the server-side engine, the client-side engine, or both. The client-side engine receives indications of requests from the client, a transaction buffer for storing results of predicted transactions received from the server or the server-side engine ahead of receipt of a corresponding request, and a collator for collating the requests from the client with the stored results or received results, wherein a request and a response that are matched by the collator are identified and the matched response is provided to the client in response to the matched request. The server-side engine receives indications of transactions including requests and responses and conveys requests to the server in response to actual transactions or predicted transactions.

Claims (78)

1. A network transaction accelerator for accelerating transactions involving data transfer between at least one client and at least one server over a network, wherein a transaction involves a request and at least one response in response to the request, the network transaction accelerator comprising:

a client-side engine coupled to a client;

a server-side engine, coupled to the server;

a transaction predictor that is configured to synthesize, based on past transactions, one or more predicted transactions, wherein transactions comprise sets of steps that result in data moving from one place to another;

a transaction mapper that replaces transaction identifiers of predicted transactions with corresponding transaction identifiers of actual transactions;

wherein the client-side engine comprises:

a) an input for receiving indications of requests from the client;

b) a transaction buffer for storing results of the predicted transactions received from the server or the server-side engine ahead of receipt of a corresponding request; and

c) a collator for collating the requests from the client with the stored results or received results, wherein a request and a response that are matched by the collator are identified and the matched response is provided to the client in response to the matched request; and

wherein the server-side engine comprises:

a) an input for receiving indications of transactions including received requests and received responses; and

b) an output for conveying requests to the server in response to actual transactions or predicted transactions.

2. The network transaction accelerator of claim 1 , wherein the transaction predictor is within the server-side engine.

3. The network transaction accelerator of claim 1 , wherein the transaction predictor is within the client-side engine, the client-side engine further comprising logic to transmit one or more messages to the server-side engine indicating which transactions are being predicted and the server-side engine further comprising logic to receive the one or more messages and generate requests corresponding to the predicted transactions and convey those requests to the server in advance of receipt of the requests corresponding to requests of the predicted transactions.

4. The network transaction accelerator of claim 1 , further comprising as part of the client-side engine a first persistent segment storage and a first segment encoder and as part of the server-side engine a second persistent segment storage and a second segment encoder.

5. The network transaction accelerator of claim 4 , further comprising means for conveying segment mappings between the first persistent segment storage and the second persistent segment storage.

6. The network transaction accelerator of claim 1 , further comprising:

a transaction mapping table that maps transaction identifiers of actual requests and transaction identifiers of synthetic requests to the mapped transaction identifiers, such that responses to requests are uniquely identifiable by their mapped transaction identifiers even when transaction identifiers of the synthetic requests might overlap with transaction identifiers of actual requests.

7. The network transaction accelerator of claim 1 , wherein the transaction predictor comprises:

a prediction database comprising records of past transactions and relationships among past transactions; and

a predictor module that synthesizes, based at least partially on the contents of the prediction database, the predicted transactions.

8. The network transaction accelerator of claim 7 , wherein the predictor module operates using dynamic prediction logic including a Markov model.

9. The network transaction accelerator of claim 7 , wherein the predictor module operates using heuristics.

10. The network transaction accelerator of claim 7 , wherein the predictor module takes into account impact on the network of results of predicted transactions in determining a measure of aggressiveness for predictions.

11. The network transaction accelerator of claim 7 , wherein the predictor module operates using static prediction logic including protocol-specific rules.

12. The network transaction accelerator of claim 7 , wherein the predictor module operates using dynamic prediction logic including a Markov model and wherein the prediction database includes storage for the Markov model as a set of states and a set of edges, wherein a state of the set of states represents a single request or a sequence of requests and an edge of the set of edges represents a predictive relationship between states of the set of states.

13. The network transaction accelerator of claim 12 , wherein the transaction predictor comprises logic to use sentinel transactions to provide context-dependent signaling mechanisms, wherein a sentinel transaction represents a state in the Markov model and prediction depends on the sentinel state.

14. The network transaction accelerator of claim 1 , wherein the transaction predictor is configured to predict future transactions based on both programmatic knowledge of underlying protocols and past transactions.

15. The network transaction accelerator of claim 14 , wherein the underlying protocols include one or more protocols from a group consisting of: TCP, CIFS, NFS, HTTP, FTP, WebDAV and Remote Backup.

16. In a network wherein a client sends messages over a transport connection to a server and receives messages over the transport connection from the server, wherein a network transaction involves a request message and at least one response message in response to the request, a method of accelerating network transactions comprising:

a) terminating the transport connection at a client-side proxy and at a server-side proxy, the client-side proxy coupled to the client and the server-side proxy coupled to the server;

b) receiving a request message at the server-side proxy from the client-side proxy and forwarding the request message to the server;

c) transmitting a predicted request to the server from the server-side proxy, wherein the predicted request is based at least in part on past transactions;

d) receiving a corresponding response to the predicted request at the server-side proxy from the server;

e) transmitting the corresponding response, from the server-side proxy to the client-side proxy;

f) receiving a client request at the client-side proxy from the client that can be satisfied by the corresponding response; and

g) transmitting the corresponding response to the client from the client-side proxy in response to the client request, wherein said transmitting involves replacing a transaction identifier of the corresponding response with a transaction identifier of the client request.

17. The method of claim 16 , further comprising modifying the corresponding response into a modified response as needed to comply with client expectations as to response form.

18. The method of claim 16 , further comprising segmenting message data and replacing segment data with segment references.

19. The method of claim 16 , further comprising:

h) determining an amount of network usage reduction that would be obtained for different numbers of predicted requests; and

i) transmitting a number of predicted requests from the server-side proxy wherein the number is based on an optimization on the amount of network usage reduction, whereby the number of predicted requests is based on the amount of network usage reduction to be had by those requests.

20. The method of claim 16 , further comprising:

storing, after at least step e), a representation of the corresponding response in memory locally accessible to the client-side proxy; and

deleting the stored representation from the memory after step g).

21. In a network wherein a client sends messages over a transport connection to a server and receives messages over the transport connection from the server, wherein a network transaction involves a request message and at least one response message in response to the request, a method of accelerating network transactions comprising:

a) terminating the transport connection at a client-side proxy and at a server-side proxy, the client-side proxy coupled to the client and the server-side proxy coupled to the server;

b) receiving a plurality of messages at the server-side proxy;

c) transmitting a predicted request to the server from the server-side proxy, for each of some or all of the plurality of messages, wherein the predicted request is based at least in part on a pattern among the contents of the corresponding messages;

d) receiving a corresponding response to the predicted request at the server-side proxy from the server for each of some or all of the predicted requests;

e) transmitting the corresponding responses, from the server-side proxy to the client-side proxy;

f) receiving client requests at the client-side proxy from the client some of which can be satisfied by one or more of the corresponding responses; and

g) transmitting the satisfying corresponding responses to the client from the client-side proxy in response to their corresponding client requests, wherein said transmitting involves replacing transaction identifiers of the satisfying corresponding responses with transaction identifiers of their corresponding client requests.

22. The method of claim 21 , further comprising modifying the corresponding responses into modified responses as needed to comply with client expectations as to response form.

23. The method of claim 21 , further comprising segmenting message data and replacing segment data with segment references.

24. The method of claim 21 , further comprising:

h) determining an amount of network usage reduction that would be obtained for different numbers of predicted requests; and

i) transmitting a number of predicted requests from the server-side proxy wherein the number is based on an optimization on the amount of network usage reduction, whereby the number of predicted requests is based on the amount of network usage reduction to be had by those requests.

25. The method of claim 21 , further comprising, at least prior to step b), receiving acceleratable requests at the server directly or indirectly from the client where the acceleratable requests are such that the messages in step b) are sent from the server to the server-side proxy at least as part of a response to the acceleratable requests.

26. The method of claim 21 , further comprising:

storing, after at least step e), representations of the corresponding responses in memory locally accessible to the client-side proxy; and

deleting stored representations from the memory as responses that satisfy the client requests are transmitted to the client from the client-side proxy.

27. In a network wherein a client sends messages over a transport connection to a server and receives messages over the transport connection from the server, wherein a network transaction involves a request message and at least one response message in response to the request, a method of accelerating network transactions comprising:

a) terminating the transport connection at a proxy, the proxy coupling the client to the server for at least some of the traffic between the client and server;

b) receiving a request message at the proxy and forwarding the request message toward the server;

c) transmitting a predicted request to the server from the proxy, wherein the predicted request is based at least on past transactions;

d) receiving a corresponding response to the predicted request at the proxy from the server;

e) buffering, at the proxy, the corresponding response in anticipation of a client request corresponding to the predicted request;

f) receiving a client request at the proxy from the client that can be satisfied by the corresponding response; and

g) transmitting the corresponding response to the client from the proxy in response to the client request, wherein said transmitting involves replacing a transaction identifier of the corresponding response with a transaction identifier of the client request.

28. The method of claim 27 , further comprising modifying the corresponding response into a modified response as needed to comply with client expectations as to response form.

29. The method of claim 27 , further comprising segmenting message data and replacing segment data with segment references.

30. The method of claim 27 , further comprising:

h) determining an amount of network usage reduction that would be obtained for different numbers of predicted requests; and

i) transmitting a number of predicted requests from the proxy wherein the number is based on an optimization on the amount of network usage reduction, whereby the number of predicted requests is based on the amount of network usage reduction to be had by those requests.

31. The method of claim 27 , further comprising, at least prior to step b), receiving an acceleratable request at the server directly or indirectly from the client where the acceleratable request is such that the message sent from the server to the proxy in step b) is at least part of a response to the acceleratable request.

32. The method of claim 27 , wherein buffering is done by storing in a memory, the method further comprising deleting the stored representation from the memory after step g).

33. The method of claim 27 , further comprising data segmentation performed by the proxy.

Assignments (19)
RELEASE OF SECURITY INTEREST Recorded Aug 11, 2023
From: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC; RIVERBED HOLDINGS, INC.
Reel/Frame 064673/0739 →
CHANGE OF NAME Recorded Feb 18, 2022
From: RIVERBED TECHNOLOGY, INC.
To: RIVERBED TECHNOLOGY LLC
Reel/Frame 059232/0551 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS U.S. COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0169 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0108 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0046 →
SECURITY INTEREST Recorded Dec 10, 2021
From: RIVERBED TECHNOLOGY LLC (FORMERLY RIVERBED TECHNOLOGY, INC.); ATERNITY LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS U.S. COLLATERAL AGENT
Reel/Frame 058486/0216 →
PATENT SECURITY AGREEMENT Recorded Oct 27, 2021
From: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 057943/0386 →
PATENT SECURITY AGREEMENT SUPPLEMENT - FIRST LIEN Recorded Oct 14, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 057810/0502 →
PATENT SECURITY AGREEMENT SUPPLEMENT - SECOND LIEN Recorded Oct 14, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
Reel/Frame 057810/0559 →
RELEASE OF SECURITY INTEREST IN PATENTS RECORED AT REEL 056397, FRAME 0750 Recorded Oct 13, 2021
From: MACQUARIE CAPITAL FUNDING LLC
To: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 057983/0356 →
SECURITY INTEREST Recorded May 26, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: MACQUARIE CAPITAL FUNDING LLC
Reel/Frame 056397/0750 →
PATENT SECURITY AGREEMENT Recorded Mar 5, 2021
From: RIVERBED TECHNOLOGY, INC.
To: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
Reel/Frame 055514/0249 →
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYING PARTY NAME PREVIOUSLY RECORDED ON REEL 035521 FRAME 0069. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST IN PATENTS. Recorded Jun 2, 2015
From: JPMORGAN CHASE BANK, N.A.
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 035807/0680 →
SECURITY INTEREST Recorded May 1, 2015
From: RIVERBED TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 035561/0363 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Apr 28, 2015
From: BARCLAYS BANK PLC
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 035521/0069 →
PATENT SECURITY AGREEMENT Recorded Dec 27, 2013
From: RIVERBED TECHNOLOGY, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 032421/0162 →
RELEASE OF PATENT SECURITY INTEREST Recorded Dec 26, 2013
From: MORGAN STANLEY & CO. LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 032113/0425 →
SECURITY AGREEMENT Recorded Dec 20, 2012
From: RIVERBED TECHNOLOGY, INC.; OPNET TECHNOLOGIES, INC.
To: MORGAN STANLEY & CO. LLC
Reel/Frame 029646/0060 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 21, 2004
From: MCCANNE, STEVEN; DEMMER, MICHAEL J.; JAIN, ARVIND; WU, DAVID TZE-SI
To: RIVERBED TECHNOLOGY
Reel/Frame 014902/0158 →