CUSTOMIZING WEB CONTENT BASED ON NETWORK CONDITIONS
BACKGROUND OF THE INVENTION
A. FIELD OF THE INVENTION
This invention relates to the field of computer networks, and more specifically to the efficient transport of electronic material such as web page contents based on network conditions. Portions of this patent document may contain material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office file or records, but otherwise reserves all copyright rights whatsoever.
Sun, Sun Microsystems, the Sun logo, Solaris, "Write Once, Run Anywhere", Java, JavaOS, JavaStation and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. All SPARC trademarks are used under license and are trademarks of SPARC International, Inc. in the United States and other countries. Products bearing SPARC trademarks are based upon an architecture developed by Sun Microsystems, Inc.
B. BACKGROUND ART
The Internet is a networked computer environment comprised of a number of interconnected computer systems that provide a user with world wide access to electronic information. Typically, this information is included in electronically created files (such as HTML documents) known as "web pages"
that can be understood by a user computer. The user computer can then display the electronic content of the web page in form of text, graphics or a combination of the two forms. The recent trend in creation of web pages has been towards more graphical and animated presentations. Inclusion of graphic and animation content in a web page substantially increases its size. As a result, to download and display a web page a large volume of information is transported through the communication channels established between a user computer and the server where the web page resides. Transmission of large volumes of data can overly congest a computer network and result in data loss and /or undesirably low transmission rates.
Additionally, many older generation computers or new generation devices that have limited resources fail to efficiently process and display web pages with high graphic content. This inefficiency results in frustrated and dissatisfied users. The efficient transport of large volumes of data in a network environment is dependent upon several factors including: the volume of data transferred, the data transfer rate, and the network throughput (i.e., maximum volume of data that can be processed by a computer or its peripherals in a unit of time). Currently there is no method available that can automatically detect and adjust the transfer content or rate of data based on the above factors. A method is needed that can automatically customize the content and the transfer rate of data included in a web page based on the above-referenced network conditions.
The above problems can be better understood from a review of a general description of a network environment, the Internet, and network communication protocols.
Networks
In modern computing environments, it is common to employ multiple computers or workstations linked together in a network to communicate between, and share data with, network users. A network provides the users with various services such as electronic mail and file sharing. It may also include resources, such as printers, modems, and file servers. A modem, for example, provides the means to access and download web page contents via telecommunication channels onto the user computer.
A network can be a small system that is physically connected by cables or via wireless communication (a local area network or "LAN"). Alternatively, several separate networks can be connected together to form a larger network (a wide area network or "WAN"). Other types of networks include the Internet, telcom networks, intranets, extranets, wireless networks, and other networks over which electronic, digital and /or analog data may be communicated.
The Internet
The Internet is a client /server system that includes a worldwide network of interconnected computers. A "client" is the computer that is used to access the Internet. An Internet client accesses a computer on the network ("server") via
an Internet provider. An Internet provider is an organization that provides a client with access to the Internet (via analog telephone line or Integrated Services Digital Network line, for example). A client can, for example, download a file from or send an electronic mail message to another computer /client using the Internet. A client or server may also access the Internet to retrieve information that are included in web pages.
Typically, when a user logs onto the Internet, using a client computer, the user views web pages that are stored on a remote server. Information including data files, and web pages are often transferred between the client and the server. To view a web page special software, such as a browser is used. The browser software, or browser, is a user-friendly interface that simplifies access to the Internet. A browser allows a client to communicate a request without having to learn a complicated command syntax, for example. A browser typically provides a graphical user interface (GUI) for displaying information and receiving input. Examples of browsers currently available include Netscape Navigator and Internet Explorer.
A browser displays information to a client or user as pages or documents. A software language such as the Hypertext Markup Language (HTML) is used to define the format for a page to be displayed in the browser. A web page is transmitted to a client as an HTML document, for example. The browser executing at the client parses the document and produces and displays a web page based on the information in the HTML document. Consequently, the HTML document defines the web page that is rendered at runtime on the browser.
Depending on the type of information displayed or transferred (e.g., text, audio, video, etc.), the server or client may have to evaluate the information prior to processing. The processing time can be prolonged when it involves large volumes of data. Further, the transfer of information may be interrupted or the information may be corrupted if the volume of data is so large that it cannot be processed as it is received.
One method for transferring data may be more efficient than another method depending on the type and the volume of data being transferred. For example, an older generation computer may be able to process text information more efficiently than graphics. Therefore, it would be beneficial if the information transported to that computer are in text format only. Current processing and data transfer methods fail to automatically customize the transferred information or the method and rate of transfer to avoid the above- mentioned problems. A method is needed that can automatically determine the most efficient manner of information transfer, by evaluating the system and network conditions prior to data transmission.
Network Communication /Data Transfer
Information servers maintain information that are transferable through the Internet. They also process a client request to access that information. This information may be accessed and displayed in various forms. A common way of displaying and providing access to information on the Internet is to include
the information in a web page. To enable the computers on a network to communicate with each other, a set of standardized rules for exchanging the information between the computers, referred to as a "protocol" is utilized.
Communication protocols generally specify the data format, timing, sequencing, and error checking of data transmissions. Various communication protocols are used in the networking environment. For example, one communication protocol is referred to as the transmission control protocol /Internet protocol ("TCP/IP"). The TCP/IP communication protocol includes a set of communication protocols used on the Internet and on many multiplatform networks.
The TCP/IP protocol family is made up of numerous individual protocols (e.g., file transfer protocol ("FTP"), transmission control protocol ("TCP"), and network terminal protocol ("TELNET")). The TCP protocol is responsible for breaking up a message to be transmitted and including it in packets of manageable size, reassembling the packets at the receiving end, retransmitting any packets that get lost (i.e., are not delivered), and reordering the data included in the packets in the appropriate format. A "packet" is an encapsulated form of data or information (also referred to as a "datagram") that is transferred or passed across the Internet according to the communication protocol standards. A packet contains a source and destination address along with the information intended for transmission.
The TCP transfer protocol is often utilized to transmit large amounts of information because of its ability to break up information into packets and to reassemble the information at the receiving end. Other communication protocols manage other functional aspects of information communication, and thus operate on a higher level than the TCP/IP protocol. These higher level protocols utilize TCP/IP as the underlying means for communication of information.
To transfer information, a higher level protocol defines a set of commands that one machine sends to another (e.g., commands to specify who the sender of the message is, who it is being sent to, and the text of the message) encapsulated in a series of packets encoded according to the specifications of that communication protocol. Those packets in turn are broken up, as needed, and encapsulated in TCP/IP packets so that they are transmitted to a destination on the network, via the TCP/IP protocol.
The TCP/IP and other currently available communication protocols transport the data at a certain rate and resubmit any undelivered packets without taking into consideration network conditions that may have caused the failure in delivery. A method is needed to anticipate and /or detect the network conditions prior to data communication, and adjust or customize the rate and the content of transmission for better and more efficient results.
SUMMARY OF THE INVENTION
A method and apparatus for the customized transport of electronic material in a networked environment based on network conditions is described. With the advent of the Internet technology more and more devices, including personal computers, electronic organizers, etc., are designed and used to access the information provided on the Internet.
In one or more embodiments of the invention, once a user establishes a connection with a network server to access the information available thereon, the server computer identifies the device used by the user and customizes the transmission rate and content for that device based on information that is either already available or that is acquired at the time the connection is established. For example, if the server determines that the client is using a device with limited display resources (e.g., a device that can only display text) it then generates or customizes display data that are compatible with the device (e.g., text data is transferred only).
In one or more embodiments of the invention, data transmission is customized based on network conditions. Network conditions determine the network throughput indicating the volume of information that can be successfully processed at a given time. Various schemes are used to ascertain the most suitable data transfer scheme for a device. For example, in one embodiment, the server keeps track of the amount of time required for a request to be processed in the network, and adjusts the data transfer rate so that more data is transported when the network conditions justify such adjustment.
BRIEF DESCRIPTION OF THE DRAWINGS
Figure 1 is a block diagram illustrating the components of a general purpose computer, according to one or more embodiments of the invention.
Figure 2 is a block diagram of a network environment, according to one or more embodiments of the invention.
Figure 3 is a flow diagram illustrating the manner in which information transmitted to a network client is customized, according to one or more embodiments of the invention.
Figure 4 is a flow diagram illustrating step 320 of Figure 3 in further detail, according to one or more embodiments of the invention.
Figure 5 is a flow diagram illustrating in further detail how data transmission is customized, according to one or more embodiments of the invention.
DETAILED DESCRIPTION OF THE INVENTION The invention provides a method and apparatus for the customized transport of electronic material in a computer network, based on network conditions and system limitations. In the following description, numerous specific details are set forth in order to provide a more thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without these specific details. However, in order not to unnecessarily obscure the invention, all various implementations or alternate embodiments including well-known features of the invention may have not been described in detail herein.
EMBODIMENT OF COMPUTER EXECUTION ENVIRONMENT (HARDWARE)
An embodiment of the invention can be implemented as computer software in the form of computer readable code executed on a general purpose computer such as computer 100 illustrated in Figure 1, or in the form of bytecode class files executable within a Java™ runtime environment running on such a computer, or in the form of bytecodes running on a processor (or devices enabled to process bytecodes) existing in a distributed environment (e.g., one or more processors on a network). A keyboard 110 and mouse 111 are coupled to a system bus 118. The keyboard and mouse are for introducing user input to the computer system and communicating that user input to processor 113. Other suitable input devices may be used in addition to, or in place of, the mouse 111 and keyboard 110. I/O (input /output) unit 119 coupled to system bus 118 represents such I/O elements as a printer, A/V (audio/video) I/O, etc.
Computer 100 includes a video memory 114, main memory 115 and mass storage 112, all coupled to system bus 118 along with keyboard 110, mouse 111 and processor 113. The mass storage 112 may include both fixed and removable media, such as magnetic, optical or magnetic optical storage systems or any other available mass storage technology. Bus 118 may contain, for example, thirty-two address lines for addressing video memory 114 or main memory 115. The system bus 118 also includes, for example, a 64-bit data bus for transferring data between and among the components, such as processor 113, main memory 115, video memory 114 and mass storage 112. Alternatively, multiplex data/address lines may be used instead of separate data and address lines.
In one embodiment of the invention, the processor 113 is a microprocessor manufactured by Sun Microsystems, Inc., such as the SPARC™ microprocessor, or a microprocessor manufactured by Motorola, such as the 680X0 processor, or a microprocessor manufactured by Intel, such as the 80X86, or Pentium processor. However, any other suitable microprocessor or microcomputer may be utilized. Main memory 115 is comprised of dynamic random access memory (DRAM). Video memory 114 is a dual-ported video random access memory. One port of the video memory 114 is coupled to video amplifier 116. The video amplifier 116 is used to drive the cathode ray tube
(CRT) raster monitor 117. Video amplifier 116 is well known in the art and may be implemented by any suitable apparatus. This circuitry converts pixel data stored in video memory 114 to a raster signal suitable for use by monitor 117. Monitor 117 is a type of monitor suitable for displaying graphic images.
Computer 100 may also include a communication interface 120 coupled to bus 118. Communication interface 120 provides a two-way data communication coupling via a network link 121 to a local network 122. For example, if communication interface 120 is an integrated services digital network (ISDN) card or a modem, communication interface 120 provides a data communication connection to the corresponding type of telephone line, which comprises part of network link 121. If communication interface 120 is a local area network (LAN) card, communication interface 120 provides a data communication connection via network link 121 to a compatible LAN. Wireless links are also possible. In any such implementation, communication interface 120 sends and receives electrical, electromagnetic or optical signals which carry digital data streams representing various types of information.
Network link 121 typically provides data communication through one or more networks to other data devices. For example, network link 121 may provide a connection through local network 122 to local server computer 123 or to data equipment operated by an Internet Service Provider (ISP) 124. ISP 124 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the "Internet" 125. Local network 122 and Internet 125 both use electrical, electromagnetic or optical signals which carry digital data streams. The signals through the various networks and the signals on network link 121 and through communication interface 120, which carry the digital data to and from computer 100, are exemplary forms of carrier waves transporting the information.
Computer 100 can send messages and receive data, including program code, through the network(s), network link 121, and communication interface 120. In the Internet example, remote server computer 126 might transmit a requested code for an application program through Internet 125, ISP 124, local network 122 and communication interface 120. In accord with the invention one such downloaded application is the method an apparatus for customizing web page content based on network conditions, as described herein.
The received code may be executed by processor 113 as it is received, and/or stored in mass storage 112, or other non-volatile storage for later execution. In this manner, computer 100 may obtain application code in the form of a carrier wave.
Application code may be embodied in any form of computer program product. A computer program product comprises a medium configured to store or transport computer readable code, or in which computer readable code may be embedded. Some examples of computer program products are CD-ROM disks, ROM cards, floppy disks, magnetic tapes, computer hard drives, servers on a network, and carrier waves.
The computer systems described above are for purposes of example only. An embodiment of the invention may be implemented in any type of computer system or programming or processing environment.
CUSTOMIZING DATA CONTENT AND DATA TRANSMISSION RATE
Embodiments of the invention implement a method configured to customize the transport of electronic material, such as web page contents, in a networked environment. Figure 2 is a block diagram of a network environment, according to one or more embodiments of the invention, wherein network server 210 communicates with clients 220 through 260, via Internet connection 205. Clients 220 through 260 can access electronic material contained in electronically created Internet documents, such as web page 215, by logging onto the network server and referencing the specific addresses (e.g., uniform resource locators or URLs) that correspond to said documents.
In one or more embodiments of the invention, network server 210 identifies a client requesting access to information contained in web page 215, and customizes the transmission rate and the content of the information provided to the client based on the identity of the client. The identity of a client and the manner of customization can be determined based on information that is already available from previous login files (270) or from information that is acquired at the time the connection between the client and network server 210 is established.
Referring to Figure 2, consider clients 220, 230, and 240 requesting to access information on web page 215 on network server 210 through Internet connection 205. Client 220 can be a personal computer, client 230 can be a server computer in a local network, and client 240 can be a personal organizer device with Internet connection capabilities, for example. Each of these clients can have
limitations in their ability to process information that is transferred to them from web page 215.
For example, client 220 can be an older generation computer with limited memory and processing resources. These limitations may prohibit client 220 from processing highly graphic contents. Client 230 can be a computer with a bad or a slow Internet connection, for example. As a result it may fail to receive and process information at the rate it is transmitted by network server 210. Client 240 can be a device that supports black and white graphics only, for example, and therefore unable to process color images. In embodiments of the invention, network server 210 recognizes the limitations of each client, and customizes the content of web page 215, prior to transmission, to accommodate each client with the necessary information in the most suitable format.
Figure 3 is a flow diagram illustrating the manner in which information transmitted to a client is customized, according to one or more embodiments of the invention. At step 310, network server 210 establishes a connection with a client requesting access to web page 215, via Internet connection 205. At step 320, network server 210 identifies the client's limitations or requirements and determines the network conditions for the established connection between server 210 and the client.
Figure 4 is a flow diagram illustrating step 320 in further detail, according to one or more embodiments of the invention. Referring to Figure 4, at step 410 the client is identified. The identification of a client enables network server 210 to determine how to customize the content of web page 215 for that client. Thus,
the identification information includes information about a client's requirements and limitations.
For example, this information can indicate whether the client can support the display of colored images, or highly graphic content. This information can be obtained either at the time the connection is established, for example, if the client is a first time subscriber. Alternatively, network server 210 can identify a client's requirements and limitations by referencing a database or log that contains the needed information based on previous connections and transmission activities.
At step 420, the network throughput between the client and network server 210 is determined. Network throughput is an indication of the rate of data transmission to the client. This information helps network server 210 to evaluate the data delivery success rate and to adjust the rate of transmission on that basis. Because of technological limitations, not all data transmitted is received at the target destination. For example, data may get lost or delivered to the wrong destination as the result of over congestion of network transmission lines with large volumes of data. Server 210 can adjust the transmission rate to reduce network congestion, thereby optimizing data delivery rate.
Various methods may be used to determine network throughput. In one or more embodiments of the invention, network throughput is calculated based on the round trip transmission time and the number of outstanding requests. Round trip transmission time is the time period between the instance a request is
submitted by a client to be processed by network server 210, and the instance that a response to that request is received by the client. Either of the above information can be traced and stored by either the clients or network sever 210, or both, for future reference.
For example, in one or more embodiments of the invention, clients that are involved in the same transmission group can exchange information regarding transmission throughput in the network, and generate a report that reflects the aggregate throughput rate for that group. Consequently, this information may be used by network server 210 to adjust the transmission rate for that group.
Network server 210 may obtain this information in real time (e.g., during transmission) and adjust its transmission rate accordingly. Alternatively, if the network connection established between network server 210 and the network clients is a persisting connection, then information regarding network status (i.e., the transmission rate at various time intervals, number of unsatisfied requests, round trip transmission time, etc.) can be categorically saved in network logs and tables (270). This information can be statistically analyzed to determined the most efficient transmission rate for future communications.
To determine the number of outstanding requests, embodiments of the invention comprise a monitoring window that references requests submitted by various clients. Every time a request is processed and a response is received by a client that request is removed from the window. The window keeps a count of
outstanding requests that remain unprocessed. This count is used as a factor to calculate the throughput of the network at step 420.
Referring to Figure 3, based on a client's identification and network conditions, at step 330, transmission rate and web page contents are customized for each client or group of clients. In one or more embodiments of the invention, a proxy is utilized for customization of the data transmission rate or data content that is transmitted by the server.
A proxy can be an application or a server that has specific knowledge of one or more clients' requirements and acts as an intermediary between the server and the clients. The proxy receives all transmissions that are to be received by the client and customizes the transmission content and /or the transmission rate in accordance with the requirements and limitations of each client, and forwards to them the information in the modified format.
If, for example, client 220 is an older generation computer that cannot support highly graphic content, then network server 210 or a proxy may customize web page 215 contents so that they are transmitted in form of text, or in form of lower quality graphics that can be supported by client 220. Likewise, if client 240 is a personal organizer device that has limited resources for color display of information, network server 210 or the proxy automatically customizes the content of web page 215 to be transmitted in black and white format, or other graphic format suitable for processing by client 240.
In one or more embodiments of the invention, the various customized formats can be pre-generated. For example, different versions of web page 215 can be designed with different Internet addresses, and a requesting client can be directed to the address containing the version most compatible with that client's requirements. Alternatively, network server 210, or a proxy can determine a client's requirements in real time and generate a version of web page 215 that is compatible with the client's specifications on-the-fly. Thus, in one or more embodiments, several versions of web page 215 are either generated or available for clients with different requirements and specifications.
Aside from content customization, in some embodiments of the invention, the rate of transmission is also customized for various clients. Figure 5 is a flow diagram, illustrating in further detail, how data transmission is customized for individual or groups of network clients, according to one or more embodiments of the invention. Due to technological limitations, sometimes the volume of data transmitted by network server 210 is not processed by clients at the same rate. For example, a client may use a communication channel that supports a lower rate of data transmission, or may lack the capability to process the information as fast as it is transmitted. In this scenario, a bottleneck situation arises that can lead to loss or inefficient delivery of data. Thus, at step 510, network server 210 initiates data transmission at the lowest possible bandwidth. Bandwidth, refers to the volume of data transferred per unit of time.
Delivery of data, at step 510, at the lowest available bandwidth, reduces the chances for a bottleneck situation, as the volume of data transmitted is
adjusted to a minimum. This prevents data loss that results from over congested network conditions. However, at step 520, it is determined whether network conditions have improved to justify a higher rate of transmission. This determination is based on statistical information and logs (see Figure 2, 270) generated at step 320. If network conditions have not improved (i.e., the network throughput is weak, there are many outstanding requests in the monitoring window, etc.) then at step 530, network 210 transmits the contents of web page 215 at the same or a lower rate, if possible. Else, at step 540 data is transmitted at a higher rate. In one or more embodiments of the invention a proxy server may be utilized to act as an intermediary that performs the required adjustments to the transmission rate, as disclosed above, prior to transmission to the client.
One or more embodiments of the invention utilize other methods to determine and /or adjust network transmission throughput. For example, network conditions can be probed using a method introduced by Van Jacobson, known as "pathchar", published and available for review on "http://gunpoweder.standord.edu/~fox/pubs.html." Alternatively, in some embodiments of the invention, no specific method may be employed, and network server 210 can optimistically transport data at a steady rate without making any adjustments, or any monitoring.
In either case, due to technological limitation, transmission of data involves data loss, whether or not network conditions are perpetually monitored to maintain data transmission rate at an optimal peak. In
embodiments of the invention, at step 340, lost data is recovered and retransmitted to its proper destination.
Thus, a method and apparatus for customizing web page content based on network conditions has been described in conjunction with one or more specific embodiments. The invention is defined by the claims and their full scope of equivalents.