Multi-output packet server with independent streams
First Claim
1. A method of serving a content item from a content server to multiple clients via a network, the method comprising:
- maintaining concurrent independent sessions between a content server and each of a plurality of clients for conveying the content item to each of the plurality of clients, wherein the number of clients in the plurality of clients can vary over time, and wherein the start of at least one session and the end of at least one session is 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 item, wherein each packet payload in at least a subset of the stream of packet payloads includes a different set of data; and
transmitting concurrently 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 concurrently 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 item after correctly receiving a number of different output symbols sufficient in quantity to reconstruct the data generated from the content item 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.
-
Citations
87 Claims
-
1. A method of serving a content item from a content server to multiple clients via a network, the method comprising:
-
maintaining concurrent independent sessions between a content server and each of a plurality of clients for conveying the content item to each of the plurality of clients, wherein the number of clients in the plurality of clients can vary over time, and wherein the start of at least one session and the end of at least one session is 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 item, wherein each packet payload in at least a subset of the stream of packet payloads includes a different set of data; and transmitting concurrently 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 concurrently 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 item after correctly receiving a number of different output symbols sufficient in quantity to reconstruct the data generated from the content item to a desired accuracy from those different output symbols. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25)
-
-
26. An apparatus for serving content to multiple clients via a network, the apparatus comprising:
-
a client manager coupled to the network that maintains concurrent 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 a content item, 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; and a transmitter coupled to the replication engine that receives the packets and transmits concurrently the packets to the corresponding clients via the network; wherein each packet payload transmitted concurrently 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 item 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 (27, 28, 29, 30, 31)
-
-
32. An apparatus for serving a content item to multiple clients via a network, the network including a multicast network, the apparatus comprising:
-
a client manager coupled to the network that maintains concurrent independent sessions with each of a plurality of unicast clients, wherein the start of at least one session and the end of at least one session is independent of the start and end of other sessions; a storage device that stores the content item 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 item 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 concurrently 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; and a unicast transmitter coupled to the replicator engine that receives the unicast packets and transmits concurrently the packets to the corresponding unicast clients via the network; wherein each multicast packet or unicast packet transmitted concurrently 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 item 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 (33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43)
-
-
44. A method of serving content to multiple clients via a network, the content being one or more content items, wherein a given content item is 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 at least one random or pseudorandom set of output symbols, wherein each packet includes a different set of the output symbols; and transmitting concurrently, using multicasting, the stream of packets to a plurality of multicast clients via the multicast network, wherein each packet transmitted concurrently at any particular time to some or all of the plurality of multicast 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 (45, 46, 47, 48, 49, 50)
-
-
51. 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 representing a particular content item; an encoding generator coupled with the storage device that generates output symbols from of the input symbols; and 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 concurrently, using multicast, the multicast packets to a plurality of multicast clients via the network, and wherein each multicast packet transmitted concurrently 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 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 (52)
-
-
53. 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 concurrent independent sessions with each of a respective plurality of clients that are to receive a particular content item; 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 particular content item 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; and a respective transmitter coupled to the replication engine that receives the packets and transmits concurrently the packets to the corresponding clients via the network; wherein each packet payload transmitted concurrently 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 particular content item 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 (54, 55, 56, 57)
-
-
58. 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 representing a particular content item; a respective encoding generator coupled with the respective storage device that generates output symbols from the input symbols; and 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 random or pseudorandom set of output symbols and transmits concurrently, using multicast, the multicast packets to a respective plurality of multicast clients via the network, wherein each multicast packet transmitted concurrently 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 (59, 60)
-
-
61. 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 a content item 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, wherein the client receives concurrently the same packets as another client receiving the same content item even when the other client has a different start time or different end time 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; and 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 item to a desired accuracy with the received output symbols. - View Dependent Claims (62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72)
-
-
73. A method at a client of receiving a content item 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, wherein the client receives concurrently the same packets as another client receiving the same content item even when the other client has a different start time or different end time 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; and 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 item to a desired accuracy with the received output symbols. - View Dependent Claims (74, 75, 76, 77, 78)
-
-
79. 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 a content item; 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 item, 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, wherein the client receives concurrently the same packets as another client receiving the same content item even when the other client has a different start time or different end time and wherein each of the plurality of clients is capable of reconstructing the content item 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 (80)
-
-
81. A computer-readable medium, for use with a content server capable of serving content to multiple clients via a network, the computer- readable medium comprising non-transitory storage for program code, executable, directly or indirectly, by a content server, the non-transitory storage having stored thereon:
-
program code for maintaining concurrent independent sessions between a content server and each of a plurality of clients for conveying a content item to each of the plurality of clients, wherein the number of clients in the plurality of clients can vary over time, and wherein the start of at least one session and the end of at least one session is independent of the start and end of other sessions; program code for 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 item, wherein each packet payload in at least a subset of the stream of packet payloads includes a different set of data; and program code for transmitting concurrently 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 concurrently 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 item after correctly receiving a number of different output symbols sufficient in quantity to reconstruct the data generated from the content item to a desired accuracy from those different output symbols. - View Dependent Claims (82, 83, 84, 85, 86, 87)
-
Specification