System and method for managing connections between clients and a server with independent connection and data buffers
First Claim
1. In an interface device operatively coupled to an internal bus of an origin server, a method for managing connections between at least one client and said origin server, via said interface device, said method comprising:
- establishing a network connection with one of said clients via a network;
receiving a communication from said client via said network connection;
determining whether said communication includes a data request;
allocating an input buffer to said client connection if said communication includes a data request;
storing said data request in said allocated buffer space;
establishing a bus connection with said origin server via an internal bus of said server; and
forwarding said data request to said origin server via said bus connection.
1 Assignment
0 Petitions
Accused Products
Abstract
An adapter card for managing connections between clients and a network server off-loads the connection management burden from the server. The adapter card includes a memory with an embedded proxy application and a communication protocol stack, a processing unit for executing the application code, a network controller for interfacing with an internetwork, and a bus protocol bridge for interfacing with the internal bus of the network server. The proxy application receives client requests on behalf of the server over relatively slow and unreliable network connections, and submits the requests to the server over fast, reliable bus connections. Buffers are allocated to a particular client connection only after it is determined that data will be exchanged between the server and the client.
-
Citations
50 Claims
-
1. In an interface device operatively coupled to an internal bus of an origin server, a method for managing connections between at least one client and said origin server, via said interface device, said method comprising:
-
establishing a network connection with one of said clients via a network;
receiving a communication from said client via said network connection;
determining whether said communication includes a data request;
allocating an input buffer to said client connection if said communication includes a data request;
storing said data request in said allocated buffer space;
establishing a bus connection with said origin server via an internal bus of said server; and
forwarding said data request to said origin server via said bus connection. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35)
receiving a response to said data request from said server; and
storing said data request in said output buffer.
-
-
5. A method according to claim 4, wherein said step of storing said response in said output buffer comprises:
-
determining whether said output buffer is full; and
if said output buffer is full, allocating additional buffer space to said output buffer.
-
-
6. A method according to claim 5, wherein said step of allocating additional buffer space to said output buffer includes linking said output buffer to at least one other buffer from a pool of available buffers.
-
7. A method according to claim 6, further comprising:
-
forwarding said server response to said client via said network connection; and
releasing each said linked buffer as it is emptied.
-
-
8. A method according to claim 5, wherein said step of allocating additional buffer space to said output buffer is repeated until the entire server response is received and stored.
-
9. A method according to claim 4, further comprising:
-
forwarding said server response to said client via said network connection; and
releasing said output buffer.
-
-
10. A method according to claim 1, wherein:
-
said step of allocating an input buffer includes determining whether an input buffer has been previously allocated to the client connection; and
if an input buffer has been previously allocated, not allocating another input buffer.
-
-
11. A method according to claim 10, wherein step of storing said data request in said allocated input buffer includes:
-
determining whether said input buffer is full; and
if said input buffer is full, allocating additional buffer space to said input buffer.
-
-
12. A method according to claim 11, wherein said step of allocating additional buffer space to said input buffer is repeated until the entire data request is received and stored.
-
13. A method according to claim 11, wherein said step of allocating additional buffer space to said input buffer includes linking said input buffer to at least one other buffer from a pool of available buffers.
-
14. A method according to claim 13, wherein said step of forwarding said data request to said server includes releasing each of said linked buffers as they are emptied.
-
22. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 1.
-
23. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 2.
-
24. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 3.
-
25. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 4.
-
26. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 5.
-
27. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 6.
-
28. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 7.
-
29. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 8.
-
30. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 9.
-
31. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 10.
-
32. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 11.
-
33. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 12.
-
34. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 13.
-
35. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 14.
-
15. In an interface device operatively coupled to an internal bus of an origin server, a method for managing connections between at least one client and said origin server, via said interface device, said method comprising:
-
establishing a network connection with one of said clients via a network;
receiving a communication from said client via said network connection;
determining whether a complete data request has been received from said client;
allocating an output buffer to store a response from said origin server, only after a complete data request has been received;
establishing a bus connection with said origin server via said internal bus of said origin server; and
forwarding said data request to said origin server via said bus connection. - View Dependent Claims (16, 17, 18, 19, 20, 21, 36, 37, 38, 39, 40, 41, 42)
receiving a response to said data request from said server; and
storing said data request in said output buffer.
-
-
17. A method according to claim 16, wherein said step of storing said response in said output buffer comprises:
-
determining whether said output buffer is full; and
if said output buffer is full, allocating additional buffer space to said output buffer.
-
-
18. A method according to claim 17, wherein said step of allocating additional buffer space to said output buffer includes linking said output buffer to at least one other buffer from a pool of available buffers.
-
19. A method according to claim 18, further comprising:
-
forwarding said server response to said client via said network connection; and
releasing each said linked buffer as it is emptied.
-
-
20. A method according to claim 17, wherein said step of allocating additional buffer space to said output buffer is repeated until the entire server response is received and stored.
-
21. A method according to claim 16, further comprising:
-
forwarding said server response to said client via said network connection; and
releasing said output buffer.
-
-
36. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 15.
-
37. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 16.
-
38. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 17.
-
39. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 18.
-
40. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 19.
-
41. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 20.
-
42. A computer readable medium having code embodied therein for causing an electronic device to perform the steps of claim 21.
-
43. An adapter card for operatively coupling to an internal bus of an origin server for managing origin server communication with a network, said adapter card comprising:
-
a network controller for communicating with clients on said network;
a memory device for storing data and code, said memory device including a plurality of buffers, and said code including a reverse proxy application responsive to communications from said clients and operative to allocate an input buffer to a client connection only if a communication received via said client connection includes a data request;
a processing unit coupled to said memory device for executing said code; and
a protocol adapter coupled to said processing unit, and adapted to couple to said internal bus, for communicating with said origin server. - View Dependent Claims (44, 45, 46, 47, 48)
store said response in said output buffer;
forward said response to a client via said client connection; and
release said output buffer after said response has been forwarded to said client.
-
-
47. An adapter card according to claim 44, wherein each of said plurality of buffers is available to said proxy application for use as said input or said output buffer.
-
48. An adapter card according to claim 43, wherein said proxy application is further operative to forward said data request to said server, and to release said input buffer thereafter.
-
49. An adapter card for operatively coupling to an internal bus of an origin server for managing origin server communication with a network, said adapter card comprising:
-
a network controller for communicating with clients on said network;
a memory device for storing data and code, said memory device including a plurality of buffers, and said code including a reverse proxy application responsive to communications from said clients and operative to allocate an output buffer to a client connection only after a complete data request is received via said client connection;
a processing unit coupled to said memory device for executing said code; and
a protocol adapter coupled to said processing unit, and adapted to couple to said internal bus, for communicating with said origin server. - View Dependent Claims (50)
store said response in said output buffer;
forward said response to a client via said client connection; and
release said output buffer after said response has been forwarded to said client.
-
Specification