Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
MULTI-SOURCE DOWNLOAD SCHEDULING
Document Type and Number:
WIPO Patent Application WO/2015/014295
Kind Code:
A1
Abstract:
Client devices schedule downloads from various sources based on a download ratio between the different sources. The download ratio is determined based on quality information reported by the client devices about prior downloads to the client devices. Examples of quality information include an average download speed, a download success rate, and a stability of download speed. In one implementation, the different sources include both servers and a P2P network

Inventors:
LIU GANG (CN)
Application Number:
PCT/CN2014/083396
Publication Date:
February 05, 2015
Filing Date:
July 31, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
TENCENT TECH SHENZHEN CO LTD (CN)
International Classes:
H04L29/06
Foreign References:
CN102855238A2013-01-02
CN102857470A2013-01-02
CN101989986A2011-03-23
Attorney, Agent or Firm:
BEIJING SAN GAO YONG XIN INTELLECTUAL PROPERTY AGENCY CO., LTD. (No. 5 Huizhong Road Chaoyang District, Beijing 1, CN)
Download PDF:
Claims:
CLAIMS

WHAT IS CLAIMED IS:

1. A computer-implemented method for determining download scheduling to a client from multiple sources, the method comprising:

acquiring information describing quality of downloads from at least two sourcesto the client;

determining the sources of the downloads to the client;

determining download source information based on the acquired quality information and the determined download sources, the download source information defining a download ratio between the download sources; and

providing the download source information to the client, wherein the client schedules downloadsfrom the download sources according to the download ratio.

2. The method of claim 1 , wherein the acquired quality information comprises at least one of the following: an average download speed, a download success rate, anda stability of download speed.

3. The method of claim 1, wherein the download sources comprise:

at least one of a content delivery network (CDN) service, a third-party mirror image resource, and an ISP auxiliary cache; and

a P2P network.

4. The method of claim 1 , wherein the downloads comprise downloads of at least one of the following: content to be viewed on the client, and apps to be executed by the client.

5. The method of claim 1, wherein determining the sources of the downloads to the client comprises:

calculating a hash value of data downloaded from a source to the client; and

determining the source of the download based on the calculated hash value.

6. The method of claim 1 , wherein the download ratio between the download sources is based in part on a maximum download speed and a priority of those download sources for which a quality of downloads from the download source is below a quality requirement for the client.

7. The method of claim 6, wherein the priority of the download sources is determined by a test on quality of downloads from the download sources.

8. The method of claim 6, wherein the priority of the download sources is determined based on a cost of downloads from the download sources.

9. The method of claim 1, wherein the download ratio is further based on a cost requirement of downloads from the download sources.

10. The method of claim 1, wherein updated download source information is determined and provided to the client based on additional downloads to the client.

11. The method of claim 1, further comprising:

detecting a packet loss in adownload from one of the download sources; and

responsive to said detection, providing additional download source information to the client todecrease a number of packets transmitted in a round-trip delay for downloads from said download source.

12. The method of claim 1, further comprising: detecting no packet loss in downloads from one of the download sources; and responsive to said detection, providing additional download source information to the client to transmit additional data with the maximum message length in a round- trip delayfor downloads from said download source.

13. The method of claim 1, further comprising:

detecting a burst of requests for downloads from a primary CDN service; and responsive to said detection, providing additional download source information to the client for scheduling downloads from an auxiliary CDN service.

14. The method of claim 1, further comprising:

detecting a peak download period; and

responsive to said detection, providing additional download source information to the client for scheduling downloads from an auxiliary CDN service.

15. A system for determining download scheduling to a client from multiple sources comprising:

a computer processor for executing computer program modules; and

a non-transitory computer readable storage device storing computer program modules executable to perform steps comprising:

acquiring information describing quality of downloads from at least two sourcesto the client;

determining the sources of the downloads to the client; determining download source information based on the acquired quality

information and the determined download sources, the download source information defining a download ratio between the download sources; and

providing the download source information to the client, wherein the client schedules downloads from the download sources according to the download ratio.

16. The system of claim 15, wherein the acquired quality information comprises at least one of the following: an average download speed, a download success rate, anda stability of download speed.

17. The system of claim 15, wherein the download sources comprise:

at least one of a content delivery network (CDN) service, a third-party mirror image resource, and an ISP auxiliary cache; and

a P2P network.

18. The system of claim 15, wherein determining the sources of the downloads to the client comprises:

calculating a hash value of data downloaded from a source to the client; and

determining the source of the download based on the calculated hash value.

19. The system of claim 15, wherein the download ratio between the download sources is based in part on a maximum download speed and a priority of those download sources for which a quality of downloads from the download source is below a quality requirement for the client.

20. The system of claim 15, wherein the computer program modules are executable to perform steps comprising:

detecting a packet loss in a download from one of the download sources; and responsive to said detection, providing additional download source information to the client to decrease a number of packets transmitted in a round-trip delay for downloads from said download source.

21. The system of claim 15, wherein the computer program modules are executable to perform steps comprising:

detecting no packet loss in downloads from one of the download sources; and responsive to said detection, providing additional download source information to the client to transmit additional data with the maximum message length in a round- trip delayfor downloads from said download source.

22. The system of claim 15, wherein the computer program modules are executable to perform steps comprising:

