IPC분류정보
국가/구분 |
United States(US) Patent
등록
|
국제특허분류(IPC7판) |
|
출원번호 |
US-0441681
(2012-04-06)
|
등록번호 |
US-8402085
(2013-03-19)
|
발명자
/ 주소 |
- McCanne, Steven
- Demmer, Michael J.
- Jain, Arvind
- Wu, David Tze-Si
- Landrum, Alfred
|
출원인 / 주소 |
- Riverbed Technology, Inc.
|
대리인 / 주소 |
Kilpatrick Townsend & Stockton LLP
|
인용정보 |
피인용 횟수 :
10 인용 특허 :
79 |
초록
▼
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 w
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.
대표청구항
▼
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 inclu
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; anda 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; andtransmit 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; andtransmit said modified server messages to the first proxy over the third connection. 2. The system of claim 1, further comprising: a client-side reference resolver for resolving references as needed by the first proxy when encountering a reference to a data pattern that is not present in the first data store; anda server-side reference resolver for resolving references as needed by the second proxy when encountering a reference to a data pattern that is not present in the second data store. 3. The system of claim 1, wherein as part of the bandwidth optimization mechanism: the first proxy is further configured to: receive one or more modified server messages from the second proxy over the third connection;reconstruct the server messages by replacing references with associated data patterns obtained from the first data store, or if no such associated data pattern exists in the first data store, obtained by sending a resolution request to the second proxy; andtransmits the reconstructed server payload to the client over the first intercepted connection; andthe second proxy is further configured to: receive one or more modified client messages from the first proxy over the third connection;reconstruct 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; andtransmit the reconstructed client messages to the server over the second intercepted connection. 4. The system of claim 1 wherein as part of an application protocol optimization mechanism: the second proxy is configured to: observe one or more application protocol messages transmitted by the client to the server for determining a pattern of client activity;based on the observed pattern, synthesize and issue one or more requests to the server over the second intercepted connection;receive responses to said requests; andtransmit said responses to the first proxy over the third connection as predicted responses; andthe first proxy is configured to: receive one or more client requests over the first intercepted connection;form a response message using one or more of said predicted responses or by a combination of said reponses; andrespond to the client request with said response over the first intercepted connection. 5. The system of claim 4, wherein the application protocol is a file access protocol, the pattern of client activity is an “open” operation for a file, and the synthesized requests are “read requests” constituting a file read ahead. 6. The system of claim 4 wherein the application protocol is a file access protocol, the pattern of client activity is a “read” operation at one location in a file, and the synthesized requests are “read requests” for one or more other locations in the file constituting a file read ahead. 7. The system of claim 6 wherein the file access protocol is CIFS. 8. The system of claim 6 wherein the file access protocol is NFS. 9. The system of claim 4, wherein the second proxy comprises: a prediction database comprising records of past transactions and relationships among past transactions; anda predictor module that determines, from a received transaction and contents of the prediction database, which transactions are likely to occur in the future. 10. The system of claim 4, wherein the first proxy comprises: a) an input for receiving indications of requests from the client;b) a transaction buffer for storing results of predicted responses received from the server or the second proxy ahead of receipt of a corresponding request; andc) 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. 11. The system of claim 1 wherein as part of an application protocol optimization mechanism, the first proxy is configured to: observe one or more application protocol messages transmitted by the client to the server for determining a pattern of client activity;based on the observed pattern, synthesize and issue one or more requests to the server over the third intercepted connection;receive predicted responses to said requests; andreceive one or more client requests over the first intercepted connection;form a response message using one or more of said predicted responses or by a combination of said responses; andrespond to the client requests with said response message over the first intercepted connection. 12. The system of claim 11, wherein the second proxy comprises: a prediction database comprising records of past transactions and relationships among past transactions; anda predictor module that determines, from a received transaction and contents of the prediction database, which transactions are likely to occur in the future. 13. The system of claim 1 wherein the logic for determining whether both the first proxy and the second proxy are in the network path from the client to the server is configured to: for a first packet received at the first proxy from the client and directed at the server, modify the first packet to signal presence of the first proxy in the network path, thus forming a modified first packet;forward the modified first packet toward the server;monitor, at the first proxy, packets for the client from the server to detect packets containing return signals, wherein a return signal is a signal from the second proxy that detects the signal in the modified first packet and is an indication that the second proxy detected the signal as being a proxy probing signal;record a successful probe if a responsive return signal is received corresponding to a signal sent from the first proxy;update a proxy mapping table with results of a successful probe; anduse the proxy mapping table in subsequent transactions. 14. The system of claim 1 wherein the logic for determining whether both the first proxy and the second proxy are in the network path from the client to the server is configured to: when receiving a first packet of a first transaction from the client at a discovering proxy, determine whether a proxy signal is present in the first packet;if the proxy signal is not present in the first packet, store an indication that the discovering proxy is the first proxy;if the proxy signal is not present in the first packet, forward a modified first packet toward the server, wherein the modified first packet contains a proxy signal signaling that the discovering proxy is the first proxy;if the proxy signal is present in the first packet when received by the discovering proxy, evaluate the proxy symbol to determine the first proxy from the first packet, thereby discovering at least one proxy pair;update a proxy mapping table with the proxy pair; anduse the proxy mapping table in subsequent transactions. 15. The system of claim 14, wherein the logic for determining whether both the first proxy and the second proxy are in the network path from the client to the server is further configured to: when receiving at a proxy a first response packet of the first transaction from a server in response to the modified first packet, determine whether a return proxy signal is present in the first response packet;if the return proxy signal is not present in the first response packet, store an indication that the proxy is the second proxy;if the return proxy signal is not present in the first response packet, forward a modified first response packet toward the client, wherein the modified first response packet contains a proxy signal signaling that the proxy is the second proxy; andif the return proxy signal is present in the first response packet when received by the discovering proxy, evaluate the proxy symbol to determine the second proxy for the first transaction from the first response packet, thereby discovering at least one proxy pair. 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; andtransforming 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; andtransmitting, from the second proxy to the server, the reconstructed client messages over the second intercepted connection. 17. The method of claim 16, further comprising: at the first proxy, converting addresses in received packets using NAT to allow the client to operate as if the first intercepted connection is a client-server connection; andat the second proxy, converting addresses in received packets using NAT to allow the server to operate as if the second intercepted connection is a client-server connection. 18. The method of claim 16, wherein determining whether both the first proxy and the second proxy are in the network path from the client to the server comprises: receiving, at the first proxy, a first packet from the client directed at the server;modifying the first packet to signal presence of the first proxy in the network path, thus forming a modified first packet;forwarding the modified first packet toward the server;monitoring, at the first proxy, packets for the client from the server to detect packets containing return signals, wherein a return signal is a signal from the second proxy that detects the signal in the modified first packet and is an indication that the second proxy detected the signal as being a proxy probing signal;recording a successful probe if a responsive return signal is received corresponding to a signal sent from the first proxy;updating a proxy mapping table with results of a successful probe; andusing the proxy mapping table in subsequent transactions. 19. The method of claim 16, wherein determining whether both the first proxy and the second proxy are in the network path from the client to the server comprises: when receiving a first packet of a first transaction from the client at a discovering proxy, determining whether a proxy signal is present in the first packet;if the proxy signal is not present in the first packet, storing an indication that the discovering proxy is the first proxy;if the proxy signal is not present in the first packet, forwarding a modified first packet toward the server, wherein the modified first packet contains a proxy signal signaling that the discovering proxy is the first proxy;if the proxy signal is present in the first packet when received by the discovering proxy, evaluating the proxy symbol to determine the first proxy from the first packet, thereby discovering at least one proxy pair;updating a proxy mapping table with the proxy pair; andusing the proxy mapping table in subsequent transactions. 20. The method of claim 19, further comprising: when receiving at a proxy a first response packet of the first transaction from a server in response to the modified first packet, determining whether a return proxy signal is present in the first response packet;if the return proxy signal is not present in the first response packet, storing an indication that the proxy is the second proxy;if the return proxy signal is not present in the first response packet, forwarding a modified first response packet toward the client, wherein the modified first response packet contains a proxy signal signaling that the proxy is the second proxy; andif the return proxy signal is present in the first response packet when received by the discovering proxy, evaluating the proxy symbol to determine the second proxy for the first transaction from the first response packet, thereby discovering at least one proxy pair. 21. The method of claim 16, further comprising: transforming data transmissions sent from the server to be received by the client by: receiving, at the second proxy from the server, one or more server messages over the second intercepted connection;modifying said server messages at least in part by replacing one or more data patterns of the server messages with associated references;transmitting, to the first proxy, said modified server messages over the third connection;reconstructing, at the first proxy, the server messages by replacing references with associated data patterns obtained from the first data store, or if no such pattern exists, obtained by sending a resolution request to the second proxy; andtransmitting, from the first proxy to the client, the reconstructed server messages over the first intercepted connection. 22. The method of claim 16, further comprising: when an associated data pattern is to be stored in the first or second data store, transforming the associated data pattern via an invertible function of the segment data, and storing the results of this transformation; andwhen associated data pattern is to be used in dereferencing a reference, untransforming the stored results using an inverse of the invertible function. 23. The method of claim 22, wherein the invertible function is one or more of a forward error correction function, an encryption function and a signature function. 24. The method of claim 16, further comprising: determining, at the second proxy, when the associated data pattern for a reference is not available for payload reconstruction; andrequesting the associated data pattern from a transaction accelerator associated with the sender. 25. The method of claim 16, wherein modifying said client messages includes: estimating whether the receiver has a matching data pattern corresponding to a data pattern of a client payload; andwhen the matching data pattern is estimated to probably not be at the second proxy, including the matching data pattern and a corresponding reference in the modified client payload. 26. The method of claim 16, further comprising generating the references to replace data patterns using, for each reference, at least one of (a) a random number identifier, (b) a hash of the replaced data, (c) an identifier related to a unique identifier of a sender of a message including the reference, and (d) an identifier related to a unique identifier of a recipient of a message including the reference. 27. The method of claim 16, further comprising: observing, at the second proxy, one or more application protocol messages transmitted by the client to the server for determining a pattern of client activity;based on the observed pattern, synthesize and issue one or more requests to the server over the second intercepted connection;receive responses to said requests; andtransmit said responses to the first proxy over the third connection as predicted responses;receiving, at the first proxy, one or more client requests over the first intercepted connection;forming a response message using one or more of said predicted responses or by a combination of said responses; andrespond to the client request with said response over the first intercepted connection. 28. The method of claim 16, further comprising: observing, at the first proxy, one or more application protocol messages transmitted by the client to the server for determining a pattern of client activity;based on the observed pattern, synthesizing and issuing one or more requests to the server over the third intercepted connection;receiving predicted responses to said requests; andreceiving one or more client requests over the first intercepted connection;forming a response message using one or more of said predicted responses or by a combination of said responses; andresponding to the client requests with said response message over the first intercepted connection.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.