BANDWIDTH ADAPTIVE DATA TRANSFER SYSTEM AND METHOD
BACKGROUND Field of the Invention
This invention relates generally to a system and method for performing a transfer of data from one computer to another computer over a computer network. More particularly, this invention relates to a system and method for adaptively downloading a file from a server computer to a client computer over a communications network.
Description of the Related Art
When a user is browsing the Internet or the World Wide Web (the Web), the user may desire to view a Web page that contains one or more files that must be downloaded to the user's computer in order to view the Web page. In typical systems, the files are downloaded at the maximum speed of the user's modem or other connection to the Internet Service Provider (ISP) and the computer network's speed is degraded during the download period so that the user must wait for the download to be completed before performing other actions. This delay while the files are being downloaded may be annoying for the user. This annoyance may be further increased when the user must wait for unrequested content or advertisements to be downloaded to the user's computer, such as those that might be downloaded by an ISP for which the user does not need to pay for services. At some point, the delay and annoyance can become significant and cause the user to change to another ISP. In contrast, if the user pays for the ISP account, then the ISP does not tend to download files or content to the user that have not been requested by that user. However, many users like the concept of a free Internet connection, but do not want the inconvenience of waiting for unwanted content or advertisements to be downloaded by the ISP to the user. Thus, a user must typically choose between an ISP that charges some fee for the
account with no unwanted content or advertisements or a free ISP that downloads content and advertisements in return for the free account.
In a typical free ISP account, a client application may download the data while the user is utilizing their work environment and the network. Any network data transfer by this type of application interferes with the performance of the user's network as well as other applications being executed on the client's computer. Moreover, it is currently impractical for these applications to download large amounts of continuous data without crippling the performance of the user's network (such as a dial-up Internet connection) and other network applications.
Therefore, it is desirable to provide a system that permits a user to take advantage of a free ISP account without the typical network degradation caused by the downloading of content or advertisements. Thus, it is desirable to provide a bandwidth adaptive file transfer system and method that overcomes the above limitations and problems with typical file transfer systems and methods and it is to this end that the present invention is directed.
SUMMARY OF THE INVENTION
The bandwidth adaptive file transfer system and method in accordance with the invention overcomes the above problems and limitations of typical systems by eliminating computer network (such as a dialup modem Internet network) performance degradation caused by downloading content and advertisements that are unrequested and/or undesired by the user. The system in accordance with the invention permits entities to offer free ISP accounts without the usual network degradation and delay caused by the unwanted content and advertisements.
BRIEF DESCRIPTION OF THE BRA WINGS Figure 1 is a block diagram illustrating an example of a typical dial-up connection to an Internet Service Provider (ISP) that may include an adaptive file transfer system in accordance with the invention.
Figure 2 is a diagram that illustrates unused bandwidth during various user operations.
Figure 3 is a flow chart illustrating a method for adaptive file transfer in accordance with the invention.
Figure 4 is a diagram that illustrates an example of a bandwidth adaptive method in accordance with the invention.
Figure 5 is a diagram showing further detail of an example of a bandwidth adaptive method in accordance with the invention.
Figure 6 is a diagram that illustrates another embodiment of a bandwidth adaptive method in accordance with the invention.
DETAILED DESCRIPTION In one embodiment of the invention, an adaptive data transfer system and method can be used with a typical dial-up connection to an ISP (e.g. via modem or ISDN) and it is in this context that the invention will be described. It will be appreciated, however, that the system and method in accordance with the invention has greater utility, such as to other types of connections with an ISP such as a cable modem, DSL, T-l, or the like, or to other computer network systems in which it is desirable to download data without degrading the computer network.
In general, a user will have a particular amount of bandwidth available, where bandwidth refers to the speed at which the user can receive data. For example, while using a computer with a common 56K modem, a user can theoretically reach connection speeds with an ISP of about 56 thousand bits per second (kbps). However, actual connection speeds by the user to the ISP can vary, and may be dependent upon a number of factors, including, for example, the quality of the physical connection (including the quality of the wires over which the signals travel), the number of users connected to the ISP, and the amount of other processing occurring in the user's machine. Thus, while using a common 56K modem, a user might, for example, only be able to connect reliably at 42 kbps. Thus, in this example, the user would have a maximum system bandwidth of 42 kbps.
However, there can be times when the user's modem actually transfers data at a rate below the maximum system bandwidth. For example, a user who downloads an initial web page from the user's local ISP will transfer the data at a rate very close to
or actually at the maximum system bandwidth (since it is assumed that the ISP has the data immediately available to download to the user). In contrast, if the same user is downloading one or more files from a location that is remote from the ISP, many factors could result in a transfer speed that may be less than the maximum system bandwidth. Such factors can include, for example, geographic proximity, inferior performance of the system that is the source of the specified files, the number of routers through which the message must travel (and any inherent delays in those routers), along with other physical and protocol latencies.
Referring to the modem example discussed above, a user may have a 56 kbps modem that can be used to connect to a local ISP at a maximum system bandwidth of only 42 kbps. When downloading information from that local ISP, the user may experience a bandwidth of nearly 42 kbps since the ISP may have the data readily available. However, if the user decides, for example, to download information from a different continent, and if the information must be routed in a very indirect manner, the user may experience a reduced bandwidth, below the maximum system bandwidth example above of 42 kbps. The user that has a 42 kbps maximum system bandwidth may, for example, experience a bandwidth of only 28 kbps (or less). Thus, during any particular on-line session, a user may experience information transfers at numerous different bandwidths, those bandwidths being the user bandwidths. During those periods where the user bandwidth is less than the maximum system bandwidth, unused bandwidth will exist.
In an embodiment of the invention, a bandwidth adaptive data transfer system and method can utilize a user's typically unused bandwidth and idle modem time (including time when the modem is only partially busy) to perform activity for an application (besides the one in use by the user) in an efficient manner without degrading the performance of the computer network. Thus, the unused bandwidth can become application bandwidth, to be used by another application.
In one embodiment, an ISP application can utilize the application bandwidth to efficiently deliver a large, continuous amount of data (including, for example, content, advertisements, and files) during the time when the user is not using the entire bandwidth of the modem. During this downtime, the user bandwidth can be viewed as being below a particular threshold value. By effectuating this type of
background data transfer, the user's network and user's application performance is nearly uninterrupted by the file transfer. By employing this inventive technique, a large amount of data may be downloaded to the user during the time that a user is typically connected to the network. For example, more than one megabyte (1 Mb) of data may be downloaded to the user during ten minutes of a user's typical Internet session so that, for example, a full minute of full-motion digital video may be downloaded. Using existing file transfer techniques, the user would have lost nearly all access to their network/modem for five full minutes to retrieve the same amount of data. The invention therefore solves this prior art limitation with file transfers as will now be described.
Figure 1 is a diagram illustrating an example of a system for establishing a connection between one or more user computers 12 and an Internet Service Provider (ISP) server 14 via communications link 16. The communications link 16 includes a dial-up circuit switch connector 22 in the public telephone system between the ISP and the user, a modem 18 connected to a user computer 24, and a modem 20 at the server 14. A variety of other communications networks are well known in the art, such as a dial-up ISDN connection, a cable modem connection, a fiber optic connection, a wireless connection, and the like.
Each user computer 24 (only one is described here although each user computer may have similar components and features) may include a display unit 26, that may be a cathode ray tube or a liquid crystal display, a processing unit 28, a modem 18 for communications with the ISP and one or more peripheral devices, such as a keyboard 30 and a mouse 32, that permit the user to interact with the computer. The processing unit 28 may further include a central processing unit (CPU) 34, a memory 36 and a persistent storage device 38. Typically, a software application may be loaded from persistent storage device 38 into memory 36 so that the software application may be executed by CPU 34. The memory 36 may be any semiconductor memory device, such as random access memory, and the persistent storage device 38 may be any device that permanently stores data when the power to the computer is turned off, such as a hard disk drive, a tape drive, an optical drive or the like. In order to communicate with and connect to the ISP 14, an ISP software application 40 may be stored in the persistent storage device and loaded into the memory 36 so that it may
be executed by the CPU 34. The ISP software application 40 may perform various functions including initializing the modem 18, dialing the ISP's phone number, generating a user interface for the user once connected to the ISP and controlling the adaptive data transfer process in accordance with the invention.
The server 14 may include a modem 20, a central processing unit (CPU) 50 that controls the operations of the server, a memory 52 that can, for example, be a random access memory (RAM) and a persistent storage device 54 as described above. As above, the persistent storage device 54 may store one or more software applications that may be loaded into the memory 52 to be executed by the CPU 50. The persistent storage device 54 may also store various data, such as content, advertisements and the like, that may be downloaded to the user over the dial-up connection once it is established.
In this example, the one or more software applications are shown already loaded into the memory and may include a data engine 58. The data engine 58 may control which pieces of data are downloaded to which users' computers and retrieve the data to be downloaded from the persistent storage device 54. Also in this example, server 14 can provide the connectivity for the user to communications network 45 which can, in an embodiment, be the Internet.
Figure 2 illustrates a chart 200 showing the unused bandwidth that may be available for use by another process during various user operations. The maximum system bandwidth, MaxSysBW 210, denotes the maximum speed at which a user can download information. However, as discussed above and as shown in Figure 2, the user may not actually reach the MaxSysBW 210 level during any or even all downloads from the ISP. During these periods where unused bandwidth may exist, the ISP could download additional information to the user.
For example, the bandwidth shown as shaded area 220 could be used for downloading a file while the user's computer performs an initialization procedure (for example, executing a software package known as a "browser" that may be used for navigating around the Web) and a download of an initial Web page during user activity 232, followed by the reading of that Web page by the user during user activity 237. As shown, this first file could be downloaded during interval 230 and part of
interval 235. During user activity 237, the bandwidth available to the ISP would be greater than that during user activity 232 due to the reduction in the user bandwidth from interval 230 to interval 235.
Once the download of the first file has completed, a second file could be downloaded using the bandwidth shown as shaded area 225. This download could be completed during the remainder of interval 235 (while the user completes the reading of the Web page during user activity 237), and during interval 240 (while the user's computer completes a user-initiated download of a user-requested file during user activity 242), interval 245 (while the user reads further information from a Web page during user activity 247), and interval 250 (while the user downloads a newly requested Web page during user activity 252).
Figure 3 is a diagram illustrating a bandwidth adaptive file transfer method 300 in accordance with an embodiment of the invention. As described above, in one embodiment the method can be implemented by an ISP software application (e.g., ISP application 40 shown in Figure 1) in a user's computer. In another embodiment according to the present invention, the adaptive downloading process can be implemented at the server (e.g., the server 14). The method can also be implemented for each individual user computer so that each user computer may be downloading the data from the ISP server at a different adaptive rate.
Referring to Figure 3, in step 302, a maximum bandwidth for application use
(MaxAppBW) is determined for each user computer, in order to determine how much of the total bandwidth currently available may be used for the downloading of data to the user computer. This maximum application bandwidth indicates the bandwidth above which the combined user bandwidth and application bandwidth cannot rise.
In more detail, step 302 may include step 304 in which a maximum system bandwidth (MaxSysBW) for the user computer can be determined by measuring the total time for a file transfer of a fixed size from server to user. This measurement will reflect any network delays or other network issues that may affect the user's bandwidth. In this particular example, a transfer of a 20KB file can provide the information needed to determine MaxSysBW.
Once MaxSysBW is determined in step 304, MaxAppBW can be determined in step 306 by multiplying the MaxSysBW by a maximum percentage of available bandwidth that the application may use. In one embodiment, a maximum percentage of available bandwidth may be imposed by an ISP when providing free Internet access. This maximum percentage of available bandwidth can be arbitrarily determined by the ISP, and can be based upon a desired performance level for the ISP. This slightly reduced performance, along with a display of advertisements, can be viewed as the consideration from the user in exchange for a free Internet access account.
In one embodiment, the application may be constrained to using a maximum of 80% of the total available bandwidth for a particular ISP, resulting in:
MaxAppBW = MaxSysBW * 0.80
Thus, if MaxSysBW is determined to be 40 kbps, MaxAppBW will be 32 kbps in the above example. This means that the application bandwidth, when added to the user bandwidth, cannot exceed 32kbps. In general, the amount by which MaxSysBW is reduced to produce MaxAppBW may be chosen arbitrarily, based on the particular needs of the system.
In step 308, a current file to be downloaded to the user's computer (CurrFile) can be requested from the server. Next, in step 310, the current amount (CurrPos) of a current file remaining to be downloaded can be determined, or, as appropriate, the amount of a file that has not yet begun being downloaded. For a new download file, the CurrPos is zero and can then increase as the transfer is completed during the user's communications session with the ISP. In one embodiment, using the bandwidth adaptive data transfer method can allow a 1 Mb file to be downloaded to a user in about eight minutes when using a 28.8 kbps modem. Further, downloading data during an ISP session need not be limited to a single file. For example, one file can be downloaded until complete and then the download of another file can begin.
In step 312, the amount of data for the next file block transfer (NextDLSize) can be determined by calculating the difference between MaxAppBW (i.e. the maximum allowed bandwidth for the application) and the amount of bandwidth needed by the user. This determination of NextDLSize will result in the amount of
data that will be transferred from the application to the user during the next sample. In this context, a sample is a preset amount of time that elapses between each update of NextDLSize and that can be established by the ISP. For example, an ISP may decide to set the sample period to one second, which would result in NextDLSize being updated every second.
The calculation of the amount of bandwidth needed by the user can vary based on the particular environment. For example, the amount of bandwidth needed by the user can be determined instantaneously from the immediately preceding measurement of the user's bandwidth, or it can be averaged over a certain period of time. In particular, in step 314, an average bandwidth required by the user (AvgUserBW) over a predetermined period of time (such as the last n samples) can be determined from a user bandwidth history. In one embodiment, n can be chosen to be three so that AvgUserBW would be determined from the previous three samples stored in the user bandwidth history. The user bandwidth history may be stored in the persistent storage device of the users computer. The method may thus adaptively change the bandwidth during each sample based upon an average user bandwidth value.
In one embodiment, once the AvgUserBW is determined, NextDLSize may be determined in step 316 by subtracting AvgUserBW from MaxAppBW, and determining the appropriate size of the data block for the next sample. For example, if MaxAppBW is determined to be 20 kbps and AvgUserBW is determined to be 10 kbps, a one second time sample time (1 sec) would result in a NextDLSize determination of 10 kbit (10 kbps x 1 sec) for the next interval. Once NextDLSize is determined, a block of data of size NextDLSize from the current piece of data being downloaded (CurrFile) at the current download position (CurrPos) can be requested from the server in step 318 and can be downloaded to the user's computer.
After the block of data of size NextDLSize has been downloaded to the user's computer in step 319, the instantaneous amount of bandwidth that the user required during the prior block download (UserBW) may be determined in step 320 so that the bandwidth for future blocks of data may be adaptively changed to maximize the speed of the block download without adversely affecting performance. To determine
UserBW, the instantaneous amount of system bandwidth consumed during the last block transfer (SysBW) can be determined in step 322 and the amount of bandwidth
that the application used for the last downloaded block (AppBW) can be determined in step 324.
In step 326, UserBW can be calculated by subtracting AppBW from SysBW. In step 328, the UserBW value can be added into the bandwidth history file on the user's computer so that it may be factored into the AvgUserBW calculation (e.g., step 314). In this manner, the method may adaptively adjust the download bandwidth of data based on prior download bandwidths. If appropriate, the process repeats based on the determination in step 330 of whether more data is to be downloaded. Thus, as much bandwidth as possible can be used to download data as fast as possible without adversely affecting the performance of the modem. If the modem is not being used, the download bandwidth can be increased, but when the modem is at or approaching full bandwidth capacity, the download bandwidth can be reduced. In accordance with the invention, the data from the ISP is slowly downloaded over time using the available unused bandwidth so that the user does not experience the delay normally associated with the file transfer of the unwanted data.
Figure 4, containing chart 400, illustrates an example of the bandwidth adaptive data transfer method in accordance with the invention. This example depicts how an ISP could use unused bandwidth (as previously discussed with respect to Figure 2) to download other information to the user. As in Figure 2, the X-axis in Figure 4 represents the time of a user's session while connected to the ISP and the Y- axis represents the bandwidth. A maximum system bandwidth (MaxSysBW) 410 is denoted near the top of the chart and, below that, a maximum application bandwidth (MaxAppBW) 420 is denoted.
As shown, the initialization of the session and downloading of the initial web page during interval 430 (made up of samples 422 through 426 and the samples in interval 428) may use a large portion of the available bandwidth so that the bandwidth for downloading the ISP data, denoted by the shaded portion of interval 430, is reduced. However, as the user is reading the Web page during interval 440, the reduced user bandwidth can result in the bandwidth for the ISP data being increased adaptively so that the ISP data can be downloaded to the users computer as rapidly as possible without adversely affecting the user's bandwidth requirements.
Figure 4 also shows the results of additional user activity on the adaptive download process. During a download initiated by the user that occurs during interval 450, user bandwidth increases, then decreases again during interval 460 while the user reads a web page. The user bandwidth increases again during interval 470, as a result of the user possibly requesting a new web page. As a result of these changes in user activity, the effects of the adaptive change in bandwidth available for an application can be seen during samples 422 through 426, samples 432 through 436, and interval 460. During each of these periods, the bandwidth used by the application has been maximized, as will be discussed in further detail with respect to Figure 5.
Figure 5 provides further detail on the adaptive nature of the method according to the present invention. During interval 440, the user's relative inactivity while reading a web page that had previously been downloaded (for example, during interval 428) has resulted in the user bandwidth being reduced from the level shown as UserBW 466 down to UserBW 472. For sample 432, the application bandwidth for that sample is at the level shown as AppBW 482, which is based on the previous user bandwidth level, including UserBW 466 during interval 428. The reduction in the user bandwidth to the level UserBW 472 can permit a significant increase in the amount of bandwidth that could be used by the application (e.g. ISP application 40 in Figure 1). For sample 432, the level of this available bandwidth is shown as AvailableBW 483. Referring back to Figure 3, the calculation of the user bandwidth UserBW in step 320 can be illustrated by the quantities shown for sample 432. In particular, the total amount of bandwidth utilized during the transfer in sample 432 can be determined to be at the level shown as SysBW 471. This corresponds to the determination in step 322 of the system bandwidth. Next, the amount of bandwidth used by the application can be determined to be at the level shown as AppBW 482. Consequently, the amount of user bandwidth consumed during sample 432 can be calculated according to step 326 by subtracting AppBW 482 from SysBW 471.
As a result of the averaging process in this embodiment in step 314 in Figure 3, the updated value for the amount of bandwidth available for the application (which leads to the calculation of the size of the block of data to request in step 318) will not immediately result in the system bandwidth reaching the level of MaxAppBW 420. Instead, the calculations based on the bandwidth measurements for sample 432 in
Figure 5 can result in a new application bandwidth value shown as AppBW 484 for sample 434, which can be calculated from UserBW 474 and SysBW 471 (resulting in a reduction in the bandwidth available for the application to AvailableBW 485). The calculation of AppBW 484 and subsequent transfer of data from the server can then be followed by updated (i.e. averaged) application bandwidth values in samples 436 and 437, leading up to the maximized level of application bandwidth during interval 438.
In contrast to interval 440, interval 450 illustrates a change in user activity that can cause the system bandwidth to suddenly increase. According to an embodiment of the invention, whenever the total system bandwidth for a sample (i.e. the sum of the user bandwidth and the application bandwidth) exceeds the maximum application bandwidth level, the application bandwidth for the next sample is immediately reduced to prevent the maximum application bandwidth from being exceeded. The increase in the user bandwidth during sample 442 to the level indicated by UserBW 452, combined with application bandwidth level AppBW 494, can result in system bandwidth SysBW 453 exceeding the maximum application bandwidth MaxAppBW 420. Accordingly, for sample 444, the level of AppBW 496 can be reduced such that SysBW 455 will not exceed MaxAppBW 420.
Figure 6 containing chart 600 illustrates yet another embodiment of the bandwidth adaptive file transfer method in accordance with the invention. Again, the X-axis represents the time of a user's session while connected to the ISP and the Y- axis represents the bandwidth. A maximum system bandwidth (MaxSysBW) 610 is denoted near the top of the chart and, below that, a maximum application bandwidth (MaxAppBW 620) is denoted. In this embodiment, dynamic measurements of MaxSysBW 610 can be made instead of maintaining the maximum system bandwidth at a constant level. Consequently, MaxAppBW 620 can change dynamically, providing even further efficiency in the file download process to the user.
As shown in Figure 6, the maximum system bandwidth available to a user (MaxSysBW 610) can change to a new level. This could occur, for example, when a user of a shared resource gains or loses additional bandwidth as a result of another user stopping or starting its use of the shared resource. For example, at transition point 603, MaxSysBW 610 can increase to a new level. A change in the maximum
system bandwidth, MaxSysBW 610, can result in a change in the maximum amount of bandwidth available to the application (MaxAppBW 620) at transition point 605. As a result of the increase in MaxAppBW, additional bandwidth can be made available for use by the application for downloading of files.
In Figure 6, the shaded samples indicate the bandwidth usage by the application. The increase in MaxAppBW 620 at transition point 605 can result in the increase in the bandwidth usage by the application, as evidenced by the increase in the shaded area from sample 627 to sample 629. Similarly, the decreases in MaxSysBW 610 at transition point 607 and transition point 611 can result in corresponding decreases in the bandwidth utilized by the application. The decrease in MaxSysBW 610 at transition point 607 can result in the decrease in application bandwidth indicated by the change in the shaded area between sample 637 and sample 639. However, the decrease in MaxSysBW 610 at transition point 61 1 does not result in change in application bandwidth, since the user bandwidth changed between interval 650 and 660.
In this embodiment, a change in the application bandwidth does not occur until the user bandwidth remains at a relatively constant level for three samples. Once this occurs, the application bandwidth can then change to a new level, as indicated by the change in the shaded area between sample 662 and sample 664. The embodiment shown in Figure 6 thus illustrates an alternative approach to the adaptive process. Instead of averaging the values of the user bandwidth, as disclosed regarding the previous embodiment, the embodiment shown in Figure 6 provides a simple delay mechanism. Using this approach, a change in the user bandwidth level will not result in a change to the application bandwidth for the very next sample. Instead, a change to a different user bandwidth level must continue for a certain number of samples prior to a change to the application bandwidth.
For example, upon the change in the user bandwidth that occurs starting at sample 632, the application bandwidth does not change immediately. In this embodiment, the user bandwidth must remain at a certain level for three samples prior to a change in the application bandwidth level. Thus, the change in user bandwidth in sample 632 does not result in any changes until the increase in the application bandwidth at sample 638. Also, no averaging is used in this approach, so the
combined user and application bandwidth can immediately increase to the MaxAppBW 620 level. A similar transition can be seen during interval 660. However, as in the previously described embodiment, an increase in the user bandwidth that results in the total system bandwidth exceeding the MaxAppBW 620 level can immediately result in a decrease in the application bandwidth to a new level at which MaxAppBW may not be exceeded. This is shown in Figure 6 in the transition from sample 642 to sample 644, and the transition during the first two samples of interval 670.
While the invention has been described in detail, including references to specific embodiments, it will be apparent to one skilled in the art that changes and modifications can be made to the invention without departing from the spirit and scope thereof. For example, although embodiments of the invention involving processing at the user's computer have been described in detail, in other embodiments, all aspects of the invention could be carried out by the server. Furthermore, although particular embodiments have been described in terms of computer programs, the invention could easily be applied to systems utilizing hardware that performs similar functions, such as application specific integrated circuits (ASICs). Thus, it is intended that the present invention cover the modifications and variations of this invention provided they come within the scope of the appended claims and their equivalents.