detecting a burst of requests for downloads from a primary CDN service; and responsive to said detection, providing additional download source information to the client for scheduling downloads from an auxiliary CDN service.

23. The system of claim 15, further comprising:

detecting a peak download period; and

responsive to said detection, providing additional download source information to the client for scheduling downloads from an auxiliary CDN service.

24. A non-transitory computer readable medium storing executable computer program instructions for determining download scheduling to a client from multiple sources, the computer program instructions comprising instructions for:

acquiring information describing quality of downloads from at least two sourcesto the client;

determining the sources of the downloads to the client;

determining download source information based on the acquired quality information and the determined download sources, the download source information defining a download ratio between the download sources; and

providing the download source information to the client, wherein the client schedules downloads from the download sources according to the download ratio.

25. The computer-readable storage medium of claim 24, wherein the acquired quality information comprises at least one of the following: an average download speed, a download success rate, anda stability of download speed.

Description:
MULTI-SOURCE DOWNLOAD SCHEDULING

CROSS-REFERENCE TO RELATED APPLICATION

[0001] This application claims the priorityof Chinese Patent Application No.

201310329167.8, filed July 31, 2013, which is incorporated herein by reference.

TECHNICAL FIELD

[0002] The disclosure relates generally to the field of Internet-based data downloads, and specifically to download scheduling for multiple sources.

BACKGROUND

[0003] The development of technologies related to the Internet has enabled a large amount of data including, for example, images, audio and video files, software, and video games, to be downloaded and consumed by users of the Internet.However, thegrowing number of users downloading data, which may be availablefrom multiple sources,may cause network congestion and other problems, which deteriorate user experience. Current solutions useContent Delivery Network (CDN) services, by establishing node servers throughout the network to provide multiple sources for data. However, current CDN based scheduling typically does not dynamically direct data requests to links with high efficiency and quality, but rather assigns traffic to links based on some fixed empirical threshold value. Therefore, the current CDN based scheduling does not provide an effective solution for data downloading under ever-changing network conditions. [0004] Another current approach usesPeer-to-Server-and-Peer (P2SP)downloading technology, which includesPeer-to-Peer (P2P) and Peer-to-Server (P2S) technologies.

Through P2SP technology, data (e.g., files) is spread throughout the network and, therefore,the downloads maynotbe concentrated on onlya few servers. For example, when a user downloads a file, other resources (such as mirror image copies of the file) can be automatically searched so that appropriate resourcesare selected for accelerating the download. However, downloads using P2SP typically do not perform effective scheduling among different sources of data. In addition, especially in the case of unavailable nodes, the quality of service may not be guaranteed.

SUMMARY

[0005] In one aspect, client devices schedule downloads from various sources based on a download ratio between the different sources. The download ratio is determined based on quality information reported by the client devices about prior downloads to the client devices.

[0006] One aspect includes a computer-implemented method for determining download scheduling to a client from multiple sources. Information describing quality of downloads from at least two sourcesto the client is acquired. The sources of the downloads to the client are also determined (e.g., based on hashes of the downloads). Download source

information is determined based on the acquired quality information and the determined download sources. The download source information definesa download ratio between the download sources. This download source informationis provided to the client, which schedules downloads from the download sources according to the download ratio. [0007] Examples of quality information include an average download speed, a download success rate, anda stability of download speed. In one implementation, the different sources include both servers and a P2P network.

[0008] The download source information can be affected by any of the following: whether downloads from a source are below a quality requirement, relative priority between different sources, maximum download speed, cost of downloads from different sources, whether there is packet loss on downloads, the time of download, and whether there is a burst of download requests.

[0009] The features and advantages described in the specification are not all inclusive and, in particular, many additional features and advantages will be apparent to one of ordinary skill in the art in view of the drawings, specification, and claims. Moreover, it should be noted that the language used in the specification has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the disclosed subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

[0010] FIG. 1 is a block diagram of acomputing environment for supportingdownload schedulingfrom multiple sources according to one embodiment.

[0011] FIG. 2 is a block diagram illustrating an example of a computer for acting as a client and/or server in one embodiment.

[0012] FIG. 3 is a block diagram illustrating a multi-source scheduling strategy server according to one embodiment. [0013] FIG. 4 is a block diagram illustrating an acquisition module according to one embodiment.

[0014] FIG. 5 is a block diagram illustrating an adjustment determination module according to one embodiment.

[0015] FIG. 6 is a block diagram illustrating aninstruction module according to one embodiment.

[0016] FIG. 7 is a flowchart illustrating a process for determining and transmitting information for scheduling data download according to one embodiment.

[0017] FIG. 8 is a flowchart illustrating a process for determining and transmitting information for adjusting download ratio and download speed according to one embodiment.

[0018] FIG. 9 is a flowchart illustrating a process for determining values for download ratio and download speed according to one embodiment.

[0019] FIG. 10 is a flowchart illustrating a process for adjusting download ratio and download speed based on download informationaccording to one embodiment.

DETAILED DESCRIPTION

[0020] The Figures (FIGS.) and the following description describe certain

embodiments by way of illustration only. One skilled in the art will readily recognize from the following description that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles described herein. Reference will now be made in detail to several embodiments, examples of which are illustrated in the accompanying figures. It is noted that wherever practicable similar or like reference numbers may be used in the figures to indicate similar or like functionality. SYSTEM OVERVIEW

