WO2010140152A2 - A device and method for increasing downloading throughput - Google Patents
A device and method for increasing downloading throughput Download PDFInfo
- Publication number
- WO2010140152A2 WO2010140152A2 PCT/IL2010/000440 IL2010000440W WO2010140152A2 WO 2010140152 A2 WO2010140152 A2 WO 2010140152A2 IL 2010000440 W IL2010000440 W IL 2010000440W WO 2010140152 A2 WO2010140152 A2 WO 2010140152A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- downloading
- client
- throughput
- content
- tasks
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/19—Flow control; Congestion control at layers above the network layer
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Definitions
- This invention relates to efficient distribution of Internet content to media viewers.
- US2002083133 discloses a method for downloading files, the method including the steps of at a client a) requesting a proxy server to initiate a first download of a file from a first server, the first server determined by the client to lack download resume capability and the proxy server possessing download resume capability, at the proxy server b) initiating the first download of the file from the first server, and at the client c) initiating at least a second download of the file from the proxy server.
- US2002087654 discloses a method for downloading a file to a client, the method including determining the presence of the file on each of a plurality of secondary servers, retrieving a plurality of portions of the file from any of the servers, where at least a first of the portions is retrieved from a first of any of the servers and at least a second of the portions is retrieved from a second of any of the servers, and assembling the file at the client from the plurality of portions.
- a method for increasing downloading throughput of a client for downloading content of interest stored at an upstream network node wherein downloading of said content of interest is performed via a local network node; the client having a predefined downloading throughput, the local network node is provided with a predefined downloading throughput for downloading content from at least the upstream network node and wherein the client is provided with a portion of the downloading throughput, the portion representing the true downloading throughput of the client and is less than the predefined downloading throughput of the client, the method comprising, instructing a processor to perform the following stages: a) determining a required number of tasks, wherein each task is configured for downloading a data segment of the content of interest, and wherein the total downloading throughput of all of the tasks is greater than the true throughput; b) generating one or more tasks, according to the number; c) assigning to each of the one or more tasks a data segment of the content of interest; d) utilizing the one or more tasks for downloading the data
- stages (c) and (d), described above are repeated until the entire content of interest is downloaded.
- the total downloading throughput of all of the tasks equals a requested downloading throughput for downloading the content of interest.
- a total downloading throughput of all of the one or more tasks is equal to a maximal downloading throughput provided by the local network node to the client.
- the downloading in stage (d), described above is performed by all of the one or more tasks, substantially at the same time.
- the number is repeatedly determined and thereby enables to adapt the number of tasks to changes in the requested downloading throughput or the true downloading throughput.
- the adaptation enables to provide to the client a constant rate of data flow.
- the number is calculated based on a downloading degradation factor and wherein stage (a) includes at least the following: i. determining a requested downloading throughput of the client, being a downloading throughput requested for downloading the content of interest; ii. determining the true downloading throughput of the client; and, iii. calculating a ratio between the requested downloading throughput and the true downloading throughput thereby obtaining the downloading degradation factor.
- stage (c) further comprises: assigning each task with a first pointer indicating the starting location of a data segment of the content of interest and a second pointer indicating the ending location of a data segment of the content of interest.
- the network node is an Internet service provider (ISP).
- ISP Internet service provider
- the content of interest is downloaded in real-time.
- a device for increasing downloading throughput of a client for downloading via a local network node content of interest stored at an upstream network node comprising: a download accelerator comprising a downloading degradation factor calculator, and a tasks generator; the download accelerator is configured to identify that a predefined downloading throughput, provided to the client by the local network node, is greater than a true downloading throughput of the client; wherein the true downloading throughput is a portion of a downloading throughput provided to the local network node by the upstream node for downloading content from the upstream network node; the downloading degradation factor calculator is configured, in response to said identification, to determine a required number of tasks, wherein each task is configured for downloading a data segment of the content of interest, and wherein the total downloading throughput of all of the tasks is greater than the true throughput; a tasks generator configured for receiving the number from the downloading degradation factor calculator and generating one or more tasks according to the number, the tasks generator is further configured for assigning to each of the one or more
- said total downloading throughput of all of the tasks equals to a requested downloading throughput for downloading the content of interest.
- the requested downloading throughput is equal to a maximal downloading throughput of the client.
- the total downloading throughput of all of the tasks equals to a maximal downloading throughput provided to the client by the local network node.
- the one or more tasks are configured for downloading, substantially at the same time the data segments.
- the degradation factor calculator is configured repeatedly calculate the degradation factor and thereby enables to adapt the number of tasks to changes in the requested downloading throughput or the true downloading throughput.
- the adaptation enables to provide to the client a constant rate of data flow.
- the number is calculated based on a downloading degradation factor
- the downloading degradation factor calculator is configured to perform at least the following: a) determine a requested downloading throughput of the client; b) determine the true downloading throughput of the client; and, c) calculate a ratio of the requested downloading throughput and the true downloading throughput, thereby obtaining the downloading degradation factor.
- a client connectable to a local network node and configured for downloading content of interest stored at an upstream network node, via the local network node, the device disclosed above being incorporated in the client and configured for increasing downloading throughput of said client for downloading content of interest stored at the upstream network node.
- a local network node connectable to one or more clients and configured for handling downloading requests sent by the one or more clients, the device disclosed above being associated with the local network node and configured for increasing downloading throughput of at least one client out of the one or more clients, for downloading content of interest stored at an upstream network node.
- a program storage device readable by machine, tangibly embodying a program of instructions executable by the machine to perform method steps for increasing downloading throughput of a client for downloading content of interest stored at an upstream network node, wherein downloading of the content of interest is performed via a local network node; the client having a predefined downloading throughput, the local network node is provided with a predefined downloading throughput for downloading content from at least the upstream network node and wherein the client is provided with a portion of said downloading throughput, the portion representing the true downloading throughput of the client and is less than the predefined downloading throughput of the client, the method comprising instructing a processor to perform the following stages: a) determining a required number of tasks, wherein each task is configured for downloading a data segment of the content of interest, and wherein the total downloading throughput of all of the tasks is greater than the true throughput; b) generating one or more tasks, according to the number; c) assigning to each of the one or more
- Fig. 1 is a block diagram schematically illustrating the network architecture, in accordance with an embodiment of the invention
- Fig. 3 illustrates a flow chart of a sequence of operations for increasing client's downloading throughput, in accordance with certain embodiments of the invention
- Fig. 4 it illustrates a flow chart of a sequence of operations for determining the number of required tasks, in accordance with an embodiment of the invention
- Fig. 5 is a block diagram schematically illustrating the network architecture, in accordance with an embodiment of the invention.
- Fig. 6 is a block diagram schematically illustrating the network architecture, in accordance with an embodiment of the invention.
- Fig. 7 is a block diagram schematically illustrating the network architecture, in accordance with an embodiment of the invention.
- Fig. 8 illustrates a flowchart of a sequence of operations performed by an ISP for increasing client's downloading throughput, in accordance with certain embodiments of the invention.
- the phrase “for example,” “such as” and variants thereof describing exemplary implementations of the present invention are exemplary in nature and not limiting.
- Reference in the specification to “one embodiment”, “an embodiment”, “some embodiments”, “another embodiment”, “other embodiments”, “certain embodiment” or variations thereof means that a particular feature, structure or characteristic described in connection with the embodiment(s) is included in at least one embodiment of the invention.
- the appearance of the phrase “one embodiment”, “an embodiment”, “some embodiments”, “another embodiment”, “other embodiments”, “certain embodiments” or variations thereof do not necessarily refer to the same embodiment(s).
- Fig. 1, Fig. 5, Fig. 6 and Fig. 7 show a general schematic illustration of network architecture in accordance with an embodiment of the invention.
- Fig. 2 shows a schematic illustration of a download accelerator, in accordance with an embodiment of the invention.
- Fig. 7 can be made up of any combination of software, hardware and/or firmware that performs the functions as defined and explained herein.
- the modules in Fig. 1, Fig. 2, Fig. 5, Fig. 6 and Fig. 7 may be centralized in one location or dispersed over more than one location.
- the system may comprise fewer, more, and/or different modules than those shown in Fig. 1, Fig. 2, Fig. 5, Fig. 6 and Fig. 7.
- ISP Internet Service Provider
- an ISP is a server computer which provides its clients with access to the Internet.
- An ISP is often connected and provides services to a plurality of clients, their number possibly amounting to hundreds, thousands or more.
- ISPs are connected to one or more other upstream network nodes (e.g. upstream-ISPs) which provide access to Internet content and services.
- upstream-ISPs may be connected to a chain of a number of upstream-ISPs connected one after the other.
- local-ISP is used to describe ISPs which are directly connected with the end user (e.g. client).
- ISP may be interchangeable with the more general term 'network node', the term ISP is used in the following discussion for purposes of clarity only and should not be construed as limiting.
- local-ISP network is used to describe the communication network of a local-ISP and its clients.
- the local-ISP distributes to its clients content items, otherwise known as content (e.g. video files, music files, images, documents, etc.). Some of the content may be stored at the local-ISP and some may be stored at upstream-ISPs.
- a client's available downloading throughput refers to the client's downloading speed (e.g. in kilo bit per second units) and is dependent on a number of factors.
- downloading capacity refers to the client's downloading speed (e.g. in kilo bit per second units) and is dependent on a number of factors.
- the local-ISP provides to each of its clients a predefined downloading bandwidth.
- the downloading bandwidth provided by the local-ISP to the client represents the maximal downloading throughput of the client (i.e. client's maximal throughput).
- a local-ISP is provided with a predefined downloading bandwidth for downloading content stored at upstream ISPs. This bandwidth is provided in general by Internet administrators which are responsible for distributing the available Internet bandwidth between different local-ISPs that wish to utilize Internet communication.
- the total downloading bandwidth provided to a given local-ISP serves for the Internet communication with upstream-ISPs of all clients in the local-ISP network.
- the total downloading bandwidth is divided by the local-ISP (e.g.
- each such client is provided only with a portion of the total bandwidth which is provided to the local-ISP for downloading content from upstream-ISP.
- the portion of bandwidth, provided to each client serves the client for downloading content from upstream-ISPs and is referred to herein as the "true downloading throughput" of the client.
- the portions of upstream-ISP downloading bandwidth (i.e. true throughput), which are provided to each client by the local-ISP, are substantially smaller than the maximal downloading throughput of each client, and are many times insufficient for high quality downloading and viewing of requested content items.
- This is especially relevant where a client is interested in downloading and viewing content which is being distributed in real-time by an upstream-ISP (e.g. a video stream).
- an upstream-ISP e.g. a video stream.
- the following is a non-limiting example of an operational scenario which illustrates the shortcomings of prior art network downloading facilities.
- a local-ISP network with a local-ISP server connected to 300 clients.
- the local-ISP provides each client with a bandwidth of 1.5 Mega bps (bit per second) for downloading content. This bandwidth represents the maximal throughput of the clients in the local-ISP network.
- the local-ISP is provided, for example, with a bandwidth of 100 Mega bps for downloading content stored at up-stream ISPs (upstream of the local-ISP network). This bandwidth is divided by the local- ISP between all clients in the local-ISP network who wish to download content items stored at upstream-ISPs.
- the number of clients who wish to download content items stored at upstream-ISPs equals 200.
- the true downloading throughput of each client is 0.5 Mega bps.
- their true downloading throughput, for downloading content from upstream-ISPs is degraded by a factor of 3 and amounts to only 0.5 Mega bps.
- a client is attempting to download a video stream (e.g. a video being downloaded and viewed in real-time) of 1 Mega bps from an upstream-ISP.
- the video which is being downloaded is broadcast at a rate of 1 mega bps and thus requires to be downloaded at substantially the same rate by a client.
- the maximal throughput of the client is 1.5 Mega bps, which is more than enough for downloading the video stream in good quality
- the true downloading throughput which amounts to 0.5 Mega bps, imposes a limitation on the downloading capacity of the client, which renders downloading the video stream in real-time, with a constant rate of data flow (i.e. without delays in the streaming), impossible.
- a client 100 is connected to a local-ISP 130 which is connected in turn to one or more upstream-ISPs 120.
- Client 100, local-ISP 130 and upstream-ISP 120 are associated each with at least one processor configured to manage, control and execute relevant components and operations.
- Client 100 may be incorporated in a television set (e.g. Set-Top-Box), cellular telephone, PDA, personal or portable computer, or any other apparatus having the appropriate processing power and capable of communicating with a server.
- client and server as used herein may refer to the entire hardware device encapsulating the logic of a client process and server process, respectively.
- client and server may refer to a software implementation of the logic of a client or server (i.e. process) being embedded within an appropriate hardware device or to any combination of hardware and software.
- Communication between client 100 and server 130 and between local-ISP 130 to upstream-ISPs 120 may be facilitated by any type of communication means or network (e.g. wired or wireless network implemented by any type of known technology). Note that the invention is not bound by the specified client server architecture and not by the specific modules that form part of either the client or the server.
- Client device 100 includes a known per se Media Player (MP) 101 communicating e.g. through Application Programming Interface (API) to a client module 104.
- MP Media Player
- API Application Programming Interface
- client module 104 includes a download accelerator 104' device and content processing module 104".
- download accelerator 104' may be located outside of client module 104 and configured as a separate unit within client 100.
- Other examples of different configurations of download accelerator 104' are described below with reference to figures 5, 6 and 7.
- Client module 104 is configured for establishing a connection to a network and communicating with other network nodes in the same network, for example local-ISP 130. In the following discussion this communication is typically performed through content processing module 104" that forms part of module 104.
- the operation of client device 100 is generally managed by a Media Center (MC) 105.
- the MC 105 performs known per se management tasks and stores operational data such as file transfer protocol data.
- the invention is not bound by performing the specified tasks in a media center, and other module or modules in addition to or instead of the specified media center may be utilized.
- Media Player includes computer software/hardware for playing back multimedia files, supporting an array of media formats, including both audio and video files. MP is typically associated with an Audio/Video Codecs module for decoding digital data content.
- MP Media Player
- a server 130 of a local Internet service provider that includes a server module (or process) 134 associated with database 132.
- Servers are often implemented as dedicated server-computers which are characterized by faster CPU, high performance RAM and typically multiple hard drives and large storage space.
- client 100 communicates with local-ISP 130 via server module 134 configured, inter alia, for receiving and handling client requests, extracting data (e.g. from database 132, or from upstream-ISPs 120), sending responses to clients, storing data etc.
- the local-ISP server is connected to one or more upstream-ISPs 120. Similar to the local-ISP 130, an upstream-
- the requested content item is retrieved from the appropriate source while utilizing download accelerator 104' device.
- content may be stored in the database of the local-ISP 132 in which case it is downloaded directly from the local-ISP 130.
- the desired content may be stored on an upstream-ISP 120 (e.g. a publisher network-node that broadcasts the desired content or some other network-node that stores the desired content), in which case the content is downloaded from the relevant upstream- ISP 120.
- download accelerator 104' enables to increase the downloading throughput which is provided to clients for downloading desired content items which are stored at upstream network nodes such as upstream-ISPs. Download accelerator also enables to provide to a client a constant downloading throughput which allows a constant rate of flow of data.
- Fig. 2 illustrates a download accelerator 104' device configured for increasing a client's downloading throughput, in accordance with certain embodiments of the invention.
- the term download accelerator device may refer to a hardware device encapsulating the logic of a download accelerator process.
- the term download accelerator device may refer to a software implementation of the logic of a download accelerator being embedded within an appropriate hardware device or to any combination of hardware and software.
- Fig. 2 is a non-binding example of a download accelerator 104' which according to the embodiment depicted in Fig. 1 is incorporated within a client device 100.
- download accelerator 104' comprises a degradation factor calculator 202, a tasks generator 204, a tasks vector 206 and a preprocessing unit 210.
- Degradation factor calculator 202 is configured for calculating a degradation factor which indicates the decrease of the downloading throughput of the client from its maximal value to its true value.
- the degradation factor is represented by the ratio between the maximal downloading throughput (or maximal downloading capacity) of the client and the true downloading throughput (or true downloading capacity) of the client.
- the maximal downloading throughput is equal to the downloading bandwidth provided by the local-ISP to the client.
- the true downloading throughput equals a portion of the total bandwidth which is provided to a local-ISP for downloading content located at upstream-ISPs. The total bandwidth is divided between all clients, whose download content is stored at upstream-ISPs. Thus, where a client is downloading a content item which is stored at an upstream-ISP, the true downloading throughput of that client equals a relative fraction which is provided to that client out of the total downloading bandwidth of the local- ISP.
- the tasks generator 204 is configured for receiving the degradation factor from the degradation factor calculator 202 and for generating one or more tasks 208 according to the received degradation factor.
- the generated tasks 208 are consolidated in a tasks vector 206.
- Each task 208 is an individual component configured for downloading content to the client device.
- Local-ISP 130 receives from client 100 one or more downloading requests, where each request is issued by a different task.
- Each task 208 is considered by local-ISP 130 as an individual downloading request. Accordingly, local-ISP 130 provides to each task 208 a portion of the entire downloading bandwidth, which is otherwise provided to a single client. In other words each task is provided with a downloading throughput which is equal to the downloading throughput which is otherwise provided to a single client.
- local-ISP 130 may provide each task 208 with a portion of downloading bandwidth which is smaller than the downloading bandwidth typically provided to a single client. However, as each task 208 downloads a different portion of the content item, client 100 is enabled to utilize a total downloading bandwidth which is greater than the portion of downloading bandwidth which is provided to a single client without the use of download accelerator 104'. In some embodiments, all tasks may be configured to download their assigned portions of the content item, substantially at the same time. In some embodiments, download accelerator 104' enables client 100 to utilize its maximal downloading throughput and to completely override its downloading bandwidth limitations imposed on downloading content from upstream-ISPs.
- each task 208 is directed for downloading a different data segment ("segment" in short) of the requested content item.
- segment refers to a portion of data of a content item. This term should be regarded as general and non- limiting and may represent any type, size or format of data segments.
- Each segment is part of a source file of the requested content item representing a portion of the data from the relevant source file.
- the tasks generator 204 is configured to assign to each task a specific data segment of the content item.
- the tasks generator 204 assigns each task in the tasks vector 206 with a start position and end position of the data segment within its origin (e.g. the source file of the content item).
- tasks may be directed to download data segments which are stored e.g. in a caching repository.
- each task 208 is assigned with a start position and end position of data segment in respect of the caching repository.
- the collection of segments, which are downloaded by all the tasks represents a continuous sequence of data of the content item.
- Task generator 204 may also be configured for checking for errors in the downloaded segments and consolidating the segments into a single unit of data (referred to herein as "a cluster") before it is transmitted to the MC 105. Methods for the identification and handling of errors are well known in the art and therefore shall not be described herein any further. According to certain embodiments, once the downloading of the segments by all tasks 208 is completed, the downloaded segments (or clusters) are transmitted to MC 105 and displayed by the MP 101 while at the same time the next set of segments (cluster) are downloaded by the tasks 208 in the task vector 206.
- Fig. 3 illustrates a flowchart of a sequence of operations for increasing a client's downloading throughput, in accordance with an embodiment of the invention. At least part of the operations illustrated with reference to Fig. 3 may be performed by download accelerator 104'.
- a downloading process is usually initiated by a client's request to download a content item (i.e. a downloading request) 301.
- a downloading request is made, the request is forwarded to download accelerator 104' by client 100.
- Download accelerator 104' proceeds to stage 302 during which the number of required tasks for providing sufficient downloading throughput is determined.
- Fig. 4 it illustrates a flowchart of a sequence of operations for determining the number of required tasks, in accordance with an embodiment of the invention. Following the description of Fig. 4 the specification reverts to the description of the remaining stages depicted in Fig. 3. According to the example illustrated in Fig. 4 in stage 302 of Fig 3, a downloading degradation factor is calculated.
- a requested downloading throughput of the client is determined.
- the term "requested downloading throughput” should be construed to include the maximal downloading throughput as well as other downloading capacities.
- Requested downloading throughput may refer for example, to an optimal downloading throughput for downloading and viewing a certain video in high quality, which may be less than the maximal downloading throughput of the client.
- the maximal downloading throughput is calculated.
- the client's maximal downloading throughput is expected to be equal to the maximal bandwidth which is provided to the client by the local-ISP, in reality the actual maximal downloading throughput of the client may be different than the bandwidth which is officially assigned to each client, and therefore it should be determined. This discrepancy may result for example, from local overloading of the client's facilities which may delay communication to the client.
- the client in order to determine the client's maximal downloading throughput, the client downloads a file which is stored at the local-ISP 130, and measures the downloading speed of the file (e.g. in kilo bit per second units). Possibly specific files are made available for this purpose, by ISP administrators.
- the true downloading throughput of the client is determined.
- the client downloads a segment of the data which is stored at the upstream-ISP 120 that stores the requested content item (possibly a segment of the requested content item). Knowing the size of the data segment and by measuring its downloading speed, the client can calculate its true downloading speed (e.g. in kilo bit per second units).
- the degradation factor can be calculated.
- the ratio between the requested downloading throughput and the true downloading throughput is calculated. In the following discussion this ratio represents the degradation factor.
- the calculation of the degradation factor is performed by degradation factor calculator 202.
- the degradation factor (DF) equals:
- the requested throughput may be equal to or smaller than the maximal downloading capacity.
- the degradation factor is calculated with either the maximal downloading throughput (in case the maximal downloading throughput is equal to the requested downloading throughput) or with a smaller requested downloading throughput.
- the number of required tasks 208 is determined.
- the number of required tasks (t), which are generated equals to the degradation factor (DF) + 1 (e.g. where DF does compute to integer with no remainder) whereas in other embodiments, the number of tasks equals the degradation factor (DF).
- this number is repeatedly calculated and updated in order to be adapted to changes in the DF, resulting from variation in the true downloading throughput or the requested downloading throughput. It should be noted that the example described above with reference to Fig. 4 is non-limiting and other methods for calculating the number of requested tasks and for representing the degradation factor may be used for the purpose of the present invention.
- the difference between the requested downloading throughput and the true downloading throughput may be first calculated and in case the calculated difference is a positive number (i.e. requested downloading throughput is greater than the true downloading throughput) the degradation factor may be represented as the ratio between the calculated difference and the true downloading throughput.
- the downloading throughput assigned to each task 208 may be smaller than the portion of downloading bandwidth which is assigned by the local-ISP to a single client, however the number of generated tasks 208 is such that the total downloading throughput of all tasks together is greater than the downloading throughput which would otherwise be provided by the local-ISP to a single client, not utilizing download accelerator 104'.
- stages 304 and 306 are performed by tasks generator 204.
- each task is provided with the location of the data segment within the source file.
- each task may be provided with a first pointer pointing to the beginning of the segment and a second pointer pointing to the end of the segment in the source file.
- the calculation of the offset of the segment of each task in respect of the source file can be represented, for example, as follows:
- CO cluster offset
- each segment is downloaded according to its assigned location which was determined in the previous stage and all segments are consolidated into a single cluster.
- the downloaded data is utilized by the client.
- the downloaded data can be stored on the computer memory and displayed e.g. via an LCD computer display, by a MC 105 in a client device 100.
- the downloaded content can be written to the computer disk in the appropriate location and possibly further processed.
- the offset of each segment in respect of the file which is being written is also calculated and utilized in the writing process.
- the system in order to ensure continuity and a constant rate of data flow, and also to avoid delays during consumption (e.g. viewing or listening) of the downloaded content in real-time, the system can be configured such that while a cluster which has already been downloaded is consumed, the next one or more clusters of data are being downloaded.
- This time gap allows the client, (or local- ISP), to run operations such as quality assurance tests, in order to make sure that all the correct segments have been downloaded and that there were no errors in the downloading process.
- This time gap also provides the client with time to correct errors occurring during the downloading process, for example by re-downloading missing or corrupted segments.
- This time gap may further help to provide to the client a constant rate of flow of data and to avoid delays in the streaming. For example, in cases where a decrease in the true downloading throughput of the client is detected by download accelerator, the abovementioned time gap enables download accelerator to recalculate a new DF, generate additional tasks and adapt the client to the decrease in the downloading throughout while maintaining a constant flow of data by utilizing the data stored in the data buffers.
- the time gap may be obtained by configuring the client to delay the onset of the broadcasting of the content item until a plurality of clusters are downloaded, and stored in one or more data buffers.
- stages 306 to 310 are repeated throughout the downloading operation where in each iteration a different (e.g. a consecutive) part of the source file is downloaded.
- the true downloading throughput is dependent on the downloading bandwidth provided to the local-ISP 130 for downloading content from the Internet, and on the number of clients within the local-ISP network which concurrently download content from upstream-ISPs.
- the downloading bandwidth is divided between clients in the same local-ISP network which download content from upstream-ISPs.
- Each client is provided with a portion of the total bandwidth, the portion representing the true downloading bandwidth of each client.
- the true downloading throughput of a client may constantly change during the downloading process, for different reasons. For example, the number of clients which concurrently download content from upstream-ISPs may change, bringing about a change in the size of the portion of bandwidth which is provided to each client. In another example, the total downloading throughput provided to the local-ISP may change (increase or decrease) and thereby introduce a change to the true downloading throughput provided to a client.
- the requested downloading throughput of a client may also change during the downloading process.
- the requested downloading throughput of a client for viewing a video on a media player may change according to the characteristics of the video which is being downloaded. For instance, a cluster of a video file characterized by a small number of changes from one frame to the other may require less downloading throughput than a cluster of a video file characterized by many changes from one frame to the other.
- the calculation of the requested number of tasks is repeated, throughout the downloading process, in order to derive an updated number of requested tasks which is adapted to the current requested downloading throughput and true downloading throughput of a client.
- the degradation factor (DF) is repeatedly calculated and if a change in the degradation factor is identified, the number of generated tasks is updated accordingly (stages 302 to 304).
- This ability to dynamically change the number of tasks and thereby adapt the downloading throughput of the client enables to provide to the client constant flow of data without delays while maintaining efficiency and avoiding any waste of downloading resources.
- each of figures 5, 6 and 7 shows a block diagram illustrating the network architecture each in accordance with an embodiment of the invention. These figures depict similar components to those which are illustrated above in Fig. 1. In general components in Fig. 5, 6 and 7 which are similar to components described earlier in Fig. 1 are appended with identical reference numerals.
- download accelerator 150 is configured as an independent apparatus (or module) which is located outside of client 100 and is configured to connect as an external unit to client 100.
- Download accelerator 150 is connected to client 100 on one side and to local- ISP 130 on the other side.
- Download accelerator 150 is configured to intercept a downloading request issued by client 100 directed to local-ISP and if needed (e.g. if a degradation in the downloading throughput of the client is noticed) to increase the downloading throughput of client 100.
- Download accelerator 150 may comprise the components described above with reference to Fig. 2, in addition to wired or wireless communication utility and software for communicating with both client 100 and local-ISP 130. Download accelerator may also comprise a processor configured to manage and control its relevant components and execute its operations. According to certain embodiments, download accelerator 150 is configured to execute part or all the operations described above with reference to figures 3 and 4. Optionally download accelerator 150 may be configured as an individual apparatus, configured to connect for example, to a Set-Top-Box of a television set at home, thereby enabling to increase the downloading throughput of the Set-Top-Box.
- Fig. 6 is a block diagram illustrating the network architecture, in accordance with another embodiment of the invention. Unlike Fig. 1 in which acceleration module 160 is located within client 100, in Fig. 6 download accelerator 160 is integrated within local-ISP 130. In the example shown in figure 6 the acceleration module 160 is located within server module 134. Alternatively, download accelerator 160 may be located outside of server module 134 and configured as a separate unit within local-ISP 130. Download accelerator 160 may comprise the components described above with reference to Fig. 2.
- a local-ISP 130 is provided with downloading bandwidth for downloading content from upstream-ISPs 120. This bandwidth is divided between clients of the local-ISP which request to download data which is stored at the upstream-ISP. According to certain embodiments of the invention, instead of dividing the available bandwidth between clients in a substantially equal manner, local-ISP 130 is configured to provide more bandwidth to some of its clients according to predetermined rules. These rules enable local-ISP 130 to distribute available downloading bandwidth, between clients in a more intelligent and efficient manner.
- download accelerator enables to calculate the required downloading throughput (for downloading content from upstream- ISPs) of clients in a local-ISP network and provide the required amount of downloading throughput. For instance, more downloading bandwidth may be provided to clients that wish to download large files and have insufficient downloading throughput, while other clients that wish to download smaller files which require less downloading bandwidth may receive a smaller bandwidth which is still adequate for their downloading purposes.
- the download accelerator according to certain embodiments of the present invention the local-ISP is capable of improving and monitoring the quality of service to its clients.
- server module 134 is configured to receive download requests from a plurality of clients and to provide to all or some of these clients an accelerated downloading service.
- a download acceleration service is a download service which utilizes acceleration module 160 for providing greater downloading throughput to a client. For example, clients may subscribe to a download acceleration service for a predefined fee.
- download accelerator 160 may be associated with a data- repository (e.g. database 132) configured for storing a list of clients which are subscribed to the download acceleration service.
- server module 134 is configured, in response to a downloading request issued by client 100, to check whether client 100 is subscribed to a download acceleration service. In case client 100 is not subscribed to the service, server module 134 is configured to provide client 100 with regular downloading service, without acceleration. Otherwise, in cases where client 100 is subscribed to a download acceleration service server module 134 is configured to provide client 100 with an accelerated downloading service.
- a local-ISP receives from one or more clients a downloading request in respect of a certain content item 810.
- download accelerator 160 comprises a pre-processing unit 210 configured for performing stage 814. Alternatively, this stage may be performed by a different component within local-ISP 130.
- the downloading request may be forwarded to download accelerator 160 and process 800 proceeds to stage 818.
- the operations performed in respect of stages 818-822 are substantially the same as operation 302-306 respectively, which were described above with reference to Fig. 3.
- the requested content is provided to the requesting client, thereby providing the client with increased throughput and enabling the client to watch and download the requested content in high quality.
- the degradation factor is repeatedly calculated during the downloading process as it may change (stage 818). In case the degradation factor is changed, a different number of tasks are generated accordingly.
- download accelerator may be configured to operate in conjunction with a downloaded-content data- repository.
- a downloaded content data-repository e.g. 132
- the data-repository may be managed according to a predefined policy, for example in accordance with a Least Recently Used (LRU) cache algorithm.
- LRU Least Recently Used
- a local-ISP is configured with a downloaded- content data-repository
- downloading requests for stored content items, which were originally located at an upstream-ISP may be handled by providing the requested item directly from the local data repository in the local-ISP, and thereby obviate the need to access the upstream-ISP and thus circumvent the associated restriction on the bandwidth.
- the downloaded accelerator is required to operate only when a content item is downloaded for the first time from an upstream-ISP or after it has been discarded from the downloaded- content data repository.
- the operations described in Fig. 8 may include another stage after stage 814, during which it is determined whether the requested content item is stored within a downloaded-content data-repository associated with a local-ISP.
- the requested content is stored within downloaded-content data-repository the requested item is provided directly from local-ISP to the client. Otherwise, in case it is determined that the requested content is not stored within downloaded-content data-repository, the downloading request may be forwarded to download accelerator 160 and process 800 proceeds to stage 818.
- using a downloaded-content data-repository may render the downloading service more efficient, as part or all of the requested content items may be downloaded directly from the local-ISP. More specifically it may help to avoid exhausting all available downloading bandwidth for downloading content from upstream-ISPs, as a result of an overflow of downloading requests issued by clients which are subscribed to the download acceleration service.
- Fig. 7 is a block diagram schematically illustrating the network architecture, in accordance with an embodiment of the invention.
- client 100 comprises an Electronic Program Guide (EPG) user interface 108, configured for allowing users to select a desired content item from a list or a catalogue of content items.
- EPG Electronic Program Guide
- An EPG is used for example in video on demand (VOD) applications.
- VOD video on demand
- the channels are categorized and the user can select the desired category, say sport channels or news channels, and thereafter select the desired content item (or channel presenting a certain content item) within the specified category.
- EPG 108 is connected to at least one server (e.g. local-ISP 140) which is configured to receive a request for content item catalogue issued by one or more clients (e.g. 130) and in response to retrieve from an upstream-ISP the requested data.
- server e.g. local-ISP 140
- clients e.g. 130
- Download accelerator 170 may comprise the components described above with reference to Fig. 2. Download accelerator 170 is configured to perform at least part of the operations which are described above with reference to Fig. 3.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Typically, ISPs are connected to one or more other upstream network nodes (e.g. upstream-ISPs) which provide access to the Internet. The local-ISP provides to each of its clients a predefined downloading bandwidth which represents the maximal downloading throughput of the client. Each upstream-ISP provides to the local-ISP a predefined downloading bandwidth as well. The total downloading bandwidth provided by a given upstream-ISP to a local-ISP is divided by the local-ISP between all its clients, which concurrently requests to download content items stored at the same upstream-ISP. Thus, each client is provided with only a portion of the total bandwidth provided by the upstream-ISP. Very often, the portions of upstream-ISP downloading bandwidth which are provided to each client by the local-ISP are substantially smaller than the maximal downloading capacities of each client and are many times insufficient for high quality downloading and viewing of the requested content items. It is often the case that the desired video cannot be downloaded and viewed in sufficient quality due to the limitation in downloading bandwidth imposed by the limit on downloading bandwidth. According to one aspect of the present invention, there is provided a method and device which allows end users (clients) to increase their downloading throughput for downloading content items from upstream-ISPs.
Description
A DEVICE AND METHOD FOR INCREASING DOWNLOADING THROUGHPUT
FIELD OF THE INVENTION This invention relates to efficient distribution of Internet content to media viewers.
BACKGROUND OF THE INVENTION
The use of broadband Internet and other network facilities for downloading content is continuously increasing. For example watching video streaming broadcasted via the Internet has become very popular. However, current network architecture and setups often impose limitations on downloading throughput which is provided to end users. These limitations often render downloading throughput insufficient for a high speed and high quality downloading and viewing experience. Therefore, there is a need in the art for new methods and devices for increasing downloading throughput.
Prior art references considered to be relevant as a background to the invention are listed below. Acknowledgement of the references herein is not to be inferred as meaning that these are in any way relevant to the patentability of the invention disclosed herein.
US2002083133 discloses a method for downloading files, the method including the steps of at a client a) requesting a proxy server to initiate a first download of a file from a first server, the first server determined by the client to lack download resume capability and the proxy server possessing download resume capability, at the proxy server b) initiating the first download of the file from the first server, and at the client c) initiating at least a second download of the file from the proxy server.
US2002087654 discloses a method for downloading a file to a client, the method including determining the presence of the file on each of a
plurality of secondary servers, retrieving a plurality of portions of the file from any of the servers, where at least a first of the portions is retrieved from a first of any of the servers and at least a second of the portions is retrieved from a second of any of the servers, and assembling the file at the client from the plurality of portions.
SUMMARY OF THE INVENTION
According to a first aspect of the invention there is provided a method for increasing downloading throughput of a client for downloading content of interest stored at an upstream network node, wherein downloading of said content of interest is performed via a local network node; the client having a predefined downloading throughput, the local network node is provided with a predefined downloading throughput for downloading content from at least the upstream network node and wherein the client is provided with a portion of the downloading throughput, the portion representing the true downloading throughput of the client and is less than the predefined downloading throughput of the client, the method comprising, instructing a processor to perform the following stages: a) determining a required number of tasks, wherein each task is configured for downloading a data segment of the content of interest, and wherein the total downloading throughput of all of the tasks is greater than the true throughput; b) generating one or more tasks, according to the number; c) assigning to each of the one or more tasks a data segment of the content of interest; d) utilizing the one or more tasks for downloading the data segments, thereby enabling the client to utilize a downloading throughput which is greater than the true downloading throughput.
Wherein, according to certain embodiments, stages (c) and (d), described above are repeated until the entire content of interest is downloaded.
According to certain embodiments, the total downloading throughput of all of the tasks equals a requested downloading throughput for downloading the content of interest.
According to certain embodiments, a total downloading throughput of all of the one or more tasks is equal to a maximal downloading throughput provided by the local network node to the client.
According to certain embodiments, the downloading in stage (d), described above, is performed by all of the one or more tasks, substantially at the same time. According to certain embodiments, the number is repeatedly determined and thereby enables to adapt the number of tasks to changes in the requested downloading throughput or the true downloading throughput.
According to certain embodiments, the adaptation enables to provide to the client a constant rate of data flow. According to certain embodiments, the number is calculated based on a downloading degradation factor and wherein stage (a) includes at least the following: i. determining a requested downloading throughput of the client, being a downloading throughput requested for downloading the content of interest; ii. determining the true downloading throughput of the client; and, iii. calculating a ratio between the requested downloading throughput and the true downloading throughput thereby obtaining the downloading degradation factor.
According to certain embodiments, stage (c) further comprises: assigning each task with a first pointer indicating the starting location of a data segment of the content of interest and a second pointer indicating the ending location of a data segment of the content of interest.
According to certain embodiments, the network node is an Internet service provider (ISP).
According to certain embodiments, the content of interest is downloaded in real-time.
According to a second aspect of the invention there is provided a device for increasing downloading throughput of a client for downloading via a local network node content of interest stored at an upstream network node, the device comprising: a download accelerator comprising a downloading degradation factor calculator, and a tasks generator; the download accelerator is configured to identify that a predefined downloading throughput, provided to the client by the local network node, is greater than a true downloading throughput of the client; wherein the true downloading throughput is a portion of a downloading throughput provided to the local network node by the upstream node for downloading content from the upstream network node; the downloading degradation factor calculator is configured, in response to said identification, to determine a required number of tasks, wherein each task is configured for downloading a data segment of the content of interest, and wherein the total downloading throughput of all of the tasks is greater than the true throughput; a tasks generator configured for receiving the number from the downloading degradation factor calculator and generating one or more tasks according to the number, the tasks generator is further configured for assigning to each of the one or more tasks a data segment from the content of interest; the one or more tasks are configured for downloading the data segments, thereby enabling the client to utilize a downloading throughput which is greater than the true throughput.
According to certain embodiments, said total downloading throughput of all of the tasks equals to a requested downloading throughput for downloading the content of interest.
According to certain embodiments, the requested downloading throughput is equal to a maximal downloading throughput of the client.
According to certain embodiments, the total downloading throughput of all of the tasks equals to a maximal downloading throughput provided to the client by the local network node.
According to certain embodiments, the one or more tasks are configured for downloading, substantially at the same time the data segments.
According to certain embodiments, the degradation factor calculator is configured repeatedly calculate the degradation factor and thereby enables to adapt the number of tasks to changes in the requested downloading throughput or the true downloading throughput.
According to certain embodiments, the adaptation enables to provide to the client a constant rate of data flow.
According to certain embodiments, the number is calculated based on a downloading degradation factor, and wherein the downloading degradation factor calculator is configured to perform at least the following: a) determine a requested downloading throughput of the client; b) determine the true downloading throughput of the client; and, c) calculate a ratio of the requested downloading throughput and the true downloading throughput, thereby obtaining the downloading degradation factor.
According to another aspect of the invention there is provided a client connectable to a local network node and configured for downloading content of interest stored at an upstream network node, via the local network node, the device disclosed above being incorporated in the client and configured for increasing downloading throughput of said client for downloading content of interest stored at the upstream network node.
According to another aspect of the invention there is provided a local network node connectable to one or more clients and configured for handling downloading requests sent by the one or more clients, the device disclosed
above being associated with the local network node and configured for increasing downloading throughput of at least one client out of the one or more clients, for downloading content of interest stored at an upstream network node. According to a further aspect of the invention there is provided a program storage device readable by machine, tangibly embodying a program of instructions executable by the machine to perform method steps for increasing downloading throughput of a client for downloading content of interest stored at an upstream network node, wherein downloading of the content of interest is performed via a local network node; the client having a predefined downloading throughput, the local network node is provided with a predefined downloading throughput for downloading content from at least the upstream network node and wherein the client is provided with a portion of said downloading throughput, the portion representing the true downloading throughput of the client and is less than the predefined downloading throughput of the client, the method comprising instructing a processor to perform the following stages: a) determining a required number of tasks, wherein each task is configured for downloading a data segment of the content of interest, and wherein the total downloading throughput of all of the tasks is greater than the true throughput; b) generating one or more tasks, according to the number; c) assigning to each of the one or more tasks a data segment of the content of interest; d)utilizing the one or more tasks for downloading, the data segments, thereby enabling the client to utilize a downloading throughput which is greater than the true downloading throughput.
BRIEF DESCRIPTION OF THE DRAWINGS
In order to understand the invention and to see how it may be carried out in practice, a preferred embodiment will now be described, by way of non- limiting example only, with reference to the accompanying drawings, in which:
Fig. 1 is a block diagram schematically illustrating the network architecture, in accordance with an embodiment of the invention;
Fig. 2 illustrates a download accelerator 104' device designed for increasing client's downloading throughput, in accordance with certain embodiments of the invention;
Fig. 3 illustrates a flow chart of a sequence of operations for increasing client's downloading throughput, in accordance with certain embodiments of the invention;
Fig. 4 it illustrates a flow chart of a sequence of operations for determining the number of required tasks, in accordance with an embodiment of the invention;
Fig. 5 is a block diagram schematically illustrating the network architecture, in accordance with an embodiment of the invention;
Fig. 6 is a block diagram schematically illustrating the network architecture, in accordance with an embodiment of the invention;
Fig. 7 is a block diagram schematically illustrating the network architecture, in accordance with an embodiment of the invention; and
Fig. 8 illustrates a flowchart of a sequence of operations performed by an ISP for increasing client's downloading throughput, in accordance with certain embodiments of the invention.
DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS
Unless specifically stated otherwise, as apparent from the following discussions, it is appreciated that throughout the specification discussions utilizing terms such as "processing", "obtaining", "computing", "calculating",
"determining", "generating", "identifying", "configuring", "utilizing", "distributing", "extracting", "handling", "issuing", "dividing", "requesting", "assigning", or the like, refer to the action and/or processes of a computer that manipulate and/or transform data into other data, said data represented as physical, e.g. such as electronic, quantities and representing the physical objects. The term "computer" should be expansively construed to cover any kind of electronic device with data processing capabilities, including, by way of non-limiting example, personal computers, servers, computing system, communication devices, processors (e.g. digital signal processor (DSP), microcontrollers, field programmable gate array (FPGA), application specific integrated circuit (ASIC), etc.) and other electronic computing devices and combinations thereof.
The operations in accordance with the teachings herein may be performed by a computer specially constructed for the desired purposes or by a general purpose computer specially configured for the desired purpose by a computer program stored in a computer readable storage medium.
As used herein, the phrase "for example," "such as" and variants thereof describing exemplary implementations of the present invention are exemplary in nature and not limiting. Reference in the specification to "one embodiment", "an embodiment", "some embodiments", "another embodiment", "other embodiments", "certain embodiment" or variations thereof means that a particular feature, structure or characteristic described in connection with the embodiment(s) is included in at least one embodiment of the invention. Thus the appearance of the phrase "one embodiment", "an embodiment", "some embodiments", "another embodiment", "other embodiments", "certain embodiments" or variations thereof do not necessarily refer to the same embodiment(s).
It is appreciated that certain features of the invention, which are, for clarity, described in the context of separate embodiments, may also be provided in combination in a single embodiment. Conversely, various features
of the invention, which are, for brevity, described in the context of a single embodiment, may also be provided separately or in any suitable sub- combination. While the invention has been shown and described with respect to particular embodiments, it is not thus limited. Numerous modifications, changes and improvements within the scope of the invention will now occur to the reader.
In embodiments of the invention, fewer, more and/or different stages than those shown in Fig. 3, Fig. 4 and Fig. 8 may be executed. In embodiments of the invention one or more stages illustrated in Fig. 3, Fig. 4 and Fig. 8 may be executed in a different order and/or one or more groups of stages may be executed simultaneously. Fig. 1, Fig. 5, Fig. 6 and Fig. 7 show a general schematic illustration of network architecture in accordance with an embodiment of the invention. Fig. 2 shows a schematic illustration of a download accelerator, in accordance with an embodiment of the invention. Each module in, Fig. 1, Fig. 2, Fig. 5, Fig. 6 and Fig. 7 can be made up of any combination of software, hardware and/or firmware that performs the functions as defined and explained herein. The modules in Fig. 1, Fig. 2, Fig. 5, Fig. 6 and Fig. 7 may be centralized in one location or dispersed over more than one location. In other embodiments of the invention, the system may comprise fewer, more, and/or different modules than those shown in Fig. 1, Fig. 2, Fig. 5, Fig. 6 and Fig. 7.
Turning now to the detailed description of certain embodiments of the invention, most Internet users, both individual and businesses, are connected to the Internet via an Internet Service Provider (ISP). In general an ISP is a server computer which provides its clients with access to the Internet. An ISP is often connected and provides services to a plurality of clients, their number possibly amounting to hundreds, thousands or more. Typically, ISPs are connected to one or more other upstream network nodes (e.g. upstream-ISPs) which provide access to Internet content and services. In some network
layouts a local-ISP may be connected to a chain of a number of upstream-ISPs connected one after the other.
For better clarity, in the following discussion, the term "local-ISP" is used to describe ISPs which are directly connected with the end user (e.g. client). Also, while the term ISP may be interchangeable with the more general term 'network node', the term ISP is used in the following discussion for purposes of clarity only and should not be construed as limiting. In the following discussion the term "local-ISP network" is used to describe the communication network of a local-ISP and its clients. Upon request, the local-ISP distributes to its clients content items, otherwise known as content (e.g. video files, music files, images, documents, etc.). Some of the content may be stored at the local-ISP and some may be stored at upstream-ISPs.
A client's available downloading throughput (otherwise referred to as "downloading capacity") refers to the client's downloading speed (e.g. in kilo bit per second units) and is dependent on a number of factors. In general, the local-ISP provides to each of its clients a predefined downloading bandwidth. In case the content which is requested by the client (i.e. content of interest) is indeed stored at a data-repository directly connected to the local-ISP the downloading bandwidth provided by the local-ISP to the client represents the maximal downloading throughput of the client (i.e. client's maximal throughput).
However, in case the content of interest is stored at an upstream-ISP, the downloading throughput of the client is dependent also on the downloading throughput of the local-ISP, and the number of clients in the same local-ISP network, which are concurrently downloading content items from the same or any other upstream-ISP. A local-ISP is provided with a predefined downloading bandwidth for downloading content stored at upstream ISPs. This bandwidth is provided in general by Internet administrators which are responsible for distributing the available Internet bandwidth
between different local-ISPs that wish to utilize Internet communication. The total downloading bandwidth provided to a given local-ISP serves for the Internet communication with upstream-ISPs of all clients in the local-ISP network. The total downloading bandwidth is divided by the local-ISP (e.g. by the local-ISP administrators) between all its clients, which concurrently request to download content items stored at upstream-ISPs, located upstream to the local-ISP network. Thus, each such client is provided only with a portion of the total bandwidth which is provided to the local-ISP for downloading content from upstream-ISP. The portion of bandwidth, provided to each client, serves the client for downloading content from upstream-ISPs and is referred to herein as the "true downloading throughput" of the client.
Very often, the portions of upstream-ISP downloading bandwidth (i.e. true throughput), which are provided to each client by the local-ISP, are substantially smaller than the maximal downloading throughput of each client, and are many times insufficient for high quality downloading and viewing of requested content items. This is especially relevant where a client is interested in downloading and viewing content which is being distributed in real-time by an upstream-ISP (e.g. a video stream). Thus, it often occurs that a desired video cannot be downloaded and viewed by a client in sufficient quality due to the limitation on the downloading bandwidth, which is provided to a local- ISP.
The following is a non-limiting example of an operational scenario which illustrates the shortcomings of prior art network downloading facilities. Consider a local-ISP network with a local-ISP server connected to 300 clients. In this particular example the local-ISP provides each client with a bandwidth of 1.5 Mega bps (bit per second) for downloading content. This bandwidth represents the maximal throughput of the clients in the local-ISP network. Further, consider that the local-ISP is provided, for example, with a bandwidth of 100 Mega bps for downloading content stored at up-stream ISPs (upstream of the local-ISP network). This bandwidth is divided by the local-
ISP between all clients in the local-ISP network who wish to download content items stored at upstream-ISPs. In the current example the number of clients who wish to download content items stored at upstream-ISPs equals 200. Each of these 200 clients is provided with a portion of the total bandwidth which in the current example equals 100/200 = 0.5 Mega bps. Thus, the true downloading throughput of each client is 0.5 Mega bps. As one can see, while the maximal downloading throughput of each client is 1.5 Mega bps, their true downloading throughput, for downloading content from upstream-ISPs, is degraded by a factor of 3 and amounts to only 0.5 Mega bps.
Now consider that a client is attempting to download a video stream (e.g. a video being downloaded and viewed in real-time) of 1 Mega bps from an upstream-ISP. In such a case, the video which is being downloaded is broadcast at a rate of 1 mega bps and thus requires to be downloaded at substantially the same rate by a client. Thus, although the maximal throughput of the client is 1.5 Mega bps, which is more than enough for downloading the video stream in good quality, the true downloading throughput, which amounts to 0.5 Mega bps, imposes a limitation on the downloading capacity of the client, which renders downloading the video stream in real-time, with a constant rate of data flow (i.e. without delays in the streaming), impossible.
In this connection it should be noted that real-time distribution of content (also known as "Streaming") refers to a continuous flow of data that is ultimately presented to a user, via a client, in a particular sequence in real time. Moreover, the flow of data should be presented to the user close to the time it was transmitted from the media source. For example, digital data representing video frames require assembly into the proper sequence of frames for presentation on a display, and successive frames must be displayed at the correct real-time rate. Real-time distribution may refer to live events and also to pre-generated content that is consumed (i.e. downloaded and viewed) by a client while it is being broadcast by a server.
Attention is drawn to Fig. 1, which is a block diagram schematically illustrating the network architecture, in accordance with an embodiment of the invention. As shown, a client 100 is connected to a local-ISP 130 which is connected in turn to one or more upstream-ISPs 120. Client 100, local-ISP 130 and upstream-ISP 120 are associated each with at least one processor configured to manage, control and execute relevant components and operations.
Client 100 may be incorporated in a television set (e.g. Set-Top-Box), cellular telephone, PDA, personal or portable computer, or any other apparatus having the appropriate processing power and capable of communicating with a server. The terms "client" and "server" as used herein may refer to the entire hardware device encapsulating the logic of a client process and server process, respectively. Alternatively or additionally the terms "client" and "server" may refer to a software implementation of the logic of a client or server (i.e. process) being embedded within an appropriate hardware device or to any combination of hardware and software. Communication between client 100 and server 130 and between local-ISP 130 to upstream-ISPs 120 may be facilitated by any type of communication means or network (e.g. wired or wireless network implemented by any type of known technology). Note that the invention is not bound by the specified client server architecture and not by the specific modules that form part of either the client or the server.
Client device 100 includes a known per se Media Player (MP) 101 communicating e.g. through Application Programming Interface (API) to a client module 104. By way of non-limiting example, the client module is a plug-in module. In the example illustrated by Fig. 1 client module 104 includes a download accelerator 104' device and content processing module 104". In different embodiments, the location and configuration of download accelerator may vary. For example, in one embodiment download accelerator 104' may be located outside of client module 104 and configured as a separate
unit within client 100. Other examples of different configurations of download accelerator 104' are described below with reference to figures 5, 6 and 7.
Client module 104 is configured for establishing a connection to a network and communicating with other network nodes in the same network, for example local-ISP 130. In the following discussion this communication is typically performed through content processing module 104" that forms part of module 104.
According to certain embodiments, the operation of client device 100 is generally managed by a Media Center (MC) 105. Note that in accordance with certain embodiments, the MC 105 performs known per se management tasks and stores operational data such as file transfer protocol data. Those versed in the art will readily appreciate that the invention is not bound by performing the specified tasks in a media center, and other module or modules in addition to or instead of the specified media center may be utilized. As is well known, the term Media Player (MP) includes computer software/hardware for playing back multimedia files, supporting an array of media formats, including both audio and video files. MP is typically associated with an Audio/Video Codecs module for decoding digital data content. Those versed in the art will readily appreciate that the invention is not bound by any specific known per se MP.
Also shown in Fig. 1, is a server 130 of a local Internet service provider (ISP) that includes a server module (or process) 134 associated with database 132. Servers are often implemented as dedicated server-computers which are characterized by faster CPU, high performance RAM and typically multiple hard drives and large storage space. According to certain embodiments client 100 communicates with local-ISP 130 via server module 134 configured, inter alia, for receiving and handling client requests, extracting data (e.g. from database 132, or from upstream-ISPs 120), sending responses to clients, storing data etc.
According to certain embodiments, the local-ISP server is connected to one or more upstream-ISPs 120. Similar to the local-ISP 130, an upstream-
ISP 120 may comprise a server module 124 and a database 122. Server module 124 may be configured to perform a similar operation to server module 134.
Returning to client 100, when a user of client 100 wishes to download a certain content item, he issues a download request specifying the requested content item and possibly its location. According to certain embodiments, the requested content item is retrieved from the appropriate source while utilizing download accelerator 104' device. As mentioned above, content may be stored in the database of the local-ISP 132 in which case it is downloaded directly from the local-ISP 130. Alternatively, the desired content may be stored on an upstream-ISP 120 (e.g. a publisher network-node that broadcasts the desired content or some other network-node that stores the desired content), in which case the content is downloaded from the relevant upstream- ISP 120. According to certain embodiments of the present invention, download accelerator 104' enables to increase the downloading throughput which is provided to clients for downloading desired content items which are stored at upstream network nodes such as upstream-ISPs. Download accelerator also enables to provide to a client a constant downloading throughput which allows a constant rate of flow of data.
Fig. 2 illustrates a download accelerator 104' device configured for increasing a client's downloading throughput, in accordance with certain embodiments of the invention. As used herein the term download accelerator device may refer to a hardware device encapsulating the logic of a download accelerator process. Alternatively or additionally the term download accelerator device may refer to a software implementation of the logic of a download accelerator being embedded within an appropriate hardware device or to any combination of hardware and software. Fig. 2 is a non-binding example of a download accelerator 104' which according to the embodiment
depicted in Fig. 1 is incorporated within a client device 100. According to certain embodiments, download accelerator 104' comprises a degradation factor calculator 202, a tasks generator 204, a tasks vector 206 and a preprocessing unit 210. Degradation factor calculator 202 is configured for calculating a degradation factor which indicates the decrease of the downloading throughput of the client from its maximal value to its true value. According to one embodiment, the degradation factor is represented by the ratio between the maximal downloading throughput (or maximal downloading capacity) of the client and the true downloading throughput (or true downloading capacity) of the client. As mentioned above, the maximal downloading throughput is equal to the downloading bandwidth provided by the local-ISP to the client. As further mentioned above, the true downloading throughput equals a portion of the total bandwidth which is provided to a local-ISP for downloading content located at upstream-ISPs. The total bandwidth is divided between all clients, whose download content is stored at upstream-ISPs. Thus, where a client is downloading a content item which is stored at an upstream-ISP, the true downloading throughput of that client equals a relative fraction which is provided to that client out of the total downloading bandwidth of the local- ISP.
According to certain embodiments, the tasks generator 204 is configured for receiving the degradation factor from the degradation factor calculator 202 and for generating one or more tasks 208 according to the received degradation factor. The generated tasks 208 are consolidated in a tasks vector 206. A more detailed explanation in respect of the degradation factor is provided below with reference to Fig. 3 and Fig. 4. Each task 208 is an individual component configured for downloading content to the client device. Local-ISP 130 receives from client 100 one or more downloading requests, where each request is issued by a different task. Each task 208 is considered by local-ISP 130 as an individual downloading request.
Accordingly, local-ISP 130 provides to each task 208 a portion of the entire downloading bandwidth, which is otherwise provided to a single client. In other words each task is provided with a downloading throughput which is equal to the downloading throughput which is otherwise provided to a single client.
According to other embodiments, local-ISP 130 may provide each task 208 with a portion of downloading bandwidth which is smaller than the downloading bandwidth typically provided to a single client. However, as each task 208 downloads a different portion of the content item, client 100 is enabled to utilize a total downloading bandwidth which is greater than the portion of downloading bandwidth which is provided to a single client without the use of download accelerator 104'. In some embodiments, all tasks may be configured to download their assigned portions of the content item, substantially at the same time. In some embodiments, download accelerator 104' enables client 100 to utilize its maximal downloading throughput and to completely override its downloading bandwidth limitations imposed on downloading content from upstream-ISPs.
According to certain embodiments, each task 208 is directed for downloading a different data segment ("segment" in short) of the requested content item. However, in other embodiments, more than one task may be assigned to download the same segment and thereby obtain redundancy, for example for purposes of quality assurance of the downloading process. It should be noted that as used herein the term "segment" refers to a portion of data of a content item. This term should be regarded as general and non- limiting and may represent any type, size or format of data segments. Each segment is part of a source file of the requested content item representing a portion of the data from the relevant source file. The tasks generator 204 is configured to assign to each task a specific data segment of the content item. The tasks generator 204 assigns each task in the tasks vector 206 with a start position and end position of the data segment within its origin (e.g. the source
file of the content item). According to certain embodiments, where the content of interest is delivered directly from a streaming source (e.g. by data streaming from a server) and not downloaded from a source file, tasks may be directed to download data segments which are stored e.g. in a caching repository. According to this embodiment each task 208 is assigned with a start position and end position of data segment in respect of the caching repository. According to certain embodiments, the collection of segments, which are downloaded by all the tasks, represents a continuous sequence of data of the content item. Task generator 204 may also be configured for checking for errors in the downloaded segments and consolidating the segments into a single unit of data (referred to herein as "a cluster") before it is transmitted to the MC 105. Methods for the identification and handling of errors are well known in the art and therefore shall not be described herein any further. According to certain embodiments, once the downloading of the segments by all tasks 208 is completed, the downloaded segments (or clusters) are transmitted to MC 105 and displayed by the MP 101 while at the same time the next set of segments (cluster) are downloaded by the tasks 208 in the task vector 206. Fig. 3 illustrates a flowchart of a sequence of operations for increasing a client's downloading throughput, in accordance with an embodiment of the invention. At least part of the operations illustrated with reference to Fig. 3 may be performed by download accelerator 104'.
A downloading process is usually initiated by a client's request to download a content item (i.e. a downloading request) 301. According to certain embodiments, after a downloading request is made, the request is forwarded to download accelerator 104' by client 100. Download accelerator 104' proceeds to stage 302 during which the number of required tasks for providing sufficient downloading throughput is determined.
Turning to Fig. 4, it illustrates a flowchart of a sequence of operations for determining the number of required tasks, in accordance with an embodiment of the invention. Following the description of Fig. 4 the specification reverts to the description of the remaining stages depicted in Fig. 3. According to the example illustrated in Fig. 4 in stage 302 of Fig 3, a downloading degradation factor is calculated.
In stage 402 a requested downloading throughput of the client is determined. For the purpose of the present discussion the term "requested downloading throughput" should be construed to include the maximal downloading throughput as well as other downloading capacities. Requested downloading throughput may refer for example, to an optimal downloading throughput for downloading and viewing a certain video in high quality, which may be less than the maximal downloading throughput of the client.
In cases where the requested downloading throughput is equal to the maximal downloading throughput, in stage 402 the maximal downloading throughput is calculated. Although the client's maximal downloading throughput is expected to be equal to the maximal bandwidth which is provided to the client by the local-ISP, in reality the actual maximal downloading throughput of the client may be different than the bandwidth which is officially assigned to each client, and therefore it should be determined. This discrepancy may result for example, from local overloading of the client's facilities which may delay communication to the client. According to one embodiment, in order to determine the client's maximal downloading throughput, the client downloads a file which is stored at the local-ISP 130, and measures the downloading speed of the file (e.g. in kilo bit per second units). Possibly specific files are made available for this purpose, by ISP administrators.
According to certain embodiments, in the next stage 404, the true downloading throughput of the client is determined. According to certain embodiments in order to determine the true downloading throughput of the
client, the client downloads a segment of the data which is stored at the upstream-ISP 120 that stores the requested content item (possibly a segment of the requested content item). Knowing the size of the data segment and by measuring its downloading speed, the client can calculate its true downloading speed (e.g. in kilo bit per second units). Once the requested (e.g. maximal) downloading throughput and true downloading throughput of the client is determined, the degradation factor can be calculated. According to a certain embodiment, in next stage 406 the ratio between the requested downloading throughput and the true downloading throughput is calculated. In the following discussion this ratio represents the degradation factor. According to certain embodiments, the calculation of the degradation factor is performed by degradation factor calculator 202.
According to certain embodiments the degradation factor (DF), equals:
Min {maximal downloading throughput, requested downloading throughput) Dt — true downloading throughput
As explained above the requested throughput may be equal to or smaller than the maximal downloading capacity. Thus, as illustrated by the equation above, the degradation factor is calculated with either the maximal downloading throughput (in case the maximal downloading throughput is equal to the requested downloading throughput) or with a smaller requested downloading throughput.
According to a certain embodiment, in the next stage 408 the number of required tasks 208 is determined. According to some embodiments the number of required tasks (t), which are generated equals to the degradation factor (DF) + 1 (e.g. where DF does compute to integer with no remainder) whereas in other embodiments, the number of tasks equals the degradation factor (DF). As described below, this number is repeatedly calculated and updated in order to be adapted to changes in the DF, resulting from variation in the true downloading throughput or the requested downloading throughput.
It should be noted that the example described above with reference to Fig. 4 is non-limiting and other methods for calculating the number of requested tasks and for representing the degradation factor may be used for the purpose of the present invention. For example, in other implementations the difference between the requested downloading throughput and the true downloading throughput may be first calculated and in case the calculated difference is a positive number (i.e. requested downloading throughput is greater than the true downloading throughput) the degradation factor may be represented as the ratio between the calculated difference and the true downloading throughput.
Reverting now to Fig. 3, once the number of requested tasks is determined, the operation proceeds to stage 304 during which the required tasks are generated. Each of the generated tasks 208 is a downloading element configured for issuing a downloading request and downloading a segment of the data of a requested content item. According to certain embodiments, the downloading throughput assigned to each task 208 is equal to the downloading throughput which would otherwise be provided by the local-ISP to a single client 130 not utilizing download accelerator 104'. Thus, each task is provided with a downloading throughput which is equal to the (true) downloading throughput otherwise provided to a single client. According to other embodiments, the downloading throughput assigned to each task 208 may be smaller than the portion of downloading bandwidth which is assigned by the local-ISP to a single client, however the number of generated tasks 208 is such that the total downloading throughput of all tasks together is greater than the downloading throughput which would otherwise be provided by the local-ISP to a single client, not utilizing download accelerator 104'.
In the next stage 306 each task is assigned to download a specific data segment of the requested content item as explained above with reference to Fig. 2. According to certain embodiments, stages 304 and 306 are performed
by tasks generator 204. As each task is directed for downloading a different segment of the source file, each task is provided with the location of the data segment within the source file. For example, each task may be provided with a first pointer pointing to the beginning of the segment and a second pointer pointing to the end of the segment in the source file. The calculation of the offset of the segment of each task in respect of the source file can be represented, for example, as follows:
SO, =CO + — (i-l)
Where: SO1 - the offset of the i'h segment in respect of the entire source file.
CO (cluster offset) - offset of the cluster in respect of the data file of the requested content item, where a cluster is the entire sequence of segments downloaded together by all tasks in a task vector.
CS (cluster size) - the size of the cluster t - the number of tasks.
/ - the location of the task within the task vector.
CS where — — is equal to the segment size.
In the next stage 308 each segment is downloaded according to its assigned location which was determined in the previous stage and all segments are consolidated into a single cluster. In the last stage 310 described in Fig. 3 the downloaded data is utilized by the client. According to one embodiment the downloaded data can be stored on the computer memory and displayed e.g. via an LCD computer display, by a MC 105 in a client device 100. Alternatively or additionally, the downloaded content can be written to the computer disk in the appropriate location and possibly further processed. According to certain embodiments, where the downloaded content is written to the computer disk the offset of each segment in respect of the file which is being written is also calculated and utilized in the writing process.
According to certain embodiments, in order to ensure continuity and a constant rate of data flow, and also to avoid delays during consumption (e.g. viewing or listening) of the downloaded content in real-time, the system can be configured such that while a cluster which has already been downloaded is consumed, the next one or more clusters of data are being downloaded.
To this end download accelerator can be configured to calculate a requested throughput which is adapted for downloading data which is greater in size than the data that is required for immediate consumption (e.g. viewing) by a media player. For example, instead of calculating a requested downloading throughput for downloading the next cluster, which is about to be viewed by the client's media player, download accelerator may calculate and utilize a requested downloading throughput adequate for downloading data in the size of a number clusters. Thus, each time data is being downloaded by downloaded accelerator, excess data is accumulated and stored in one or more data buffers. This excess data, which is stored locally on the client's data repository, or a local-ISP data repository, provides the client with a time gap between the currently displayed cluster and the clusters which are currently being downloaded. This time gap allows the client, (or local- ISP), to run operations such as quality assurance tests, in order to make sure that all the correct segments have been downloaded and that there were no errors in the downloading process. This time gap also provides the client with time to correct errors occurring during the downloading process, for example by re-downloading missing or corrupted segments. This time gap may further help to provide to the client a constant rate of flow of data and to avoid delays in the streaming. For example, in cases where a decrease in the true downloading throughput of the client is detected by download accelerator, the abovementioned time gap enables download accelerator to recalculate a new DF, generate additional tasks and adapt the client to the decrease in the downloading throughout while maintaining a constant flow of data by utilizing the data stored in the data buffers.
Instead or addition to the above, the time gap may be obtained by configuring the client to delay the onset of the broadcasting of the content item until a plurality of clusters are downloaded, and stored in one or more data buffers. According to certain embodiments, stages 306 to 310 are repeated throughout the downloading operation where in each iteration a different (e.g. a consecutive) part of the source file is downloaded.
As mentioned above, the true downloading throughput is dependent on the downloading bandwidth provided to the local-ISP 130 for downloading content from the Internet, and on the number of clients within the local-ISP network which concurrently download content from upstream-ISPs. The downloading bandwidth is divided between clients in the same local-ISP network which download content from upstream-ISPs. Each client is provided with a portion of the total bandwidth, the portion representing the true downloading bandwidth of each client. In reality the true downloading throughput of a client may constantly change during the downloading process, for different reasons. For example, the number of clients which concurrently download content from upstream-ISPs may change, bringing about a change in the size of the portion of bandwidth which is provided to each client. In another example, the total downloading throughput provided to the local-ISP may change (increase or decrease) and thereby introduce a change to the true downloading throughput provided to a client.
In addition to the true downloading throughput, the requested downloading throughput of a client may also change during the downloading process. For example, the requested downloading throughput of a client for viewing a video on a media player may change according to the characteristics of the video which is being downloaded. For instance, a cluster of a video file characterized by a small number of changes from one frame to the other may require less downloading throughput than a cluster of a video file characterized by many changes from one frame to the other.
Thus, according to certain embodiments, the calculation of the requested number of tasks is repeated, throughout the downloading process, in order to derive an updated number of requested tasks which is adapted to the current requested downloading throughput and true downloading throughput of a client. According to certain embodiments, throughout the downloading process the degradation factor (DF) is repeatedly calculated and if a change in the degradation factor is identified, the number of generated tasks is updated accordingly (stages 302 to 304). This ability to dynamically change the number of tasks and thereby adapt the downloading throughput of the client, enables to provide to the client constant flow of data without delays while maintaining efficiency and avoiding any waste of downloading resources.
Turning now to describe alternative configurations of the system of the present invention, each of figures 5, 6 and 7 shows a block diagram illustrating the network architecture each in accordance with an embodiment of the invention. These figures depict similar components to those which are illustrated above in Fig. 1. In general components in Fig. 5, 6 and 7 which are similar to components described earlier in Fig. 1 are appended with identical reference numerals.
In the example demonstrated in Fig. 5 download accelerator 150 is configured as an independent apparatus (or module) which is located outside of client 100 and is configured to connect as an external unit to client 100. Download accelerator 150 is connected to client 100 on one side and to local- ISP 130 on the other side. Download accelerator 150 is configured to intercept a downloading request issued by client 100 directed to local-ISP and if needed (e.g. if a degradation in the downloading throughput of the client is noticed) to increase the downloading throughput of client 100.
Download accelerator 150 may comprise the components described above with reference to Fig. 2, in addition to wired or wireless communication utility and software for communicating with both client 100 and local-ISP 130. Download accelerator may also comprise a processor configured to
manage and control its relevant components and execute its operations. According to certain embodiments, download accelerator 150 is configured to execute part or all the operations described above with reference to figures 3 and 4. Optionally download accelerator 150 may be configured as an individual apparatus, configured to connect for example, to a Set-Top-Box of a television set at home, thereby enabling to increase the downloading throughput of the Set-Top-Box.
Fig. 6 is a block diagram illustrating the network architecture, in accordance with another embodiment of the invention. Unlike Fig. 1 in which acceleration module 160 is located within client 100, in Fig. 6 download accelerator 160 is integrated within local-ISP 130. In the example shown in figure 6 the acceleration module 160 is located within server module 134. Alternatively, download accelerator 160 may be located outside of server module 134 and configured as a separate unit within local-ISP 130. Download accelerator 160 may comprise the components described above with reference to Fig. 2.
As explained above, a local-ISP 130 is provided with downloading bandwidth for downloading content from upstream-ISPs 120. This bandwidth is divided between clients of the local-ISP which request to download data which is stored at the upstream-ISP. According to certain embodiments of the invention, instead of dividing the available bandwidth between clients in a substantially equal manner, local-ISP 130 is configured to provide more bandwidth to some of its clients according to predetermined rules. These rules enable local-ISP 130 to distribute available downloading bandwidth, between clients in a more intelligent and efficient manner.
Thus, for example, download accelerator enables to calculate the required downloading throughput (for downloading content from upstream- ISPs) of clients in a local-ISP network and provide the required amount of downloading throughput. For instance, more downloading bandwidth may be
provided to clients that wish to download large files and have insufficient downloading throughput, while other clients that wish to download smaller files which require less downloading bandwidth may receive a smaller bandwidth which is still adequate for their downloading purposes. Thus, by using the download accelerator according to certain embodiments of the present invention the local-ISP is capable of improving and monitoring the quality of service to its clients.
Attention is drawn to Fig. 8 showing a flowchart of a sequence of operations performed by a local-ISP for increasing client's downloading throughput, in accordance with certain embodiments of the invention. According to certain embodiments, server module 134 is configured to receive download requests from a plurality of clients and to provide to all or some of these clients an accelerated downloading service. In the context of the present invention a download acceleration service is a download service which utilizes acceleration module 160 for providing greater downloading throughput to a client. For example, clients may subscribe to a download acceleration service for a predefined fee.
To this end, download accelerator 160 may be associated with a data- repository (e.g. database 132) configured for storing a list of clients which are subscribed to the download acceleration service. According to certain embodiments, server module 134 is configured, in response to a downloading request issued by client 100, to check whether client 100 is subscribed to a download acceleration service. In case client 100 is not subscribed to the service, server module 134 is configured to provide client 100 with regular downloading service, without acceleration. Otherwise, in cases where client 100 is subscribed to a download acceleration service server module 134 is configured to provide client 100 with an accelerated downloading service.
In the first stage 810 a local-ISP receives from one or more clients a downloading request in respect of a certain content item 810. According to certain embodiments, in the next stage 814 it is determined whether the
requesting client is subscribed to a download acceleration service. If the client is not subscribed to the acceleration service or is not entitled to the service for some other reason, the content is provided to the client without acceleration. According to other embodiments, all clients may be provided with a download acceleration service in which case stage 814 is not performed. According to certain embodiments, download accelerator 160 comprises a pre-processing unit 210 configured for performing stage 814. Alternatively, this stage may be performed by a different component within local-ISP 130.
In cases where it is determined that the requested content should be provided by accelerated downloading (or in case this service is provided to all clients in the local-ISP network), the downloading request may be forwarded to download accelerator 160 and process 800 proceeds to stage 818. The operations performed in respect of stages 818-822 are substantially the same as operation 302-306 respectively, which were described above with reference to Fig. 3.
In the following stage 824 the requested content is provided to the requesting client, thereby providing the client with increased throughput and enabling the client to watch and download the requested content in high quality. As explained above, the degradation factor is repeatedly calculated during the downloading process as it may change (stage 818). In case the degradation factor is changed, a different number of tasks are generated accordingly.
According to certain embodiments, download accelerator may be configured to operate in conjunction with a downloaded-content data- repository. A downloaded content data-repository (e.g. 132) may be configured to store content, which was downloaded from upstream-ISPs. The data-repository may be managed according to a predefined policy, for example in accordance with a Least Recently Used (LRU) cache algorithm.
In this fashion, where a local-ISP is configured with a downloaded- content data-repository, downloading requests for stored content items, which
were originally located at an upstream-ISP, may be handled by providing the requested item directly from the local data repository in the local-ISP, and thereby obviate the need to access the upstream-ISP and thus circumvent the associated restriction on the bandwidth. The downloaded accelerator is required to operate only when a content item is downloaded for the first time from an upstream-ISP or after it has been discarded from the downloaded- content data repository. According to certain embodiments, the operations described in Fig. 8 may include another stage after stage 814, during which it is determined whether the requested content item is stored within a downloaded-content data-repository associated with a local-ISP. In case the requested content is stored within downloaded-content data-repository the requested item is provided directly from local-ISP to the client. Otherwise, in case it is determined that the requested content is not stored within downloaded-content data-repository, the downloading request may be forwarded to download accelerator 160 and process 800 proceeds to stage 818.
In general, using a downloaded-content data-repository may render the downloading service more efficient, as part or all of the requested content items may be downloaded directly from the local-ISP. More specifically it may help to avoid exhausting all available downloading bandwidth for downloading content from upstream-ISPs, as a result of an overflow of downloading requests issued by clients which are subscribed to the download acceleration service.
Fig. 7 is a block diagram schematically illustrating the network architecture, in accordance with an embodiment of the invention. In the example shown in Fig. 7 client 100 comprises an Electronic Program Guide (EPG) user interface 108, configured for allowing users to select a desired content item from a list or a catalogue of content items. An EPG is used for example in video on demand (VOD) applications. In certain EPG representations the channels are categorized and the user can select the desired
category, say sport channels or news channels, and thereafter select the desired content item (or channel presenting a certain content item) within the specified category.
According to certain embodiments, EPG 108 is connected to at least one server (e.g. local-ISP 140) which is configured to receive a request for content item catalogue issued by one or more clients (e.g. 130) and in response to retrieve from an upstream-ISP the requested data.
According to certain embodiments, once a user selects a desired content item from the catalogue, a downloading request is issued by client 100 which is forwarded to local-ISP 130 by download accelerator 170. Download accelerator 170 may comprise the components described above with reference to Fig. 2. Download accelerator 170 is configured to perform at least part of the operations which are described above with reference to Fig. 3.
While various embodiments have been shown and described, it will be understood that there is no intent to limit the invention by such disclosure, but rather, it is intended to cover all modifications and alternate constructions falling within the scope of the invention, as defined in the appended claims.
Claims
1. A method for increasing downloading throughput of a client for downloading content of interest stored at an upstream network node, wherein downloading of said content of interest is performed via a local network node; said client having a predefined downloading throughput, said local network node is provided with a predefined downloading throughput for downloading content from at least said upstream network node and wherein said client is provided with a portion of said downloading throughput, said portion representing the true downloading throughput of said client and is less than said predefined downloading throughput of said client, the method comprising, instructing a processor to perform the following stages: a) determining a required number of tasks, wherein each task is configured for downloading a data segment of said content of interest, and wherein the total downloading throughput of all of said tasks is greater than said true throughput; b) generating one or more tasks, according to said number; c) assigning to each of said one or more tasks a data segment of said content of interest; d) utilizing said one or more tasks for downloading, said data segments, thereby enabling said client to utilize a downloading throughput which is greater than said true downloading throughput.
2. The method of claim 1 wherein stages (c) and (d) are repeated until the entire content of interest is downloaded.
3. The method of claim 1 wherein said total downloading throughput of all of said tasks equals to a requested downloading throughput for downloading said content of interest.
4. The method of claim 1 wherein a total downloading throughput of all of said one or more tasks is equal to a maximal downloading throughput provided by said local network node to said client.
5. The method of claim 1 wherein said downloading in stage (d) is performed by all of said one or more tasks, substantially at the same time.
6. The method of claim 3 wherein said number is repeatedly determined and thereby enables to adapt said number of tasks to changes in said requested downloading throughput or said true downloading throughput.
7. The method of claim 6 wherein said adaptation enables to provide to said client a constant rate of data flow.
8. The method of claim 1 wherein said number of tasks is calculated based on a downloading degradation factor and wherein stage (a) includes at least the following: i. determining a requested downloading throughput of said client, being a downloading throughput requested for downloading said content of interest; ii. determining said true downloading throughput of said client; and, iii. calculating a ratio between said requested downloading throughput and said true downloading throughput thereby obtaining said downloading degradation factor.
9. The method of claim 8 wherein said degradation factor is repeatedly calculated and thereby enables to adapt said number of tasks to changes in said ratio.
10. The method of claim 8 further comprises stage (iv) comprising adding 1 to said degradation factor thereby obtaining said number.
11. The method of claim 8 wherein said requested downloading throughput equals to a maximal downloading throughput of said client.
12. The method of claim 1 wherein stage (c) further comprises: assigning each task with a first pointer indicating the starting location of a data segment of said content of interest and a second pointer indicating the ending location of a data segment of said content of interest.
13. The method of claim 1 wherein said network node is an Internet service provider (ISP).
14. The method of claim 1 wherein said segment is a segment of data from a source file of said content of interest.
15. The method of claim 1 wherein said content of interest is downloaded in real-time.
16. The method of claim 1 wherein each of said one or more tasks is assigned with a different segment of said content of interest.
17. A device for increasing downloading throughput of a client for downloading via a local network node content of interest stored at an upstream network node, the device comprising: a download accelerator comprising a downloading degradation factor calculator, and a tasks generator; said download accelerator is configured to identify that a predefined downloading throughput, provided to said client by said local network node, is greater than a true downloading throughput of said client; wherein said true downloading throughput is a portion of a downloading throughput provided to said local network node by said upstream node for downloading content from said upstream network node; said downloading degradation factor calculator is configured, in response to said identification, to determine a required number of tasks, wherein each task is configured for downloading a data segment of said content of interest, and wherein the total downloading throughput of all of said tasks is greater than said true throughput; a tasks generator configured for receiving said number from said downloading degradation factor calculator and generating one or more tasks according to said number, said tasks generator is further configured for assigning to each of said one or more tasks a data segment from said content of interest; said one or more tasks are configured for downloading said data segments, thereby enabling said client to utilize a downloading throughput which is greater than said true throughput.
18. The device of claim 17 wherein said total downloading throughput of all of said tasks equals to a requested downloading throughput for downloading said content of interest.
19. The device of claim 18 wherein said requested downloading throughput is equal to a maximal downloading throughput of said client.
20. The device of claim 17 wherein said total downloading throughput of all of said tasks equals a maximal downloading throughput provided to said client by said local network node.
21. The device of claim 17 wherein said one or more tasks are configured for downloading, substantially at the same time said data segments.
22. The device of claim 18 wherein said degradation factor calculator is configured to repeatedly calculate said degradation factor and thereby enables to adapt said number of tasks to changes in said requested downloading throughput or said true downloading throughput.
23. The device of claim 22 wherein said adaptation enables to provide to said client a constant rate of data flow.
24. The device of claim 17 wherein said number is calculated based on a downloading degradation factor, and wherein said downloading degradation factor calculator is configured to perform at least the following: a) determine a requested downloading throughput of said client; b) determine said true downloading throughput of said client; and, c) calculate a ratio of said requested downloading throughput and said true downloading throughput, thereby obtaining said downloading degradation factor.
25. The device of claim 24 wherein said downloading degradation factor calculator is configured to repeatedly calculate said degradation factor in order to adapt the number of tasks to changes in said ratio.
26. The device of claim 24 wherein said requested downloading throughput is equal to a maximal downloading throughput of said client.
27. The device of claim 24 further configured to add 1 to said downloading degradation factor thereby obtain said number.
28. The device of claim 17 wherein each task is assigned with a first pointer indicating the starting location of a data segment of said content of interest and a second pointer indicating the ending location of a data segment of said content of interest.
29. The device of claim 17 wherein said network node is an Internet service provider (ISP).
30. The device of claim 17 wherein said segment is a portion of data from a source file of said content of interest.
31. The device of claim 17 wherein said downloading content of interest is performed in real-time.
32. The device of claim 17 wherein each of said one or more tasks is assigned with a different segment of said content of interest.
33. The device according to claim 17 being connectable to said client and to a local network node for increasing downloading throughput of said client for downloading content of interest via said local network node.
34. The device of claim 32 wherein said client is a Set-Top box.
35. A client connectable to a local network node and configured for downloading content of interest stored at an upstream network node, via said local network node, said device of claim 17 being incorporated in said client and configured for increasing downloading throughput of said client for downloading content of interest stored at said upstream network node.
36. The client of claim 35 being associated with an electronic program guide, configured to provide said client with a list of video files, said client is configured to enable to select at least one video file from said list and wherein said download accelerator is configured to accelerate the downloading of said at least one video file.
37. A local network node connectable to one or more clients and configured for handling downloading requests sent by said one or more clients, said device of claim 17 being associated with said local network node and configured for increasing downloading throughput, of at least one client out of said one or more clients, for downloading content of interest stored at an upstream network node.
38. The local network-node of claim 37 being associated with a data-repository configured for storing a list of clients which are subscribed to a download acceleration service; wherein said local network node is configured to check whether said at least one client appears on said list of clients, and in case it is, to operate said download accelerator and provide downloading acceleration service to said at least one client.
39. The local network-node of claim 37, wherein said download accelerator is configured to determine a requested downloading throughput of each client of said one or more clients and to provide to each client a downloading throughput according to its requested downloading throughput.
40. The local network-node of claim 37 being associated with a downloaded-content data-repository configured for storing a content downloaded from upstream network nodes; wherein said local network node is configured to check whether said content of interest is stored at said data- repository, and in case it is not, to operate said download accelerator and provide downloading acceleration service to said at least one client for downloading said content of interest.
41. A program storage device readable by machine, tangibly embodying a program of instructions executable by the machine to perform method steps for increasing downloading throughput of a client for downloading content of interest stored at an upstream network node, wherein downloading of said content of interest is performed via a local network node; said client having a predefined downloading throughput, said local network node is provided with a predefined downloading throughput for downloading content from at least said upstream network node and wherein said client is provided with a portion of said downloading throughput, said portion representing the true downloading throughput of said client and is less than said predefined downloading throughput of said client, the method comprising, instructing a processor to perform the following stages: a) determining a required number of tasks, wherein each task is configured for downloading a data segment of said content of interest, and wherein the total downloading throughput of all of said tasks is greater than said true throughput; b) generating one or more tasks, according to said number; c) assigning to each of said one or more tasks a data segment of said content of interest; d) utilizing said one or more tasks for downloading said data segments, thereby enabling said client to utilize a downloading throughput which is greater than said true downloading throughput.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18367609P | 2009-06-03 | 2009-06-03 | |
US61/183,676 | 2009-06-03 | ||
US30298610P | 2010-02-10 | 2010-02-10 | |
US61/302,986 | 2010-02-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2010140152A2 true WO2010140152A2 (en) | 2010-12-09 |
WO2010140152A3 WO2010140152A3 (en) | 2011-02-17 |
Family
ID=43298256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/IL2010/000440 WO2010140152A2 (en) | 2009-06-03 | 2010-06-03 | A device and method for increasing downloading throughput |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2010140152A2 (en) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080216142A1 (en) * | 2006-08-17 | 2008-09-04 | Goldberg Brett M | System and method of digital media distribution |
US7843861B2 (en) * | 2007-05-31 | 2010-11-30 | International Business Machines Corporation | Coalition formation and service provisioning of bandwidth sharing AD HOC networks |
-
2010
- 2010-06-03 WO PCT/IL2010/000440 patent/WO2010140152A2/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2010140152A3 (en) | 2011-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11343351B2 (en) | Content distribution network supporting popularity-based caching | |
US11457088B2 (en) | Adaptive transfer rate for retrieving content from a server | |
US8621099B2 (en) | Systems and methods for formatting media content for distribution | |
US20220303328A1 (en) | Systems and methods for cloud storage direct streaming | |
JP6284521B2 (en) | Prefetch ads while serving them in a live stream | |
JP5580302B2 (en) | Broadcast seeding for peer-to-peer networks | |
US9392307B2 (en) | Smart pre-load for video-on-demand in an HTTP adaptive streaming environment | |
US20140165119A1 (en) | Offline download method, multimedia file download method and system thereof | |
US20170195744A1 (en) | Live-stream video advertisement system | |
US10122776B2 (en) | Bidirectional communication on live multimedia broadcasts | |
US8824676B2 (en) | Streaming video to cellular phones | |
SE1851667A1 (en) | Method for ad pod handling in live media streaming | |
JP2019071680A (en) | Terminal device and receiving device | |
US10306272B2 (en) | Content supply device, content supply method, program, terminal device, and content supply system | |
US20160099855A1 (en) | Hybrid content delivery system | |
CN104509121B (en) | Content supply equipment, Content supply method, program, terminal device and contents providing system | |
CN105474649A (en) | Proxy-server device, information processing method, program, terminal device, and content provision system | |
WO2010140152A2 (en) | A device and method for increasing downloading throughput | |
US20160191596A1 (en) | Live encoding for distribution of long tail media content | |
US20240089514A1 (en) | System for generating and providing a livestream | |
US20230171441A1 (en) | Method providing to a user terminal a target multimedia content available at a master server | |
CN106303587A (en) | A kind of method and device downloading audio, video data | |
JPWO2015008653A1 (en) | Content supply device, content supply method, program, terminal device, and content supply system | |
CN117714815A (en) | Live broadcast time shifting method and device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 10783058 Country of ref document: EP Kind code of ref document: A2 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
32PN | Ep: public notification in the ep bulletin as address of the adressee cannot be established |
Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 11/05/2012) |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 10783058 Country of ref document: EP Kind code of ref document: A2 |