Method and system for layering an infinite request/reply data stream on finite, unidirectional, time-limited transports
First Claim
1. In a computer network having a client and a server, a method comprising:
- establishing an IN channel for client-to-server traffic, the IN channel having a lifetime that expires;
establishing an OUT channel for server-to-client traffic, the OUT channel having a lifetime that expires;
communicating data from the client to the server via the IN channel;
communicating data from the server to the client on the OUT channel; and
tracking the lifetime of each channel and replacing any channel that will expire or has expired with a corresponding new channel to provide a virtual connection having a lifetime that does not expire.
2 Assignments
0 Petitions
Accused Products
Abstract
An improved method and system for layering RPC communications on top of an HTTP transport. An RPC data stream of individual request/reply packets is mapped to HTTP primitives, and RPC requests are mapped to one large, HTTP, POST-like request (IN channel). Corresponding replies are mapped to another large, HTTP, GET-like request (OUT channel). The client establishes the IN channel and OUT channel as simultaneously open connections with a large content-length for each. Before the content-length is exhausted, the client and server open a new IN or OUT channel while the corresponding channel is still alive, so that there is always at least one opened IN or OUT channel available. If traffic is too infrequent, the client keeps the connection alive so that it will not be closed for being idle. This provides a bi-directional virtual connection that remains open for an unlimited time for tunneling unlimited amounts of RPC traffic.
-
Citations
38 Claims
-
1. In a computer network having a client and a server, a method comprising:
-
establishing an IN channel for client-to-server traffic, the IN channel having a lifetime that expires;
establishing an OUT channel for server-to-client traffic, the OUT channel having a lifetime that expires;
communicating data from the client to the server via the IN channel;
communicating data from the server to the client on the OUT channel; and
tracking the lifetime of each channel and replacing any channel that will expire or has expired with a corresponding new channel to provide a virtual connection having a lifetime that does not expire. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. In a computer network having a client and a server, a method comprising:
-
receiving, at a first proxy, a request from a client to establish an OUT channel for server-to-client traffic, and in response, establishing a connection with the server;
receiving, at a second proxy, a request from a client to establish an IN channel for client-to-server traffic, and in response, establishing a connection with the server as the IN channel;
at the second proxy via the IN channel, receiving data from the client directed to the server and forwarding it to the server;
at the first proxy via the OUT channel, receiving data from the server directed to the client and forwarding it to the client;
receiving at the first proxy a request from the server to recycle the OUT channel to a new OUT channel corresponding to a third proxy, and in response, transitioning server-to-client traffic to the new OUT channel; and
receiving at the second proxy a request from the client to recycle the IN channel to a new IN channel corresponding to a fourth proxy, and in response, transitioning client-to-server traffic to the new IN channel. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23)
-
-
24. In a computer network having a client and a server, a system comprising:
-
a client runtime that provides client requests;
a channel establishment mechanism that establishes a first unidirectional channel for client-to-server requests, and second a unidirectional channel for server-to-client replies, each channel having a finite lifetime;
a lifetime tracking mechanism that tracks the lifetime of the first channel, including by counting the size of the request data sent to the server with respect to the finite lifetime of the first channel; and
a channel recycle mechanism that replaces the first channel with a new channel when the first channel approaches or reaches expiration of its lifetime as detected by the lifetime tracking mechanism, the channel recycle mechanism operating transparent to the client runtime such that a virtual channel that never expires is available for sending data from the runtime to the server. - View Dependent Claims (26, 29, 30, 31, 32, 33)
-
-
25. The system of 24 further comprising, a timer that triggers a ping of the client-to-server channel.
-
27. The system of 24 further comprising, a timer that triggers a ping of the server-to-client channel.
-
28. The system of 24 wherein the runtime comprises an RPC runtime connected for handling function calls from a client application that correspond to RPC requests.
-
34. In a client computer that communicates with a network server, a method comprising:
-
establishing a first connection with the server;
establishing a second connection with the server, the second connection having a limited lifetime;
receiving requests;
sending request data to the server via the second connection;
receiving replies from the server via the first connection in response to the requests;
tracking the amount of request data sent over the second connection with respect to the limited lifetime of the second connection; and
recycling the second connection as a new second connection to maintain at least one connection for sending the request data to the server when the second connection expires. - View Dependent Claims (35, 36, 37, 38)
-
Specification