[0021] FIG. 1 shows a computing environment for supporting download

schedulingfrom multiple sources according to one embodiment. The computing environment includes multi-source bandwidth scheduling system 100, client devices 101a- 10 In, CDN sources 120, a resource server 130 and additional sources 140,connected by a network 110. Only one multi-source bandwidth scheduling system 100, three client devices 101, one group of CDN sources 120, one resource server 130and one group of additional source 140are shown in FIG.l in order to simplify and clarify the description.

Embodiments of the computing environment can have many of each of these elements. Likewise, the functions performed by the various entities of FIG.1 may differ in different embodiments.

[0022] A client device 101 is an electronic device used by a user to perform functions such as downloading and consuming digital data(i.e., network resources), including watching videos, executing software applications, and uploading and downloading content to and from websites hosted by web servers on the network 110. Data to be downloaded to the client device 101 may be available from multiple sources, including CDN sources 120 and other (non-CDN) sources 140. Based on information reported bythe client device 101 on downloads from differentsources, the multi-source bandwidth scheduling system 100 determinesa download scheduling strategy for the client device 101 in order to make downloads from the various sources with higher efficiency and higher quality.

[0023] The client device 101 may be a dedicated video player, a smart phone, a tablet, notebook, or desktop computer. In one embodiment, the client device 101 includes interfaces with a display device on which the user may view the video files and other digital content. In addition, the client device 101 provides a user interface (UI), such as physical and/or on-screen buttons, with which the user may interact with the client device 101 to perform functions such as downloading samples of digital data, consuming digital data, selecting digital data, and purchasing digital data. In the illustrated embodiment in FIG. 1 , the client device 101 includes a scheduling control module 152 and a quality monitoring module 154.

[0024] The scheduling control module 152 receives information from the multi-source bandwidth scheduling system 100, which information relates to scheduling downloadsfrom multiple sources. The scheduling control module 152 implements the scheduling of downloadsto the client device 101 according tothis information. For convenience, this information is referred to as download source information. In one embodiment, the download source information defines a download ratio between different sources, and the scheduling control module 152 schedules downloadsfromthe sources according to this download ratio. For example, the download source information may specify a download ratio of 3:2: 1 among CDN sources A, B and C, in which case the scheduling control module 152 allocates downloads among these sources A, B and C according to this ratio. As used in this disclosure, the term "scheduling" is not meant to require time scheduling. For example, a download scheduling strategy would include determining which source should provide the download, even if no specific downloads are scheduled for specific times.

[0025] In another aspect, the scheduling control module 152 may further receive adjustments to the download source information or additional download source information, for example, to adjust the download ratio and/ordownload speeds for the sources.

Additionally, the scheduling control module 152 may send more download requests to sources with higher priorities. Furthermore, the scheduling control module 152 may also assign more blocks ofdownload requests to sourceswith higher priority.

[0026] The quality monitoring module 154 obtains information related to the downloads (also referred to as download information) to the client device 101, and transmits the download information to the multi-source bandwidth scheduling system 100, which the system 100 may use for determining a multi-source download scheduling strategy for the client device 101. The quality monitoring module 154 can acquire the download information from the original link and/or different Uniform Resource Locators (URLs) of the sources. Examples of the download information includedownload time, download speed (average speed, variation in speed, etc.), downloaded file size, download result (e.g., success, failure, etc.), etc. For example, the download time can be the time point at which the download speed is monitored. The download speed may also be annotated with IP addresses or other identifiers of the data source, of the client device 101, of the local domain name parsing server (DNS), and/or the time required to connect to the source.

[0027] Additional examples of the download information may include descriptions of the CDN service providers (e.g., China Cache, China Net Center, DiLian, etc.), volumes of the data downloaded from different data sources of different types of data sources (e.g., source CDN, monitored CDN domain name, third-party mirror image resources, auxiliary CDNs, ISP auxiliary caches, P2P networks, etc.), returned code corresponding to different sources (e.g., error code for failed download or failed connection), total number of download times for all links, concurrent connection data, etc. [0028] In one embodiment, the quality monitoring module 154 collects quality information describing the quality of the downloads and sends the quality information to the multi-source bandwidth scheduling system 100. For example, the quality information could include average download speed, download success rate, and stability of (i.e., variation in) download speed. The average download speed can be the average value of the speeds for multiple downloads from a source. The download success rate can be a ratio of the number of successful downloadsto the number of total download requests from a source. The stability of download speed may be measured by the fluctuation variance of the download speed.In one embodiment, the quality monitoring module 154 transmits the collected quality information, possibly in addition to other information, to the multi-source bandwidth scheduling system 100, which the system 100 uses for determining the download scheduling strategy for the client device 101.

