US 8,250,191 B2
Methods and apparatus for cooperative file distribution with target data delivery rate
Andrew Hickmott, New York, N.Y. (US); and Laird A. Popkin, West Orange, N.J. (US)
Assigned to Pando Networks, Inc., New York, N.Y. (US)
Filed on Sep. 06, 2007, as Appl. No. 11/850,793.
Prior Publication US 2009/0070482 A1, Mar. 12, 2009
Int. Cl. G06F 15/173 (2006.01); G01R 31/08 (2006.01); H04B 7/185 (2006.01); H04B 1/38 (2006.01); H04L 12/28 (2006.01)
U.S. Cl. 709—223  [370/235; 370/318; 370/412; 375/222] 22 Claims
OG exemplary drawing
 
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.