IP Library Granted Patent US 9,009,252
Granted Patent B2
US 9,009,252 · App. 12/894,681 · Granted Apr 14, 2015

Rules-based transactions prefetching using connection end-point proxies

Inventors: David Tze-Si Wu (Fremont, CA); Vivasvat Keswani (San Fransisco, CA); Case Larsen (Union City, CA)
Assignee: Riverbed Technology, Inc.
H04L67/1095H04L67/10
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 9,009,252
App. No.
12/894,681
Granted
Apr 14, 2015
Kind
B2
Abstract

Network proxies reduce server latency in response to series of requests from client applications. Network proxies intercept messages clients and a server. Intercepted client requests are compared with rules. When client requests match a rule, additional request messages are forwarded to the server on behalf of a client application. In response to the additional request messages, the server provides corresponding response messages. A network proxy intercepts and caches the response messages. Subsequent client requests are intercepted by the network application proxy and compared with the cached messages. If a cached response message corresponds with a client request message, the response message is returned to the client application immediately instead of re-requesting the same information from the server. A server-side network proxy can compare client requests with the rules and send additional request messages. The corresponding response messages can be forwarded to a client-side network proxy for caching.

Claims (75)

1. A method for accelerating a client-server transaction, the method comprising:

receiving, by a proxy, a message from a client application directed to a server application;

determining, by the proxy, if the message is consistent with a previous message sent to the server application, wherein the message is consistent with the previous message if the message can be forwarded to the server application without introducing an error and wherein the previous message was generated by the proxy;

sending the message to the server in response to a determination that the message is consistent with the previous message sent to the server application;

comparing the message with the set of rules;

generating at least one additional message in response to the message matching at least one rule, wherein the additional message is predicted by the proxy based on the set of rules;

forwarding the additional message to the server application; and

generating a preacknowledgment message and forwarding the preacknowledgment message to the client application in response to the determination that the message does not correspond with the data in the results cache.

2. The method of claim 1 , wherein the previous message was generated by a server-side proxy in response to at least one additional previous message matching the set of rules.

3. The method of claim 1 , further comprising:

determining if the message is inconsistent with at least a portion of a results cache storing a results message corresponding with the previous message sent to the server application in response to a determination that the message is inconsistent with previous messages sent to the server application; and

invalidating the portion of the results cache in response to a determination that the message is inconsistent with the portion of a results cache.

4. The method of claim 1 , further comprising:

receiving a second message from the server application;

determining if the second message is a response to the additional message; and

wrapping the second message to indicate that the second message is to be stored in a results cache included in a network proxy associated with the client application and forwarding the wrapped second message to the network proxy associated with the client application in response to a determination that the second message is a response to the additional message.

5. The method of claim 4 , further comprising:

determining if the second message is a response to the message from the client application; and

forwarding the second message to the client application in response to a determination that the second message is a response to the message from the client application.

6. The method of claim 4 , further comprising:

determining if the second message invalidates at least a portion of the results cache included in the network proxy associated with the client application; and

sending a cache invalidation message to the network proxy specifying that the portion of the results cache should be invalidated.

7. The method of claim 1 wherein the error can be introduced if the previous message was incorrectly predicted by the proxy, and wherein the error can include an unrecoverable transaction error due to an out-of-order or an unexpected request.

8. A method for accelerating a client-server transaction, the method comprising:

receiving a message from a client application directed to a server application;

determining if the message corresponds with data in a results cache;

sending the message to the server application in response to a determination that the message does not correspond with the data in the results cache;

generating a preacknowledgment message and forwarding the preacknowledgment message to the client application in response to the determination that the message does not correspond with the data in the results cache;

sending a response message to the client application in response to a determination that the message does correspond with at least a portion of the data in the results cache, wherein the response message includes at least a portion of the data from the results cache;

in response to sending the response message to the client application, removing data from the results cache that was included in the response message;

