Opportunistic content delivery using delta coding

US10270842B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10270842-B2
Application numberUS-201615225538-A
CountryUS
Kind codeB2
Filing dateAug 1, 2016
Priority dateOct 25, 2011
Publication dateApr 23, 2019
Grant dateApr 23, 2019

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

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.

First claim

Opening claim text (preview).

What is claimed is: 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 N th data block and M additional data blocks, where M is greater than one; generating, by the proxy server, a fingerprint of the N th data block; sending from the proxy server across a communications network to the client device the fingerprint of the N th data block; receiving at the proxy server across the communications network from the client device an indication that the N th 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. 2. The method of claim 1 , wherein the M additional data blocks are sequential data blocks that follow the Nth data block. 3. The method of claim 2 , wherein the X additional data blocks stored at the client device follow in sequence the Nth data block in the content object. 4. The method of claim 1 , wherein the content object is received from the content server in response to a request from the client device for the content object. 5. The method of claim 1 , wherein: receiving the content object from the content server comprises receiving the content object as a data stream, and the method further comprises chunking, by the proxy server, the data stream into the N th data block and the M additional data blocks. 6. The method of claim 1 , wherein: sending the fingerprint of the N th data block comprises multicasting the fingerprint of the N th data block to a plurality of client devices that share a same communications channel, and the client device is one of the plurality of client devices. 7. The method of claim 1 , further comprising: after sending the fingerprint of the Nth data block and before receiving the indication that the N th data block is stored at the client device, starting to send over the communications network the N th data block followed by the M additional data blocks; and after receiving the indication that the N th data block is stored at the client device, stopping the sending of the N th data block followed by the M additional data blocks. 8. The method of claim 1 , wherein: the client device comprises a user terminal and a client optimizer, and the client optimizer is disposed between the user terminal and the proxy server. 9. A server-side system comprising: an object processor configured to receive from a content server a content object comprising an N th data block and M additional data blocks, where M is greater than one; a coder configured to generate a fingerprint of the N th data block; and a communications subsystem configured to: send the fingerprint of the N th data block across a communications network to a client device, and receive from the client device across the communications network an indication that the N th 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. 10. The server-side system of claim 9 , wherein the object processor is further configured to: receive the content object from the content server as a data stream, and chunk the data stream into the N th data block and the M additional blocks. 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 N th data block and M additional data blocks, where M is greater than one; generating, by the proxy server, a fingerprint of the N th data block; sending from the proxy server across a communications network to the client device the fingerprint of the N th data block; receiving at the proxy server across the communications network from the client device an indication that the N th 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. 12. The non-transitory medium of claim 11 , wherein the M additional data blocks are sequential data blocks that follow the Nth data block. 13. The non-transitory medium of claim 12 , wherein the X additional data blocks stored at the client device follow in sequence the Nth data block in the content object. 14. The non-transitory medium of claim 11 , wherein the content object is received from the content server in response to a request from the client device for the content object. 15. The non-transitory medium of claim 11 , wherein: receiving the content object from the content server comprises receiving the content object as a data stream, and the steps further comprise chunking, by the proxy server, the data stream into the N th data block and the M additional data blocks. 16. The non-transitory medium of claim 11 , wherein: sending the fingerprint of the N th data block comprises multicasting the fingerprint of the N th data block to a plurality of client devices that share a same communications channel, and the client device is one of the plurality of client devices. 17. The non-transitory medium of claim 11 , wherein the steps further comprise: after sending the fingerprint of the N th data block and before receiving the indication that the N th data block is stored at the client device, starting to send over the communications network the N th data block followed by the M additional data blocks; and after receiving the indication that the N th data block is stored at the client device, stopping the sending of the N th data block followed by the M additional data blocks. 18. The non-transitory medium of claim 11 , wherein: the client device comprises a user terminal and a client optimizer, and the client optimizer is disposed between the user terminal and the proxy server.

Assignees

Inventors

Classifications

  • Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables · CPC title

  • Protocols for data compression, e.g. ROHC · CPC title

  • Realisations of complexity reduction techniques, e.g. use of look-up tables · CPC title

  • with schedule organisation, e.g. priority, sequence management · CPC title

  • applied to payload information · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10270842B2 cover?
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 deterministical…
Who is the assignee on this patent?
Viasat Inc
What technology area does this patent fall under?
Primary CPC classification H04L67/10. Mapped technology areas include Electricity.
When was this patent published?
Publication date Tue Apr 23 2019 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 12 related publications on this page (citations in our corpus or others sharing the same primary CPC).