MULTI-OUTPUT PACKET SERVER WITH INDEPENDENT STREAMS
First Claim
1. A method of serving content from a content server to multiple clients via a network, the method comprising:
- maintaining independent sessions between a content server and each of a plurality of clients, wherein the number of clients in the plurality of clients can vary over time, and wherein the start of each session and the end of each session can be independent of the start and end of other sessions;
receiving a stream of packet payloads by the content server, each packet payload of the stream of packet payloads including a random or pseudorandom set of output symbols encoded with data generated from the content, wherein each packet payload in at least a subset of the stream of packet payloads includes a different set of data;
transmitting from the content server each packet payload in the stream of packet payloads to each client of the plurality of clients in corresponding packets, wherein each packet payload transmitted at any particular time to some or all of the plurality of clients is independent of which packet payloads had been previously correctly received by various ones of the clients, and wherein each of the plurality of clients is capable of reconstructing the content after correctly receiving a number of different output symbols sufficient in quantity to reconstruct the data to a desired accuracy from those different output symbols.
2 Assignments
0 Petitions
Accused Products
Abstract
A method of serving content to multiple clients via a network is provided. Independent sessions with each of a plurality of clients are maintained, wherein the number of clients in the plurality of clients can vary over time, and wherein the start of each session and the end of each session can be independent of the start and end of other sessions. A stream of packet payloads is received, each packet payload of the stream of packet payloads including data generated from the content, wherein each packet payload in at least a subset of the stream of packet payloads includes a different set of data. Each packet payload in the stream of packet payloads is transmitted to each client of the plurality of clients in corresponding packets, wherein the packet payload transmitted to a client at any particular time is independent of the state of the corresponding session.
171 Citations
94 Claims
-
1. A method of serving content from a content server to multiple clients via a network, the method comprising:
-
maintaining independent sessions between a content server and each of a plurality of clients, wherein the number of clients in the plurality of clients can vary over time, and wherein the start of each session and the end of each session can be independent of the start and end of other sessions;
receiving a stream of packet payloads by the content server, each packet payload of the stream of packet payloads including a random or pseudorandom set of output symbols encoded with data generated from the content, wherein each packet payload in at least a subset of the stream of packet payloads includes a different set of data;
transmitting from the content server each packet payload in the stream of packet payloads to each client of the plurality of clients in corresponding packets, wherein each packet payload transmitted at any particular time to some or all of the plurality of clients is independent of which packet payloads had been previously correctly received by various ones of the clients, and wherein each of the plurality of clients is capable of reconstructing the content after correctly receiving a number of different output symbols sufficient in quantity to reconstruct the data to a desired accuracy from those different output symbols. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 29, 37)
-
-
13. (canceled)
-
15-16. -16. (canceled)
-
27-28. -28. (canceled)
-
30-36. -36. (canceled)
-
38. An apparatus for serving content to multiple clients via a network, the apparatus comprising:
-
a client manager coupled to the network that maintains independent sessions with each of a plurality of clients;
a buffer coupled to receive a stream of packet payloads, each packet payload of the stream of packet payloads including a random or pseudorandom set of output symbols encoded with data generated from the content, wherein each packet payload in at least a subset of the stream of packet payloads includes a different set of data;
a replication engine coupled to the buffer that, for each packet payload, generates a plurality of packets that include the packet payload, each packet of the plurality of packets corresponding to one of the plurality of clients;
a transmitter coupled to the replication engine that receives the packets and transmits the packets to the corresponding clients via the network;
wherein each packet payload transmitted at any particular time to some or all of the plurality of clients is independent of which packet payloads had been previously correctly received by various ones of the clients, and wherein each of the plurality of client is capable of reconstructing the content after correctly receiving a number of different output symbols sufficient in quantity to reconstruct the data to a desired accuracy from those different output symbols. - View Dependent Claims (39, 40, 41, 42, 43)
-
-
44. An apparatus for serving content to multiple clients via a network, the network including a multicast network, the apparatus comprising:
-
a client manager coupled to the network that maintains independent sessions with each of a plurality of unicast clients;
a storage device that stores the content to be served;
an encoding system coupled to the storage device that generates a stream of packet payloads, each packet payload of the stream of packet payloads including a random or pseudorandom set of output symbols encoded with data comprising the content to be served to the plurality of unicast clients and a plurality of multicast clients, wherein each packet payload in at least a subset of the stream of packet payloads includes a different set of data, wherein at least a first subset of the packet payloads are included in multicast packets;
a multicast transmitter coupled with the encoding generator and the network that receives the multicast packets from the encoding system and transmits the multicast packets to a plurality of multicast clients via the multicast network;
a replication engine coupled to the encoding system that receives at least a second subset of the packet payloads in the stream of packet payloads, and that, for each received packet payload, generates a plurality of unicast packets that include the received packet payload, each unicast packet of the plurality of unicast packets corresponding to one of the plurality of unicast clients;
a unicast transmitter coupled to the replicator engine that receives the unicast packets and transmits the packets to the corresponding clients via the network;
wherein each multicast packet or unicast packet transmitted at any particular time to some or all of the plurality of multicast clients or the plurality of unicast clients is independent of which multicast packet or unicast packet had been previously correctly received by various ones of the multicast clients or unicast clients, and wherein each of the plurality of multicast clients or unicast clients is capable of reconstructing the content after correctly receiving a number of different output symbols sufficient in quantity to reconstruct the data to a desired accuracy from those different output symbols. - View Dependent Claims (45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55)
-
-
56. A method of serving content to multiple clients via a network, the content represented by a plurality of input symbols, wherein the network includes a multicast network, the method comprising:
-
generating output symbols from the input symbols;
assembling output symbols into a stream of packets, wherein each packet in the stream of packets includes of at least one random or pseudorandom set of output symbols, wherein each packet includes a different set of the output symbols; and
transmitting, using multicasting, the stream of packets to a plurality of multicast clients via the multicast network, wherein each packet transmitted at any particular time to some or all of the plurality of clients is independent of which packet had been previously correctly received by various ones of the multicast clients;
wherein the number of multicast clients in the plurality of multicast clients can vary over time, and wherein a multicast client can regenerate the ordered set of input symbols to a desired accuracy from any N number of the output symbols randomly or pseudorandomly included in a set of packets received by the multicast client, wherein N is an integer greater than 1 and less than the number of possible output symbols. - View Dependent Claims (57, 58, 59, 60, 61, 62)
-
-
63-64. -64. (canceled)
-
65. A server for serving content to multiple clients via a network including a multicast network, the server comprising:
-
a storage device that stores the content to be served, the content including input symbols;
an encoding generator coupled with the storage device that generates output symbols from of the input symbols;
a transmitter coupled with the encoding generator and with the network that assembles the output symbols into multicast packets, wherein each multicast packet includes a random or pseudorandom set of output symbols and transmits, using multicast, the multicast packets to a plurality of multicast clients via the network, and wherein each multicast packet transmitted at any particular time to some or all of the plurality of muticast clients is independent of which multicast packet had been previously correctly received by various ones of the multicast clients;
wherein the number of multicast clients in the plurality of multicast clients can vary over time, and wherein a multicast client can regenerate the input symbols to a desired accuracy from any N number of the output symbols included in a set of multicast packets received by the multicast client, wherein N is an integer greater than 1 and less than the number of possible output symbols. - View Dependent Claims (66)
-
-
67. A distributed apparatus for serving content to multiple clients via a network, the distributed apparatus comprising:
-
a plurality of replication systems, each replication system including;
a respective client manager coupled to the network that maintains independent sessions with each of a respective plurality of clients;
a respective buffer coupled to receive a respective stream of packet payloads, each packet payload of the respective stream of packet payloads including a random or pseudorandom set of output symbols encoded with data comprising the content to be transferred to the respective plurality of clients, wherein each packet payload in at least a subset of the respective stream of packet payloads includes a different set of data;
a respective replication engine coupled to a respective buffer that, for each packet payload, generates a plurality of packets that include the packet payload;
a respective transmitter coupled to the replication engine that receives the packets and transmits the packets to the corresponding clients via the network;
wherein each packet payload transmitted at any particular time to some or all of the plurality of clients is independent of which packet payload had been previously correctly received by various ones of the clients, and wherein each of the plurality of clients is capable of reconstructing the content after correctly receiving a number of different output symbols sufficient in quantity to reconstruct the data to a desired accuracy from those different output symbols. - View Dependent Claims (68, 69, 70, 71)
-
-
72. A server system for serving content to multiple clients via a network including a multicast network, the server system comprising:
a plurality of servers, each of the plurality of servers including;
a respective storage device that stores the content to be served, the content including input symbols;
a respective encoding generator coupled with the respective storage device that generates output symbols from the input symbols;
a respective transmitter coupled with the respective encoding generator and with the network that assembles the output symbols into multicast packets, wherein each multicast packet includes a a random or pseudorandom set of output symbols and transmits, using multicast, the multicast packets to a respective plurality of multicast clients via the network, wherein each multicast packet transmitted at any particular time to some or all of the plurality of multicast clients is independent of which multicast packet had been previously correctly received by various ones of the multicast clients;
wherein the number of multicast clients in the respective plurality of multicast clients can vary over time, and wherein a multicast client can regenerate the input symbols to a desired accuracy from any N number of the output symbols included in a set of multicast packets randomly or pseudorandomly received by the multicast client, wherein N is an integer greater than 1 and less than the number of possible output symbols. - View Dependent Claims (73, 74)
-
75. A method at a client of receiving content comprising an ordered set of input symbols via a network, the method comprising:
-
requesting a server via the network to transmit the content to the client;
receiving a stream of packets from the server via the network, wherein packets in the stream of packets comprise output symbols, the output symbols generated from the input symbols, wherein each packet in the stream of packets includes a random or pseudorandom set of the output symbols, wherein the number of possible output symbols is N, and wherein each packet received at any particular time to the client is independent of which packets had been previously correctly received by the client;
after randomly or pseudorandomly receiving an N1 number of the output symbols in packets received from the stream of packets, wherein N1 is a positive integer greater than 1 and less than N, regenerating the content to a desired accuracy with the received output symbols. - View Dependent Claims (76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86)
-
-
87. A method at a client of receiving content comprising an ordered set of input symbols via a multicast network, the method comprising:
-
joining a multicast session;
receiving a stream of packets via the multicast network, wherein packets in the stream of packets comprise output symbols, the output symbols generated from the input symbols, wherein each packet in the stream of packets includes a random or pseudorandom set of the output symbols, wherein the number of possible output symbols is N, and wherein each packet received by the client at any particular time is independent of which packets had been previously correctly received by the client;
after randomly or pseudorandomly receiving an N1 number of the output symbols in packets received from the stream of packets, wherein N1 is a positive integer greater than 1 and less than N, regenerating the content to a desired accuracy with the received output symbols. - View Dependent Claims (88, 89, 90, 91, 92)
-
-
93. A method of receiving content from a server, the method comprising:
-
requesting to join a multicast session, wherein the multicast session includes a stream of multicast packets served by a server, the multicast packets in the stream of multicast packets including a random or pseudorandom set of output symbols encoded with data comprising the content; and
if the client does not receive multicast packets in the stream of multicast packets, requesting the server to send a stream of unicast packets, the unicast packets in the stream of unicast packets including another random or pseudorandom set of output symbols encoded with data comprising the content, wherein each multicast packet received by the client at any particular time is independent of which multicast packets had been previously correctly received by the client and wherein each of the plurality of clients is capable of reconstructing the content after correctly receiving a number of different output symbols sufficient in quantity to reconstruct the data to a desired accuracy from those different output symbols. - View Dependent Claims (94)
-
Specification