This application is related to U.S. patent application Ser. No. 10/147,619 filed May 16, 2002, now U.S. Pat. No. 7,246,101 entitled “KNOWLEDGE-BASED SYSTEM AND METHOD FOR RECONSTRUCTING CLIENT WEB PAGE ACCESSES FROM CAPTURED NETWORK PACKETS”, U.S. patent application Ser. No. 10/147,256 filed May 16, 2002, now U.S. Pat. No. 7,487,508 entitled “SYSTEM AND METHOD FOR RECONSTRUCTING CLIENT WEB PAGE ACCESSES FROM CAPTURED NETWORK PACKETS”, U.S. patent application Ser. No. 10/147,249 filed May 16, 2002, now U.S. Pat. No. 7,437,451 entitled “SYSTEM AND METHOD FOR COLLECTING DESIRED INFORMATION FOR NETWORK TRANSACTIONS AT THE KERNEL LEVEL”, and U.S. patent application Ser. No. 10/146,967 filed May 16, 2002, now U.S. Publication No. 2003/0221000 entitled “SYSTEM AND METHOD FOR MEASURING WEB SERVICE PERFORMANCE USING CAPTURED NETWORK PACKETS”, the disclosures of which are hereby incorporated herein by reference.
The present invention relates in general to client-server networks, and more specifically to a system and method for relating aborted client accesses of data to the client-perceived quality of service provided by a server.
Today, Internet services are delivering a large array of business, government, and personal services. Similarly, mission critical operations, related to scientific instrumentation, military operations, and health services, are making increasing use of the Internet for delivering information and distributed coordination. For example, many users are accessing the Internet seeking such services as personal shopping, airline reservations, rental car reservations, hotel reservations, on-line auctions, on-line banking, stock market trading, as well as many other services being offered via the Internet. Many companies are providing such services via the Internet, and are therefore beginning to compete in this forum. Accordingly, it is important for such service providers (sometimes referred to as “content providers”) to provide high-quality services.
One potential indicator of the quality of service provided by service providers is the number of aborted client accesses of a service. It has been recognized that aborted client accesses of a service may be indicative of the client-perceived quality of such service. For instance, if a client requests to access a service provided by a service provider and it takes several minutes for the service to be downloaded from the service provider to the client, the client may consider the quality of the service as being poor because of its long download time. In fact, the client may be too impatient to wait for the service to fully load and may therefore abort the client's access thereof. For example, the client may cause his/her network connection to the service provider to be aborted (and may attempt to obtain the service from another provider).
The Internet is a popular client-server network in which a service provider may desire information about its client-perceived quality of service (QoS). The Internet is a packet-switched network, which means that when information is sent across the Internet from one computer to another, the data is broken into small packets. A series of switches called routers send each packet across the network individually. After all of the packets arrive at the receiving computer, they are recombined into their original, unified form. TCP/IP is a protocol commonly used for communicating the packets of data. In TCP/IP, two protocols do the work of breaking the data into packets, routing the packets across the Internet, and then recombining them on the other end: 1) the Internet Protocol (IP), which routes the data, and 2) the Transmission Control Protocol (TCP), which breaks the data into packets and recombines them on the computer that receives the information. TCP/IP is well known in the existing art, and therefore is not described in further detail herein.
One popular part of the Internet is the World Wide Web (which may be referred to herein simply as the “web”). Computers (or “servers”) that provide information on the web are typically called “websites.” Services offered by service providers' websites are obtained by clients via the web by downloading web pages from such websites to a browser executing on the client. For example, a user may use a computer (e.g., personal computer, laptop computer, workstation, personal digital assistant, cellular telephone, or other processor-based device capable of accessing the Internet) to access the Internet (e.g., via a conventional modem, cable modem, Digital Subscriber Line (DSL) connection, or the like). A browser, such as NETSCAPE NAVIGATOR® developed by NETSCAPE, INC. or MICROSOFT INTERNET EXPLORER® developed by MICROSOFT CORPORATION, as examples, may be executing on the user's computer to enable a user to input information requesting to access a particular website and to output information (e.g., web pages) received from an accessed website.
In general, a web page is typically composed of a mark-up language file, such as a HyperText Mark-up Language (HTML), Extensible Mark-up Language (XML), Handheld Device Mark-up Language (HDML), or Wireless Mark-up Language (WML) file, and several embedded objects, such as images. A browser retrieves a web page by issuing a series of HyperText Transfer Protocol (HTTP) requests for all objects. As is well known, HTTP is the underlying protocol used by the World Wide Web. The HTTP requests can be sent through one persistent TCP connection or multiple concurrent connections. Thus, web page is generally a complex object having multiple embedded objects (e.g., images and/or JAVASCRIPTs, etc.) each of which the client's browser retrieves separately.
As described above, service providers often desire to have an understanding of their client-perceived QoS. Effectively monitoring and characterizing the service provider's QoS is important for evaluating and/or improving the web site performance and selecting the proper web site architecture for a service provider to implement. One way to measure the QoS of a web server is to measure the amount of aborted client accesses of web pages provided by the web server. For example, the number of aborted client accesses with a web server may provide an indication of the web server's QoS. The logic behind this is that if a web site is not fast enough a user will get impatient and hit the stop button of his/her browser, thus aborting the client's access thereof.
Thus, detection of aborted client accesses of a web page may provide some indication regarding the client-perceived QoS of a website. However, interpreting all aborted client accesses of a web page as being indicative of poor server QoS is problematic. User actions at the browser level can effectively interrupt the request/response exchange for fetching page objects at any time. These interrupting actions include, as examples, clicking the browser “stop” or “reload” buttons while a page is loading. As an example of a further interrupting action, a user may “quick click” on a hyperlink displayed before the page loads completely.
It should be recognized that not all aborted client accesses of a web page are indicative of poor QoS. For instance, a user may interrupt a page load for reasons other than the client perceiving the QoS as poor for the page. For example, the user may be familiar with the page that is loading and may quick click on a hyperlink (i.e., before the page fully loads) to efficiently navigate through the page, or the user may simply change his/her mind about retrieving the page for reasons other than poor QoS. Thus, only a subset of aborted client accesses of a web page may be relevant to a poor website QoS or poor network performance, while the other portion of aborted accesses may be relevant to client-specific browsing patterns.
According to one embodiment of the present invention, a method is provided for relating aborted client accesses of server information to the quality of service provided to clients by a server in a client-server network. The method comprises determining performance data for at least one aborted client access of information from a server in a client-server network, and using the performance data to determine whether the aborted client access(es) relate to the quality of service provided to a client by the server.
For a more complete understanding of the present invention, reference is now made to the following descriptions taken in conjunction with the accompanying drawing, in which:
As described above, service providers in a client-server network (e.g., website providers) often desire to have an understanding of their client-perceived quality of service (QoS). An indication of the client-perceived QoS may be obtained by evaluating the number of aborted client accesses of data (or “information”) on a server. For example, if a website does not download a requested web page fast enough to a client, the user may get impatient and hit the stop button of his/her browser, thus aborting the client's access of such web page. Generally, an aborted access comprises an aborted connection(s) (e.g., aborted network connection(s)) with the server. For instance, a client aborted access of a web page may comprise aborting the client's network connection(s) (e.g., TCP connection(s)) with the web server.
However, as discussed above, interpreting all aborted client accesses of data (e.g., web page) on a server as being indicative of poor server QoS is problematic because not all aborted client accesses are truly indicative of a server's QoS. For instance, a user may interrupt a web page load for reasons other than the client perceiving the page's QoS as poor. For example, the user may be familiar with the page loading and may quick click on a hyperlink (i.e., before the page fully loads) to efficiently navigate through the page, or the user may simply change his/her mind about retrieving the page for reasons other than poor QoS. Thus, only a subset of aborted client accesses of web pages may be relevant to poor website QoS or poor network performance, while the other portion of aborted web page accesses may be relevant to client-specific browsing patterns. Accordingly, a desire exists for a technique that enables determination of whether aborted client accesses of data (e.g., a web page) on a server are truly indicative of the server's QoS.
Various embodiments of the present invention are now described with reference to the above figures, wherein like reference numerals represent like parts throughout the several views. As described further below, embodiments of the present invention use performance data to determine whether an aborted client access of server information (e.g., a web page) is indicative of poor QoS. For example, it may be determined whether the server's response time exceeded a defined threshold amount in serving up a requested web page in order to determine whether the page access was likely aborted because of poor QoS. For instance, if the server's response time in serving up a requested web page exceeds a defined threshold time, then it may be determined that the aborted client access of such page is indicative of client-perceived poor QoS provided by the server. Thus, among the aborted client accesses of web pages from a server, the client accesses having a high response time from the server (i.e., the overall time observed by the client to retrieve the page and its embedded objects) that exceeds a defined threshold may be determined, and those aborted client accesses having a high response time may be identified as being indicative of client-perceived poor QoS.
Further, certain embodiments of the present invention utilize performance data for a client's access of server information (e.g., web page) to determine latency that is attributable to server-related performance issues and latency that is attributable to network-related performance issues. That is, for those client accesses of server information that are determined to have a high response time, two basic reasons leading to the poor performance may be determined: 1) server-related performance issues (e.g., high web server processing time for a web page due, for example, to server overload), and 2) network-related performance issues (e.g., high network transfer time for a web page due, for example, to network congestion and/or low bandwidth available to a client). Accordingly, in certain embodiments, it may be determined whether an aborted client access of server information had a high response time that is attributable to the server's performance, as opposed to the network's performance, from which a determination may be made as to whether such aborted access is indicative of poor QoS provided by the server. Thus, certain embodiments of the present invention are operable to distinguish whether the performance reasons (e.g., server overload or poor network latency) lead to the aborted client accesses of server information, or whether the aborted accesses are unrelated to the server's QoS but instead reflect client-specific browsing patterns.
Turning to
In a preferred embodiment, servers 101A-101D comprise web servers that are utilized to serve up web pages to clients A-C via communication network 103 in a manner as is well known in the art. Accordingly, system 100 of
In the example of
When a client clicks a hypertext link (or otherwise requests a URL) to retrieve a particular web page, the browser first establishes a TCP connection with the web server by sending a SYN packet (not shown in
First, client A makes an HTTP request 106A to server 101A for web page 102 (e.g., via client A's browser 105A). Such request may be in response to a user inputting the URL for web page 102 or in response to a user clicking on a hyperlink to web page 102, as examples. Server 101A receives the HTTP request 106A and sends HTML file 102A (e.g., file “index.html”) of web page 102 to client A via response 106B. HTML file 102A typically identifies the various objects embedded in web page 102, such as Object1 and Object2. Accordingly, upon receiving HTML file 102A, browser 105A requests the identified objects, Object1 and Object2, via requests 106C and 106E. Upon server 101A receiving the requests for such objects, it communicates each object individually to client A via responses 106D and 106F, respectively. As illustrated by the generic example of
Again, the above interactions are simplified to illustrate the general nature of requesting a web page, from which it should be recognized that each object of a web page is requested individually by the requesting client and is, in turn, communicated individually from the server to the requesting client. The above requests/responses 106 may each comprise multiple packets of data. Further, the HTTP requests can, in certain implementations, be sent from a client through one persistent TCP connection with server 101A, or, in other implementations, the requests may be sent through multiple concurrent connections. Server 101A may also be accessed by other clients, such as clients B and C of
One way to measure the QoS of a web server is to measure the number of aborted client accesses of web pages provided by the web server. As shown in the example of
As another example of an interrupting action, a user may activate “refresh” button 202 while the requested page is loading, causing the TCP connection with web server 101A to be aborted and a new connection established to reload the page. As an example of a further interrupting action, a user may “quick click” on a hyperlink, such as hyperlink 203, that is displayed before the requested page loads completely, thus causing the client's TCP connection for the originally requested page “www.CompanyA.com” to be aborted.
In view of the above, it should be recognized that not all aborted client accesses of a web page are indicative of poor QoS. For instance, a user may interrupt a page load for reasons other than the client perceiving the QoS being poor for the page. For example, the user may be familiar with the page loading and may quick click on a hyperlink (i.e., before the page fully loads) to efficiently navigate through the page, or the user may simply change his/her mind about retrieving the page for reasons other than poor QoS. Thus, only a subset of aborted client web page accesses may be relevant to poor website QoS or poor network performance, while the other portion of aborted accesses may be relevant to client-specific browsing patterns.
Various embodiments of the present invention relate aborted client accesses of server information (e.g., web page) to the server's QoS. That is, embodiments of the present invention enable a determination of whether an aborted client access of server information is indicative of poor server QoS. More specifically, embodiments of the present invention utilize performance data for an aborted client access of server information (e.g., web page) to determine whether such aborted access is likely related to poor server QoS.
Turning to
In block 303, a determination is made as to whether a client web page access comprises an aborted client transaction with the web server. That is, for the reconstructed web page accesses, those accesses that comprise at least one aborted transaction are identified. If a transaction of a web page access is aborted, then it is known that such web page access was aborted. As described further below, various techniques may be utilized for detecting the aborted client accesses of a web page.
If it is determined in block 303 that one or more of the reconstructed web page accesses have aborted transactions (meaning that one or more web page accesses were aborted), then operation advances to block 304 for at least such one or more aborted accesses. In operation block 304, performance data, such as server response time, is determined for at least the aborted accesses. Thereafter, in operational block 305, the determined performance data is used to determine whether each of the aborted accesses is attributable to poor server QoS. For instance, if the performance data for a given aborted web page access indicates that the server's response time was above a defined threshold, then it may be concluded in block 305 that the given aborted web page access is likely attributable to poor server QoS.
In this example embodiment, network packets collector module 401 is operable to collect network-level information that is utilized to reconstruct web page accesses. More specifically, in this example embodiment, network packets collector module 401 utilizes a tool to capture network packets, such as the publicly available UNIX tool known as “tcpdump” or the publicly available WINDOWS tool known as “WinDump.” The software tools “tcpdump” and “WinDump” are well-known and are commonly used in the networking arts for capturing network-level information for network “sniffer/analyzer” applications. Typically, such tools are used to capture network-level information for monitoring security on a computer network (e.g., to detect unauthorized intruders, or “hackers”, in a system). Of course, other tools now known or later developed for capturing network-level information, or at least the network-level information utilized by embodiments of the present invention, may be utilized in alternative embodiments of the present invention.
Network packets collector module 401 records the captured network-level information (e.g., network packets) to a Network Trace file 401A. This approach allows the Network Trace 401A to be processed in offline mode. For example, tcpdump may be utilized to capture many packets (e.g., a million packets) for a given period of time (e.g., over the course of a day), which may be compiled in the Network Trace 401A. Thereafter, such collected packets in the Network Trace 401A may be utilized by request-response reconstructor module 402 in the manner described further below. While this example embodiment utilizes a tool, such as tcpdump, to collect network information for offline processing, known programming techniques may be used, in alternative embodiments, to implement a real-time network collection tool. If such a real-time network collection tool is implemented in network packets collector module 401, the various other modules of
From the Network Trace 401A, request-response reconstructor module 402 reconstructs all TCP connections and extracts HTTP transactions (e.g., a request with the corresponding response) from the payload of the reconstructed TCP connections. More specifically, in one embodiment, request-response reconstructor module 402 rebuilds the TCP connections from the Network Trace 401A using the client IP addresses, client port numbers and the request (response) TCP sequence numbers. Within the payload of the rebuilt TCP connections, the HTTP transactions may be delimited as defined by the HTTP protocol. Meanwhile, the timestamps, sequence numbers and acknowledged sequence numbers may be recorded for the corresponding beginning or end of HTTP transactions. After reconstructing the HTTP transactions, request-response reconstructor module 402 may extract HTTP header lines from the transactions. The HTTP header lines are preferably extracted from the transactions because the payload does not contain any additional useful information for reconstructing web page accesses, but the payload requires approximately two orders of magnitude of additional storage space. The resulting outcome of extracting the HTTP header lines from the transactions is recorded to a Transaction Log 402A, which is described further below. That is, after obtaining the HTTP transactions, request-response reconstructor module 402 stores some HTTP header lines and other related information from Network Trace 401A in Transaction Log 402A for future processing (preferably excluding the redundant HTTP payload in order to minimize storage requirements).
A methodology for rebuilding HTTP transactions from TCP-level traces was proposed by Anja Feldmann in “BLT: Bi-Layer Tracing of HTTP and TCP/IP”, Proceedings of WWW-9, May 2000, the disclosure of which is hereby incorporated herein by reference. Balachander Krishnamurthy and Jennifer Rexford explain this mechanism in more detail and extend this solution to rebuild HTTP transactions for persistent connections in “Web Protocols and Practice: HTTP/1.1, Networking Protocols, Caching, and Traffic Measurement” pp. 511-522, Addison Wesley, 2001, the disclosure of which is also hereby incorporated herein by reference. Accordingly, in this example embodiment, request-response reconstructor module 402 uses such methodology for rebuilding HTTP transactions from TCP-level traces.
In an alternative embodiment, Transaction Log 402A may be generated in a kernel-level module implemented on the server as described in greater detail in U.S. patent application Ser. No. 10/147,249, now U.S. Pat. No. 7,437,451 titled “SYSTEM AND METHOD FOR COLLECTING DESIRED INFORMATION FOR NETWORK TRANSACTIONS AT THE KERNEL LEVEL,” the disclosure of which is hereby incorporated herein by reference. Such alternative embodiment may be desired because, for example, it enables information for transactions to be collected at the kernel level of a server (e.g., a web server), which may avoid rebuilding the transactions at the user level as in the methodology proposed by Anja Feldmann. Such alternative embodiment may enable greater computing efficiency in generating Transaction Log 402A because the transactions are not required to be reconstructed at the user level, and/or it may require less storage space because only the desired information for transactions may be communicated from the kernel level to the user level as opposed to the raw network information of Network Trace 401A being stored at the user level (which may include much more information than is desired for each transaction), as described further in the above-referenced U.S. Patent Application “SYSTEM AND METHOD FOR COLLECTING DESIRED INFORMATION FOR NETWORK TRANSACTIONS AT THE KERNEL LEVEL.”
Once Transaction Log 402A is generated (e.g., either from Network Trace 401A or from a kernel level module), the transactions thereof may be related to their corresponding client web page access. As described above, a web page is generally composed of one HTML file and some embedded objects, such as images or JAVASCRIPTS. When a client requests a particular web page, the client's browser should retrieve all the page-embedded images from a web server in order to display the requested page. The client browser retrieves each of these embedded images separately. As illustrated by the generic example of
Thus, once information about various individual HTTP transactions is collected in Transaction Log 402A, the next step in reconstructing a web page access is to relate the different individual HTTP transactions in the sessions corresponding to a particular web page access. That is, the various different HTTP transactions collected in Transaction Log 402A are related together as logical web pages. In the example embodiment of
After different request-response pairs (i.e., HTTP transactions) are grouped into web page retrieval sessions in Web Page Session Log 403A, performance analysis module 404 may be utilized in accordance with various embodiments of the present invention to relate the aborted client web page accesses to server QoS. For instance, performance analysis module 404 may, for each web page access of Web Page Session Log 403A, determine whether any transactions in such web page access were aborted. If the web page access includes aborted transaction(s), then such web page access is considered to be aborted. If the client's web page access was aborted, performance analysis module 404 may evaluate the response time for serving up the web page to the client that was encountered before the access was aborted. For example, the client-perceived end-to-end response time for a web page download before such web page download was aborted may be measured. If the response time is determined to be greater than a defined threshold, then it may be determined that the aborted client access of such web page is indicative of poor server QoS, as opposed, for example, to a client-specific browsing pattern.
It should be recognized that information acquired for client-server transactions (in Transaction Log 401A) may be used to relate aborted client web page accesses to server QoS. While Transaction Log 401A may comprise any desired network information in various implementations of alternative embodiments, Table 1 below describes in greater detail the format of an entry in HTTP Transaction Log 401A of a preferred embodiment of the present invention.
The first field provided in the example Transaction Log entry of Table 1 is the URL field, which stores the URL for the HTTP transaction (e.g., the URL for the object being communicated to the client in such transaction). The next field in the entry is the Referer field. As described above with
The next field provided in the example entry of Table 1 is the Content Type field, which identifies the type of content downloaded in the transaction, such as “text/html” or “image/jpeg”, as examples. The next field in the entry is Flow ID, which is a unique identifier to specify the TCP connection of this transaction. The next field in the entry is Source IP, which identifies the IP address of a client to which information is being downloaded in the transaction.
The next field in the example entry of Table 1 is the Request Length field, which identifies the number of bytes of the HTTP request of the transaction. Similarly, the Response Length field is included in the entry, which identifies the number of bytes of the HTTP response of the transaction. The Content Length field is also included, which identifies the number of bytes of the body of the HTTP response (e.g., the number of bytes of an object being downloaded to a client).
The next field in the example entry of Table 1 is the Request SYN timestamp, which is the timestamp of the SYN packet from the client. As described above, when a client clicks a hypertext link (or otherwise requests a URL) to retrieve a particular web page, the browser first establishes a TCP connection with the web server by sending a SYN packet. If the server is ready to process the request, it accepts the connection by sending back a second SYN packet acknowledging the client's SYN. Only after this connection is established can the true request for a web page be sent to the server. Accordingly, the Request SYN timestamp identifies when the first attempt to establish a connection occurred. This field may be used, for example, in determining the latency breakdown for a web page access to evaluate how long it took for the client to establish the connection with the server.
The next field in the entry is the Request Start timestamp, which is the timestamp for receipt of the first byte of the HTTP request of the transaction. Accordingly, this is the timestamp for the first byte of the HTTP request that is received once the TCP connection has been established with the server. The Request End timestamp is also included as a field in the entry, which is the timestamp for receipt of the last byte of the HTTP request of the transaction.
The next field in the entry is the Start of Response field, which identifies the timestamp when the first byte of the response is sent by the server to the client. The entry next includes an End of Response field, which identifies the timestamp when the last byte of the response is sent by the server to the client. The next field in the entry is ACK of Response timestamp, which is the timestamp of the ACK packet (acknowledge packet) from the client for the last byte of the HTTP response of the transaction. As an example, the Request Start timestamp, Request End timestamp, and ACK of Response timestamp fields may be used (e.g., by performance analysis module 403) in measuring the end-to-end performance perceived by the client for a web page access in certain implementations.
The next field in the example entry of Table 1 is the Response Status field, which is the HTTP response status code. For example, the response status code may be a “successful” indication (e.g., status code “200” in HTTP) or an “error” indication (e.g., status code “404” in HTTP). Typically, upon receiving a client's request for a web page (or object embedded therein), the web server provides a successful response (having status code “200”), which indicates that the web server has the requested file and is downloading it to the client, as requested. However, if the web server cannot find the requested file, it may generate an error response (having status code “404”), which indicates that the web server does not have the requested file.
The next field in the example entry of Table 1 is the Via field, which is typically set by a proxy of a client. If the client request is received by the server from a proxy, then typically proxies add their request field in the Via field. Thus, the Via field indicates that in fact its not the original client who requested this file, or who is making this request, but rather it is the proxy acting on behalf of the client.
The next field in the example entry of Table 1 is the Aborted field, which indicates whether the current transaction was aborted. For example, the Aborted field may indicate whether the client's TCP connection for such transaction was aborted. As described further below, various techniques may be used to detect whether the client's TCP connection with the server and the current transaction, in particular, is aborted.
The next field in the entry is the Resent Request Packets field, which provides the number of packets resent by the client in the transaction. The Resent Response Packet field is the final field in the entry, which provides the number of packets resent by the server in the transaction. These fields may provide information about the network status during the transaction. For instance, if it was necessary for the server to re-send multiple packets during the transaction, this may be a good indication that the network was very congested during the transaction.
As described in conjunction with
As an example of network-level information that may be captured and used to populate certain of the above fields of Table 1, consider the following example requests and responses (transaction) for retrieving “index.html” page with the embedded image “imgl.jpg” from a web server “www.hpl.hp.com”:
Transaction 1:
Transaction 2:
In the above example, the first request is for the HTML file index.html. The content-type field in the corresponding response shows that it is an HTML file (i.e., content type of “text/html”). Then, the next request is for the embedded image imgl.jpg. The request header field referer indicates that the image is embedded in index.html. The corresponding response shows that the content type for this second transaction is an image in jpeg format (i.e., content type of “image/jpeg”). It should be noted that both of the transactions above have a status “200” (or “OK”) returned, which indicates that they were successful.
To use aborted client accesses of a web page as indicators of poor QoS, it is first necessary to detect such aborted client accesses. In a preferred embodiment, a client web page access is considered to be aborted if at least one of the transactions comprising the client access is aborted. In other words, a client web page access is considered to be aborted if one of the TCP connections used to retrieve an object of the page is aborted. Preferably, upon detecting an aborted transaction of a client web page access, such aborted access is indicated in the corresponding transaction entry of Transaction Log 402A (e.g., in the Aborted field of the example transaction entry of Table 1 described above). Detection of aborted web page accesses can be performed in at least three different ways: 1) in software implemented on the client (e.g., in the client's browser), 2) in software implemented on the server, or 3) from the server-side logs.
The first approach for detecting aborted web page accesses involves modifications or annotation of the software executing on the clients, and considering the installed base of more than 100 million web browsers, such an implementation may require a significant number of updates to be made. The second approach is supported by some web servers and has been used in a study by Arlitt et al. See M. Arlitt and C. Williamson, “Web server workload characterization: the search for invariants” in Proceedings of the ACM SIGMETRICS '96 Conference, Philadelphia, Pa., May 1996, the disclosure of which is hereby incorporated herein by reference. One drawback with this approach, however, is that it is not supported on all web servers, such as APACHE, NETSCAPE LITE, and others.
The third approach extracts this information from the web access logs generated at the web server by 1) first estimating the real size of the document; and 2) if the number of transferred bytes is less than the real size it can either be that the document got modified or that the client actually aborted the access thereof. See L. Cherkasova and M. Karlsson, “Dynamics and Evolution of Web Sites: Analysis, Metrics and Design Issues”, Proceedings of the Sixth International Symposium on Computers and Communications (ISCC '01), Hammamet, Tunisia, Jul. 3-5, 2001, the disclosure of which is hereby incorporated herein by reference, in which a method is proposed to filter out the modifications from the aborted accesses relying on the assumption that modifications to a document generate one change in the transferred bytes followed by the same size for a time, while an aborted access manifests itself as a one-time change in the number of transferred bytes. However, this technique does not work very well for rarely accessed documents because, if the document is accessed only once or twice, there is not enough information to derive a real document size and to identify the aborted client accesses based on this.
In a preferred embodiment of the present invention, aborted client accesses of server information (e.g., web page) are detected using network packet level information collected on the web server side of the client-server network. More specifically, a preferred embodiment uses two basic observations available from the TCP/IP packets to detect aborted web page accesses: 1) a RST packet sent by the HTTP client to a sever that explicitly indicates the aborted connection, and 2) a FIN packet with ACK sent by an HTTP client to a server where the acknowledged sequence number is less than the observed maximum sequence number sent from the server. If either of the above situations are detected for a TCP connection, then it is determined that the client's TCP connection with the server (and the current transaction, in particular) was aborted by the client. This technique for detecting aborted transactions is preferably implemented in operational block 303 of
Once an aborted client access of server information is detected, performance data for such aborted access may be used in determining whether it is reflective of poor server QoS. For example, the client-perceived response time for a requested web page prior to the access of such web page being aborted may be determined. And, if such response time is greater than a defined threshold, it may be determined that the aborted page access is likely attributable to poor server QoS. Currently, most website providers set a target client-perceived end-to-end time of less than six seconds for their web pages. That is, website providers typically like to provide their requested web pages to a client in less than six seconds from the time the client requests the page. Accordingly, the defined threshold against which the response time may be compared to determine whether an aborted page access is attributable to poor server QoS may be implemented as six seconds. Of course, any other suitable threshold above which a server's response time may be considered as poor may be used in relating aborted client accesses of server information (e.g., a web page) to poor server QoS.
Further, in a preferred embodiment, the performance data for aborted client web page accesses enables a determination of latency in the response time that is attributable to the server (e.g., server processing time) and the latency that is attributable to the network due, for example, to network congestion. That is, performance data for a client's access of a web page provided by a server may be utilized to determine latency that is attributable to server-related performance issues, such as high server processing time due, for example, to server overload (e.g., too many processes running on the server), as well as latency that is attributable to network-related performance issues (e.g., high network transfer time for a web page due, for example, to network congestion and/or low bandwidth available to a client). Accordingly, a preferred embodiment is operable to determine whether an aborted client access of server information had a high response time that is attributable to the server's performance, as opposed to the network's performance. Therefore, a preferred embodiment may determine whether such aborted access is indicative of poor QoS provided by the server. For instance, if an aborted client access of a web page had a high response time that is mostly attributable to network latency, then such aborted access may be determined to not be related to poor server QoS. However, if an aborted web page access had a high response time that is mostly attributable to server latency, then such aborted access may be determined to be related to poor server QoS.
The performance data used for determining whether an aborted client access of server information (e.g., a web page) is related to poor server QoS in a preferred embodiment is now described in greater detail. More specifically, a preferred embodiment for determining whether an aborted web page access is related to poor server QoS is described in conjunction with the example flow diagram of
As described above, when a client clicks a hypertext link to retrieve an HTML file, the browser first establishes a TCP connection with the web server by sending a SYN packet. If the server is ready to process the request, it accepts the connection by acknowledgment of the client's SYN. The exchange of the SYN packets is the beginning of a connection. Then, the browser begins to send an HTTP request for the HTML file through the TCP connection. For each request (related to the web page), we are concerned about the timestamps for the first byte and the last byte of the request since they delimit the request transfer time and the beginning of server processing. Similarly, we are also concerned about the timestamps of the beginning and the end of the HTTP response. Besides, the timestamp of the acknowledgment packet for the last byte of the response explicitly indicates that the browser has received the entire response.
A preferred embodiment uses the following functions to denote the critical timestamps for connection conn and request r:
Additionally, for a web page P, we have the following variables:
the requests for the objects retrieved through the connection connk (k=1, . . . , N), and ordered according to the time when they were received, i.e.,
The extended version of HTTP 1.0 and later version HTTP 1.1 introduce the concept of persistent connections and pipelining. See R T. Fielding, J. Gettys, J. Mogul, H. Nielsen, and T. Berners-Lee, “Hypertext Transfer Protocol—HTTP/1.1”, RFC 2068, IETF, January 1997 (available at http://www.w3.org/Protocols/rfc2068/rfc2068). Persistent connections enable reuse of a single TCP connection for multiple object retrievals from the same IP address (typically embedded objects of a web page). Pipelining allows a client to make a series of requests on a persistent connection without waiting for the previous response to complete (the server, however, returns the responses in the same order as the requests are sent).
As shown in
to belong to the same pipelining group (denoted as
if for any j such that
Thus for all the requests on the same connection connk:
we define the maximum pipelining groups in such a way that they do not intersect, e.g.,
In operational block 502, the main latency components are determined for each pipelining group. That is, for each of the pipelining groups, three portions of response time are defined in a preferred embodiment: 1) total response time (Total), 2) network-related portion (Network), and 3) lower-bound estimate of the server processing time (Server).
Let us consider the following example. For convenience, let us denote
then
Server(PipeGr1)=Total(PipeGr1)−Network(PipeGr1).
If no pipelining exists, the pipelining groups consist of one request only. In this case, the computed server time represents precisely the server processing time for a given request-response pair (or transaction). In a preferred embodiment, we choose to account as server processing time only the server time that is explicitly exposed on the connection. If a connection adopts pipelining, the “real” server processing time might be larger than the computed server time because it can partially overlap with the network transfer time, and it is difficult to estimate the exact server processing time from the packet-level information. However, we are still interested to estimate the “non-overlapping” server processing time as this is the portion of the server time on a critical path of overall end-to-end response time. Thus, we use, as an estimate, the lower-bound server processing time, which is explicitly exposed in the overall end-to-end response.
Next, the connection setup time for each connection is determined. For instance, the client-perceived end-to-end time for retrieving a web page may include a certain amount of setup time for establishing the TCP connection with the server. In a preferred embodiment, if connection connk is a newly established connection to retrieve a web page, we observe additional connection setup time:
Otherwise the setup time is 0, as it is already established. Additionally, we define tstart(connk)=tsyn(connk) for a newly established connection, otherwise,
For each connection, the total time, as well as the portion of the total time that is attributable to server latency and the portion that is attributable to network latency, is computed, in operational block 503. For example, in a preferred embodiment, we define the latency breakdown for a given connection connk as:
In operational block 504, the response time is determined for a given page “P” that is accessed via client connection(s) under consideration, which may comprise multiple concurrent connections). In operational block 505, the portion of the response time that is attributable to server latency and the portion that is attributable to network latency are determined. The latencies for a given page P may be defined in a preferred embodiment as:
The functions CumNetwork(P) and CumServer(P) above give the sum of all the network-related and server processing portions of the response time over all connections used to retrieve the web page.
Now the response time may be evaluated to determine whether an aborted web page access is likely attributable to poor server QoS. In operational block 506 of
The subset Πbad of all aborted pages II are the pages that might be reflective of poor server QoS. The rest of the pages from Π are determined to be aborted due to client browsing patterns rather than poor server QoS experienced by the client.
A preferred embodiment next distinguishes the reasons leading to a poor response time. For example, a preferred embodiment may determine whether a poor response time is due to network-related performance problems (e.g., high network latency), or server-related performance problems (e.g., high server latency), or both. Thus, if it is determined in block 506 that the total response time for an aborted web page access is greater than a defined threshold, operation advances to block 507 whereat a determination is made as to whether the high response time is attributable to server related performance problems. For this purpose, we introduce the following page service time ratio, which is used in a preferred embodiment: PageServiceRatio(P)=CumNetwork(P)/CumServer(P).
If the PageServiceRatio(P)≧1, then it is determined in a preferred embodiment that the high response time is due to network related performance problems (e.g., high network latency due, for example, to network congestion). If, on the other hand, PageServiceRatio(P)≦1, then it is determined in a preferred embodiment that the high response time is due to server related performance problems (e.g., high server latency due, for example, to server overload). If it is determined in operational block 507 that the high response time is due to server related performance problems, then it is determined in block 508 that the aborted web page access under evaluation is attributable to poor server QoS.
To exemplify how a preferred embodiment of the present invention may be used to characterize the reasons leading to aborted web pages, we analyzed the aborted web pages from the Hewlett Packard (HP) Labs website. The most frequently accessed web page in our study was index.html. Below we describe the recognized performance analysis corresponding to aborted downloads of this page. Our collected data covered a time interval of almost 3 days from 17:08:43 on Aug. 7, 2001 (Wednesday) to 16:15:50 on Aug. 10, 2001 (Saturday). From the total number of requests (i.e., 4,028) to this page during the studied time interval, the aborted pages account for 662 requests, which is 16.4% of the total. The average page size is 43,892 bytes (that is the sum of all embedded images and the index.html page).
In this study, the average end-to-end response time observed by clients when downloading the web page was 3.978 seconds, while the average end-to-end response time observed by the clients of the aborted web pages was 9.21 seconds.
Then, in our analysis of this study, we sorted all of the accesses of the “index.html” page and all of the aborted accesses to the “index.html” page by their respective end-to-end response time in increasing order, and for each given latency, we computed the cumulative percentage of the web page requests having a response time below the given latency.
It should be recognized that
We next distinguished the reasons leading to a poor response time (for the 32% of the aborted accesses having a high response time): whether it is due to network latency, server latency, or both. For this purpose, we check the page service time ratio, as defined above. In our study, all of the aborted pages with high response time had PageServiceRatio(P)≧1, i.e. the high response time was due to network related performance problems. Accordingly, while 16.4% of the total client accesses were aborted, it is determined in this study that such aborted connections are not indicative of poor web server QoS. Thus, as this example illustrates, embodiments of the present invention provide a technique for relating aborted client accesses of server information (e.g., a web page) to the server's QoS to more accurately analyze the true client-perceived QoS of a server.
When implemented via computer-executable instructions, various elements of the present invention, such as modules 401-404 of
Computer system 900 also preferably includes random access memory (RAM) 903, which may be SRAM, DRAM, SDRAM, or the like. Computer system 900 may utilize RAM 903 to store the Network Trace 401A, Transaction Log 402A, and/or Web Page Session Log 403A, as examples. Computer system 900 preferably includes read-only memory (ROM) 904 which may be PROM, EPROM, EEPROM, or the like. RAM 903 and ROM 904 hold user and system data and programs as is well known in the art.
Computer system 900 also preferably includes input/output (I/O) adapter 905, communications adapter 911, user interface adapter 908, and display adapter 909. I/O adapter 905 and/or user interface adapter 908 may, in certain embodiments, enable a user to interact with computer system 900 in order to input information (e.g., for specifying a response time threshold used for determining whether an aborted client access of server information is related to poor server QoS).
I/O adapter 905 preferably connects to storage device(s) 906, such as one or more of hard drive, compact disc (CD) drive, floppy disk drive, tape drive, etc. to computer system 900. The storage devices may be utilized when RAM 903 is insufficient for the memory requirements associated with storing data for reconstructing web page accesses. Communications adapter 911 is preferably adapted to couple computer system 900 to network 103. User interface adapter 908 couples user input devices, such as keyboard 913, pointing device 907, and microphone 914 and/or output devices, such as speaker(s) 915 to computer system 900. Display adapter 909 is driven by CPU 901 to control the display on display device 910.
It shall be appreciated that the present invention is not limited to the architecture of system 900. For example, any suitable processor-based device may be utilized, including without limitation personal computers, laptop computers, computer workstations, and multi-processor servers. Moreover, embodiments of the present invention may be implemented on application specific integrated circuits (ASICs) or very large scale integrated (VLSI) circuits. In fact, persons of ordinary skill in the art may utilize any number of suitable structures capable of executing logical operations according to the embodiments of the present invention.
Number | Name | Date | Kind |
---|---|---|---|
5819301 | Rowe et al. | Oct 1998 | A |
6272598 | Arlitt et al. | Aug 2001 | B1 |
6330602 | Law et al. | Dec 2001 | B1 |
6338059 | Fields et al. | Jan 2002 | B1 |
6377944 | Busey et al. | Apr 2002 | B1 |
6389462 | Cohen et al. | May 2002 | B1 |
6484143 | Swildens et al. | Nov 2002 | B1 |
6535913 | Mittal et al. | Mar 2003 | B2 |
6549941 | Jaquith et al. | Apr 2003 | B1 |
6560639 | Dan et al. | May 2003 | B1 |
6594260 | Aviani et al. | Jul 2003 | B1 |
6636972 | Ptacek et al. | Oct 2003 | B1 |
6675218 | Mahler et al. | Jan 2004 | B1 |
6728885 | Taylor et al. | Apr 2004 | B1 |
6763342 | Mattern et al. | Jul 2004 | B1 |
6807156 | Veres et al. | Oct 2004 | B1 |
6871284 | Cooper et al. | Mar 2005 | B2 |
6901051 | Hou et al. | May 2005 | B1 |
6901553 | Hayashi et al. | May 2005 | B1 |
6934740 | Lawande et al. | Aug 2005 | B1 |
6934761 | Curtis | Aug 2005 | B1 |
6938202 | Matsubayashi et al. | Aug 2005 | B1 |
7246101 | Fu | Jul 2007 | B2 |
7437451 | Tang | Oct 2008 | B2 |
7487508 | Fu | Feb 2009 | B2 |
20010027483 | Gupta et al. | Oct 2001 | A1 |
20020032854 | Chen et al. | Mar 2002 | A1 |
20020046284 | Brabson et al. | Apr 2002 | A1 |
20020120727 | Curley et al. | Aug 2002 | A1 |
20030005122 | Freimuth et al. | Jan 2003 | A1 |
20030028662 | Rowley et al. | Feb 2003 | A1 |
20030028674 | Boden | Feb 2003 | A1 |
20030110394 | Sharp et al. | Jun 2003 | A1 |
20030217117 | Dan et al. | Nov 2003 | A1 |
20030221000 | Cherkasova | Nov 2003 | A1 |
20080183664 | Cancel et al. | Jul 2008 | A1 |
Entry |
---|
“Candle Corporation eBusiness”; printed from Website http://www.candle.com—10 pages. |
“Cisco DistributedDirector”; printed from Website http//www.cisco.com—20 pages. |
Feldmann, Anja, “BLT: Bi-Layer Tracing of HTTP and TCP/IP”, AT&T Labs—Research, Florham Park, NJ,—12 pages. |
“IBM Corporation, Tivoli Web Management Solutions”; printed from Website http://www.tivoli.com—5 pages. |
“JavaServlet Technology”; printed from Website http://java.sun.com—14 pages. |
“Javaserver Pages White Paper”; printed from Website http://java.sun.com—8 pages. |
“Keynote Systems, Inc.”; printed from Website http://www.keynote.com—4 pages. |
Krishnamurthy, Balachander, et al.; “Web Protocols and Practice: HTTP/1.1, Networking Protocols, Caching, and Traffic Measurement”, pp. 511-522, Addison Wesley, 2001. |
NetMechanic, Inc.; printed from Website http://www.netemechanics.com—2 pages. |
Porivo Technologies, Inc.; printed from Website http://www.porivo.com—5 pages. |
Rajamony, Ramakrishnan et al., Measuring Client-Perceived Response Times on the WWW; proceedings of the Third USENIX Symposium on Internet Technologies and Systems, Mar. 2001—12 pages. |
Seshan, Srinivasan, et al., “SPAND: Shared Passive Network Performance Discovery”, USENIX Symposium on Internet Technologies and Systems, 1997, 6 pages. |
Stemm, Mark, et al., “A Network Measurement Architecture for Adaptice Applications”, USENIX Symposium on Internet Technologies and Systems, 1997—10 pages. |
Software Research, Inc.; printed from Website http://www.soft.com—2 pages. |
TCPDUMP, printed from Website http://www.tcpdump.org—3 pages. |
Smith, F. Donelson, et al., “What TCP/IP Protocol Headers Can Tell Us About the Web”, Proceedings of ACM Sigmetrics 2001//Performance 2001, Jun. 2001—12 pages. |
RFC2616; printed from Internet RFC/STD/FYI/BCO Archives. |
Ramakrishnan Rajamony et al.; “Measuring Client-Perceived Response Times on the WWW”; proceedings of the Third USENIX Symposium on Internet Technologies and Systems; Mar. 2001; 12 pages. |
Srinivasan Seshan et al., “SPAND: Shared Passive Network Performance Discovery”; USENIX Symposium on Internet Technology and Systems; 1997; 13 pages. |
Mark Stemm et al., “A Network Measurement Architecture for Adaptive Applications”, INFOCOM 2000. Nineteenth Annual Joint Conference of the IEEE Computer and Communications Societies. Proceedings. IEEE; Mar. 2000; 10 pages. |
F. Donelson Smith et al., “What TCP/IP Protocol Headers Can Tell Us About the Web”, Proceedings of ACM Sigmetrics 2001/Performance 2001; Jun. 2001; 12 pages. |
Number | Date | Country | |
---|---|---|---|
20050076111 A1 | Apr 2005 | US |