IP Library Granted Patent US 8,250,191
Granted Patent B2
US 8,250,191 · App. 11/850,793 · Granted Aug 21, 2012

Methods and apparatus for cooperative file distribution with target data delivery rate

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,250,191
App. No.
11/850,793
Granted
Aug 21, 2012
Kind
B2
Abstract

Methods and apparatus are provided for cooperative file distribution with a target data delivery rate. A file is provided in a cooperative file distribution system by obtaining a target delivery rate for the at least one file; obtaining at least a portion of the file from one or more unreliable data sources at an unreliable data delivery rate; and obtaining at least a portion of the file from one or more reliable data sources based on a throttle rate if the unreliable data delivery rate is below the target delivery rate. The one or more unreliable data sources comprise one or more of a sender of the file and one or more peers. The one or more reliable data sources comprise one or more of one or more web servers and one or more storage proxies. The throttle rate can be adjusted to substantially maintain the target delivery rate. The target delivery rate can be dynamically determined based on one or more business rules.

Claims (48)

1. A method for obtaining at least one file in a cooperative file distribution system, comprising:

obtaining a target delivery rate for said at least one file;

identifying one or more unreliable data sources and one or more reliable data sources to transfer at least a portion of said at least one file to a client, wherein each unreliable data source is associated with a lower cost, a lower availability and a lower reliability of performance than each reliable data source and wherein said identification step is performed by said client;

obtaining at least a portion of said file at a receiver from one or more of said identified unreliable data sources at an unreliable data delivery rate;

obtaining at least a portion of said file at said receiver from one or more of said identified reliable data sources based on a throttle rate when said unreliable data delivery rate is below said target delivery rate, wherein a size or rate of requests for the portion of the file from the one or more reliable data sources are based on the throttle rate;

adjusting said throttle rate such that an amount of data obtained from said reliable data sources is reduced and said target delivery rate is maintained;

detecting rate saturation by comparing said throttle rate to an actual rate of data received from said reliable data sources; and

reducing said throttle rate when rate saturation is detected,

wherein at least one of said identified unreliable data sources is provided by an entity distinct from a provider of at least one of said identified reliable data sources, and wherein said throttle rate is based on a combined delivery rate from said identified unreliable data sources and said identified reliable data sources, and wherein said combined delivery rate is monitored at said receiver.

2. The method of claim 1 , wherein said one or more unreliable data sources comprise one or more of a sender of said file and one or more peers.

3. The method of claim 1 , wherein said one or more reliable data sources comprise one or more of one or more web servers and one or more storage proxies.

4. The method of claim 3 , wherein a plurality of servers provide various portions of said file to a single sender.

5. The method of claim 1 , wherein said throttle rate is a desired rate to receive data from said unreliable data sources.

6. The method of claim 1 , further comprising the step of computing an initial throttle rate based on said target delivery rate and a current unreliable data delivery rate from said one or more unreliable data sources.

7. The method of claim 1 , further comprising the step of dynamically adjusting said throttle rate.

8. The method of claim 1 , wherein said throttle rate is adjusted to maintain said target delivery rate.

9. The method of claim 1 , wherein said throttle rate is adjusted to avoid a saturation condition from said one or more reliable data sources.

10. The method of claim 9 , wherein said saturation condition occurs when requested data is not delivered in a period of time sufficient to achieve said target delivery rate.

11. The method of claim 1 , wherein said target delivery rate is adjusted after publishing based on one or more business rules selected from the group comprising: setting the target rate based on real-world playback performance of the existing swarm, setting a higher target rate for hot content, setting a lower target rate for catalog content, set target rate based on content pricing, set a higher target rate for a premium member, set target rate based on a publisher's class of service.

12. The method of claim 11 , wherein said one or more business rules includes a reduction of a cost of delivering said file.

13. A system for obtaining at least one file in a cooperative file distribution system, comprising:

a memory; and

at least one processor, coupled to the memory, operative to:

obtain a target delivery rate for said at least one file;