[0029] The multi-source bandwidth scheduling system 100 receives the information related to downloads from the quality monitoring module 154 of the client device 101 and uses the download information (usually in combination with other information) to determine the multi-source download scheduling strategy for the client device 101. In FIG. 1, the multi-source bandwidth scheduling system 100 includes a resource index database (DB) 102, a resource indexing server 104, a resource importing server 106, a tracker server 108, a multi-source scheduling server 112, a multi-source scheduling strategy server 114 and a statistics server 116. Other embodiments of a multi-source bandwidth scheduling system 100 may contain different functional modules and different number of modules. In addition, the functions may be distributed among the components in a different manner than described herein. [0030] The resource index DB 102 stores index information associated with network resources (i.e., for data downloads reported by clients 101). The index information can be used by the resource indexing server 104 to retrieve address information of downloaded network resources. In one embodiment, the URL of a network resource is used as the index for the network resource. The network resource can also be identified by a hash value associated with the network resource, e.g., a hash of the file ID of the network resource. If a network resource is identified by its corresponding hash value, the URL of the network resource may also be associated with the hash value of the network resource. For example, the resource index database 102 stores a mapping relation record of the URL of the network resource and the hash value of the network resource. In another embodiment, the resource index database 102 may also store validity checking information associated with a part of the network resource, e.g., a file fragment. Accordingly, when the resource index database 102 receives inquiry requests from the resource indexing server 104, the resource index database 102 can provide the requested data. Further, the resource index database 102 also receives requests for importing data to the database 102 and updating stored data from the resource importing server 106, and stores imported data and updates stored data responsive to the requests.

[0031] The resource indexing server 104 receives requests from one or more other servers of the multi-source bandwidth scheduling system 100 and queries the resource index database 102 with respect to the requests. For example, the resource indexing server 104 receives from the multi-source scheduling strategy server 114 a request for the source (e.g., URL) of the data downloaded by the client device 101. Along with the request, the hash value of the data downloaded by the client device 101 may also be received. The resource indexing server 104 queries the resource index database 102 for the URL of the downloaded data mapped from the hash value of the downloaded data. The obtained URL of the downloaded data can be used by the multi-source scheduling strategy server 114 to determine a source of the downloaded data.

[0032] The resource importing server 106 receivesa link and size of data to be downloaded. The resource importing server 106 calculates the hash value and validity checking information of the file. The resource importing server 106 stores the hash value and validity checking information of the file to the resource index database 102, via the resource indexing server 104.

[0033] The tracker server 108 receives on-line status and locally collected resource information from the client device 101. In one embodiment, the tracker server 108 can be a P2P tracker server for supplying data from the P2P network. Although only one tracker server 108 is illustrated in FIG. 1, other embodiments can include multiple tracker servers 108.

[0034] The multi-source scheduling server 112 functions as a file delivery center for actively publishing and uploading files to different CDN sources 120. In one embodiment, the multi-source scheduling server 112 cooperates with the resource importing server 106 to acquire and store files, and the links and sizes of the filesfrom different CDN sources to the resource index database 102.

[0035] The statistics server 116 receives reports about data downloadsfrom the client devices 101. For example, the detailed reports may describe download speed of the downloaded file from multipleP2SP communication system sources, downloaded files' sizes, download time, downloaded datafrom P2P sources, originalsources of thedownloaded data, network connectivity, download result, and any other information describing the file downloading.The statistics server 116 generates logs based on the received reports on a daily basis for subsequent analysis and scheduling strategy determination. Further, the statistics server 116 may analyze the reports from the client devices 101 to generate statistics based on the reports. For example, the statistics can describe a mean value of the download speed within a certain time period of a day. The statistics server 116 provides the statistics to the multi-source scheduling strategy server 114 for generating scheduling strategy based on the statistics and providing thescheduling strategy to the client devices 101.

[0036] The multi-source scheduling strategy server 114 acquires information related to the downloadsto the client device 101 and, in this example, generates instructions for download scheduling for the client device 101 based on the acquired information. For example, the instruction may instruct the client device 101 to adjust the download ratio and download speed of each sourceused by the client device lOlto download network resources. In one embodiment, the multi-source scheduling strategy server 114 provides the instruction for download scheduling to the client device 101 responsive to requests from the client device 101. In another embodiment, the multi-source scheduling strategy server 114 pushes the instructions for download scheduling to the client device 101 periodically. For example, the multi-source scheduling strategy server 114 synchronizes with the statistics server 116 to receive the information related to the downloaded data from the client device 101 and provide the instructions back to the client device 101. More generally, the multi-source scheduling strategy server 114 provides download source information to the client device 101. This download source information may be explicit instructions, but it might also be information from which the client device 101 derives instructions. The multi-source scheduling strategy server 114 is described in detail below with reference to FIGs. 3-6.

[0037] The CDN sources 120 can be a group of node servers that store network resources for downloading. In one embodiment, the CDN sources 120 stores files uploaded and published by the multi-source scheduling server 112, such as content, game resource files, client or patch files, etc. In one embodiment, these files can be loaded in the memory of the servers so that they can be output without a delay. In addition, the CDN sources 120 serve as stable sources for the client device 101 to download the files.

[0038] The resource server 130 stores metadata related to the network resources. For example, the metadata related to the network resources may include sources(e.g., URLs) or addresses of download entrance web pages. Other metadata of the network resources known to those of skills in the art are possible. In one embodiment, the resource server 130 can support one or more network resource indexing websites.

[0039] The additional sources 140 are data storage devices (other than the CDNs) that store network resources for downloading. In one embodiment, the additional sources 140 includeone or more web servers that supportone or more websites hostingthe data of the network resources. The additional sources 140 may also include nodes in a P2P network.

[0040] The network 110 enables communications among the multi-source bandwidth scheduling system 100, client devices 101, the CDN sources 120, the resource server 130 and the additional sources 140 and can comprise the Internet. In one embodiment, the network 110 uses standard communications technologies and/or protocols such as BT protocol in a P2P and P2SP communication system. In another embodiment, the entities can use custom and/or dedicated data communications technologies instead of, or in addition to, the ones described above.

