Opportunistic content delivery using delta coding
First Claim
1. A method of providing a content object to a client device, the method comprising:
- receiving at a proxy server from a content server a content object comprising an Nth data block and M additional data blocks, where M is greater than one;
generating, by the proxy server, a fingerprint of the Nth data block;
sending from the proxy server across a communications network to the client device the fingerprint of the Nth data block;
receiving at the proxy server across the communications network from the client device an indication that the Nth data block is stored at the client device and fingerprints of X additional data blocks also stored at the client device;
utilizing the fingerprints of the X additional data blocks, determining by the proxy server, which of the M additional data blocks of the content object received from the content server are not already stored at the client device; and
sending from the proxy server across the communications network to the client device each of the M additional data blocks determined not to be already stored at the client device.
6 Assignments
0 Petitions
Accused Products
Abstract
Systems and methods are described for avoiding redundant data transfers using delta coding techniques when reliably and opportunistically communicating data to multiple user systems. According to embodiments, user systems track received block sequences for locally stored content blocks. An intermediate server intercepts content requests between user systems and target hosts, and deterministically chucks and fingerprints content data received in response to those requests. A fingerprint of a received content block is communicated to the requesting user system, and the user system determines based on the fingerprint whether the corresponding content block matches a content block that is already locally stored. If so, the user system returns a set of fingerprints representing a sequence of next content blocks that were previously stored after the matching content block. The intermediate server can then send only those content data blocks that are not already locally stored at the user system according to the returned set of fingerprints.
147 Citations
18 Claims
-
1. A method of providing a content object to a client device, the method comprising:
-
receiving at a proxy server from a content server a content object comprising an Nth data block and M additional data blocks, where M is greater than one; generating, by the proxy server, a fingerprint of the Nth data block; sending from the proxy server across a communications network to the client device the fingerprint of the Nth data block; receiving at the proxy server across the communications network from the client device an indication that the Nth data block is stored at the client device and fingerprints of X additional data blocks also stored at the client device; utilizing the fingerprints of the X additional data blocks, determining by the proxy server, which of the M additional data blocks of the content object received from the content server are not already stored at the client device; and sending from the proxy server across the communications network to the client device each of the M additional data blocks determined not to be already stored at the client device. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A server-side system comprising:
-
an object processor configured to receive from a content server a content object comprising an Nth data block and M additional data blocks, where M is greater than one; a coder configured to generate a fingerprint of the Nth data block; and a communications subsystem configured to; send the fingerprint of the Nth data block across a communications network to a client device, and receive from the client device across the communications network an indication that the Nth data block is stored at the client device and fingerprints of X additional data blocks also stored at the client device; and a determination block configured to utilize the fingerprints of the X additional data blocks to determine which of the M additional data blocks of the content object received from the content server are not already stored at the client device, wherein the communications subsystem is further configured to send each of the M additional data blocks determined not to be already stored at the client device across the communications network to the client device. - View Dependent Claims (10)
-
-
11. A non-transitory medium storing computer-readable instructions, which, when executed, cause a processor to perform steps comprising:
-
receiving at a proxy server from a content server a content object comprising an Nth data block and M additional data blocks, where M is greater than one; generating, by the proxy server, a fingerprint of the Nth data block; sending from the proxy server across a communications network to the client device the fingerprint of the Nth data block; receiving at the proxy server across the communications network from the client device an indication that the Nth data block is stored at the client device and fingerprints of X additional data blocks also stored at the client device; utilizing the fingerprints of the X additional data blocks, determining by the proxy server, which of the M additional data blocks of the content object received from the content server are not already stored at the client device; and sending from the proxy server across the communications network to the client device each of the M additional data blocks determined not to be already stored at the client device. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18)
-
Specification