IP Library Granted Patent US 8,489,672
Granted Patent B2
US 8,489,672 · App. 12/685,729 · Granted Jul 16, 2013

Content set based deltacasting

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 8,489,672
App. No.
12/685,729
Filed
Jan 12, 2010
Granted
Jul 16, 2013
Kind
B2
Art Unit
2455
USPC
709/203
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 (40)

1. A method for multicasting 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:

intercepting a data block at the server side of the communications system, the data block comprising a header portion and a content portion;

determining, at the server side of the communications system, that the data block is being communicated in response to a request by a requesting client for a content object that is part of a content set identified by a content set identifier, the content set being predetermined to be of interest to a plurality of clients;

associating the data block with the content set identifier;

generating a fingerprint using byte-level information comprised by the content portion of the data block;

determining, at the server side of the communications system, whether to communicate the data block to at least the requesting client by determining whether the data block is not presently stored local to the requesting client as a function of the fingerprint and a server-side client dictionary;

determining, when it is determined to communicate the data block to at least the requesting client, whether to multicast the data block over the communications path to at least the plurality of clients according to the content set identifier;

multicasting the data block over the communications path when it is determined to multicast the data block; and

using the content set identifier to determine whether a client of the plurality of clients accepts the data block multicast over the communications path.

2. The method of claim 1 , wherein using the content set identifier to determine whether the client of the plurality of clients accepts the data block multicast over the communications path comprises: determining, at the server side of the communications system, whether to include the client of the plurality of clients in a multicast group, wherein the data block is multicast over the communications path according to the multicast group.

3. The method of claim 2 , further comprising:

detecting a link condition affecting communications over the communications path with at least a portion of the multicast group; and

selecting a modcode as a function of the link condition,

wherein the data block is multicast over the communications path further according to the modcode.

4. The method of claim 1 , wherein using the content set identifier to determine whether the client of the plurality of clients accepts the data block multicast over the communications path comprises: determining, at the client of the plurality of clients, whether to locally store the data block according to the content set identifier.

5. The method of claim 1 , wherein: the content set identifier is associated with a set-level profile configured to characterize the content set; and using the content set identifier to determine whether the client of the plurality of clients accepts the data block multicast over the communications path comprises determining whether the client of the plurality of clients accepts the data block according to at least a portion of the set-level profile.

6. The method of claim 5 , wherein the set-level profile comprises set-level metadata.

7. The method of claim 1 , further comprising:

receiving a request for the content set at the server side of the communications system;

downloading a set of content objects in response to receiving the request for the content set; and

associating the set of content objects with the content set identifier, wherein the data block is intercepted as part of downloading the set of content objects.

8. The method of claim 1 , wherein the content set identified by the content set identifier is configured to comprise all data blocks downloaded from a predetermined host.

9. The method of claim 1 , wherein the content set identified by the content set identifier dynamically changes along with changes to the content objects comprised by the content set.

10. The method of claim 1 , wherein the content set comprises a content feed.

11. The method of claim 1 , wherein the content set comprises a webpage.

12. The method of claim 1 , wherein the communications path comprises a satellite link.

13. A server system for multicasting 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 server system comprising:

an optimizer module, stored in a memory at the server side of the communications system, the optimizer module, when executed, causing a processor to: intercept a data block comprising a header portion and a content portion;

determining, at the server side of the communications system, that the data block is being communicated in response to a request by a requesting client for a content object that is part of a content set identified by a content set identifier, the content set being determined to be of interest to a plurality of clients;

associate the data block with the content set identifier; and

generate a fingerprint using byte-level information comprised by the content portion of the data block; and

a communications module, stored in the memory, communicatively coupled with the optimizer module, the communications module, when executed, causing the processor to:

determine whether to communicate the data block to at least the requesting client by determining whether the data block is not presently stored local to the requesting client as a function of the fingerprint and a server-side client dictionary;

determine, when it is determined to communicate the data block to at least the requesting client whether to multicast the data block over the communications to at least the plurality of clients according to the content set identifier; and

when it is determined to multicast the data block:

multicast the data block over the communications path; and

use the content set identifier to determine whether a client of the plurality of clients accepts the data block multicast over the communications path.

14. The server system of claim 13 , wherein the communications module is configured to use the content set identifier to determine whether the client of the plurality of clients accepts the data block multicast over the communications path by: determining whether to include the client of the plurality of clients in a multicast group, wherein the data block is multicast over the communications path according to the multicast group.

15. The server system of claim 14 , wherein the communications module is further configured to use the content set identifier to determine whether the client of the plurality of clients accepts the data block multicast over the communications path by: detecting a link condition affecting communications over the communications path with at least a portion of the multicast group; and selecting a modcode as a function of the link condition, the data block being multicast over the communications path further according to the modcode.

16. The server system of claim 13 , further comprising: a content set generator module, stored in the memory, communicatively coupled with the optimizer module, the content set generator module, when executed, causing the processor to: receive a request for the content set; download a set of content objects in response to receiving the request for the content set; and associate the set of content objects with the content set identifier, wherein the data block is intercepted by the optimizer module as part of downloading the set of content objects.

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 May 9, 2012
From: VIASAT, INC.
To: UNION BANK, N.A.
Reel/Frame 028184/0152 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 22, 2010
From: SEBASTIAN, WILLIAM B.; LEPESKA, PETER
To: VIASAT, INC.
Reel/Frame 023829/0735 →