COMPUTING SYSTEM ARCHITECTURE

[0041] The entities shown in FIG. lare implemented using one or more computers. FIG. 2 is a high-level block diagram of a computer 200 for acting as the multi-source bandwidth scheduling system 100, the CDN sources 120, the resource server 130,the additional sources 140 and/or a client device 101a-n. Illustrated are at least one processor 202 coupled to a chipset 204. Also coupled to the chipset 204 are a memory 206, a storage device 208, a keyboard 210, a graphics adapter 212, a pointing device 214, and a network adapter 216. A display 218 is coupled to the graphics adapter 212. In one embodiment, the functionality of the chipset 204 is provided by a memory controller hub 220 and an I/O controller hub 222. In another embodiment, the memory 206 is coupled directly to the processor 202 instead of the chipset 204.

[0042] The storage device 208 is any non-transitory computer-readable storage medium, such as a hard drive, compact disk read-only memory (CD-ROM), DVD, or a solid-state memory device. The memory 206 holds instructions and data used by the processor 202. The pointing device 214 may be a mouse, track ball, or other type of pointing device, and is used in combination with the keyboard 210 to input data into the computer system 200. The graphics adapter 212 displays images and other information on the display 218. The network adapter 216 couples the computer system 200 to the network 110.

[0043] As is known in the art, a computer 200 can have different and/or other components than those shown in FIG. 2. In addition, the computer 200 can lack certain illustrated components. For example, the computers acting as the multi-source bandwidth scheduling system 100 can be formed of multiple blade servers linked together into one or more distributed systems and lack components such as keyboards and displays. Moreover, the storage device 208 can be local and/or remote from the computer 200 (such as embodied within a storage area network (SAN)).

[0044] As is known in the art, the computer 200 is adapted to execute computer program modules for providing functionality described herein. As used herein, the term "module" refers to computer program logic utilized to provide the specified functionality. Thus, a module can be implemented in hardware, firmware, and/or software. In one embodiment, program modules are stored on the storage device 208, loaded into the memory 206, and executed by the processor 202.

SCHEDULING STRATEGY DETERMINATION

[0045] FIG. 3 is a block diagram illustrating an example of a multi-source scheduling strategy server 114.The multi-source scheduling strategy server 114 acquires quality and source information of the downloadsto the client device 101 and determines scheduling strategies for optimizing the downloads for the client device 101 in terms of quality and efficiency. Further, the multi-source scheduling strategy server 114 may also detect bursts of download requests and generate instructions for scheduling auxiliary sources for download.

[0046] In one embodiment, some or part of the functionality of the multi-source scheduling strategy server 114 described herein may be performed by the statistics server 116. The statistics server 116 may synchronize with the multi-source scheduling strategy server 114 to provide the strategies to the client device 101 [0047] In the embodiment shown in FIG. 3, the multi-source scheduling strategy server 114 includes an acquisition module 310, an adjustment determination module 320, a detection module 330 and an auxiliary CDN calling module 340.

[0048] The acquisition module 310 acquires information related to the downloadsto the client device 101. The acquisition module 310 is described in detail below with reference to FIG. 4. The adjustment determination module 320 determines information related to allocating download requests between multiple possible sources for downloadingthe network resources. The adjustment determination module 320 is described in detail below with reference to FIG. 5.

[0049] The detection module 330 detects conditions that trigger scheduling auxiliary CDN services. For example, the detection module 330 receives a download time for a download requestby the client devices 101 and detects whether the download time is within a preset peak period for downloading. For example, if preset peak periods for downloading include 8:00- 10:00PM on weekdays and 10: 00AM- 10:00PM on weekends, and the time when the client device 101 requests a download is 9:25PM on Monday, then the download time is within the preset peak periods. As another example, the detection module 330 detects whether a burst of a large number of download requests has been received. For example, the detection module 330 might coordinate with the statistics server 116 to determine that more than a certain number of download requests (e.g., more than 200 commands) received in a short time period (e.g., one second, five seconds, 10 seconds, etc.) would qualify as a burst. The detection module 330 then determines when a burst of download requests occurs. The detection module 330 sends a signal indicating detection of these conditions to the auxiliary CDN calling module 340. [0050] The auxiliary CDN calling module 340 generates instructions for client devices to use auxiliary CDN services when needed. For example, responsive to receiving a signal indicating that the client device 101 has beendownloading data during a preset peak period for downloading, the auxiliary CDN calling module 340 generates and transmits instructions to the client device 101 for scheduling auxiliary CDN services to download the data.

Similarly, the auxiliary CDN calling module 340 generates and transmits instructions to the client device 101 for scheduling auxiliary CDN services responsive to receiving a signal indicating the occurrence of a burst of a large amount of download requests. In this way, the requirement for temporary increase in download bandwidth can be satisfied by utilizing the additional auxiliary CDN sources.

[0051] FIG. 4 is a block diagram illustrating an acquisition module 310 according to one embodiment. The acquisition module 310 acquires information related to download by the client device 101. In the illustrated embodiment, the acquisition module 310 includes a characteristic calculation module 402 and a source query module 404.

