Electrical computers and digital data processing systems: input/ – Intrasystem connection – Bus access regulation
Reexamination Certificate
1999-11-12
2001-10-23
Lee, Thomas (Department: 2182)
Electrical computers and digital data processing systems: input/
Intrasystem connection
Bus access regulation
C709S250000, C709S247000, C709S203000, C709S219000, C709S220000, C709S221000, C709S224000, C709S227000, C709S229000, C713S152000
Reexamination Certificate
active
06308238
ABSTRACT:
BACKGROUND OF THE INVENTION
1. Field of the Invention
This invention relates generally to network servers and more particularly to servers that host a large number of client connections. Even more particularly, the present invention relates to servers (e.g., internet web servers) which host a large number of relatively slow client connections.
2. Description of the Background Art
It is common for network file servers such as internet web servers to host a large number of relatively slow client connections. The large number of open connections places a substantial burden on the server central processing unit (CPU), just to manage the open connections. For example, managing the open connections on a loaded server can consume 30-40% or more of the CPU's operating capacity. This burden substantially reduces the percentage of CPU cycles available to perform the primary function of the server, i.e., providing data to clients.
The connection management burden of the server CPU degrades the performance of the server software routines and reduces the maximum number of client connections that can be open at one time. As a result, web-hosting companies must provide additional, redundant servers to serve an increased number of clients. The cost of acquiring and maintaining additional web servers is substantial.
Proxy servers perform some client connection management functions, and are known in the art. However, it is well-known and commonly accepted in the art that such proxy servers must be housed separately from the server, and thus must communicate with the server over relatively slow, error prone network connections which the server must manage. See for example, Ari Luotonen, Web Proxy Servers (Prentice Hall, 1997), which is incorporated herein by reference.
What is needed, therefore, is a system and method for relieving the server CPU of the connection management burden, thus allowing the server to more efficiently host an increased number of clients.
SUMMARY
The present invention overcomes the problems associated with the prior art by providing a system and method for managing connections between a plurality of clients and a server. The invention facilitates off-loading the connection management burden from the host CPU to an adapter card interposed between the network and the host bus.
The adapter card includes a network controller, a memory device, a processing unit, and a protocol adapter. The memory device provides storage for data and code. The code includes a proxy application that communicates with clients on the network via the network controller, and communicates with the server via the protocol adapter, which is coupled directly to the server bus.
When executed by the processing unit, the proxy application manages client connections by establishing network connections between the proxy application and clients via the network, and by establishing bus connections between the proxy application and the server via the server bus. Additionally, the memory device provides data buffering, which allows many network connections to be open with clients, while a relatively few bus connections are open to the server. In a particular embodiment, the proxy accumulates client data in the buffers from the large number of slow client connections, and then submits the client data to the server over the fast bus connections. Conversely, the proxy receives server data via the fast bus connections, temporarily stores the server data, and then forwards the server data to the clients via the slow client connections.
In a more particular embodiment, the code includes a communications protocol stack that is employed by the application proxy to communicate with the clients and the server. In an even more particular embodiment, the communications protocol stack is a Transmission Control Protocol/Internet Protocol (TCP/IP) stack.
In one embodiment, the server connections are opened only after the proxy determines that a complete client request has been received. The server connections are then closed after the proxy receives a response to the client request from the server. Optionally, a predetermined number of persistent server connections are opened at system start-up, and the proxy uses these persistent connections to communicate with the server.
The proxy application optionally includes a number of application specific proxies, including but not limited to an HTTP proxy, a security proxy, and/or a pass-through proxy. In a particular embodiment, a master process module of the proxy discerns an application identifier (e.g., a well known port number) form the client data, and invokes one or more of the application specific proxies corresponding to the value of the identifier.
A system and method for allocating buffers is also disclosed, whereby the number of client connections that can be opened and managed by a proxy application is substantially increased. According to the method, buffers are allocated to a client connection only after it is determined that the buffer is needed to facilitate data transfer between a client and a server. One particular method includes the steps of establishing a connection with a client on behalf of a server, receiving a communication from the client, determining from the communication whether data will be exchanged between the client and the server (e.g., does the communication include a data request?), and allocating an input buffer to the client connection only if data is to be exchanged between the client and the server. Another particular method includes the steps of establishing a connection with a client on behalf of a server, receiving a communication from the client, determining whether data will be received from the server (e.g., whether a complete data request has been received from the client), and allocating an output buffer only if data is expected from the server. In an exemplary embodiment, the methods of the present invention are implemented in an adapter card for coupling a server to a network.
REFERENCES:
patent: 5550981 (1996-08-01), Bauer et al.
patent: 5642482 (1997-06-01), Pardillos
patent: 5678007 (1997-10-01), Hurvig
patent: 5754774 (1998-05-01), Bittinger et al.
patent: 5832512 (1998-11-01), Mastors et al.
patent: 5852717 (1998-12-01), Bhide et al.
patent: 5867650 (1999-02-01), Osterman
patent: 5867652 (1999-02-01), Hurvig
patent: 5872919 (1999-02-01), Wakeland
patent: 5896508 (1999-04-01), Lee
patent: 5898830 (1999-04-01), Wesinger, Jr. et al.
patent: 5924116 (1999-07-01), Aggarwal et al.
patent: 5935249 (1999-08-01), Stern et al.
patent: 5941988 (1999-08-01), Bhagwat et al.
patent: 5974496 (1999-10-01), Miller
patent: 6014695 (2000-01-01), Yamashita et al.
patent: 6072483 (2000-06-01), Rosin et al.
patent: 6088803 (2000-07-01), Tso et al.
patent: 6101328 (2000-08-01), Bakshi et al.
patent: 6104716 (2000-08-01), Crichton et al.
patent: 6115755 (2000-09-01), Krishan
patent: 6119161 (2000-09-01), Lita et al.
patent: 6122514 (2000-09-01), Spaur et al.
patent: 6138162 (2000-10-01), Pistriotto et al.
patent: 6182141 (2001-01-01), Blum et al.
patent: 6185625 (2001-02-01), Tso et al.
patent: 6222533 (2001-04-01), Notani et al.
patent: 6237031 (2001-05-01), Knauerhase et al.
patent: 6247050 (2001-06-01), Tso et al.
patent: 11149450A (1999-02-01), None
Aggarwal et al. “On Disk Caching of Web Objects in Proxy Servers”, Research Report, IBM, Nov. 1996, pp. 1-18.*
Abrams et al. “Caching Proxies, Limitations and Potentials”, 4th Int. WWW Conf. Proceedings, World Wide Web Journal, Oct. 1995, pp. 119-133.*
Neuman, “Proxy Based Authorization and Accounting for Distributed Systems”, IEEE, 1993, pp. 283-291.*
TDB, “Inter-Processor 802 Interface”, IBM, May 1994, V. 37, Issue 5, pp. 315-324.*
Luotonen, Ari.Web Proxy Servers. Prentice Hall PTR, Upper Saddle River, NJ. Copyright 1998. pp. 3-28, 325-343.
IBM TDB, Generating Specific Server Programs in Distributed Object-Oriented Customer Information Control System, Jan. 1995, vol. 38, No. 1, pp. 411-414.*
Scheifler et al. The X Window System, ACM Trans. Graph. 5, 2, Apr. 1986, pp. 79-109.*
Mogul, J.C
Burright Richard T.
MacDonell Eoin B.
Smith Jack J.
Vastano John A.
Weatherford William T.
Akamba Corporation
Henneman & Saunders
Henneman, Jr. Larry E.
Lee Thomas
Schuster Katharina
LandOfFree
System and method for managing connections between clients... does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with System and method for managing connections between clients..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and System and method for managing connections between clients... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2597520