• Aucun résultat trouvé

How FEC works

Loss Recovery

3.2 How FEC works

3.2.1 Theory

The use of Forward Error Correction (FEC), as an alternative or complement to ARQ for reliable multicast transmission, has been investigated by different authors [43, 49, 50, 44, 38]. FEC involves the transmission of original data along with additional redundant data which can be used to recon-struct the original data if some of it is lost.

A Reed Solomon Erasure correcting code (RSE code), such as the one described by McAuley [51], is used to generate the redundant data. Suppose we have data packets ; 9 ;("("(";

each of which is bits long. The RSE encoder takes

;("("(";

and produces paritiesI ;("("(";

I

8

each

bits long. We also use the parameterC to denote the numberK4 of parities.

For the purpose of coding, we consider the vector

-

[41]. Given a primitive element of

The matrix has the property that any out of the '64 & row vectors are linearly indepen-dent. Therefore, at the RSE decoder any components of are sufficient to uniquely specify

; 9

;("("(";

.

This basic RSE scheme is not a systematic code, i.e. the data packets ; 9 ;("("(";

are not part of . As a consequence, the RSE decoder must always solve simultaneous linear equations to retrieve the data packets

; 9

;("("(";

from components of .

Fortunately, there is a simple solution to avoid this decoding complexity. Prior to coding, gaus-sian elimination on the matrix is used, to turn the first row vectors of into a:; identity matrix. Using this

, coding

results in the first components of being copies of

; 9

;("("(";

. The other components of are the parities:I

for & ;("("(";

KG4

.

The RSE decoder at the receiver side can reconstruct the data packets ;("("(";

, whenever it

. The data packets will also be referred to as a transmission group, or TG. TheK packets ;("("("; ;I to as a FEC block. Sending the original data as the first packets of the FEC block simplifies decoding:

If all data packets are received, no decoding at all is required at the receiver.

If@ K4 out of the data packets are lost, the decoding overhead is proportional to@. There are multiple benefits using parity packets for loss recovery instead of retransmitting the lost original data packets:

Improved transmission efficiency:

A single parity packet can be used to repair the loss of any one of theK data packets. This means that a single parity packet can repair the loss of different data packets at different receivers. Hence, FEC is particularly well suited for a multicast scenario.

Improved scalability in terms of group size:

An ARQ scheme which retransmits the original packets requires the sender to know the se-quence numbers of the lost packets. By using parity packets for loss repair, the sender only needs to know the maximum number of packets lost by any receiver within a TG but not their sequence numbers. Feedback is reduced from per–packet feedback to per–TG feedback.

Reduction of unnecessary receptions:

Multicasting retransmissions for loss recovery results in unnecessary receptions at all receivers that do not need the retransmission. Such unnecessary receptions waste processing capacity.

As we will show later, the number of unnecessary receptions is significantly reduced with parity transmission.

3.2.2 Practical Aspects

The size of a packet, , will typically be on the order of several hundred bits (ATM cell) to several thousand bits (IP datagram). RSE coders that operate on symbols of that size are difficult to imple-ment. The hardware architecture for the RSE coder proposed by McAuley [51] uses a symbol size

with ) or # ' . The software (SW) implementation of the coder by Rizzo [20] uses

) and can therefore use a fast table lookup for multiplication and division.

In the case of , we need to choose E where is an integer. We then perform multiple parallel RSE encodings for each -bit symbol in each data packet (see Figure 2 of [51]).

For example, we perform RSE on the first -bit symbol of each of the data packets and obtain

K4

-bit parity packets. We repeat this on the 2nd bit symbol of the data packets and so on.

The number of elements in a Galois field B'

is limited to'

elements. Therefore, the symbol size must be picked sufficiently large such thatK '

. For our purposes, ) will be sufficiently large.

In order to assess the encoding and decoding speed we measured the throughput of the software coder by Rizzo on a Pentium PC 133 running Linux. The amount of original data is split equally into

data packets of & KByte each. The amount of redundancy, given as the percentageC>D E& $ $F of the original data, is produced (encoding) or used for reconstruction (decoding) together with the originals received.

Figure 3.1 shows the encoding and decoding throughput. The encoding throughput denotes the amount of original data processed per second, given that a percentage C>D E & $ $F of parity data is produced from the original data. The decoding throughput denotes the amount of parity and original data processed per second to reconstruct a percentage ofC>D GE & $ $F of original data that are lost.

The analysis of the coding and decoding algorithm in [20] is confirmed by our own measure-ments. We observe that:

The encoding speed is inversely proportional to the amount of parity data produced.

The decoding speed is inversely proportional to the amount of original data lost and recon-structed, i.e. the amount of parity data used for reconstruction.

Both encoding and decoding throughput are inversely proportional to the TG size (see eq.

B.6 and eq. B.7 in the Appendix).

The decoding throughput is slightly less than the encoding throughput.

For a constant TG size, , the throughput in Mbit/s of the encoder and decoder is insensitive to the packet size .

0 20 40 60 80 100

100 101 102

redundancy [%]

throughput [Mbit/s]

encoding/decoding speed

x: encoding o: decoding

k = 7 k = 20 k = 100

Figure 3.1: Coder and decoder throughput in Mbits/s with respect to the percentage of redundancy

C>D GE

&

$ $F

and the TG size .

If we look at the absolute encoding performance (Figure 3.1), we observe in the case of a TG size ofG%H , that we achieve a coding rate of Mbit/s, when one parity packet is produced (& "#$F redundancy). This means the first parity packet for a TG of sizeG%H is available after&('$ s. Such high performance and the fact that the transmission rates of many current multicast applications are typically less than & $ KByte/s, suggests that coding in software will not affect the packet sending rate and that loss recovery using parity data is feasible. This point will be further investigated in Section 3.5.1.