[0052] The characteristic calculation module 402 calculates characteristics of the downloadsperformed by the client device 101. For example, the characteristic can be a hash value of the download, including information identifying the source. The characteristic calculation module 402 may apply a hash algorithm to the download and obtain a hash value of the download. Alternatively, the characteristic calculation module 402 may calculate other types of characteristic values for the download performed by the client device 101.

[0053] The source query module 404 receives the characteristic value of the download and determines the source of the download based on its characteristic value. In one embodiment, the source query module 404 cooperates with the resource indexing server 104 to query the resource index database 102 for the source of the downloaded data. For example, the resource index database 102 stores a mapping relation between the hash value of the data and the URL of the data. Given the hash value of the download, the source of the downloaded data can be determined.

[0054] Alternatively, the source query module 404 queries a preset characteristic value information library for the source of the download using the characteristic value of the download. For example, the preset characteristic value information library stores the corresponding relationship between the characteristic value and the source information of the downloaded data.

[0055] Referring now to FIG. 5, one embodiment of the adjustment determination module 320 is illustrated. The adjustment determination module 320 determines the multi- source scheduling strategy (or adjustments of the strategy) based on the quality and source of the downloads. For example, the adjustment determination module 320 may determine priorities of different sources for data downloading based on the quality of the downloads from those sources. Further, the adjustment determination module 320 may also determine relative weights or ratios of the different sources based on the quality of the downloads from the sources or based on the relative priorities of the sources. In the illustrated embodiment, the adjustment determination module 320 includes a quality determination module 510, a source information query module 520 and an instruction module 530.

[0056] The quality determination module 5 lOreceives quality information of the downloadsby the client device 101 and determines if the quality of the downloads meets a preset quality requirement. The preset quality requirement can include a required value for average download speed, a required value for data download success rate, and/or a required level for stability of download speed. One or more of these required values can be adjusted according to the download date and time. For example, the quality requirement for download on weekdays and weekends may be different. In addition, oneor more of these required values can be adjusted responsive to receiving a command for publishing a large software package or a large patch data packet.

[0057] In one embodiment, the quality determination module 510 determines if the average download speed of the data downloaded by the client device 101 equals or is higher than the required value for average download speed. If the average download speed of the data by downloaded the client device 101 is lower than the required value for average download speed, the quality determination module 510 determines that the quality of the downloaded data does not meet the requirement and sends a signal indicating that the quality of the downloaded data does not meet the requirement to the source information query module 520.

[0058] Additionally or alternatively, the quality determination module 510 may determine if the download success rate of the data downloaded by the client device 101 equals or is higher than the required value for data download success rate. If the download success rate of the downloaded data is lower than the required value, the quality

determination module 510 determines that the quality of the downloaded data does not meet the requirement and sends a signal indicating that the quality of the downloaded data does not meet the requirement to the source information query module 520. [0059] Similarly, the quality determination module 510 may also determine if the stability of the download speed of the data downloaded by the client device 101 equals or is higher than the required level. If the stability of the download speed of the data downloaded by the client device 101 is lower than the required value, the quality

determination module 510 determines that the quality of the downloaded data does not meet the requirement and sends a signal indicating that the quality of the downloaded data does not meet the requirement to the source information query module 520.

[0060] In one embodiment, the source information query module 520 receives the signal indicating that the quality of the downloaded data does not meet the requirement. Responsive to receiving the signal, the source information query module 520 may acquire information indicating the source of the download data from the source query module 404 and control the statistics server 116 to make inquiry for information about the source of the downloaded data. The information about the source of the downloaded data can include the maximum download speed and the priority of the source. The sources of the downloaded data may include source CDN, auxiliary CDN, third-party mirror resources, ISP auxiliary cache, P2P network, etc. The maximum download speed of a source can be a preset maximum value of the download speed of the source. Alternatively, the maximum download speed of a source can be determined based on the download speeds of historical data downloading within a certain time period.

[0061] In one embodiment, these sources of the downloaded data can be ranked based on their maximum download speed. In another embodiment, these sources of the downloaded data can be ranked according to tests on other factors. For example, these sources can be ranked by their connection duration or download results. Accordingly, priorities of the sources based on different factors can be obtained. In yet another embodiment, these sources have a default priority ranking. For example, the auxiliary CDN ranks lower than the other sources. When the quality of the downloaded data meets the requirement, the default priority ranking can be used for scheduling the multi-source download. When the quality of the downloaded data does not meet the requirement, the source information query module 520 obtains the maximum download speeds and the priorities of the sources of the downloaded data and transmits the information to the instruction module 530 for generating adjustment instructions for download scheduling.

[0062] The instruction module 530 receives the maximum download speeds and the priorities of the sources of the downloaded data and generates download source information for the client device 101 based on the received information. Referring now to FIG. 6, one embodiment of the instruction module 530 includes a ratio-allocation instruction module 602 and a source- setting instruction module 604.

