Optimizing program requests over a wide area network
First Claim
1. A data processing apparatus, comprising:
- a network interface;
a processor coupled to the network interface;
a non-transitory machine-readable volatile or non-volatile storage medium coupled to the processor and storing one or more sequences of instructions which, when executed by the processor, cause the processor to perform;
at the data processing apparatus, configured separately from a client and a server;
receiving, from the client, a first request directed to the server across a wide area network;
determining whether a related second request directed to the server has been received previously and before the first request was received from the client;
wherein the first request is to write data for a specified file handle on the server and for a specified user, and wherein the related second request is to write data for the specified file handle and for the specified user;
in response to determining that the related second request has been received previously and before the first request was received from the client,generating, at the data processing apparatus, and sending, to the same client, a first reply to the related second request and then forwarding the first request to the server for the server to write the data for the specified file handle and for the specified user,and otherwise forwarding the first request to the server without sending any reply to the client for the first request;
wherein the first reply confirms receiving the related second request;
forwarding, at any time with respect to the receiving and the determining, the second request to the server.
1 Assignment
0 Petitions
Accused Products
Abstract
In various embodiments, data processing apparatus, software, or machine-implemented methods can optimize NFSv3 asynchronous write requests or MSRPC calls that traverse a wide area network, for example, by receiving, from a client, a first request directed to a server across a wide area network; determining whether a related second request has been received previously; when a related second request has been received previously, sending, to the client, a first reply to the second request and forwarding the first request to the server, and otherwise forwarding the first request to the server without sending any reply to the client for the first request. Sending local replies from a WAN optimizer induces the client to send continuous requests, improving throughput, but at least one client request remains unreplied to, and one server error reply is always reported to the client, facilitating correct error processing at the client.
19 Citations
21 Claims
-
1. A data processing apparatus, comprising:
-
a network interface; a processor coupled to the network interface; a non-transitory machine-readable volatile or non-volatile storage medium coupled to the processor and storing one or more sequences of instructions which, when executed by the processor, cause the processor to perform; at the data processing apparatus, configured separately from a client and a server; receiving, from the client, a first request directed to the server across a wide area network; determining whether a related second request directed to the server has been received previously and before the first request was received from the client; wherein the first request is to write data for a specified file handle on the server and for a specified user, and wherein the related second request is to write data for the specified file handle and for the specified user; in response to determining that the related second request has been received previously and before the first request was received from the client, generating, at the data processing apparatus, and sending, to the same client, a first reply to the related second request and then forwarding the first request to the server for the server to write the data for the specified file handle and for the specified user, and otherwise forwarding the first request to the server without sending any reply to the client for the first request; wherein the first reply confirms receiving the related second request; forwarding, at any time with respect to the receiving and the determining, the second request to the server. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A non-transitory computer-readable medium carrying one or more sequences of instructions which, when executed by one or more processors, cause the one or more processors to carry out the steps of:
at the data processing apparatus, configured separately from a client and a server; receiving, from the client, a first request directed to the server across a wide area network; determining whether a related second request directed to the server has been received previously and before the first request was received from the client; wherein the first request is to write data for a specified file handle on the server and for a specified user, and wherein the related second request is to write data for the specified file handle and for the specified user; in response to determining that the related second request has been received previously and before the first request was received from the client, generating, at the data processing apparatus, and sending, to the same client, a first reply to the related second request and then forwarding the first request to the server for the server to write the data for the specified file handle and for the specified user, and otherwise forwarding the first request to the server without sending any reply to the client for the first request; wherein the first reply confirms receiving the related second request; forwarding, at any time with respect to the receiving and the determining, the second request to the server. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
15. An apparatus, comprising:
-
one or more processors; at the data processing apparatus, configured separately from a client and a server; means for receiving, from the client, a first request directed to the server across a wide area network; means for determining whether a related second request directed to the server has been received previously and before the first request was received from the client; wherein the first request is to write data for a specified file handle on the server and for a specified user, and wherein the related second request is to write data for the specified file handle and for the specified user; means, operable in response to determining that the related second request has been received previously and before the first request was received from the client, for generating, at the data processing apparatus and sending, to the same client, a first reply to the related second request and then forwarding the first request to the server for the server to write the data for the specified file handle and for the specified user, and for otherwise forwarding the first request to the server without sending any reply to the client for the first request; wherein the first reply confirms receiving the related second request; forwarding, at any time with respect to the receiving and the determining, the second request to the server.
-
-
16. A machine-implemented method comprising:
-
at the data processing apparatus, configured separately from a client and a server; receiving, from the client, a first request directed to the server across a wide area network; determining whether a related second request directed to the server has been received previously and before the first request was received from the client; wherein the first request is to write data for a specified file handle on the server and for a specified user, and wherein the related second request is to write data for the specified file handle and for the specified user; in response to determining that the related second request has been received previously and before the first request was received from the client, generating, at the data processing apparatus, and sending, to the client, a first reply to the related second request, sending the first reply to the same client and then forwarding the first request to the server for the server to write the data for the specified file handle and for the specified user, and otherwise forwarding the first request to the server without sending any reply to the client for the first request; wherein the first reply confirms receiving the related second request; forwarding, at any time with respect to the receiving and the determining, the second request to the server; wherein the method is performed by one or more computing devices. - View Dependent Claims (17, 18, 19)
-
-
20. A non-transitory machine-readable volatile or non-volatile storage medium storing one or more sequences of instructions which, when executed by one or more processors, cause the processor to perform:
at the data processing apparatus, configured separately from a client computer and a server; receiving, from the client computer, a first Network File System protocol version 3 (NFSv3) UNSTABLE type asynchronous first request to write a specified file handle for a specified user identifier directed to the server across a wide area network; determining whether a related second request for the same file handle and user identifier has been received previously and before the first request was received from the client computer; wherein the first request is to write data for the specified file handle on the server for the specified user identifier, and wherein the related second request is to write data for the specified file handle and for the specified user identifier; in response to determining that the related second request has been received previously and before the first request was received from the client computer for the same file handle and user identifier, generating, at the data processing apparatus, and sending, to the same client computer, a first reply to the second request and then forwarding the first request to the server for the server to write the data for the specified file handle and for the specified user, and otherwise forwarding the first request to the server without sending any reply to the client for the first request; wherein the first reply confirms receiving the related second request; forwarding, at any time with respect to the receiving and the determining, the second request to the server; receiving, from the server, a second reply to a third request to write a second specified file handle and a second specified user; determining whether the client has been given the second reply to the third asynchronous write request previously; when the client has not been given a second reply to the third request previously, forwarding the second reply to the client including any error code of the server that is in the second reply, and otherwise discarding the second reply.
-
21. A non-transitory machine-readable volatile or non-volatile storage medium storing one or more sequences of instructions which, when executed by one or more processors, cause the processor to perform:
at the data processing apparatus, configured separately from a client computer and a server; receiving, from the client computer, a first fragment of an MSRPC remote procedure call directed to the server across a wide area network; determining whether a related second fragment of the same remote procedure call directed to the server has been received previously and before the first fragment was received from the client computer; wherein the first fragment is to write data for a specified file handle on the server and for a specified user, and where the related second fragment is to write data for the specified file handle and for the specified user; in response to determining that the related second fragment of the same remote procedure call has been received previously and before the first fragment was received from the client computer, generating, at the data processing apparatus, and sending, to the same client computer, a first reply to the second fragment of the same remote procedure call and then forwarding the first fragment of the same remote procedure call to the server for the server to write the data for the specified file handle and for the specific user, and otherwise forwarding the first fragment of the same remote procedure call to the server without sending any reply to the client for the first fragment of the same remote procedure call; wherein the first reply confirms receiving the related second fragment; forwarding, at any time with respect to the receiving and the determining, the second fragment to the server; receiving, from the server, a second reply to a third fragment of the same remote procedure call; determining whether the client process has been given the second reply to the fragment of the same remote procedure call previously; when the client process has not been given a second reply to the third fragment of the same remote procedure call previously, forwarding the second reply to the client process including any error code of the server that is in the second reply, and otherwise discarding the second reply; receiving from a transport protocol a delivery failure message specifying a failure to deliver one or more of the first fragment and the related second fragment, and sending the delivery failure message to the client process in response to receiving a last fragment from the client process.
Specification