identify one or more unreliable data sources and one or more reliable data sources to transfer at least a portion of said at least one file to a client, wherein each unreliable data source is associated with a lower cost, a lower availability and a lower reliability of performance than each reliable data source and wherein said identification step is performed by said client;

obtain at least a portion of said file at a receiver from one or more of said identified unreliable data sources at an unreliable data delivery rate; and

obtain at least a portion of said file at said receiver from one or more of said identified reliable data sources based on a throttle rate when said unreliable data delivery rate is below said target delivery rate, wherein a size or rate of requests for the portion of the file from the one or more reliable data sources are based on the throttle rate;

adjusting said throttle rate such that an amount of data obtained from said reliable data sources is reduced and said target delivery rate is maintained;

detecting rate saturation by comparing said throttle rate to an actual rate of data received from said reliable data sources; and

reducing said throttle rate when rate saturation is detected,

wherein said at least one of said identified unreliable data sources is provided by an entity distinct from a provider of at least one of said identified reliable data sources and wherein said throttle rate is a rate monitored at said receiver and is based on a combined delivery rate from said identified unreliable data sources and said identified reliable data sources.

14. The system of claim 13 , wherein said one or more unreliable data sources comprise one or more of a sender of said file and one or more peers.

15. The system of claim 13 , wherein said one or more reliable data sources comprise one or more of one or more web servers and one or more storage proxies.

16. The system of claim 13 , wherein said throttle rate is a desired rate to receive data from said unreliable data sources.

17. The system of claim 13 , wherein said processor is further configured to compute an initial throttle rate based on said target delivery rate and a current unreliable data delivery rate from said one or more unreliable data sources.

18. The system of claim 13 , wherein said throttle rate is adjusted to maintain said target delivery rate.

19. The system of claim 13 , wherein said throttle rate is adjusted to avoid a saturation condition from said one or more reliable data sources.

20. The system of claim 13 , wherein said target delivery rate is adjusted after publishing based on one or more business rules selected from the group comprising: setting the target rate based on real-world playback performance of the existing swarm, setting a higher target rate for hot content, setting a lower target rate for catalog content, set target rate based on content pricing, set a higher target rate for a premium member, set target rate based on a publisher's class of service.

21. The method of claim 20 , wherein said one or more business rules includes a reduction of a cost of delivering said file.

22. An article of manufacture for obtaining at least one file in a cooperative file distribution system, comprising a non-transitory machine readable storage medium comprising one or more program instructions which when executed implement the steps of:

obtaining a target delivery rate for said at least one file;

identifying one or more unreliable data sources and one or more reliable data sources to transfer at least a portion of said at least one file to a client, wherein each unreliable data source is associated with a lower cost, a lower availability and a lower reliability of performance than each reliable data source and wherein said identification step is performed by said client;

obtaining at least a portion of said file at a receiver from one or more of said identified unreliable data sources at an unreliable data delivery rate; and

obtaining at least a portion of said file at said receiver from one or more of said identified reliable data sources based on a throttle rate when said unreliable data delivery rate is below said target delivery rate, wherein a size or rate of requests for the portion of the file from the one or more reliable data sources are based on the throttle rate;

adjusting said throttle rate such that an amount of data obtained from said reliable data sources is reduced and said target delivery rate is maintained;

detecting rate saturation by comparing said throttle rate to an actual rate of data received from said reliable data sources; and

reducing said throttle rate when rate saturation is detected,

wherein said at least one of said identified unreliable data sources is provided by an entity distinct from a provider of at least one of said identified reliable data sources and wherein said throttle rate is a rate monitored at said receiver and is based on a combined delivery rate from said identified unreliable data sources and said identified reliable data sources.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 14, 2016
From: MICROSOFT TECHNOLOGY LICENSING, LLC
To: ZHIGU HOLDINGS LIMITED
Reel/Frame 040354/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034542/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 3, 2013
From: PANDO NETWORKS, INC.
To: MICROSOFT CORPORATION
Reel/Frame 031128/0871 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2008
From: HICKMOTT, ANDREW; POPKIN, LAIRD A.
To: PANDO NETWORKS, INC.
Reel/Frame 020378/0702 →