[0063] The ratio-allocation module 602determines a ratio for allocation of downloads between the different sources of downloaded data, based on the received information. As described above, the received information can include the maximum download speeds and the priorities of the multiple sources of the downloaded data. In one embodiment, the ratio- allocation module 602 generates instructions for assigning different download ratio to each of the sources of the downloaded data based on the priority of each source. Additionally, the ratio-allocation module 602 may also generates instructions for adjusting the download ratio between the sources of the downloaded data based on cost requirement. For example, different sources may have different download costs. The total download cost from a combination of different sources may be setbelow anupper limit. [0064] In one embodiment, as described above, the quality of the downloaded data is compared with the quality requirement in order to obtain the specific aspect of the quality that does not meet the quality requirement, such as the download speed, download success rate and stability of the download speed. Accordingly, the sources of the downloaded data can be ranked based on the specific aspect of the quality. For example, the sources can be ranked by their maximum download speeds. Therefore, the download ratio can be scheduled and adjusted according to the priority ranking of the sources of the downloaded data. For example, the sources of the downloaded data are determined to include five sources ranked in an order of source CDN, auxiliary CDN, third-party mirror image resource, ISP auxiliary cache and P2P network. The download ratio can be adjusted according to the ranking of the sources. For example, the downloaded ratio between the five sources can be adjusted to a ratio of 3:2.5:2: 1.5: 1.

[0065] Further, a cost correction factor can be applied to the download ratio to balance the download quality and the download cost. For example, although source CDN ranks the highest according to download speed, its cost may also be high. A cost correction factor can be determined according to relation between the speed requirement and the cost requirement. For example, a cost correction factor is 7:3. The download ratio of

3:2.5:2: 1.5: 1 can be corrected by using the ratio correction factor to lower the ratio of the higher cost source and increase the ratio of the lower cost source. In this way, the scheduled multi-source downloadcan meet both the speed requirement and the cost requirement.

[0066] Additionally, the download speed of each source can also be adjusted based on the priority and the maximum download speed of each source. For example, the download speed of a source with a higher priority may be adjusted to a value that approximately equals to the maximum download speed of the source with the higher priority, while the download speed of a source with a lower priority may be adjusted to a value substantially lower than the maximum download speed of the source with the lower priority. Other examples of adjusting download speed of a source based on the priority and the maximum download speed of the source known to those of skills in the art are possible.

[0067] The source- setting instruction module 604provides additional download source information to further adjust download scheduling by clients. In one embodiment, the source- setting instruction module 604 receives source information of the downloaded data from the source information query module 520 and detects if a packet loss event has occurred in the downloads from the sources. The source-setting instruction module 604 generates instructions for adjusting source settings based on aresult of the detection of a packet loss event. In one embodiment, if the source- setting instruction module 604 detects that a packet loss event has occurred in the data downloaded by the client device 101 from a certain source, the source- setting instruction module 604 generates instruction for reducing the number of packets sent in one round-trip-delay by the certain source.

[0068] In one embodiment, if the source-setting instruction module 604 detects that no packet loss event has occurred in the data downloaded by the client device 101 from a certain source, the source-setting instruction module 604 generates instruction for setting the certain source to send, in one round-trip-delay,one more piece of data with the maximum message length. EXEMPLARY METHOD

[0069] FIG. 7 is a flowchart illustrating a process for determining and transmitting information for scheduling data download according to one embodiment.FIG. 8 is a flowchart illustrating a process for determining and transmitting information for adjusting download ratio and download speed according to one embodiment. FIG. 9 is a flowchart illustrating a process for determining values for download ratio and download speed according to one embodiment. The process illustrated in FIGs.7-9, respectively, can be performed by one or more entities in the multi-source bandwidth scheduling system lOOillustrated in FIG. 1, for example, by the multi-source scheduling strategy server 114 illustrated in FIG. 3 in detail. Further, some embodiments may perform the steps of the processes in parallel, perform the steps in different orders, or perform different steps.

[0070] Referring to FIG. 7, the multi-source scheduling strategy server 114 acquires 710 information related to downloadsto a client device 101. The information related to the downloads can include the quality and sources of the downloaded data. For example, the quality of the downloads can include average download speed, download success rate and stability of download speed. The sources of the downloaded data can include source CDNs, auxiliary CDNs, third-party mirror image resources, ISP auxiliary caches and P2P networks.

[0071] The multi-source scheduling strategy server 114 analyzes 720 the information including the quality and the sources of the data downloaded by the client device 101. For example, the multi-source scheduling strategy server 114 may compare the quality of the downloaded data with corresponding requirements. In addition, the multi-source scheduling strategy server 114 may also acquire information of the sources of the downloaded data and determines priorities of the sources based on different factors such as different aspects of quality.

[0072] The multi-source scheduling strategy server 114 determines 730 values for the download ratio among different sources and for the download speed of each source based on the analysis of the information. For example, the multi-source scheduling strategy server 114 determines values for the download ratio of each source based on priority of each source. Additionally, the multi-source scheduling strategy server 114 may determine values for the download speed of each source based on priority and the maximum download speed of each source. The multi-source scheduling strategy server 114 transmits 740 instructionsto the client device 101 for adjusting the download ratio and download speed to the determined values.

[0073] In addition, in this example, the multi-source scheduling strategy server 114 also detects 750 a peak period or a burst of requests for data download. For example, the multi-source scheduling strategy server 114 determines if the time when the client device 101 requests data download is within a preset peak download period such as 8:00PM-12:00PM. Alternatively or additionally, the multi-source scheduling strategy server 114 detects if a burst of a large number of commands for data downloads has occurred. Responsive to the detection of the peak period or occurrence of the burst of commands, the multi-source scheduling strategy server 114 transmits 760 instructionsto the client for scheduling auxiliary CDN service to download data.

