Transport protocol for anticipatory content
First Claim
1. A method providing reliability in a multicasting communications system having a communications path between a server side of the communications system and a client side of the communications system, the communications path comprising a shared forward link over which bandwidth resources are shared, the method comprising:
- observing a first request for an object, wherein the first request originates from a first user system;
observing, at a server, a response to the first request for the object;
determining, at the server, that the object is a multicast candidate;
multicasting the object over the communications path to the first user system and a second user system, wherein the first user system is different than the second user system;
storing, at the server, packets of the object for retransmission;
receiving, at the server, a reliability message from the first user system identifying holes in a page data map of the object;
communicating a first object repair message to the first user, wherein the first object repair message comprises at least a portion of the packets of the object stored at the server for retransmission;
receiving, at the server, a second request for the object after communicating the first object repair message to the first user system, wherein the second request originates from the second user system; and
communicating a second object repair message to the second user system in response to the second request for the object.
5 Assignments
0 Petitions
Accused Products
Abstract
Methods, apparatuses, and systems for improving utilization of a communications system (e.g., a satellite communications system) are provided, using delayed reliability techniques as part of a multicast transport protocol. Embodiments may operate in a client-server context, in which the server-side of the communication link multicasts data to requesting users and to users where the data is being speculatively prepositioned. Requesting users may implement reliability checks to verify receipt of complete data in response to the request while user systems where data is being speculatively prepositioned may receive multicast reliability information in response to reliability requests from other users, but may not request replacement of missing or corrupted data themselves until a request is made for the data by that system.
-
Citations
20 Claims
-
1. A method providing reliability in a multicasting communications system having a communications path between a server side of the communications system and a client side of the communications system, the communications path comprising a shared forward link over which bandwidth resources are shared, the method comprising:
-
observing a first request for an object, wherein the first request originates from a first user system; observing, at a server, a response to the first request for the object; determining, at the server, that the object is a multicast candidate; multicasting the object over the communications path to the first user system and a second user system, wherein the first user system is different than the second user system; storing, at the server, packets of the object for retransmission; receiving, at the server, a reliability message from the first user system identifying holes in a page data map of the object; communicating a first object repair message to the first user, wherein the first object repair message comprises at least a portion of the packets of the object stored at the server for retransmission; receiving, at the server, a second request for the object after communicating the first object repair message to the first user system, wherein the second request originates from the second user system; and communicating a second object repair message to the second user system in response to the second request for the object. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A server system for multicasting to a plurality of user systems via a communications link, each user system comprising a client optimizer, the server system comprising:
-
a server optimizer, in communication with a content source, in communication with the client optimizers via a communications path, and configured to; observe, at the server system, a first request for an object, wherein the first request originates from a first user system; observe, at the server system, a response to the first request for the object; and generate a fingerprint using byte-level information comprised by the content portion of the response to the first request; and a multicaster module, communicatively coupled with the server optimizer, and configured to; determine whether to multicast the response to the first request by using the fingerprint to determine whether information associated with the response to the first request is currently stored in a first client dictionary; multicast the object over the communications path to the first user system and a second user system; receive, at the server system, a reliability message from the first user system identifying holes in a page data map of the object; communicate a first object repair message to the first user system; receive, at the server system, a second request for the object from the second user system after communicating the data repair message to the first user; and communicate a second object repair message to the second user in response to the second request for the object. - View Dependent Claims (18)
-
-
19. A method of prepositioning data at a client system comprising:
-
observing, at a receiver of a client system, a control channel for a first control packet; creating, in response to the first control packet a page data map associated with a data file; storing, in a client storage of the client system, a plurality of packets and associating each packet of the plurality of packets with the page data map, wherein the plurality of packets are received as part of one or more multicast communications; requesting by a communication from the client system to a content server, the data file after storing the plurality of packets; receiving, at the client system, a set of checksum data associated with the data file; communicating, from the client system to a server, a set of holes in the page data map, each hole of the set of holes comprising a position in the page data map without associated data; and receiving a set of packets corresponding to the set of holes in the page data map.
-
-
20. A system for delayed reliability in a multicast communication system comprising:
-
a plurality of user systems, each user system comprising; a client dictionary configured to store data local to the respective user system as an indexed set of data blocks; a client optimizer, configured to receive content data and control data, and to determine whether to store the content data at the respective client dictionary according to the control data; and a reliability module, configured to communicate a reliability message when missing or corrupted data is identified in response to the content data stored in response to a user request, and to store the content data without error correction when the content data is prepositioned at a user system of the plurality of user systems; and a server system, in communication with a content source and in communication with the plurality of user systems over a communications path, and comprising; a server optimizer in communication with the client optimizers comprised by the plurality of user systems via the communications path, the server optimizer being configured to; intercept the content data coming from the content source and destined for a first client optimizer associated with a respective first client dictionary, the content data comprising a header portion and a content portion, the content portion representing content being communicated from the content source to a user associated with the first client optimizer; and generate a fingerprint from byte-level information comprised by the content portion of the content data; a modeling module configured to store dictionary models indicating contents of the client dictionaries; and a multicaster module, communicatively coupled with the server optimizer and the modeling module, and configured to; determine whether to multicast the content data by using the fingerprint to determine whether a copy of the content data is currently stored in the first client dictionary; and when the multicaster module determines to multicast the traffic, multicast the content data over the communications path from the server optimizer to at least the user system associated with the first client optimizer.
-
Specification