Patent ID: 7555559
Filing Date: 2009-06-30
Classification: H04L

Abstract:
1. A parallel download system executing on a client computer to control download of data from a plurality of source servers in parallel the system comprising: a source scheduler that ranks a plurality of communication channels to generate a download schedule to control which of the plurality of communication channels will be downloaded from in parallel at a point in time, wherein each of the source servers stores a copy of at least a portion of a file containing data, and wherein each of the plurality of communication channels comprises a network connection to one of the plurality of source servers; a prioritization scheduler that determines a range of the data that should be requested from one or more of the plurality of source servers and the point in time when the range of data should be requested from the one or more of the plurality of source servers, wherein the prioritization scheduler tracks an overall latency and throughput for all the communication channels for one or more of the source servers while downloading at least a portion of the data of the file from two or more of the plurality of communication channels in parallel and, based on the latency and throughput of the communication channels, dynamically adjusts the download schedule including the range of data and the point in time to request the range of data for at least one of the communication channels while downloading the data in parallel to control download performance; a proportional allocator that, for a source server of the one or more source servers, determines a plurality of portions of the range of data for that source server that should be downloaded using one or more of the communication channels to that source server, wherein each of the portions of the range of data to be downloaded from that source server is determined based on one or more of an expected throughput and latency of each of the one or more communication channels to that source server and a time interval assigned by the proportional allocator for downloading the range of data using the communication channels; and an I/O dispatcher to produce an output stream to present the downloaded data to one or more external applications or a user.