[0074] FIG. 8 is a flowchart illustrating a process for determining and transmitting information for adjusting download ratio and download speed according to one embodiment.Initially, the multi-source scheduling strategy server 114 receives 810 quality information for the downloads to a client device 101. For example, the quality information can include average download speed, download success rate and stability of download speed.

[0075] The multi-source scheduling strategy server 114 calculates 820 a characteristic value of the downloads by the client device 101. For example, the multi-source scheduling strategy server 114 applies a hash algorithm to calculate the hash value of the downloads. The multi-source scheduling strategy server 114 determines 830thesources of the downloads, for example, based on the hash value.

[0076] Optionally, the multi-source scheduling strategy server 114 also determines 840 if the quality of the downloaded data meets the quality requirement. For example, the multi-source scheduling strategy server 114 determines if the average download speed, download success rate and/or the stability of download speed satisfy the required value, respectively. If one or more of the quality factors (e.g., the average download speed, download success rate, the stability of download speed) do not meet the requirement, the multi-source scheduling strategy server 114 determines 850 (e.g., queries) the maximum download speed and the download priority of the source of the downloaded data.

[0077] The multi-source scheduling strategy server 114 determines 860 values for download ratio and download speed of the source of the downloaded data based on the maximum download speed and the priority of the source, and transmits 870 instructionsto the client device 101 for adjusting download ratio and download speed to the determined values. The step of determining 860 the values for download ratio and download speed of the source of the downloaded data based on the maximum download speed and the priority of the source will be describe in detail below with reference to FIG. 9.

[0078] Referring now to FIG. 9, a process for determining values for download ratio and download speed according to one embodiment is illustrated. Initially, the multi-source scheduling strategy server 114 receives 902 the maximum download speeds and a default priority of the sources of downloaded data. The multi-source scheduling strategy server 114 determines 904 avalue of download ratio for thesources of the downloaded data based on the priorities of the sources. For example, a source with a higher priority, e.g., in terms of download success rate, may be assigned to a larger download ratio so that more download work is directed to the source with higher download success rate and the success rate for total download work can be increased.

[0079] In this example, the multi-source scheduling strategy server 114 also adjusts 906 the value of the download ratio for the sources of data based on cost requirement. For example, the download ratio for the source may be decreased if the source has a higher cost; while the download ratio for the source may be increased if the source has a lower cost.

[0080] In this example, the multi-source scheduling strategy server 114 also detects 908 a packet loss event. The multi-source scheduling strategy server 114 determines 910 if any packet loss event has been detected. If a packet loss event has been detected, the multi- source scheduling strategy server 114 determines 912 instructions for setting the source to decrease the number of packets transmitted in a round-trip delay. Otherwise, multi-source scheduling strategy server 114 determines 914 instructions for setting the source to transmit an additional piece of data with the maximum message length. [0081] FIG. 10 is a flowchart illustrating a process for adjusting download ratio and download speed based on download information according to one embodiment. The process illustrated in FIG. 10 can be performed by the client device 101. In addition, some embodiments may perform the steps of the process in parallel, perform the steps in different orders, or perform different steps.

[0082] Initially, the client device 101 determines 1002 information related to downloads. For example, the information can include quality of the downloads such as average download speed, data download success rate and stability of download speed. The client device 101 transmits 1004 the information including the quality of the downloads to a server, for example, the multi-source scheduling strategy server 114 of the multi-source bandwidth scheduling system 100 illustrated in FIG. 1. The client device 101 also receives 1006 download source information from the server,such as the multi-source scheduling strategy server 114. The download source information defines a download ratio and download speed for the sources of the downloads. The client device 101 adjusts 1008 download ratio and download speeds for the sources of the downloadsbased on the download source information. The client device 101 schedules 1010 downloads among the different sources according to the adjusted download ratio and download speeds.

GENERAL

[0083] The foregoing description of the embodiments of the invention has been presented for the purpose of illustration; it is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Persons skilled in the relevant art can appreciate that many modifications and variations are possible in light of the above disclosure. [0084] Some portions of this description describe the embodiments of the invention in terms of algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations are commonly used by those skilled in the data processing arts to convey the substance of their work effectively to others skilled in the art. These operations, while described functionally, computationally, or logically, are understood to be implemented by computer programs or equivalent electrical circuits, microcode, or the like. Furthermore, it has also proven convenient at times, to refer to these arrangements of operations as modules, without loss of generality. The described operations and their associated modules may be embodied in software, firmware, hardware, or any combinations thereof

[0085] Any of the steps, operations, or processes described herein may be performed or implemented with one or more hardware or software modules, alone or in combination with other devices. In one embodiment, a software module is implemented with a computer program product comprising a computer-readable medium containing computer program code, which can be executed by a computer processor for performing any or all of the steps, operations, or processes described.

[0086] Embodiments of the invention may also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, and/or it may comprise a general-purpose computing device selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a tangible computer readable storage medium or any type of media suitable for storing electronic instructions, and coupled to a computer system bus. Furthermore, any computing systems referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability.

[0087] The above description is included to illustrate the operation of the preferred embodiments and is not meant to limit the scope of the invention. The scope of the invention is to be limited only by the following claims. From the above discussion, many variations will be apparent to one skilled in the relevant art that would yet be encompassed by the spirit and scope of the invention.