determining if the message is inconsistent with at least a portion of a results cache storing a results message corresponding with the previous message sent to the server application in response to a determination that the message is inconsistent with previous messages sent to the server application; and

invalidating the portion of the results cache in response to a determination that the message is inconsistent with the portion of a results cache.

9. The method of claim 8 , further comprising:

receiving an acknowledgment message from the server application, wherein the acknowledgment message is a response to the message from the client application;

analyzing a status code of the acknowledgment message;

discarding the acknowledgment message in response to the status code indicating a success condition;

receiving a second message from the client application directed to the server application; and

forwarding a response message indicating a failure condition to the client application following the receipt of the second message from the client application in response to the status code of the acknowledgment message indicating a failure condition.

10. The method of claim 8 , further comprising:

receiving a second message from a server-side proxy;

determining if the second message includes additional data prefetched by the server-side proxy or a response to the message from the client application;

storing the additional data in the results cache in response to a determination that the additional data was prefetched by the server-side proxy; and

sending the second message to the client application in response to a determination that the additional data is a response to the message from the client application.

11. The method of claim 10 , further comprising:

determining a capacity for the results cache in response to receiving the second message;

sending a throttling message to the server-side proxy in response to a determination that the results cache is at full capacity.

12. The method of claim 11 , further comprising:

removing at least a portion of the data from the results cache in response to sending the response message including at least a portion of the data from the results cache to the client application; and

sending an unthrottling message to the server-side proxy in response to removing at least a portion of the data from the results cache.

13. The method of claim 8 , further comprising:

determining if the second message is a cache invalidation message; and

invalidating at least a portion of the results cache in response to a determination that the second message is a cache invalidation message.

14. The method of claim 8 wherein the data in the results cache includes data corresponding to one or more prefetch messages created based on previous messages received from the client application.

15. A network proxy adapted to accelerate a client-server transaction, the network proxy comprising:

a first network interface adapted to exchange messages with a client application;

a second network interface adapted to exchange messages with a server application;

a results cache adapted to store data including response messages prefetched on behalf of the client application; and

logic adapted to:

determine if a message received from a client application and directed to a server application corresponds with data in a results cache;

send the message to the server application in response to a determination that the message does not correspond with the data in the results cache;

generate a preacknowledgment message and forward the preacknowledgment message to the client application in response to the determination that the message does not correspond with the data in the results cache;

send the response message stored in the results cache to the client application in response to a determination that the message does correspond with at least a portion of the data in the results cache;

in response to sending the response message to the client application, remove data from the results cache that was included in the response message;

determine if the message is inconsistent with at least a portion of a results cache storing a results message corresponding with the previous message sent to the server application in response to a determination that the message is inconsistent with previous messages sent to the server application; and

invalidate the portion of the results cache in response to a determination that the message is inconsistent with the portion of a results cache.

16. The network proxy of claim 15 , further comprising logic adapted to:

receive a second message from a server-side proxy;

determine if the second message includes additional data prefetched by the server-side proxy or a response to a previous message from the client application;

store the additional data in the results cache in response to a determination that the additional data was prefetched by the server-side proxy; and

send the second message to the client application in response to a determination that the additional data is a response to the previous message from the client application.

17. The network proxy of claim 15 , further comprising logic adapted to:

receive an acknowledgment message from the server application, wherein the acknowledgment message is a response to the message received from the client application;

analyze a status code of the acknowledgment message;

discard the acknowledgment message in response to the status code indicating a success condition; and

forward a response message indicating a failure condition to the client application following the receipt of a subsequent message from the client application in response to the status code of the acknowledgment message indicating a failure condition.

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 Oct 6, 2010
From: WU, DAVID TZE-SI; KESWANI, VIVASVAT; LARSEN, CASE
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 025101/0992 →
Continuity (3)
Division 11273861 · Nov 14, 2005
Provisional Application 60662452 · Mar 15, 2005
Related Publication 20110238738A1 · Sep 29, 2011