Opportunistic content delivery using delta coding
First Claim
1. A method for communicating content data from a server optimizer to client optimizers over a communications network, the method comprising:
- determining, by the server optimizer, to communicate content data to a client optimizer;
chunking the content data into a first content block and a set of subsequent content blocks;
computing server fingerprints of each of the first content block and the set of subsequent content blocks;
communicating a first fingerprint corresponding to the first content block from the server optimizer to the client optimizer;
receiving a response package at the server optimizer from the client optimizer, the response package comprising a sequence of client fingerprints, wherein the response package is generated by the client optimizer only when the client optimizer determines that it is one of the first set of client optimizers in relation to the content data and in response to determining that a client fingerprint of the first locally stored content block matches the received first fingerprint, the first locally stored content block having been received and stored by the client optimizer prior to receiving the first server fingerprint from the server optimizer, the first locally stored content block being associated with the sequence of client fingerprints representing a set of next content blocks that were received and stored by the client optimizer directly after receipt of the first locally stored content block in sequence;
determining, for each of the set of subsequent content blocks, whether the corresponding server fingerprint indicates equivalence to one of the locally stored content blocks according to its respective client fingerprint received as part of the response package; and
communicating a subset of the set of subsequent content blocks from the server optimizer to the client optimizer according to the determination by the server optimizer to communicate the content data to the client optimizer, such that the corresponding server fingerprint of each communicated subsequent content block indicates no equivalence to one of the locally stored content blocks according to its respective client fingerprint.
5 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.
-
Citations
30 Claims
-
1. A method for communicating content data from a server optimizer to client optimizers over a communications network, the method comprising:
- determining, by the server optimizer, to communicate content data to a client optimizer;
chunking the content data into a first content block and a set of subsequent content blocks;
computing server fingerprints of each of the first content block and the set of subsequent content blocks;
communicating a first fingerprint corresponding to the first content block from the server optimizer to the client optimizer;
receiving a response package at the server optimizer from the client optimizer, the response package comprising a sequence of client fingerprints, wherein the response package is generated by the client optimizer only when the client optimizer determines that it is one of the first set of client optimizers in relation to the content data and in response to determining that a client fingerprint of the first locally stored content block matches the received first fingerprint, the first locally stored content block having been received and stored by the client optimizer prior to receiving the first server fingerprint from the server optimizer, the first locally stored content block being associated with the sequence of client fingerprints representing a set of next content blocks that were received and stored by the client optimizer directly after receipt of the first locally stored content block in sequence;
determining, for each of the set of subsequent content blocks, whether the corresponding server fingerprint indicates equivalence to one of the locally stored content blocks according to its respective client fingerprint received as part of the response package; and
communicating a subset of the set of subsequent content blocks from the server optimizer to the client optimizer according to the determination by the server optimizer to communicate the content data to the client optimizer, such that the corresponding server fingerprint of each communicated subsequent content block indicates no equivalence to one of the locally stored content blocks according to its respective client fingerprint. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
- determining, by the server optimizer, to communicate content data to a client optimizer;
-
17. A server-side system, disposed in a communications network between client optimizers and content servers, for handling communication of content data from the content servers to the client optimizers over the communications network, the server-side system comprising:
- an object processing subsystem operable to;
chunk content data into a first content block and a set of subsequent content blocks; and
compute server fingerprints of each of the first content block and the set of subsequent content blocks; and
a communications subsystem, in communication with the object processing subsystem, and operable to;
communicate a first fingerprint corresponding to the first content block from the server optimizer to a client optimizer;
receive a response package at the server optimizer from the client optimizer, the response package comprising a sequence of client fingerprints, wherein the response package is generated by the client optimizer only when the client optimizer determines that it is one of the first set of client optimizers in relation to the content data and in response to determining that a client fingerprint of the first locally stored content block matches the received first fingerprint, the first locally stored content block having been received and stored by the client optimizer prior to receiving the first server fingerprint from the server optimizer, the first locally stored content block being associated with the sequence of client fingerprints representing a set of next content blocks that were received and stored by the client optimizer directly after receipt of the first locally stored content block in sequence;
determine, for each of the set of subsequent content blocks, whether the corresponding server fingerprint indicates equivalence to one of the locally stored content blocks according to its respective client fingerprint received as part of the response package; and
communicate a subset of the set of subsequent content blocks from the server optimizer to the client optimizer, such that the corresponding server fingerprint of each communicated subsequent content block indicates no equivalence to one of the locally stored content blocks according to its respective client fingerprint. - View Dependent Claims (18, 19, 20)
- an object processing subsystem operable to;
-
21. A system for opportunistically handling content data delivery from a server optimizer to a plurality of client optimizers over a communications network, the system comprising:
- a server optimizer operable to;
select a first set of client optimizers of the plurality of client optimizers for reliable delivery of content data, the plurality of client optimizers in communication with the server optimizer over a shared communications link in such a way that, when the content data is reliably received by the first set of client optimizers over the shared communications link, others of the plurality of client optimizers opportunistically receive the content data over the shared communications link;
multicast a set of fingerprints corresponding to the content data over the shared communications link;
receive a response package at the server optimizer from each of the first set of client optimizers, each response package comprising a respective sequence of client fingerprints that indicates any portions of the content data presently stored local to the respective client optimizer, wherein the response package is generated by the respective client optimizer in response to the client optimizer only when the client optimizer determines that it is one of the first set of client optimizers in relation to the content data and in response to determining that a client fingerprint of a first locally stored content block at the respective client optimizer matches at least one of the received set of fingerprints, the first locally stored content block having been received and stored by the respective client optimizer prior to receiving the first server fingerprint from the server optimizer, the first locally stored content block being associated with the respective sequence of client fingerprints representing a set of next content blocks that were received and stored by the respective client optimizer directly after receipt of the first locally stored content block in sequence;
determine a missing portion of the content data according to the portions of the content data not presently stored local to the first set of client optimizers as indicated by their respective response packages; and
multicast the missing portion of the content data over the shared communications link according to the determination. - View Dependent Claims (22, 23)
- a server optimizer operable to;
-
24. A method for handling content communications between a server optimizer and a plurality of client optimizers over a communications network, the method comprising:
-
receiving, by a client optimizer from the server optimizer, a first server fingerprint corresponding to a first content block, the first content block being one of a plurality of content blocks generated by the server optimizer from content data; determining, by the client optimizer, whether a first locally stored content block matches the first content block by comparing the first server fingerprint to a client fingerprint of the first locally stored content block, the first locally stored content block having been received and stored by the client optimizer prior to receiving the first server fingerprint from the server optimizer, the first locally stored content block being associated with a sequence of client fingerprints representing a set of next content blocks that were received and stored by the client optimizer directly after receipt of the first locally stored content block in sequence; when the locally stored content block matches the first content block; generating a response package by the client optimizer, the response package comprising the sequence of client fingerprints; and communicating the response package from the client optimizer to the server optimizer in response to receiving the first server fingerprint; receiving, in response to a request for the content data and in response to communicating the response package, either a second content block from the server optimizer or an indication that a second locally stored content block matches a second content block comprising a portion of the content data requested by the client optimizer from the content source; and using content data of either the second content block or the second locally stored content block in fulfillment of a corresponding portion of the request for the content data. - View Dependent Claims (25, 26, 27, 28)
-
-
29. A client-side system for receiving content data from content servers over a communications network via a server optimizer, the client-side system comprising:
-
an object processing subsystem operable to; determine whether a first locally stored content block matches a first content block by comparing a first server fingerprint to a client fingerprint of the first locally stored content block, the first server fingerprint corresponding to a first content block being one of a plurality of content blocks generated by the server optimizer from content data, the first locally stored content block having been received and stored by the client optimizer prior to receiving the first server fingerprint from the server optimizer, and the first locally stored content block being associated with a sequence of client fingerprints representing a set of next content blocks that were received and stored by the client optimizer directly after receipt of the first locally stored content block in sequence; and generate a response package by the client optimizer when the locally stored content block matches the first content block, the response package comprising the sequence of client fingerprints; and a communications subsystem, in communication with the object processing subsystem, and operable to; communicate the response package from the client optimizer to the server optimizer in response to receiving the first server fingerprint; receive, in response to a request for the content data and in response to communicating the response package, either a second content block from the server optimizer or an indication that a second locally stored content block matches a second content block comprising a portion of the content data requested by the client optimizer from the content source; and use content data of either the second content block or the second locally stored content block in fulfillment of a corresponding portion of the request for the content data. - View Dependent Claims (30)
-
Specification