HK1132559A - System and method for connection optimization - Google Patents
System and method for connection optimization Download PDFInfo
- Publication number
- HK1132559A HK1132559A HK09110234.6A HK09110234A HK1132559A HK 1132559 A HK1132559 A HK 1132559A HK 09110234 A HK09110234 A HK 09110234A HK 1132559 A HK1132559 A HK 1132559A
- Authority
- HK
- Hong Kong
- Prior art keywords
- client
- referenced objects
- domain
- domains
- server
- Prior art date
Links
Description
Technical Field
The present invention relates generally to computer networks, and more particularly to a system and method for connection optimization in a client-server network.
Background
In some environments, the usefulness of the World Wide Web (Web) is limited due to poor performance. A web client, such as a web browser, may take a lot of time to find an individual web page or other object. While this may be acceptable in some situations (e.g., people shopping online at home), in some business applications where client productivity is important, this delay in object retrieval reduces efficiency.
Network clients connect to network servers using a layered set of protocols that typically includes the Internet Protocol (IP), which is a connectionless low-level protocol for single packet delivery. The suite of protocols also typically includes a transport layer protocol, such as the Transmission Control Protocol (TCP), which uses IP to create transport connections. The transport connection is presented to the client and the server in a manner that sends a data stream, wherein the transport protocol provides reliability and continuity. The transport connection is opened by one party, typically the client. Establishing a connection requires some expense in both time and bandwidth. Maintaining the connection also involves costs, such as using memory, so the connection is usually closed after completion of the service or some delay.
The hypertext transfer protocol (HTTP) is a standard protocol for retrieving network objects. HTTP implements a method by which a client requests an object, which is identified by a Uniform Resource Locator (URL), and a server makes a response that typically includes the requested object. The URL includes a domain name and a path. The domain name identifies the server (or group of servers) on which the object resides. The path typically identifies a particular network object residing on the server. A web page is typically a structured collection of multiple objects. Hypertext markup language (HTML) objects may reference other objects such as images, frames, and code objects. A web browser on the client can download such referenced or implanted objects and combine them on a single screen presented to the user. The need to download multiple objects to generate a single web page is one of the reasons for poor network performance.
The number of domains associated with a particular web page may affect the number of connections or level of parallelism concurrently used between a client and a server. The increase in parallelism may improve latency to some extent, but also generally increases the load on the clients, servers, and network.
Disclosure of Invention
A system for connection optimization, comprising: a client, a server, and a domain assigner for assigning the referenced object to an additional domain to cause the client to open an additional connection. The client opens a transfer connection to the server to request a referencing object (referencing object) comprising a plurality of referenced objects (referenced objects). In one embodiment, a domain assigner is configured to dynamically assign a plurality of referencing objects to additional domains when a referencing object is requested. The web browser software on the client sees that the referenced object is assigned to an additional domain and opens an additional transport connection to request the referenced object. The domain assigner may assign the plurality of referenced objects to additional domains based on conditions in the network, such as load and available bandwidth. In another embodiment, a domain assigner is used to create multiple versions of a referencing object, wherein each version of the referenced object is assigned to a different number of domains. The domain assigner may reside on a server or on an intermediary device in the network. The additional connections may be to the server that delivered the referencing object (if that server is capable of delivering the referenced object), or may be to one or more other servers that are capable of delivering the referenced object.
The method for connection optimization comprises the following steps: establishing a connection between the server and the client; receiving a request for an object containing a referenced object; determining a required number of connections between the server and the client; determining a domain assignment for each of the plurality of referenced objects to affect a number of connections required for client use; assigning each of the plurality of referenced objects to one of a plurality of domains according to the domain assignment; modifying each of said plurality of referenced objects to include identifiers of the plurality of referenced objects in accordance with the domain assignment for that object, thereby producing a modified object; and sending the modified object to the client. In one embodiment, the step of determining the domain assignment comprises: some domains are determined based on network conditions (e.g., load and available bandwidth, etc.).
Drawings
FIG. 1 is a block diagram of one embodiment of a computer network of the present invention;
FIG. 2 is a block diagram of one embodiment of an object containing referenced objects of the present invention;
fig. 3 is a block diagram of another embodiment of a computer network of the present invention.
Detailed Description
FIG. 1 is a block diagram of one embodiment of a computer network of the present invention. The network includes (but is not limited to): client 112, network 114, and server 116. Client 112 requests and receives objects from server 116 over network 114 using software (e.g., a web browser, etc.). The objects may include HTML objects (e.g., web pages, etc.). To request an object, client 112 opens a transport layer connection (e.g., a TCP connection) with server 116. Client 112 then sends a request for the object to server 116 over the connection.
Some objects stored on the server 116 reference other objects. A referencing object contains identifiers (e.g., Uniform Resource Locators (URLs), etc.) of the referenced objects. The identifier of the referenced object contains the domain in which the referenced object is located. When a referencing object is received by client 112, browser software on client 112 requests the referenced object based on the identifier. Each referenced object can be assigned to more than one domain.
Server 116 includes, but is not limited to, a domain assigner 118. Domain assigner 118 is operable to assign referenced objects to domains. When a referenced object is created, it is assigned to an initial domain, which is typically the domain of the referencing object. In the FIG. 1 embodiment, domain assigner 118 dynamically assigns referenced objects to multiple domains and modifies identifiers in the referencing objects to generate modified referencing objects when the referencing objects are requested by client 112. Server 116 then sends the modified referencing object to client 112. Domain assigner 118 assigns referenced objects to multiple domains to affect the number of connections or level of parallelism between client 112 and server 118.
Html, for example, may be identified by the URL "www.site.com/index," referencing 20 referenced objects. The referenced objects may be initially identified by URLs "www.site.com/image n.gif" (N ═ 1-20), which belong to the same domain as the referencing object. When client 112 requests a referencing object, domain assigner 118 dynamically assigns the referenced object to a different domain to cause client 112 to open additional connections with server 116. In this example, domain assigner 118 assigns half of the referenced objects to a new domain, "www 2.site. com/image N. gif" (N ═ 1, 3, 5, 7.. 19) before server 116 sends the referencing objects to client 112. Com is a different domain and then opens additional transport connections to request the referenced object from the different domain. Since most web browsers are configured to use two connections per domain, client 112 will receive the requested referenced object from server 116 using four connections.
Domain assigner 118 may assign referenced objects to a predetermined number of domains or may dynamically determine an appropriate number of domains based on a desired number of connections or level of parallelism with client 112. In a preferred embodiment, domain assigner 118 determines an appropriate level of parallelism based on load, priority, or other factors, and then determines a number of domains to achieve that level of parallelism. In one embodiment, domain assigner 118 determines the appropriate number of domains based on historical data obtained by server 116 regarding how many connections per domain client 112 actually opens. In another embodiment, domain assigner 118 determines the appropriate number of domains based on predictions of client behavior made based on the type of browser used by client 112, which the browser used by client 112 may make known in its request. Domain assigner 118 may also determine the required number of connections to client 112 based on the bandwidth or latency of the connections to client 112, the computing power of client 112, the type and version of browser software of client 112, or an estimate of any of these factors.
Domain assigner 118 may also cause client 112 to open the number of required connections to server 116 by instructing server 116 to respond to client 112 requests with a prescribed version of the HTTP protocol. For example, some clients open more connections to the server when using the HTTP protocol version 1.0. Thus, domain assigner 118 can affect the level of parallelism utilized by client 112 by instructing server 116 to respond to client 112 requests using version 1.0 or version 1.1 of the HTTP protocol.
In another embodiment, domain assigner 118 creates multiple versions of a referencing object, wherein each version of the referenced object is assigned to a different number of domains. Domain assigner 118 creates the plurality of versions prior to receiving a request from client 112. When client 112 requests a referencing object from server 116, domain assigner 118 selects a version of the referencing object that has the number of domains for the referenced object that causes client 112 to open the number of required connections. The number of connections required between client 112 and server 116 may be a predetermined number, or domain assigner 118 may determine the number of connections required based on the load on server 116. The present invention also includes other methods of determining the number of required connections between the client 112 and the server 116.
In one embodiment, domain assigner 118 determines which referenced object is assigned to a different domain based on different factors, such as the importance assigned to the referenced object or the location on the web page where the referenced object appears.
Assigning referenced objects to different domains typically does not require additional servers. For example, the virtual host service facility (hosting facility) of HTTP allows a single server to be configured to handle multiple domains as aliases for each other. If all domains of the referenced object are subdomains of a single parent domain, then a wildcard configuration option for the Domain Name System (DNS) may be used to simplify DNS setup. The scope of the present invention includes other techniques known in the art for loading multiple domains onto a single server.
In the FIG. 1 embodiment, server 116 is capable of delivering all referenced objects to client 112. In other embodiments, one or more other servers in network 114 may be able to communicate all referenced objects to client 112, so that client 112 may open additional connections to other servers besides server 116 to request referenced objects.
FIG. 2 is a block diagram of an embodiment of an object 200 containing referenced objects of the present invention. Object 200 includes (but is not limited to): referenced objects 212, 214, 216, 218, 220, and 222. Each referenced object 212-222 may be a text object, an image object, an audio object, a video object, an animation object, a code object (e.g., a Java applet), or any other type of object. When client 112 receives object 200 from server 116, client 112 requests each referenced object 212 and 222.
In the FIG. 2 embodiment, referenced objects 212 and 214 are assigned to the domain of object 200, referenced objects 216 and 218 are assigned to the second domain, and referenced objects 220 and 222 are assigned to the third domain. When client 112 receives object 200 from server 116, client 112 recognizes that the identifiers of referenced objects 216 and 222 point to the second domain and the third domain. Client 112 opens at least one transport layer connection with a server (e.g., server 116) capable of serving the second domain and the third domain to request referenced object 216 and 222. Because more than one referenced object is assigned to each of the different domains, client 112 may open more than one transport layer connection for each of the different domains. Thus, to request and receive referenced objects 212 and 222, client 112 may use six parallel connections (two per domain) with server 116. Using six transport layer connections instead of two, client 112 receives referenced object 212 and 222 with less latency and presents object 200 with its referenced objects to the user. Typically, when a client wishes to open a transport layer connection to a domain, the client will use a lookup system (such as DNS) to discover one or more servers capable of serving the domain and will open a transport connection to one of the servers.
Fig. 3 is a block diagram of another embodiment of a computer network of the present invention. The network of fig. 3 includes (but is not limited to): client 312, network 314, intermediary 316, network 320, and server 322. Intermediate device 316 may be any type of intermediate network device (e.g., a load balancer or network proxy). In an embodiment, intermediate device 316 may be implemented as a dedicated performance enhancing device. An example of such a dedicated node is disclosed in U.S. patent application No. 09/534,321 entitled "Method for High-Performance Delivery of Web Content", filed 24/3/2000, which is incorporated by reference herein in its entirety.
Intermediary 316 includes, but is not limited to, domain assigner 318. Domain assigner 318 is configured to receive referencing objects from server 322 and dynamically assign their referenced objects to at least one additional domain that is different from the domain of the referencing object seen by client 312 to affect the number of connections used by client 312. Intermediate device 316 sends the resulting modified referencing object to client 312. When a referenced object is requested, client 312 opens at least one additional connection with intermediate device 316.
In an embodiment, intermediary 316 includes a cache that stores content received from server 322. Domain assigner 318 can dynamically assign referenced objects of the cached referencing objects to additional domains. Alternatively, domain assigner 318 can create different versions of the cached referencing object, wherein each version of the referenced object is assigned to a different number of domains. For example, a version of a cached referencing object may include 10 referenced objects, with half of the referenced objects being assigned to one domain and the other half being assigned to another domain. In another version of a cached referencing object, 10 referenced objects may be allocated among three different domains. Domain assigner 318 determines which version of the cached referencing object to send to client 312 based on the number of required connections between client 312 and intermediary 316. The number of required connections between client 312 and the intermediary devices may be a predetermined number, or domain assigner 318 may determine the number of required connections based on the load on intermediary device 316. The scope of the present invention includes other methods of determining the number of connections required between the client 312 and the intermediary 316.
The invention has been described above with reference to specific embodiments. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. Accordingly, the foregoing description and drawings are to be regarded in an illustrative rather than a restrictive sense.
Claims (39)
1. A method of optimizing connections, comprising:
establishing an initial connection between the server and the client;
receiving, at the server, a request for an object that references a plurality of referenced objects, wherein at least one of the plurality of referenced objects is assignable to one or more domains;
assigning the plurality of referenced objects to a plurality of domains to affect a number of connections used by the client to request the plurality of referenced objects;
modifying said object to include identifiers of said plurality of referenced objects assigned to said plurality of domains, thereby producing a modified object; and
sending the modified object to the client.
2. The method of claim 1, wherein: the step of assigning the plurality of referenced objects to a plurality of domains comprises assigning the plurality of referenced objects to some domains according to the load on the server.
3. The method of claim 1, wherein: the step of assigning the plurality of referenced objects to a plurality of domains comprises assigning the plurality of referenced objects to some domains based on available bandwidth in a network between the client and the server.
4. The method of claim 1, wherein: the step of assigning the plurality of referenced objects to a plurality of domains comprises assigning the plurality of referenced objects to domains based on available bandwidth on the client.
5. The method of claim 1, wherein: the step of assigning the plurality of referenced objects to a plurality of domains comprises assigning the plurality of referenced objects to domains according to a priority of the client.
6. The method of claim 1, wherein: the step of assigning the plurality of referenced objects to a plurality of domains comprises assigning the plurality of referenced objects to a predetermined number of domains.
7. The method of claim 6, wherein: the predetermined number of fields is selected to improve download performance under general conditions.
8. The method of claim 1, wherein: at least two of the plurality of domains can be served by a single server for at least two of the plurality of referenced objects.
9. The method of claim 8, wherein: the single server uses an HTTP virtual host service facility to serve multiple domains.
10. The method of claim 8, wherein: the single server is identical to the server storing the object.
11. A method for optimizing connections, comprising:
establishing an initial connection between the server and the client;
receiving, at the server, a request for an object that references a plurality of referenced objects, wherein at least one of the plurality of referenced objects is assignable to one or more domains;
determining a number of required connections for the client to query and receive the plurality of referenced objects;
determining a domain assignment for each of the plurality of referenced objects to affect the number of required connections used by the client;
assigning each of the plurality of referenced objects to one of the plurality of domains according to the domain assignment;
modifying said object to include identifiers of said plurality of referenced objects based on a domain assignment for each of said plurality of referenced objects, thereby producing a modified object; and
sending the modified object to the client.
12. The method of claim 11, wherein: the step of determining a domain assignment for each of the plurality of referenced objects comprises determining a number of domains based on the load on the server.
13. The method of claim 11, wherein: the step of determining a domain allocation for each of the plurality of referenced objects comprises determining a number of domains based on available bandwidth in a network between the client and the server.
14. The method of claim 11, wherein: the step of determining a domain allocation for each of the plurality of referenced objects includes determining a number of domains based on available bandwidth on the client.
15. The method of claim 11, wherein: the step of determining a domain allocation for each of the plurality of referenced objects comprises determining a number of domains based on available bandwidth on the server.
16. The method of claim 11, wherein: the step of determining a domain assignment for each of the plurality of referenced objects includes determining a number of domains based on the priority of the client.
17. The method of claim 11, wherein: the domain allocation is predetermined.
18. The method of claim 11, wherein: the domain allocation is predetermined to improve download performance under general conditions.
19. A system for optimizing connections, comprising:
a server storing an object that references a plurality of referenced objects, wherein at least one of the plurality of referenced objects is assignable to one or more domains; and
a domain assigner configured to determine a number of required connections for the client to request and receive the plurality of referenced objects and assign each of the plurality of referenced objects to one of a plurality of domains to affect the number of required connections established by the client.
20. The system of claim 19, wherein: the domain assigner is configured to assign each of the plurality of referenced objects to one of the plurality of domains based on a load on a server.
21. The system of claim 19, wherein: the domain assigner is configured to assign each of the plurality of referenced objects to one of the plurality of domains based on available bandwidth in a network between the client and the server.
22. The system of claim 19, wherein: the domain assigner is configured to assign each of the plurality of referenced objects to one of the plurality of domains based on available bandwidth on the client.
23. The system of claim 19, wherein: the domain assigner is configured to assign each of the plurality of referenced objects to one of the plurality of domains based on available bandwidth on the server.
24. The system of claim 19, wherein: the domain assigner is configured to assign each of the plurality of referenced objects to one of the plurality of domains based on a priority of the client.
25. The system of claim 19, wherein: the domain assigner is configured to assign each of the plurality of referenced objects to one of the plurality of domains according to a predetermined domain assignment.
26. The system of claim 25, wherein: the predetermined domain allocation is selected to improve download performance under general conditions.
27. The system of claim 19, wherein: the domain assigner resides on the server.
28. The system of claim 19, wherein: the domain assigner resides on an intermediary device between the client and the server.
29. The system of claim 28, wherein: the domain assigner is configured to determine a number of required connections between the client and the intermediary device based on a load on the intermediary device.
30. The system of claim 28, wherein: the domain assigner is configured to determine a number of required connections between the client and the intermediary device based on available bandwidth on the intermediary device.
31. The system of claim 28, wherein: the domain assigner is configured to determine a number of required connections between the client and the intermediate device based on available bandwidth in a network between the client and the intermediate device.
32. The system of claim 28, wherein: the domain assigner is further configured to instruct the intermediary device to respond to the request from the client with a version 1.0 of HTTP to influence the client to increase the number of connections between the client and the intermediary device.
33. The system of claim 19, wherein: the domain assigner is further configured to instruct the intermediary device to respond to requests from the client with HTTP version 1.0 to affect the client to increase the number of connections between the client and the server.
34. A system for optimizing connections, comprising:
a server storing an object that references a plurality of referenced objects; and
a domain assigner configured to determine a number of required connections for a client to request and receive the plurality of referenced objects, and further configured to select one of a plurality of versions of the object to influence the client to establish the number of required connections, wherein each of the plurality of versions of the object contains a particular number of domains to which the plurality of referenced objects are assigned.
35. The system of claim 34, wherein: the domain assigner is configured to select one of the plurality of versions of the object based on a load on the server.
36. The system of claim 34, wherein: the domain assigner is configured to select one of the plurality of versions of the object based on available bandwidth in a network between the client and the server.
37. The system of claim 34, wherein: the domain assigner is configured to select one of the plurality of versions of the object based on available bandwidth on the client.
38. The system of claim 34, wherein: the domain assigner is configured to select one of the plurality of versions of the object based on available bandwidth on the server.
39. The system of claim 34, wherein: the domain assigner is configured to select one of the plurality of versions of the object based on a priority of the client.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/937,929 | 2004-09-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
HK1132559A true HK1132559A (en) | 2010-02-26 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20060059246A1 (en) | System and method for connection optimization | |
US9608957B2 (en) | Request routing using network computing components | |
EP1552413B1 (en) | Method and system for providing on-demand content delivery for an origin server | |
US7861174B2 (en) | Method and system for assembling concurrently-generated content | |
US6813635B1 (en) | System and method for distributing load among redundant independent stateful world wide web server sites | |
JP4755590B2 (en) | Method, server system, and program for processing request asynchronously | |
US7647424B2 (en) | Multi-level redirection system | |
US7725536B2 (en) | Method and apparatus for limiting reuse of domain name system information | |
JP5162240B2 (en) | A technique for distributing individual contents via a real-time distribution network | |
US6351775B1 (en) | Loading balancing across servers in a computer network | |
US8171139B2 (en) | Hierarchical load balancing | |
WO2002080014A1 (en) | Assembling concurrently-generated personalized web pages | |
WO2001040954A1 (en) | System and method for directing a client to a content source | |
JP2012216230A (en) | Method and apparatus for pre-packetized caching for network server | |
US20030225859A1 (en) | Request mapping for load balancing | |
WO2002025463A1 (en) | Method and apparatus for dynamic determination of optimum connection of a client to content servers | |
WO2002021749A2 (en) | Providing a personalized web page by accessing different servers | |
CN1631018A (en) | Method and appartus to retrieve information in a network | |
HK1132559A (en) | System and method for connection optimization | |
US8756272B1 (en) | Processing encoded content | |
CN118827797A (en) | Scheduling method and related equipment | |
Zhao et al. | Dotslash: A scalable and efficient rescue system for handling web hotspots | |
EP1360598B1 (en) | Assembling concurrently-generated personalized web pages | |
Zhang | Clustering Techniques for Scalable Web Servers |