Method of listener transmitted broadcasting
First Claim
1. A method of managing a broadcast over a global packet-switched network of a data stream having a bandwidth, the data stream represented as a plurality of data packets, the data stream originating from at least one originator, and received by a plurality of listeners, wherein each listener converts the data stream into a human perceivable form, and at least one listener is capable of deriving a packet from at least one received packet, and sending a derived packet using a unicast protocol over the global packet-switched network to at least one other listener;
- comprising the steps of;
a) maintaining a pattern of interconnections between a group of listeners, wherein the pattern is maintained so that at least one listener does not receive any packets directly from the originator;
b) establishing a flow of data from an originator to the group of listeners by the steps of;
i) instructing the originator to send packets to at least one selected listener;
ii) instructing at least one selected listener to derive packets from at least one received packet and to send derived packets to at least one other listener in the group wherein each listener converts the data stream into a human perceivable form; and
iii) repeating step ii until listeners are instructed to derive and send packets so that packets sufficient to reconstruct the data stream will be sent to all listeners in accordance with the pattern;
so that each listener receives the broadcast substantially concurrently as it is transmitted by the originator.
0 Assignments
0 Petitions
Accused Products
Abstract
The bandwidth of a group of Internet users, called listeners, is pooled, and that bandwidth is employed to broadcast a data stream, substantially concurrently, to those listeners. A broadcast manager coordinates the connections between the originator of the data stream and the listeners. The originator divides the data stream into a number of channels. Each channel is transmitted over a tree of interconnected listeners. A given listener in a given tree receives that channel from its parent in that tree, and retransmits the channel as it is received to its children in that tree. Each listener is present once in each tree, so the listener receives each channel once. Listeners combine the incoming channels to reproduce the originator'"'"'s data stream. The result is that almost the entire transmission bandwidth required for the broadcast is provided by the listeners. In some embodiments, a given listener is required to transmit no more data than it receives. One or more channels may be redundant, providing some ability to bypass non-performing listeners. Feedback statistics are efficiently collected in the reverse direction over the same connections used for transmitting the channels. An application for a file server is described. A distributed broadcast manager is described.
137 Citations
44 Claims
-
1. A method of managing a broadcast over a global packet-switched network of a data stream having a bandwidth, the data stream represented as a plurality of data packets, the data stream originating from at least one originator, and received by a plurality of listeners, wherein each listener converts the data stream into a human perceivable form, and at least one listener is capable of deriving a packet from at least one received packet, and sending a derived packet using a unicast protocol over the global packet-switched network to at least one other listener;
- comprising the steps of;
a) maintaining a pattern of interconnections between a group of listeners, wherein the pattern is maintained so that at least one listener does not receive any packets directly from the originator;
b) establishing a flow of data from an originator to the group of listeners by the steps of;
i) instructing the originator to send packets to at least one selected listener;
ii) instructing at least one selected listener to derive packets from at least one received packet and to send derived packets to at least one other listener in the group wherein each listener converts the data stream into a human perceivable form; and
iii) repeating step ii until listeners are instructed to derive and send packets so that packets sufficient to reconstruct the data stream will be sent to all listeners in accordance with the pattern;
so that each listener receives the broadcast substantially concurrently as it is transmitted by the originator. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
a) at least one listener sending a special packet, containing statistical information, to a listener from which the listener receives packets in the data stream;
b) a selected listener combining the statistical information in received special packets from at least one listener with the selected listener'"'"'s own statistical information, to create combined statistical information for the selected listener and other listeners;
c) the selected listener sending a special packet containing the combined statistical information to a listener from which the selected listener receives packets in the data stream; and
d) repeating steps b) and c), until the originator receives a special packet containing the combined statistical information from a plurality of listeners.
- comprising the steps of;
-
9. The method of claim 8, further comprising the step of computing a network latency from data in the special packet.
-
10. The method of claim 1, in which:
-
a) in step (a), a plurality of patterns of interconnections are maintained, each pattern interconnecting the listeners in the group, and at least one listener being connected to a different set of other listeners in each pattern, and the originator being connected to at least one listener in each pattern;
b) the originator produces a plurality of channels, each channel comprising a stream of packets derived from the data stream, each channel having a bandwidth, one channel corresponding to each pattern; and
c) for each channel, the originator transmits the packets for that channel to at least one selected listener according to the pattern corresponding to that channel, and the packets in each channel are sent through the pattern;
so that each of the listeners receives packets from two or more channels, sufficient to reconstruct the data stream.
-
-
11. The method of claim 1, in which the data stream represents content selected from a group comprising audio programming, video programming, multimedia programming, and advertising information.
-
12. A method of managing a broadcast over a global packet-switched network of a data stream having a bandwidth, the data stream represented as a plurality of data packets, the data stream originating from at least one originator, and received by a plurality of listeners, and at least one listener is capable of deriving a packet from at least one received packet, and sending a derived packet using a unicast protocol over the global packet-switched network to at least one other listener;
- comprising the steps of;
a) maintaining a plurality of patterns of interconnections between a group of listeners, each pattern interconnecting the listeners in the group, and at least one listener being connected to a different set of other listeners in each pattern, and at least one listener having no connections to the originator, and the originator being connected to at least one listener in each pattern;
b) instructing at least one originator to produce a plurality of channels, each channel comprising a stream of packets derived from the data stream, each channel having a bandwidth less than the bandwidth of the data stream;
c) establishing a flow of data from an originator to the group of listeners by the steps of;
i) instructing the originator to send packets for a channel to at least one selected listener, according to a pattern;
ii) instructing at least one selected listener to derive a channel comprising a stream of packets derived from received packets, the bandwidth of the channel being less than the bandwidth of the data stream, and to send packets for the derived channel to at least one other listener in the group, according to the pattern wherein each listener converts the data stream into a human perceivable form; and
iii) repeating step ii until listeners are instructed to derive and send packets so that packets sufficient to reconstruct the data stream will be sent to all listeners;
wherein at least one listener not connected to any originator receives from no other single listener a set of channels whose combined bandwidth is equal to or greater than the bandwidth of the data stream;
so that each listener receives packets from two or more channels, sufficient to reconstruct the data stream.- View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25)
a) at least one listener sending a special packet, containing statistical information, to a listener from which the listener receives packets in the data stream;
b) a selected listener combining the statistical information in received special packets from at least one listener with the selected listener'"'"'s own statistical information, to create combined statistical information for the selected listener and other listeners;
c) the selected listener sending a special packet containing the combined statistical information to a listener from which the selected listener receives packets in the data stream; and
d) repeating steps b) and c), until the originator receives a special packet containing the combined statistical information from a plurality of listeners.
- comprising the steps of;
-
23. The method of claim 22, further comprising the step of computing a network latency from data in the special packet.
-
24. The method of claim 12, in which the data stream represents content selected from a group comprising audio programming, video programming, multimedia programming, and advertising information.
-
25. The method of claim 12, in which the data stream represents a data file, and the data file is broadcast a plurality of times, so that listeners may make local copies of the file.
-
26. A method for a first listener to receive a data stream being broadcast over a global packet switched network, the data stream being represented as a plurality of data packets, the data stream originating from at least one originator, and received by a plurality of listeners other than the first listener, at least one of which retransmits part or all of the data stream over the packet switched network to another listener, comprising the steps of:
-
a) submitting to a broadcast manager a request to receive a data stream;
b) forming connections with at least one other listener in response to at least one instruction from the broadcast manager;
c) receiving a channel consisting of a stream of packets over each of one or more connections formed in step (b); and
d) reconstructing the data stream from the channels, and converting it into a human perceivable form;
so that the first listener receives the broadcast from other listeners, as received by them from other listeners, and ultimately from the originator, substantially concurrently as the originator transmits the data stream. - View Dependent Claims (27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)
e) forming connections with at least one other listener in response to at least one instruction from the broadcast manager; and
f) transmitting each of one or more first channels, each first channel consisting of a stream of packets derived from at least one channel received at step (c), to at least one listener connected with at step (e);
so that the first listener participates in transmitting the broadcast to at least one other listener.
-
-
28. The method of claim 27, further comprising the step of notifying the broadcast manager of a failure to receive packets expected at step (c).
-
29. The method of claim 27, further comprising the steps of:
-
h) notifying the broadcast manager of an intention to leave the broadcast;
i) receiving at least one connection instruction from the broadcast manager;
j) sending at least one connection instruction received at step (i) to one or more other listeners, those listeners in turn either sending those instructions to still other listeners, or forming new connections to one or more listeners based on those instructions; and
k) closing connections to all listeners connected to at steps (b) and (e);
so that the listeners connected to the first listener form new connections over which they continue to receive the data stream, other than from the first listener, and the first listener stops receiving channels from any other listeners.
-
-
30. The method of claim 27, wherein at step (e), the first listener forms connections to a plurality of other listeners in response to at least one instruction from the broadcast manager.
-
31. The method of claim 26, wherein at step (b), the first listener forms connections to a plurality of other listeners in response to at least one instruction from the broadcast manager, and at step (c), the first listener receives a channel over each of a plurality of connections formed.
-
32. The method of claim 26, wherein at step (c), no single listener provides sufficient packets to reconstruct the data stream.
-
33. The method of claim 32, wherein the data stream has a bandwidth, and each channel has a bandwidth, and at step (c), the bandwidth of each channel is less than the bandwidth of the data stream, and the sum of the bandwidths of channels being sent by each listener is less than the bandwidth of the data stream.
-
34. The method of claim 27, further comprising the steps of:
-
g) reconstructing at least one missing packet of a channel from at least one packet received on at least one other channel; and
h) transmitting at least one reconstructed packet over at least one connection formed at step (e);
so that a channel whose reception is interrupted is reconstructed from other channels, so that the reception and retransmission of the data stream is not interrupted.
-
-
35. The method of claim 32, wherein the bandwidth of each channel is substantially equal.
-
36. The method of claim 26, further comprising the steps of:
-
e) forming a connection with an originator in response to an instruction from the broadcast manager; and
f) transmitting each of one or more first channels, each first channel consisting of a stream of packets derived from at least one channel received at step (c), to the originator connected with at step (e);
so that the listener participates in transmitting the broadcast back to the originator, so the originator can monitor the broadcast.
-
-
37. The method of claim 27, further comprising the steps of:
-
g) receiving at least one special packet containing statistical information over at least one connection formed at step (e);
h) combining the statistical information received in at least one special packet received at step (g) with the first listener'"'"'s own statistical information, to create combined statistical information; and
i) sending a special packet containing the combined statistical information over at least one connection formed at step (b);
so that combined statistical information is propagated, and the originator eventually receives combined statistical information from a plurality of listeners.
-
-
38. The method of claim 37, wherein the statistical information is derived from a delay between transmission of a portion of the data stream by the originator, to receipt of that portion by the first listener, so that the originator can monitor the latency of the broadcast.
-
39. The method of claim 26, in which the data stream represents content selected from a group comprising audio programming, video programming, multimedia programming, and advertising information.
-
40. A method for an originator to broadcast a data stream over a global packet switched network to a plurality of listeners, the data stream being represented as a plurality of data packets, wherein at least one listener is capable of sending a packet over the global packet-switched network to at least one other listener;
- comprising the steps of;
a) submitting to a broadcast manager a request to broadcast a data stream;
b) establishing a flow of data to the group of listeners by the steps of;
i) forming connections with two or more listeners in response to at least one instruction from the broadcast manager;
ii) formatting a derivative of the data stream into a stream of packets;
iii) dividing the packets between a plurality of channels, so that the bandwidth of each channel is less than the bandwidth of the data stream; and
iv) transmitting a channel to each of two or more listeners with which connections were formed in step (b)(i), such that no more than one channel is sent to each listener;
wherein at least one listener to which a channel was transmitted in step (b)(iv), sends at least one channel derived from at least one received channel to at least one other listener, until at least one listener receives packets sufficient to reconstruct the data stream and converts the data stream into a human perceivable form. - View Dependent Claims (41, 42, 43, 44)
- comprising the steps of;
Specification