Multicast with proactive forward error correction
First Claim
1. A method for transmitting data, comprising:
- multicasting blocks of data to a plurality of receivers, the blocks including a first block and a second block, the first block comprising k1≧
1 data packets, the transmission of the first block comprising an initial transmission of the k1 data packets and h1≧
0 repair packets and one or more subsequent transmissions of additional repair packets in response to repair requests, wherein any of the data packets and repair packets provide sufficient information to recover the k1 data packets; and
a second block comprising k2≧
1 data packets, the transmission of the second block comprising an initial transmission of the k2 data packets and h2≧
0 repair packets, wherein any of the data packets and the repair packets of the second block provide sufficient information to recover the k2 data packets of the second block and either or both k2 and h2 differ from k1 and h1, respectively.
1 Assignment
0 Petitions
Accused Products
Abstract
Apparatus and methods for multicasting blocks of data to a plurality of receivers, the blocks including a first block and a second block, the first block comprising k1≧1 data packets, the transmission of the first block comprising an initial transmission of the k1 data packets and h1≧repair packets and one or more subsequent transmissions of additional repair packets in response to repair requests, wherein any k1 of the data packets and repair packets provide sufficient information to recover the k1 data packets; and multicasting a second block comprising k2≧1 data packets, the transmission of the second block comprising an initial transmission of the k2 data packets and h2≧repair packets, wherein any k2 of the data packets and the repair packets of the second block provide sufficient information to recover the k2 data packets of the second block and either or both k2 and h2 differ from k1 and h1, respectively. The invention provides multicast data transmission with adaptive proactive forward error correction (FEC) in combination with automatic repair requesting (ARQ), and reduces response feedback implosion in multicast over digital packet networks.
-
Citations
41 Claims
-
1. A method for transmitting data, comprising:
-
multicasting blocks of data to a plurality of receivers, the blocks including a first block and a second block, the first block comprising k1≧
1 data packets, the transmission of the first block comprising an initial transmission of the k1 data packets and h1≧
0 repair packets and one or more subsequent transmissions of additional repair packets in response to repair requests, wherein any of the data packets and repair packets provide sufficient information to recover the k1 data packets; and
a second block comprising k2≧
1 data packets, the transmission of the second block comprising an initial transmission of the k2 data packets and h2≧
0 repair packets, wherein any of the data packets and the repair packets of the second block provide sufficient information to recover the k2 data packets of the second block and either or both k2 and h2 differ from k1 and h1, respectively.- View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
for a window of W blocks preceding the current block i, determining if any repair requests were received;
for any block x in the window in which no repair requests were received, setting ω
x=ρ
x−
1;
for any block x in the window in which a repair request was received, setting ω
x=ρ
x+(logz Nx)/k, where Nx is the number of repair requests received for block x, z represents the logarithm base, and setting Mx to the greatest repair packet sequence number requested for block x;
setting AW to the largest ω
x obtained for all blocks in the window, and setting BW to the average of Mx for each block x having at least one repair request;
if no repair requests were received for any of the preceding W blocks, setting ω
i=ω
i−
1−
Dk/2, where D is the period of the data transmission rate;
if a repair request was received for at least one block in the window, calculating ω
i to have a value ω
i=ω
′
H(1−
α
)+AWα
, where ω
′
=ω
i−
1x(1−
α
)+BWα
, and where α
is decay constant 0<
α
≦
1; and
setting ρ
i=ω
i.
-
-
9. The method of claim 8, wherein W is 8, the logarithm base z is 10, and α
- is 0.25.
-
10. A method for a receiver to receive a multicast transmission of blocks of data packets from a multicasting sender, the method comprising:
-
insuring to a probability ρ
that the receiver will receive enough data packets and repair packets to recover the data packets of a block no later than a deadline time by estimating the end-to-end loss of packets from the sender to the receiver; and
initiating proactive forward error correction with the sender to compensate for the estimated loss of packets and to meet the deadline time with a probability not less than ρ
, the proactive forward error correction causing the sender to send previously-unsent repair packets for the block.- View Dependent Claims (11, 12, 13)
-
-
14. A method for a receiver in a multicast receiver group to receive data, comprising:
-
receiving from a multicasting sender the packets of a block of packets comprising k≧
1 data packets and zero or more repair packets, wherein any of the data packets and repair packets provide sufficient information to recover the k data packets and wherein each of the packets has a sequential sequence number denoting the ordinal position of the packet in the block;
calculating a number of repair packets desired by the receiver; and
calculating the sequence number of the last of any repair packets desired by the receiver. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38)
calculating an estimate of S−
U, where S is the maximum sequence number sent by the sender and U is the number of data and repair packets that are underway to the receiver that will be received; and
calculating the sequence number of the last of any repair packets desired by the receiver to satisfy the relationship;
sequence number=S−
U+d, where d is the number of packets desired by the receiver.
-
-
16. The method of claim 15, wherein d=n, n being the difference between k, the number of packets the receiver needs, and the number of packets the receiver has received.
-
17. The method of claim 15, wherein d=m, m being a number of packets greater than the difference between k, the number of packets the receiver needs, and the number of packets the receiver has received.
-
18. The method of claim 15, wherein the estimate of S−
- U is the largest sequence number received by the receiver.
-
19. The method of claim 15, wherein the estimate of S−
- U is the larger of the largest sequence number received by the receiver and the largest sequence number requested in a repair request broadcast by another receiver in the receiver group.
-
20. The method of claim 17, wherein the estimate of S−
- U is the larger of the largest sequence number received by the receiver and the largest sequence number requested in a repair request broadcast by another receiver in the receiver group.
-
21. The method of claim 14, further comprising:
sending to the sender a repair request requesting the identified repair packets by their sequence numbers.
-
22. The method of claim 14, further comprising:
sending to the sender a repair request requesting the identified repair packets by the sequence number of the last one of them.
-
23. The method of claim 14, wherein the repair request is multicast to a plurality of receivers in the multicast receiver group.
-
24. The method of claim 14, further comprising:
-
receiving from the sender a block identifier for each packet of the block; and
including in the repair request the block identifier of the block to which the repair request relates.
-
-
25. The method of claim 24, further comprising:
including in the repair request the sequence number of the last repair packet being requested in the repair request.
-
26. The method of claim 23, further comprising:
-
monitoring repair requests multicast by other receivers in the multicast receiver group; and
sending a repair request to the sender requesting the identified repair packets only if the identified repair packets were not previously requested by another receiver.
-
-
27. The method of claim 14, further comprising:
-
examining the sequence numbers of the received packets to detect gaps in the sequence of received packets of the block;
receiving from the sender the number k+h′
of packets of the block sent so far; and
sending a repair request to the sender as soon as an absence of n>
h′
packets in the sequence of received packets is detected.
-
-
28. The method of claim 27, wherein the repair request requests a number of repair packets m that is greater than n.
-
29. The method of claim 28, wherein the amount by which m exceeds n is calculated from a proactivity factor received from the sender.
-
30. The method of claim 28, wherein the amount by which m exceeds n is calculated from a history of the number of packets requested in repair requests sent by the receiver.
-
31. The method of claim 28, wherein m satisfies the relationship that the probability of receiving n out of m packets, D(m, n), is greater than a probability threshold P of reliable transmission established for the receiver.
-
32. The method of claim 31, wherein the probability of receiving n out of m packets is greater than a last chance guarantee probability threshold established for the receiver.
-
33. The method of claim 31, wherein the receiver implements a policy to achieve an overall block goodput rate such that the probability that a complete block is received on or before a final deadline is the probability threshold P, the method further comprising:
computing m such that the probability D(m, n) of receiving n out of m packets is greater than or equal to (P−
D(l,k))/(1−
D(l, k)), where l is the number of packets of the block previously sent by the sender.
-
34. The method of claim 33, wherein if D(l, k)≧
- P, then no further attempt is made by the receiver to obtain the block.
-
35. The method of claim 31, wherein m satisfies the relationship
-
36. The method of claim 31, wherein the block must be decoded prior to a deadline, and m is calculated to insure that the receiver will receive at least k packets in sufficient time to decode the block.
-
37. The method of claim 31, wherein packet loss is modeled as a temporally-independent loss process with a packet loss probability p and D(m, n) satisfies
-
( m , n ) = ∑ i = n m ( m i ) ( 1 - p ) i p ( m - i ) .
-
-
38. The method of claim 31, further comprising:
calculating a final time Tfinal by which a repair request should be issued to meet a hard deadline, Tfinal satisfying the relationship
-
39. Apparatus comprising a computer-readable storage medium tangibly embodying program instructions for managing a multicasting transmission of data, the apparatus comprising instructions operable for causing a programmable processor to:
-
multicast blocks of data to a plurality of receivers, the blocks including a first block and a second block, the first block comprising k1≧
1 data packets, the transmission of the first block comprising an initial transmission of the k1 data packets and h1≧
0 repair packets and one or more subsequent transmissions of additional repair packets in response to repair requests, wherein any of the data packets and repair packets provide sufficient information to recover the k1 data packets; and
a second block comprising k2≧
1 data packets, the transmission of the second block comprising an initial transmission of the k2 data packets and h2≧
0 repair packets, wherein any of the data packets and the repair packets of the second block provide sufficient information to recover the k2 data packets of the second block and either or both k2 and h2 differ from k1 and h1, respectively.
-
-
40. Apparatus comprising a computer-readable storage medium tangibly embodying program instructions for managing the receipt of data, the apparatus comprising instructions operable for causing a programmable processor to:
-
insure to a probability p that the receiver will receive enough data packets and repair packets to recover the data packets of a block no later than a deadline time by estimating the end-to-end loss of packets from the sender to the receiver; and
initiating proactive forward error correction with the sender to compensate for the estimated loss of packets and to meet the deadline time with a probability not less than p, the proactive forward error correction causing the sender to send previously-unsent repair packets for the block.
-
-
41. A system for multicasting data from a sender to a plurality of receivers, said system comprising:
-
a sender apparatus comprising means for multicasting blocks of data to a plurality of receivers, the blocks including a first block and a second block, the first block comprising k1≧
1 data packets, the transmission of the first block comprising an initial transmission of the k2 data packets and h1≧
0 repair packets and one or more subsequent transmissions of additional repair packets in response to repair requests, wherein any of the data packets and repair packets provide sufficient information to recover the k1 data packets; and
a second block comprising k2≧
1 data packets, the transmission of the second block comprising an initial transmission of the k2 data packets and h2≧
0 repair packets, wherein any of the data packets and the repair packets of the second block provide sufficient information to recover the k2 data packets of the second block and either or both k2 and h2 differ from k1 and h1, respectively;
a plurality of receiver apparatuses comprising means for initiating proactive forward error correction with the sender to compensate for lost packets, proactive forward error correction causing the sender apparatus to send previously-unsent repair packets for the block; and
a network connecting the sender apparatus to said plurality of receiver apparatuses.
-
Specification