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 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 output symbols distinct from any output symbols included in any other packet payload of the stream of packet payloads; and
transmitting concurrently from the content server each packet payload of 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
20 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 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 output symbols distinct from any output symbols included in any other packet payload of the stream of packet payloads; and transmitting concurrently from the content server each packet payload of 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. 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 the network to receive a stream of packet payloads, each packet payload of the stream of packet payloads including a 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 output symbols distinct from any output symbols included in any other packet payload of the stream of packet payloads; 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 (9, 10, 11, 12)
-
-
13. 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 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 output symbols distinct from any output symbols included in any other packet payload of the stream of packet payloads; and program code for transmitting concurrently from the content server each packet payload of 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 (14, 15, 16, 17, 18)
-
-
19. An apparatus for serving a content item from a content server to multiple clients via a network, the apparatus comprising:
-
means for 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; means for receiving a stream of packet payloads by the content server, each packet payload of the stream of packet payloads including a 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 output symbols distinct from any output symbols included in any other packet payload of the stream of packet payloads; and means for transmitting concurrently from the content server each packet payload of 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.
-
-
20. 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 coupled to the network 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 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 output symbols distinct from any output symbols included in any other packet payload of the stream of packet payloads, 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.
-
Specification