IP Library Granted Patent US 10,187,436
Granted Patent B2
US 10,187,436 · App. 13/919,888 · Granted Jan 22, 2019

Content set based deltacasting

Inventors: William B. Sebastian (E. Falmouth, MA); Peter Lepeska (Boston, MA)
Assignee: ViaSat, Inc.
H04L65/4076H04L12/1859H04L12/1863H04L12/1881H04L12/1886H04L45/7453H04L47/70H04L65/60H04L67/10H04L67/42H04L69/04H04L69/22
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,187,436
App. No.
13/919,888
Granted
Jan 22, 2019
Kind
B2
Abstract

Methods, apparatuses, and systems are provided for improving utilization of the satellite communications system through various “deltacasting” techniques for handling content sets (e.g., feeds or websites). Embodiments operate in a client-server context, including a server optimizer, a client optimizer, and, in some embodiments, a pre-positioning client. Within this client-server context, content sets are multicast (e.g., anticipatorily pre-positioned in a local dictionary) to end users of the communications system and are handled at the content set level, according to set-level metadata and/or user preferences. In some embodiments, when locally stored information from the content sets is requested by a user, deltacasting techniques are used to generate fingerprints for use in identifying and exploit multicasting and/or other opportunities for increased utilization of links of the communications system.

Claims (45)

1. A method for handling content multicast over a communications system having a communications path between a serverside of the communications system and a plurality of clients, the communications path comprising a shared forward link over which bandwidth resources are shared during a multicast communication, the method comprising:

communicating a first request for a first content set of a plurality of content sets from a first client of the plurality of clients to the serverside at a first time instance, each content set of the plurality of content sets comprising a plurality of associated content objects, and each content set identified by a respective content set identifier including the first content set being identified by a first content set identifier that is associated with a set-level profile configured to characterize the first content set;

receiving at a second time instance after the first time instance a data block at the first client from the server side, the receiving of the data block not being responsive to a request by the first client prior to the receiving the data block at the second time instance, the data block comprising a header portion and a content portion and having been multicast to the first client over the shared forward link as a result of the server side intercepting the data block in association with a second request by a second client for the data block after the first time instance, and as a result of the server side determining to multicast the data block according to a fingerprint generated using only byte-level information comprised by the content portion of the data block, the data block being associated at the server side of the communications system with an associated content set identifier of a corresponding one of the plurality of content sets;

determining, at the first client after the receiving, whether to store the data block in a client dictionary according to whether the associated content set identifier associated with the received data block is the first content set identifier associated with the first requested first content set, wherein the wherein the determining comprises determining whether to store the data block according to at least a portion of the set-level profile; and

when it is determined to store the data block in the client dictionary according to the associated content set identifier being the first content set identifier, storing the data block in the client dictionary in association with the first content set identifier, the first content set identifier being associated with the set-level profile configured to characterize the first content set.

2. The method of claim 1 , further comprising:

determining, at the first client when it is determined to store the data block in the client dictionary according to the first content set identifier, whether to remove stored data from the client dictionary according to a respective content set identifier.

3. The method of claim 1 , further comprising:

generating a dictionary profile configured to characterize contents of the client dictionary according to content set identifiers stored in association with contents of the client dictionary; and

rendering web browser content at the first client according to the dictionary profile.

4. The method of claim 1 , further comprising:

calculating a compression gain metric for the requested content set as a function of content set identifiers stored in association with contents of the client dictionary.

5. The method of claim 1 ,

wherein the data block is received as part of downloading the plurality of content objects comprised by the first requested content set in response to the first request for the first content set.

6. The method of claim 1 , wherein communicating a request comprises selecting a link through a web interface.

7. The method of claim 1 , wherein the requested content set dynamically changes along with changes to the content objects comprised by the requested content set.

8. The method of claim 1 , wherein the plurality of content objects associated with the requested content set is defined by contents of a content feed or a webpage.

9. The method of claim 1 , wherein each content set is predetermined to be of interest to a respective set of clients.

10. A client system for handling content multicast over a communications system having a communications path between a serverside of the communications system and a plurality of clients, the client system being implemented in a first client of the plurality of clients, the communications path comprising a shared forward link over which bandwidth resources are shared during a multicast communication, the client system comprising:

a memory; a processor;

a machine-implemented optimizer module stored in the memory and executable by the processor to:

communicate to the server side a first request for a first content set of a plurality of content sets at a first time instance, each of the plurality of content sets comprising a plurality of associated content objects, each of the plurality of content sets being identified by a respective content set identifier including the first content set being identified by a first content set identifier that is associated with a set-level profile configured to characterize the first content set; and

