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 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;
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.
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.
-
Citations
25 Claims
-
1. A data processing apparatus, comprising:
-
a network interface; a processor coupled to the network interface; a 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; 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. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A 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:
-
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. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. An apparatus, comprising:
-
means for receiving, from a client, a first request directed to a server across a wide area network; means for determining whether a related second request has been received previously; means operable when a related second request has been received previously for sending, to the client, a first reply to the second request and forwarding the first request to the server, and means for otherwise forwarding the first request to the server without sending any reply to the client for the first request. - View Dependent Claims (18)
-
-
19. A machine-implemented method comprising:
-
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. - View Dependent Claims (20, 21, 22, 23)
-
-
24. A 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:
-
receiving, from a client computer, a first Network File System protocol version 3 (NFSv3) UNSTABLE type or asynchronous request to write a specified file handle for a specified user identifier directed to a server across a wide area network; determining whether a second request for the same file handle and user identifier has been received previously; when a second request has been received previously for the same file handle and user identifier, sending, to the client computer, 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; 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 a 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.
-
-
25. A 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:
-
receiving, from a client computer, a first fragment of an MSRPC remote procedure call directed to a server across a wide area network; determining whether a second fragment of the same remote procedure call has been received previously; when a second fragment of the same remote procedure call has been received previously, sending, to the client computer, a first reply to the second fragment of the same remote procedure call and forwarding the first fragment of the same remote procedure call to the server, 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; 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 a 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 second fragment, and sending the delivery failure message to the client process in response to receiving a last fragment from the client process.
-
Specification