Patent ID: 8078729

Claim:
A system comprising: one or more media servers to serve media content, the media content being files streamed sequentially as a set of segments; a plurality of peers, communicably coupled to one or more other peers of the plurality of peers and at least one of the one or more media servers, to receive segments of media content, wherein at least one of the plurality of peers allocates a set of resources for serving the segments of media content including cache memory to store the segments and media files and uplink bandwidth to send the segments of media content to the one or more peers to which the one peer is communicably coupled; and a first control server to track media content demand and the allocated resources of the plurality of peers to determine peer location information specifying the one or more locations from which each peer is to receive each segment of each media content requested, the at least one control server operable to send the location information to said each peer, wherein the first control server estimates an amount of time for a peer to consume one segment of a file and estimates when another segment of the file will be consumed, the first control server tracks request times of each of the plurality of peers and which media segments are currently being requested to predict future demand for individual media segments, and the first control server makes caching decisions for the plurality of peers and notifies the plurality of peers of caching decisions including determining for peers of the plurality of peers that are downloading new segments of media content whether to cache the new segments prior to completing their downloading, based on a prediction of the future demand of the new segments using current demand of an already requested portion of the media content and capability of peers and the one or more media servers to supply the new segments to other peers, and further wherein at least one of the caching decisions is made based on a sum utility computation for a sequence of caching decisions for a time horizon in the future set by the first control server, the sum utility computation being based on the prediction of future demand and a supply estimate as a function of the sequence of caching decisions, the supply estimate being a function of current caching by peers and different caching decisions by peers at different times in the future.