receive a data block from the server side at a second time instance after the first time instance, the data block not being responsive to a request by the first client prior to the data block being received, the data block comprising a header portion and a content portion and having been received via a multicast over the shared forward link as a result of the serverside intercepting the data block in association with a second request by a second client for the data block after the first time instance, and as a result of the server side determining to multicast the data block according to a fingerprint generated using only byte-level information comprised by the content portion of the data block, the data block being associated at the serverside of the communications system with an associated content set identifier of a corresponding one of the plurality of content sets; and

a machine-implemented dictionary management module that is stored in the memory and executable by the processor and is communicatively coupled with the optimizer module and a client dictionary, to determine whether to store the data block in the client dictionary according to whether the associated content set identifier associated with the received data block is the first content set identifier associated with the first requested content set, wherein the dictionary management module operates to determine whether to store the data block in the client dictionary according to at least a portion of the set-level profile, and to store the data block in the client dictionary in association with the first content set identifier when it is determined to store the data block in the client dictionary according to the associated content set identifier being the first content set identifier, the first content set identifier being associated with the set-level profile configured to characterize the first content set.

11. The client system of claim 10 , wherein the dictionary management module further operates to:

determine whether to remove stored data from the client dictionary according to a respective content set identifier when the dictionary management module determines to store the data block in the client dictionary.

12. The client system of claim 10 , further comprising:

a web browser, communicatively coupled with the dictionary management module, that operates to:

render web browser content according to a dictionary profile configured to characterize contents of the client dictionary according to content set identifiers stored in association with contents of the client dictionary.

13. The client system of claim 10 ,

wherein the data block is received as part of downloading the plurality of content objects comprised by the first requested content set in response to the first request for the first content set.

14. The client system of claim 10 , further comprising:

a compression management module, communicatively coupled with the client dictionary, and configured to:

calculate a compression gain metric for the requested content set as a function of content set identifiers stored in association with contents of the client dictionary.

15. The client system of claim 10 , further comprising:

a web browser that operates to display links associated with the plurality of content sets via a graphical user interface,

wherein the optimizer module operates to communicate the request for the content set in response to the web browser receiving a selection of one of the links that is associated with the requested content set.

16. The client system of claim 10 ,

wherein the optimizer module, when executed, causes the processor to communicate the request for the content set; and

the dictionary management module, when executed, causes the processor to determine whether to store the data block in the client dictionary.

17. A method for handling content multicast over a communications system having a communications path between a server side of the communications system and a plurality of clients, the communications path comprising a shared forward link over which bandwidth resources are shared during a multicast communication, the method comprising:

communicating a first request for a first content set of a plurality of content sets from a first client of the plurality of clients to the serverside at a first time instance, each content set of the plurality of content sets comprising a plurality of associated content objects, and each content set identified by a respective content set identifier including the first content set being identified by a first content set identifier;

receiving at a second time instance after the first time instance a data block at the first client from the server side, the receiving of the data block not being responsive to a request by the first client prior to the receiving the data block at the second time instance, the data block comprising a header portion and a content portion and having been multicast to the first client over the shared forward link as a result of the server side intercepting the data block in association with a second request by a second client for the data block after the first time instance, and as a result of the serverside determining to multicast the data block according to a fingerprint generated using only byte-level information comprised by the content portion of the data block, the data block being associated at the server side of the communications system with an associated content set identifier of a corresponding one of the plurality of content sets; and

determining, at the first client after the receiving, whether to store the data block in a client dictionary according to whether the associated content set identifier associated with the received data block is the first content set identifier associated with the first requested first content set; and

calculating a compression gain metric for the requested content set as a function of content set identifiers stored in association with contents of the client dictionary.

Assignments (5)
SECURITY AGREEMENT Recorded Jun 1, 2023
From: VIASAT, INC.
To: BANK OF AMERICA, N.A., AS AGENT
Reel/Frame 063822/0446 →
SECURITY AGREEMENT Recorded Mar 7, 2022
From: VIASAT, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 059332/0558 →
SECURITY INTEREST Recorded Mar 27, 2019
From: VIASAT, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL TRUSTEE
Reel/Frame 048715/0589 →
SECURITY AGREEMENT Recorded Dec 23, 2013
From: VIASAT, INC.
To: UNION BANK, N.A., AS AGENT FOR THE SECURED PARTIES
Reel/Frame 031868/0789 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 17, 2013
From: SEBASTIAN, WILLIAM B.; LEPESKA, PETER
To: VIASAT INC.
Reel/Frame 030627/0663 →
Continuity (4)
Division 12685729 · Jan 12, 2010
Provisional Application 61170359 · Apr 17, 2009
Provisional Application 61144363 · Jan 13, 2009
Related Publication 20130282796A1 · Oct 24, 2013
Cited By (2)
US 12,388,569 US 12,671,494