Open Access

Design of Packet-Based Block Codes with Shift Operators

EURASIP Journal on Wireless Communications and Networking20102010:263210

DOI: 10.1155/2010/263210

Received: 22 October 2009

Accepted: 31 December 2009

Published: 18 January 2010

Abstract

This paper introduces packet-oriented block codes for the recovery of lost packets and the correction of an erroneous single packet. Specifically, a family of systematic codes is proposed, based on a Vandermonde matrix applied to a group of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq1_HTML.gif information packets to construct https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq2_HTML.gif redundant packets, where the elements of the Vandermonde matrix are bit-level right arithmetic shift operators. The code design is applicable to packets of any size, provided that the packets within a block of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq3_HTML.gif information packets are of uniform length. In order to decrease the overhead associated with packet padding using shift operators, non-Vandermonde matrices are also proposed for designing packet-oriented block codes. An efficient matrix inversion procedure for the off-line design of the decoding algorithm is presented to recover lost packets. The error correction capability of the design is investigated as well. The decoding algorithm, based on syndrome decoding, to correct a single erroneous packet in a group of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq4_HTML.gif received packets is presented. The paper is equipped with examples of codes using different parameters. The code designs and their performance are tested using Monte Carlo simulations; the results obtained exhibit good agreement with the corresponding theoretical results.

1. Introduction

Real-time applications are delay sensitive and, in the Internet, are primarily based on user datagram protocol (UDP). Packet-level forward error correction (FEC) is a packet loss recovery technique which does not require retransmissions and allows packet delivery with bounded delay and controllable reliability [1]. In order to protect https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq5_HTML.gif information packets, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq6_HTML.gif additional redundancy packets are also sent. The term "packet" is loosely applied in this context, as in many proposals, packet-level FEC is used at the data-link layer. Packet-level FEC aims at recovering some of the lost packets, where the lost packets originate from erroneous bit transmissions and packet discarding at the lower protocol layers, especially for multihop networks, as well as from congestions in the network and buffer overflows. When packet level FEC is deployed alone to recover from lost packets, the packet loss rate (PLR) is reduced compared to the PLR in the network. However, there is no guarantee that all packets will be recovered at the destination. This is acceptable in some applications like video and audio streaming or multicasting protocols [2].

The parity packets in the existing packet-level FEC schemes are constructed in a similar fashion as parity bits/symbols in the linear block codes used in digital transmission systems, except the bits used in the encoding process are from different packets. The receiver is able to recover up to a certain number of lost/erroneous packets in a block of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq7_HTML.gif transmitted packets governed by the minimum distance of the code [1, 3].

There are a number of powerful and efficient FEC schemes to recover from erasures and/or errors [4], such as low density parity check (LDPC) codes and tornado codes, which use bipartite graphs [2, 5]. Also, Reed Solomon (R-S) codes are used in many applications. However, the codewords in these codes are rather short, and this dictates the construction of the parity packets, which are usually visualized as arranging information packets row-wise and running the FEC code column-wise [6, 7]. An alternative to this is to use the turbo codes to construct the turbo code frame, and then split the frame into packets. This is only feasible in turbo codes because of the large size of the codewords [8].

In practical applications, in addition to erasure/error recovery capability of the code, another important aspect to consider is the complexity of the encoding and decoding processes [9]. This aspect motivates the investigations in this paper, where the only operations permitted on packets are arithmetic packet shifts and binary additions. Particularly, this paper focuses on systematic codes with coefficient matrices based on the Vandermonde or NonVandermonde structures. Both designs, by incorporating packet shifts, facilitate fast matrix-vector multiplication and efficient inversion of submatrices involved in the erasure or erroneous packet recovery processes. In contrast to other systematic erasure codes based on Vandermonde matrices, the proposed codes are not using Vandermonde matrices to manipulate elements (packet fragments) from the Galois field (GF), but rather use them to operate on whole packets by working with their shifts. The benefit of this approach is the lower encoding and decoding complexities of the designs presented in this paper. The proposed codes are maximum distance separable (MDS) and, while maintaining comparable performance as in the more conventional ones, are also quite flexible in the choice of the code rate.

2. Linear Block Codes in Packet-Level FEC

In conventional applications of systematic codes to packet-level FEC, a unit of information, either symbol or bit, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq8_HTML.gif , https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq9_HTML.gif , is taken from each of the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq10_HTML.gif information packets. These https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq11_HTML.gif symbols are used to construct https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq12_HTML.gif parity symbols with the help of the coefficient matrix https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq13_HTML.gif . The parity symbols are then transmitted in https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq14_HTML.gif redundancy packets. The coded/transmitted symbols on https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq15_HTML.gif packets, represented by the column vector https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq16_HTML.gif , are calculated at the transmitter (encoder) using the following linear system of equations:

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ1_HTML.gif
(1)

where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq17_HTML.gif is the column vector of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq18_HTML.gif information symbols from https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq19_HTML.gif packets, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq20_HTML.gif is the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq21_HTML.gif generator matrix, and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq22_HTML.gif is the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq23_HTML.gif identity matrix. For R-S codes, the matrix multiplication in (1) uses GF arithmetics. In general, if all information packets are of the same length https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq24_HTML.gif , (1) is used https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq25_HTML.gif times to construct the coded packets, where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq26_HTML.gif is the number of bits represented in each symbol and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq27_HTML.gif is the floor operator. The assumption used in this paper is that all packets in the coded group are of the same length. This imposes some limitations which can be overcome by padding the packets to the same length. For brevity of notation, for all symbols in the group of packets, we rewrite (1) using the packet version of this relationship as:

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ2_HTML.gif
(2)

where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq28_HTML.gif is a matrix of information packets arranged in rows, each with https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq29_HTML.gif symbol elements, and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq30_HTML.gif is the corresponding matrix of coded packets.

At the receiver side, for MDS codes, if there are lost information packets, we have to solve the following system of equations for https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq31_HTML.gif :

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ3_HTML.gif
(3)

or equivalently, determine

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ4_HTML.gif
(4)

where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq32_HTML.gif is the vector of any https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq33_HTML.gif received packets, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq34_HTML.gif is a https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq35_HTML.gif submatrix of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq36_HTML.gif with rows corresponding to the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq37_HTML.gif received packets as determined by the received packets sequence numbers, and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq38_HTML.gif represents the inverse of a matrix. There are many matrix inversion techniques that could be used, such as those based on Cramer's rule procedure, Gaussian elimination, or Gaussian Jordan elimination methods [1012]. We will present later a suitable technique for our designs for finding the matrix inverse efficiently for the proposed codes.

The main challenge in the design of an erasure code is to determine https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq39_HTML.gif , or in the case of systematic codes, the corresponding coefficient matrix https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq40_HTML.gif . For MDS codes, the matrix https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq41_HTML.gif should be designed in such a way that any https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq42_HTML.gif submatrix, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq43_HTML.gif , has to be invertible (full rank). The total number of such submatrices is https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq44_HTML.gif , where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq45_HTML.gif represents the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq46_HTML.gif -choose- https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq47_HTML.gif operator. The simplest two designs of G are the repetition code and the single parity check code. In the former case, the code is https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq48_HTML.gif where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq49_HTML.gif is the column vector of all 1's, while the latter is the code https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq50_HTML.gif which adds one more packet consisting of the parity check of all information packets; that is, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq51_HTML.gif is the row vector of all 1's. These two codes, though simple to use, are not the best, since the former has a low rate while the latter recovers at most only one missing packet. In the case of the systematic codes considered in this paper, there are other matrices that could be used as https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq52_HTML.gif resulting in the desired properties of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq53_HTML.gif being invertible, such as the Cauchy and Vandermonde matrices. We will discuss next the Vandermonde matrix which is used as the coefficient matrix https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq54_HTML.gif in the R-S erasure codes. The Vandermonde matrix is also utilized in the design of the proposed code in this paper, but with a different building element than in the case of R-S codes.

The Vandermonde matrix https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq55_HTML.gif , with https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq56_HTML.gif elements, is given by the following [13]:

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ5_HTML.gif
(5)

This matrix is proven to be nonsingular if the parameters https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq57_HTML.gif , for https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq58_HTML.gif , are distinct. For R-S erasure codes with https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq59_HTML.gif , the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq60_HTML.gif elements are taken from the extended GF, GF( https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq61_HTML.gif ), where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq62_HTML.gif is a prime number ( https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq63_HTML.gif is used most of the time) and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq64_HTML.gif is any integer ( https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq65_HTML.gif is used for highest efficiency to represent a byte). Therefore, multiplication and addition operations in (2) and in (4) must be done on that extended GF. As a result, the following problems are encountered when working with R-S codes for packet-level FEC: (i) the code rates (parameters) are limited and (ii) the encoding and decoding processes are computationally intensive. Moreover, it has been shown that the Vandermonde matrix, based on the elements taken from the finite GF, is not always nonsingular [1315].

In the rest of the paper we deal with the processing of packets; however, some of the concepts involved are very close to symbol processing in FEC codes. Therefore, we will follow commonly accepted symbols and terms to denote corresponding operations.

3. Vandermonde Matrix-Based Binary Erasure Code Design

In this section, we present a code design using a coefficient matrix https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq66_HTML.gif , based on the Vandermonde matrix, which (i) results in computationally efficient processing of long packets, and (ii) possesses the desired properties when performing the decoding procedure in the proposed MDS code using (4). We choose the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq67_HTML.gif elements in the Vandermonde matrix as in (5) to be https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq68_HTML.gif , for https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq69_HTML.gif , where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq70_HTML.gif stands for a right arithmetic shift operator by https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq71_HTML.gif bits applied to the row information packet https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq72_HTML.gif , https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq73_HTML.gif represented in bits from now on. Therefore, the coefficient matrix, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq74_HTML.gif , in our code is given by:

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ6_HTML.gif
(6)

To ensure that this Vandermonde matrix, consisting of the arithmetic shifts operators https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq75_HTML.gif , when applied to the information packets, results in packets that can be recovered, the packet size has to be increased by at least https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq76_HTML.gif over the original information packet size https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq77_HTML.gif by zero padding these packets to the size of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq78_HTML.gif [4]. This packet size ensures that the arithmetic shifts implement delay (not cyclic shifts). Therefore, the overall effective rate for https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq79_HTML.gif code is https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq80_HTML.gif . For example, when applying the proposed design to Ethernet frames with transmission units of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq81_HTML.gif bytes and using the code https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq82_HTML.gif , the effective code rate is https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq83_HTML.gif which is close to the conventional rate 1/2 of this code. With the proposed coefficient matrix as in (6), based on (2) and (4), the encoding process and packet loss recovery process in the proposed codes are described in Sections 3.1 and 3.2, respectively.

3.1. Encoding Process

The Vandermonde-based matrix that is augmented with the identity matrix (systematic code) comprise the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq84_HTML.gif generator matrix of the code which is given by:

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ7_HTML.gif
(7)

where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq85_HTML.gif is the designed matrix. For the proposed https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq86_HTML.gif systematic MDS code, the encoder uses (2) and (7) to get:

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ8_HTML.gif
(8)

where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq87_HTML.gif are the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq88_HTML.gif coded packets comprising https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq89_HTML.gif , where the first https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq90_HTML.gif of them are the original information packets. The remaining https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq91_HTML.gif packets are generated by modulo- https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq92_HTML.gif addition of all the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq93_HTML.gif information packets after a proper shift of each information packet. Because of similarities with the construction of codewords in cyclic codes [6], it is natural to interpret (8) as a system of polynomial equations. In this system of algebraic equations, with https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq94_HTML.gif being represented as a polynomial https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq95_HTML.gif , the product https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq96_HTML.gif is a right shift, where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq97_HTML.gif is the right shift by https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq98_HTML.gif bits. The addition of polynomials with binary coefficients corresponding to bits in the packets is a modulo-2 addition. For brevity of notation, we will use https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq99_HTML.gif to describe the polynomial representation of a packet.

As compared to conventional encoding processes based on (1) and (2), the encoding process in (8) is fast and efficient because it uses just shifting and modulo- https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq100_HTML.gif addition operations of packets. This may benefit hardware implementation of the proposed packet coding or, in software implementation, reduce the number of memory accesses. Because of the invertibility properties of the Vandermonde matrix and its submatrices concatenated with the identity matrix, when we get any https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq101_HTML.gif coded packets out of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq102_HTML.gif transmitted ones, all the original https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq103_HTML.gif information packets can be recovered, at the receiver side [13]. Therefore, the minimum distance of such code is https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq104_HTML.gif , which is an MDS code with a small overhead because each packet is padded with https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq105_HTML.gif zeros. These codes can correct for https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq106_HTML.gif errors or https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq107_HTML.gif erasures [1].

3.2. Decoding Process

Initially we assume that the packet is either received correctly or lost. Assume that out of the received packets, some are information packets https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq108_HTML.gif indexed by https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq109_HTML.gif and some are parity packets https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq110_HTML.gif indexed by https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq111_HTML.gif . If the total number of packets received is greater than or equal to https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq112_HTML.gif , https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq113_HTML.gif of these packets, including all the received information packets, are used to construct the vector https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq114_HTML.gif in (4). The submatrix https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq115_HTML.gif is obtained from the generator matrix https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq116_HTML.gif by knocking off the rows of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq117_HTML.gif corresponding to packets not used or lost during transmission. Moreover, since some of these received https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq118_HTML.gif packets are information packets, their corresponding rows and columns in https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq119_HTML.gif can be removed so that one would be calculating only the missing information packets https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq120_HTML.gif . As opposed to (4), this can be accomplished using the reduced system of equations given by:

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ9_HTML.gif
(9)

where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq121_HTML.gif and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq122_HTML.gif is the received parity packet after substituting properly for the received information packets excluded from the recovery. Essentially, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq123_HTML.gif can be any square submatrix of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq124_HTML.gif . When https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq125_HTML.gif is a square matrix, the number of individual https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq126_HTML.gif submatrices is calculated using the following:

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ10_HTML.gif
(10)

The subsystem of equations in (4) or (9) always has a unique solution, or simply https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq127_HTML.gif is invertible, because of the geometric progression nature in each row of the Vandermonde matrix when the elements are the shift operators. Even though this is not a formal proof for the invertibility of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq128_HTML.gif , we verified this, by simulation, for a large set of parameters https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq129_HTML.gif and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq130_HTML.gif [4].

4. Efficient Implementations of the Design

In this section, we present a two-step efficient implementation for recovering the lost packets https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq131_HTML.gif or equivalently finding https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq132_HTML.gif in (9). At the receiver side, from (9), we get:

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ11_HTML.gif
(11)

where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq133_HTML.gif is the adjoint matrix of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq134_HTML.gif , which is the transpose of the minors of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq135_HTML.gif since the cofactor matrix equals the minors matrix in the binary field. To find https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq136_HTML.gif , the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq137_HTML.gif must be found first, multiplied by https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq138_HTML.gif , and then the result is divided by https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq139_HTML.gif . A basis for the proposed two-step procedure to find https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq140_HTML.gif is an equivalent representation of (11) written as:

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ12_HTML.gif
(12)

Therefore, the first step in finding https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq141_HTML.gif is to solve the LHS of (12) which is essentially finding the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq142_HTML.gif efficiently. Since the elements of the adjoint matrix are polynomials (shifts) with coefficients from the binary field, it is not that complex to calculate the LHS of (12). The RHS of (12) dictates that the result obtained from the LHS is https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq143_HTML.gif multiplied by https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq144_HTML.gif . Therefore, the second step in finding https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq145_HTML.gif is to extract https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq146_HTML.gif efficiently from the result in the first step.

Next, we will show how to find the adj https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq147_HTML.gif and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq148_HTML.gif which comprise the matrix inverse and then how to extract https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq149_HTML.gif .

4.1. Efficient Calculation of Matrix Inverse

The most expensive operation in the recovery of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq150_HTML.gif is to find the determinant and the adjoint matrix of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq151_HTML.gif which is any submatrix of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq152_HTML.gif . As explained in Section 2, the elements of the adjoint matrix can be found using the determinants of the submatrices of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq153_HTML.gif . Therefore, finding a way to calculate the determinants results in computing the inverse. Although the original Vandermonde matrix has a known formula to find its determinant and its adjoint matrix, most of the submatrices are no longer Vandermonde matrices and such formulas donot apply to them. We present an efficient way to find the inverse of any submatrix of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq154_HTML.gif . This method arises because our elements in the Vandermonde matrix are monomials (single term polynomials) representing shifts. Therefore, we are actually interested in the powers of the elements in the designed matrix and submatrices. We demonstrate the principle for calculating underlying matrices inverse in the case of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq155_HTML.gif . By applying the logarithmic operator to each element of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq156_HTML.gif and removing the common factor https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq157_HTML.gif , we get the required shifts (monomials order representation) as follows:

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ13_HTML.gif
(13)

To find the required determinants, we apply the permutation technique [16]: write down all permutations of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq158_HTML.gif , denoted by https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq159_HTML.gif of cardinality https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq160_HTML.gif , where ! represents factorial operator and take each permutation as the subscripts of the letters https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq161_HTML.gif which are the rows of the matrix and sum with signs determined by https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq162_HTML.gif , where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq163_HTML.gif is the number of permutation inversions in https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq164_HTML.gif . However, we donot need the permutation inversions since in the binary field the digits https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq165_HTML.gif or https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq166_HTML.gif are both https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq167_HTML.gif . For example, with https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq168_HTML.gif , the permutations and the number of inversions they contain are https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq169_HTML.gif , https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq170_HTML.gif , https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq171_HTML.gif , https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq172_HTML.gif , https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq173_HTML.gif , and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq174_HTML.gif , so the determinant of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq175_HTML.gif is https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq176_HTML.gif which is equivalent to https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq177_HTML.gif in the binary field. When working with matrices of monomial elements, after applying the logarithmic operator, the determinant of the resultant powers can be represented:

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ14_HTML.gif
(14)

where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq178_HTML.gif represents the logarithmic value of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq179_HTML.gif . Therefore, the determinant of (13) can be calculated in a simplified way as in (14). This simplified procedure can be used to calculate the determinant of any square matrix. The routine in Algorithm 1 illustrates how to find the adjoint matrix using the determinant technique in (14) for any Vandermonde submatrix.

Algorithm 1: A routine to find the adjoint matrix using the permutation technique.

Given

G L ; The L https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq180_HTML.gif L matrix of interest

Find

 ( G L ) ' ; The submatrix transponse

 P r ; The permutations of (1, , L https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq181_HTML.gif ) for ( G L ) '

Then

 For the adjoint element in location (i, j) of ( G L ) '

  Construct the (L https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq182_HTML.gif 1) https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq183_HTML.gif (L https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq184_HTML.gif 1) matrix by deleting row i and column j

  Find the determinant using then technique that uses P r

  The numbers with even multiples are canceled out

  The numbers with odd multiple stay

End

4.2. Extracting the Information from the Information Modified by the Determinant

After obtaining adj https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq185_HTML.gif and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq186_HTML.gif , we can calculate the LHS of (12). By doing that, we will obtain the matrix with its rows dependent only on the corresponding rows of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq187_HTML.gif . This dependence implies shifts and additions determined by the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq188_HTML.gif . To be able to find the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq189_HTML.gif , we modify the condition that we pad the information packets with https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq190_HTML.gif zeros into padding with the maximum degree of the determinant in the set of all Vandermonde submatrices, denoted by https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq191_HTML.gif . This padding is actually greater than the original padding since https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq192_HTML.gif . However, it will not further decrease the effective rate of the code since this extra padding can be done at the receiver side. Each unknown packet in https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq193_HTML.gif is found by sequential bit by bit recovery within this packet by removing the effect of the previously found bit as shown in Algorithm 2 [4].

Algorithm 2: A routine to extract https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq194_HTML.gif from the product of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq195_HTML.gif with https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq196_HTML.gif .

Given

G L ; The L https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq197_HTML.gif L matrix of interest

M S ; M S = https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq198_HTML.gif G L https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq199_HTML.gif · M L where M L is unknown

M i S ; The packet at row in M S

M i ; The packet at row in M L

 p s ; The packet size after padding with g max

Find

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq200_HTML.gif ; The vector of the powers of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq201_HTML.gif G L https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq202_HTML.gif in ascending order

Then

 For m https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq203_HTML.gif 1: ps

  For k https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq204_HTML.gif 2: length (g)

   Factor https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq205_HTML.gif g(k) https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq206_HTML.gif g( https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq207_HTML.gif )

   J1 https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq208_HTML.gif modulus(m https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq209_HTML.gif 1, ps)

   J2 https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq210_HTML.gif modulus(Factor https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq211_HTML.gif m https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq212_HTML.gif 1, ps)

    M i S (1, J2+1) https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq213_HTML.gif x or ( M i S (1, J1 https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq214_HTML.gif 1), M i S (1, J2+1))

  End

 End

M i https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq215_HTML.gif Cyclically shift to the left M i S with g( https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq216_HTML.gif )

The examples in Section 5.1 will clarify further the proposed techniques in Sections 4.1 and 4.2.

5. Erasure Code Designs and Performance

In this section, we discuss some specific cases for the design of erasure codes proposed in this paper. We demonstrate the PLR reduction capability of these codes through analytical calculations and simulation results for different code parameters.

5.1. Erasure Code Design

At the receiver side, we need to find the inverse of any https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq217_HTML.gif submatrix of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq218_HTML.gif where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq219_HTML.gif . When we receive only the parity packets, we need to find https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq220_HTML.gif which is given by:

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ15_HTML.gif
(15)

The elements of the adjoint matrix as given in the RHS of (15) can be found by running the algorithm described previously. In this algorithm, in Step I, we apply the logarithmic operator of the matrix and remove the common factor https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq221_HTML.gif , while in Step II we calculate the determinants with polynomial powers represented in parenthesis https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq222_HTML.gif as follows:

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ16_HTML.gif
(16)

For example, the element https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq223_HTML.gif is found by calculating the determinant after crossing the first row and the first column of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq224_HTML.gif and then applying (14) but for the resulting https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq225_HTML.gif matrix. It is https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq226_HTML.gif . To find the determinant which is the denominator polynomial in (15), we gather the elements of any row or any column of the adjoint matrix after adding to them their corresponding original powers (shifts) which appear in the middle term in (16). Then, any number (including zero) with even multiples is canceled out and any number (including zero) with odd multiples stays because we operate in the binary field. For example, by considering the second row in the RHS of (16), we add to the elements their corresponding powers which are https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq227_HTML.gif , https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq228_HTML.gif , and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq229_HTML.gif , respectively, and then we gather them to be https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq230_HTML.gif . Then, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq231_HTML.gif and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq232_HTML.gif are canceled out because they have even multiples, and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq233_HTML.gif and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq234_HTML.gif stay because they have odd multiples. This results in https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq235_HTML.gif which is the power of the determinant shown in the denominator polynomial in (15). By applying this principle, any submatrix can be inverted by simple additions only.

The choice for the parameters of the proposed code is quite flexible. For example, we can design the code https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq236_HTML.gif having a rate of 2/5. By receiving any two packets, we can recover the remaining three packets. Another example is the code https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq237_HTML.gif having a rate of 3/5. By receiving any three packets, we can recover the remaining two packets.

5.2. Simulation Results

This section shows post decoding packet loss recovery performance, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq238_HTML.gif , of the proposed codes for a wide range of raw PLR in the network. As discussed earlier, we assume that we either receive the bits/packets correctly or they are missing (in doubt).

The presented results are obtained through the simulations of the actual encoding, network packet loss and decoding processes. The PLR recovery simulation results are plotted using continuous unmarked lines in all figures in this section. For comparison purposes, we also plot the theoretical curves using continuous marked lines based on the following formula [6]:

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ17_HTML.gif
(17)

where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq239_HTML.gif represents the raw PLR. The PLR performance is independent of the actual packet length; however the latter determines the percentage of overhead related to padding the packets to the desired length determined by https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq240_HTML.gif . Also, since the performance of the designed codes is characterized by the minimum distance, it is not necessary to compare it with the performance of other codes.

Figure 1 shows the PLR performance for three codes with the same minimum distance of three and the same packet size of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq241_HTML.gif bits but different code rates. The three codes have the parameters https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq242_HTML.gif , https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq243_HTML.gif , and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq244_HTML.gif . The rates of these codes are 2/4, 5/7, and 12/14, respectively. We can observe that the performance improves as the code rate decreases because the codes can recover two packets in a group of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq245_HTML.gif coded packets where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq246_HTML.gif .
https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Fig1_HTML.jpg
Figure 1

Packet loss rate for systematic codes with https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq247_HTML.gif .

Figure 2 shows the PLR performance for three codes with different minimum distances and different rates. The three codes have the parameters https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq248_HTML.gif , https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq249_HTML.gif , and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq250_HTML.gif . The rates of these codes are https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq251_HTML.gif , https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq252_HTML.gif , and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq253_HTML.gif , while the minimum distances are https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq254_HTML.gif , https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq255_HTML.gif , and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq256_HTML.gif , respectively. We can observe that the performance improves as the code rate decreases because they can recover https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq257_HTML.gif , https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq258_HTML.gif , and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq259_HTML.gif packets, respectively. We can observe also that the theoretical PLR performances as given by (17) agree with the simulation results.
https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Fig2_HTML.jpg
Figure 2

Packet loss rate for systematic codes with https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq260_HTML.gif but different https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq261_HTML.gif .

6. Modified Erasure Designs

In this section, two modifications are introduced in order to lower the amount of zero padding needed. In the first modification, the shift elements are chosen and positioned in the parity matrix https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq262_HTML.gif such that the determinant of the new matrix https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq263_HTML.gif , replacing https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq264_HTML.gif , has a lower degree. A lower degree determinant implies less zero padding for the packets and hence a reduced overall overhead. The new parity matrix https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq265_HTML.gif is such that all its submatrices are invertible. We show some of the matrix designs for a number of different sizes. We prove that the new designed matrices and their submatrices are invertible by finding the inverses using simulations. Also, the maximum degree determinant is calculated for https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq266_HTML.gif . A comparison to the same size Vandermonde-based designs is shown.

6.1. Various Sizes Matrix Designs

The best design found that satisfy the invertibility condition using exhaustive search for the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq267_HTML.gif matrix is

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ18_HTML.gif
(18)

The matrix in (18) is a nonVandermonde matrix. The invertibility of this matrix and its submatrices is proven by using brute force simulations. This is done by finding all the submatrices of (18) and calculating the determinants of these submatrices. For this matrix, we found inverses for one https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq268_HTML.gif matrix, nine https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq269_HTML.gif submatrices, and nine https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq270_HTML.gif submatrices. The number of submatrices that have inverses complies with the maximum number in (10), meaning that the design is invertible for any submatrix. This design has a maximum degree determinant of four compared to its corresponding Vandermonde matrix design which has a maximum degree determinant of five.

The two designs
https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ19_HTML.gif
(19)

are good candidates for the parity coefficient matrices of sizes https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq271_HTML.gif and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq272_HTML.gif , respectively. These two matrices are nonVandermonde matrices and invertible. The https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq273_HTML.gif design has a maximum degree determinant of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq274_HTML.gif compared to its corresponding Vandermonde matrix design, which has a maximum degree determinant of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq275_HTML.gif . The https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq276_HTML.gif design has a maximum degree determinant of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq277_HTML.gif compared to its corresponding Vandermonde matrix design, which has a maximum degree determinant of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq278_HTML.gif .

For the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq279_HTML.gif matrix, the best design found is given by

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ20_HTML.gif
(20)
The matrix in (20) is also a nonVandermonde matrix. For each square size matrix, Table 1 shows the number of submatrices, the maximum degree determinant among them, and a comparison with the corresponding same size Vandermonde design. The number of submatrices having inverses complies with the maximum number in (10). This design has a maximum degree determinant of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq280_HTML.gif compared to its corresponding Vandermonde matrix design, which has a maximum degree determinant of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq281_HTML.gif .
Table 1

The Maximum Degree Determinant in https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq282_HTML.gif Matrix Design.

 

Vandermonde

nonVandermonde

# of Submatrices

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq283_HTML.gif

25

10

36

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq284_HTML.gif

41

20

225

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq285_HTML.gif

50

26

400

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq286_HTML.gif

54

32

225

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq287_HTML.gif

55

33

36

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq288_HTML.gif

55

33

1

Higher dimension matrices can also be designed and found in the same manner by generating the elements of the required size matrix and then testing the invertibility of each submatrix using brute force simulation.

The second modification that also will reduce the amount of zero padding is to zero pad with the maximum shift in the designed matrix, not with the maximum degree of the determinant. At the encoder side, each packet will be padded with the maximum shift in the matrix. Then at the receiver side, before starting decoding, the received packets are extra padded with zeros to make the total number of zero padding equal to the maximum degree determinant. This reduces the amount of overhead in the transmitted packets. This modification applies for any design (Vandermonde or nonVandermonde), and the advantages benefit equally both modifications. For example, for a https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq289_HTML.gif Vandermonde matrix, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq290_HTML.gif zeros are needed originally, while only https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq291_HTML.gif zeros are needed if we adopt the second modification, since the maximum shift in the Vandermonde matrix design is https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq292_HTML.gif . For a https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq293_HTML.gif nonVandermonde matrix, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq294_HTML.gif zeros are needed originally, while only https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq295_HTML.gif zeros are needed if we adopt the second modification, since the maximum shift in the nonVandermonde matrix design in (20) is https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq296_HTML.gif .

6.2. Simulation Results

This section shows post decoding packet loss recovery performance, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq297_HTML.gif , of the modified nonVandermonde codes for a wide range of raw PLR in the network. For comparison purposes, the performance of the corresponding Vandermonde based designs are also plotted.

Figure 3 shows the PLR performance for five codes with different minimum distances, but the same code rate of 1/2 and the same packet size of 1000 bits. The five codes have the parameters https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq298_HTML.gif , https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq299_HTML.gif Vandermonde-based, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq300_HTML.gif nonVandermonde based (Modified), https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq301_HTML.gif Vandermonde-based, and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq302_HTML.gif nonVandermonde based (Modified). The minimum distances are https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq303_HTML.gif , https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq304_HTML.gif , and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq305_HTML.gif , respectively. By receiving any https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq306_HTML.gif packets, each code can recover the remaining https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq307_HTML.gif packets. As the channel condition improves, the code with higher parameters outperforms the others since it can recover more packets. This is the reason that the performance improves as the minimum distance of the code increases. Also, we observe that the modified designs (nonVandermonde) and the original designs (Vandermonde) have identical performances.
https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Fig3_HTML.jpg
Figure 3

Packet loss rate for systematic codes with the same code rate of 1/2 but different https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq308_HTML.gif .

7. Error Correction Capability and Performance

In this section, the general error correction capability and the decoding process using the designed codes are presented. An error decoding technique capable of correcting a single erroneous packet irrespective of the number of errors in this packet is presented. We demonstrate the packet error rate (PER) reduction capability of these codes based on the proposed error decoding technique through analytical calculations and simulation results for different code parameters.

We assume here that there is no packet loss. Therefore, at the receiver, all the coded packets https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq309_HTML.gif are received. From the received packets arranged row-wise in a matrix https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq310_HTML.gif , we have to infer first which packet(s) is(are) in error, and then, within this(these) packet(s), where the error locations are and their values. For binary codes considered in this paper, the error values are not required, since by knowing their positions, one just flips them. There are many procedures that could correct for errors by observing https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq311_HTML.gif . A typical way is to use syndrome decoding which proceeds by finding the parity check matrix https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq312_HTML.gif . The parity check matrix, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq313_HTML.gif , of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq314_HTML.gif in (7) is the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq315_HTML.gif matrix given by

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ21_HTML.gif
(21)

where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq316_HTML.gif is the transpose of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq317_HTML.gif . Accordingly, the multiplication of the two partitioned matrices, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq318_HTML.gif and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq319_HTML.gif gives the zero matrix.

Now assume that the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq320_HTML.gif coded packets arranged in https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq321_HTML.gif are transmitted and they are corrupted by errors. The received packets can be viewed as the coded packet corrupted (modulo- https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq322_HTML.gif added) with packets having 1's in the error locations. These packets are referred to as error packets and are arranged row-wise in https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq323_HTML.gif , where the latter is a column vector consisting of the elements https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq324_HTML.gif , https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq325_HTML.gif . The received packets arranged in the matrix https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq326_HTML.gif are given by

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ22_HTML.gif
(22)

where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq327_HTML.gif is a column vector consisting of the received packet https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq328_HTML.gif . By pre-multiplying (22) by https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq329_HTML.gif , one gets the packet syndrome denoted by https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq330_HTML.gif as follows:

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ23_HTML.gif
(23)

If https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq331_HTML.gif , we have the indication that there were errors during the transmission. It is observed that this syndrome decoding technique in (23) depends only on the error patterns, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq332_HTML.gif , but not on the transmitted coded packets, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq333_HTML.gif . The syndrome decoding technique enables the code to correct for https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq334_HTML.gif packet(s) irrespective of the number of bits in error inside the packet(s). A packet is considered in error if at least one bit of the packet is in error.

We show next how the syndrome decoding is utilized to correct a single erroneous packet in a group of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq335_HTML.gif received packets. Extending the technique to correct for more erroneous packets needs further study and is beyond the scope of this paper.

For the MDS codes capable of correcting single erroneous packet out of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq336_HTML.gif packets, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq337_HTML.gif ; that is, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq338_HTML.gif and thus https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq339_HTML.gif . Now we pre-multiply the resultant syndrome equation in (23) by the matrix https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq340_HTML.gif , which is the column-wise reverse of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq341_HTML.gif [4]. We call the resultant matrix, the error locator matrix https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq342_HTML.gif , which is given as follows:

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ24_HTML.gif
(24)

where

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ25_HTML.gif
(25)

and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq343_HTML.gif represents column-reversed matrix. By substituting (25) in (24), one gets (26):

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ26_HTML.gif
(26)

where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq344_HTML.gif represents row-reversed matrix. By carrying out the calculation in (26), one gets (27)

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ27_HTML.gif
(27)

From (27), we observe that the diagonal elements of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq345_HTML.gif are zeros. This means that if all the error packets are zeros except one error packet https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq346_HTML.gif , the only all-zero row in https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq347_HTML.gif will be the row https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq348_HTML.gif , where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq349_HTML.gif . Also, we notice that https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq350_HTML.gif corresponds to the last row in the error locator matrix https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq351_HTML.gif . This is true except for the last one https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq352_HTML.gif , in which case any row in the error locator matrix is the error packet.

We would like to mention that the above technique needs more careful processing to handle the scenario that the error packet and a shifted version of it produce the same packet such as the all-ones error packet. Although the occurrence of such scenario is extremely small, especially for long packets, it can be handled by padding the packets resulting from the syndrome equation with https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq353_HTML.gif zeros and then discarding these zeros when finding the error packet. These zeros are not counted as an overhead since they are padded at the receiver side.

7.1. Error Correction Designs

In this section, we discuss some specific cases for the design of packet-level error correction codes proposed in this paper. First, we consider the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq354_HTML.gif systematic code and present the decoding process without using https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq355_HTML.gif , and then we demonstrate the benefits of error locator matrix in this example. This code is capable of correcting one packet in error out of the received four packets. The generator and the parity check matrices are https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq356_HTML.gif and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq357_HTML.gif , respectively. At the receiver side, the decoding process starts by applying the syndrome decoding in (23) to get the following:

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ28_HTML.gif
(28)

From (28), if the error occurs in the first received packet https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq358_HTML.gif , the only packet that is not all-zero is https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq359_HTML.gif while https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq360_HTML.gif . Therefore, the two packets comprising the syndrome matrix https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq361_HTML.gif , in (28), are identical and are the error packet, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq362_HTML.gif , itself. To correct the erroneous packet https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq363_HTML.gif , one adds to it one of the packets obtained from the syndrome calculation. If the error occurs in the second received packet https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq364_HTML.gif , the second packet of the syndrome is a shifted version by one of the first packet in the syndrome. To correct the erroneous packet https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq365_HTML.gif , add it to the first packet https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq366_HTML.gif of the syndrome matrix. If the error occurs in the third received packet https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq367_HTML.gif , the second packet of the syndrome is the all-zero packet, while the first packet in the syndrome is the error packet https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq368_HTML.gif . To correct the erroneous packet https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq369_HTML.gif , add to it the first packet of the syndrome matrix. If the error occurs in the fourth received packet https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq370_HTML.gif , the second packet of the syndrome is the error packet https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq371_HTML.gif while the first packet is the all-zero packet. To correct the erroneous packet https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq372_HTML.gif , add it to the second packet of the syndrome matrix.

The above correction can be done more efficiently by finding the error locator matrix https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq373_HTML.gif using (24). By pre-multiplying the resultant syndrome equation in (28) by https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq374_HTML.gif , https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq375_HTML.gif is found to be

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ29_HTML.gif
(29)
The above error locator matrix reduces to the first, second, third, or fourth column in Table 2 when the packet in error is the first, second, third, or fourth one, respectively. For example, if the packet in error is the fourth received packet https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq376_HTML.gif , https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq377_HTML.gif will be nonzero packet while https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq378_HTML.gif . Therefore, based on (29), https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq379_HTML.gif reduces to the fourth column in Table 2. This means that if we get https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq380_HTML.gif with the last row comprised of all-zeros, we decide that the erroneous packet is the fourth one. In this case, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq381_HTML.gif can be taken either as the first, second, or third packet in the fourth column of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq382_HTML.gif . When the packet in error is the first, second, or third one, we notice as before that the zero in the error locator matrix indicates the location of the packet in error and the error packet can be taken as the last packet in the error locator matrix in Table 2.
Table 2

The error locator matrix, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq383_HTML.gif , for a single packet in error for the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq384_HTML.gif systematic code.

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq385_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq386_HTML.gif in error

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq387_HTML.gif in error

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq388_HTML.gif in error

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq389_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq390_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq391_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq392_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq393_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq394_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq395_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq396_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq397_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq398_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq399_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq400_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq401_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq402_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq403_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq404_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq405_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq406_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq407_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq408_HTML.gif

The https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq409_HTML.gif systematic code is capable of correcting one packet in error out of the received five packets. By following the procedure from (26), the error locator matrix https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq410_HTML.gif for this code is as follows:

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Equ30_HTML.gif
(30)
The above error locator matrix reduces to the first, second, third, fourth, or fifth column in Table 3 when the packet in error is the first, second, third, fourth, or fifth one, respectively, in a block of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq411_HTML.gif received packets. We notice as before that the zero in the error locator matrix indicates the location of the packet in error. Also, the error packet that should be added to correct the erroneous packet is the last row in the error locator matrix. This is true except when the last received packet is in error, in which case any row in the error locator matrix is the error packet.
Table 3

The error locator matrix, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq412_HTML.gif , for a single packet in error for the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq413_HTML.gif systematic code.

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq414_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq415_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq416_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq417_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq418_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq419_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq420_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq421_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq422_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq423_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq424_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq425_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq426_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq427_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq428_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq429_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq430_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq431_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq432_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq433_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq434_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq435_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq436_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq437_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq438_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq439_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq440_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq441_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq442_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq443_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq444_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq445_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq446_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq447_HTML.gif

https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq448_HTML.gif

We discussed two codes https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq449_HTML.gif and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq450_HTML.gif which are both single error correcting code like the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq451_HTML.gif Hamming code. However, the rates of these three codes are 35/70, 42/70, and 40/70, respectively. The decoding process for the first code is simple, but the code has a rate of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq452_HTML.gif . The decoding process of the second code is a little bit more involved compared to the first one, but the code has a higher rate of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq453_HTML.gif . Higher rate single error correcting codes can be designed, but the decoding complexity increases slightly as the code rate increases.

We presented an efficient decoding algorithm to correct a single erroneous packet in a family of codes having a minimum distance of three. Therefore, this family is capable of correcting all bits in error within a single erroneous packet, irrespective of the size of the packet. The family has the parameters https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq454_HTML.gif , where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq455_HTML.gif . The rate of this family is https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq456_HTML.gif . This designed family has more flexible code parameters when compared to the family of Hamming codes having the parameters https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq457_HTML.gif , where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq458_HTML.gif . The next Hamming code after the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq459_HTML.gif is the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq460_HTML.gif which has a code rate of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq461_HTML.gif . A comparable code performance in our design is when taking https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq462_HTML.gif to construct the code https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq463_HTML.gif having a code rate of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq464_HTML.gif . However, the latter is less complex since it has a code length of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq465_HTML.gif , which is almost half of the Hamming code of length https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq466_HTML.gif . As a result, the delay in constructing the encoder and decoder matrices is greatly reduced, especially as the code rate increases.

7.2. Simulation Results

This section shows postdecoding packet error rate performance, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq467_HTML.gif , of the proposed codes for a wide range of raw PER in the network.

The presented results are obtained through the simulations of the actual encoding, network packet error and decoding processes. The PER recovery simulation results are plotted using continuous unmarked lines. For comparison purposes, we also plot the theoretical curves using continuous marked lines based on (17) but taking the summation from https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq468_HTML.gif with https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq469_HTML.gif instead of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq470_HTML.gif and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq471_HTML.gif representing here the raw PER.

Figure 4 shows the PER performance for three codes with the same minimum distance of three but different code rates. The three codes have the parameters https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq472_HTML.gif , https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq473_HTML.gif , and https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq474_HTML.gif . The rates of these codes are 2/4, 5/7, and 12/14, respectively. We can observe that the performance improves as the code rate decreases because the codes can correct for one packet in a group of https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq475_HTML.gif coded packets where https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq476_HTML.gif . Also, it can be noted that the theoretical PER performances agree with the simulation results.
https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_Fig4_HTML.jpg
Figure 4

Packet error rate for systematic codes with https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq477_HTML.gif .

8. Conclusion

We summarize now the advantages of working with the proposed code design for packet-level FEC in which the elements of the Vandermonde matrix are the shift operator. The code design is applicable to recover from lost packets up to https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq478_HTML.gif out of the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq479_HTML.gif coded packets, or correct one erroneous packet out of the https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq480_HTML.gif received packets. This design is simple to implement since all our arithmetic operations are done in the binary field using only simple shifts and modulo- https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq481_HTML.gif additions.

The only disadvantage is the overhead associated with the need to zero pad each packet with the maximum degree, https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq482_HTML.gif , of the determinants among the set of all determinants of square submatrices of the designed Vandermonde matrix. To reduce the overhead considerably, however, we proposed modified nonVandermonde matrix designs which were found by exhaustive search. We believe that finding such designs in more structured way is still a challenging problem especially as the matrix size increases. To even further reduce this overhead in both designs, we can only zero pad with the maximum shift in the matrix which is much less than https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq483_HTML.gif .

The overhead reduces the efficiency of the design (overall code rate) especially when designing for large code parameters. However, as the packets size increases, the efficiency improves. Therefore, the design is applicable to packets of any size provided that they are not very small. For moderate code parameters, packets of few hundred bits (all network standards requires even more than this) are good enough that will not affect the efficiency of the code very much. For large code parameters, the efficiency can be improved by increasing the packet size and/or by utilizing the mentioned ways of reducing the overhead.

For erasure recovery, we showed how to find the inverse of a matrix using a simple algorithm by exploiting the logarithmic operator of the elements of the Vandermonde matrix and converting the operations to simple modulo- https://static-content.springer.com/image/art%3A10.1155%2F2010%2F263210/MediaObjects/13638_2009_Article_1846_IEq484_HTML.gif additions. For error correction, we presented a syndrome decoding algorithm that corrects for a single erroneous packet using a specialized error locator matrix. The design is suitable for real-time applications and multicasting, where conventional ARQ protocols employing retransmission are inadequate, due to the introduction of delay and jitter. Also, the design can be exploited in cross-layer protocols design to recover from both erasures and errors simultaneously.

Declarations

Acknowledgment

The authors acknowledge the support of King Fahd University of Petroleum and Minerals (KFUPM).

Authors’ Affiliations

(1)
Department of Electrical Engineering, King Fahd University of Petroleum and Minerals
(2)
Department of Electrical and Computer Engineering, Dalhousie University

References

  1. Costello DJ, Hagenauer J, Imai H, Wicker SB: Applications of error-control coding. IEEE Transactions on Information Theory 1998, 44(6):2531-2560. 10.1109/18.720548MATHMathSciNetView ArticleGoogle Scholar
  2. Luby MG, Mitzenmacher M, Shokrollahi MA, Spielman DA: Efficient erasure correcting codes. IEEE Transactions on Information Theory 2001, 47(2):569-584. 10.1109/18.910575MATHMathSciNetView ArticleGoogle Scholar
  3. Karande S, Radha H: Partial Reed Solomon codes for erasure channels. Proceedings of the IEEE Information Theory Workshop (ITW '03), April 2003 82-85.Google Scholar
  4. Al-Shaikhi A: Innovative designs and deplyments of erasure codes in communication systems, Ph.D. dissertation. Dalhousie University, Nova Scotia, Canada; 2007.Google Scholar
  5. Collins RL, Plank JS: Assessing the performance of erasure codes in the wide-area. Proceedings of the International Conference on Dependable Systems and Networks (DSN '05), June 2005, Yokohama, Japan 182-187.Google Scholar
  6. Lin S, Costello DJ: Error Control Coding. Prentice-Hall, Upper Saddle River, NJ, USA; 2004.Google Scholar
  7. Karande SS, Radha H: The utility of hybrid error-erasure LDPC (HEEL) codes for wireless multimedia. Proceedings of the IEEE International Conference on Communications (ICC '05), May 2005, Seoul, South Korea 2: 1209-1213.Google Scholar
  8. Al-Shaikhi A, Ilow J, Liao X: An adaptive FEC-based packet loss recovery scheme using RZ turbo codes. Proceedings of the 5th Annual Conference on Communication Networks and Services Research (CNSR '07), May 2007, Fredericton, Canada 263-267.View ArticleGoogle Scholar
  9. Al-Shaikhi AA, Ilow J: Packet loss recovery codes based on Vandermonde matrices and shift operators. Proceedings of the IEEE International Symposium on Information Theory (ISIT '08), July 2008, Toronto, Canada 1058-1062.Google Scholar
  10. Ayres FJ: Schaum's Outline of Theory and Problems of Matrices. Schaum, New York, NY, USA; 1962.Google Scholar
  11. Ben-Israel A, Greville TN: Generalized Inverses: Theory and Applications. Wiley Interscience, New York, NY, USA; 1977.Google Scholar
  12. Dummit DS, Foote RM: Abstract Algebra. Prentice-Hall, Englewood Cliffs, NJ, USA; 1998.Google Scholar
  13. Lacan J, Fimes J: Systematic MDS erasure codes based on Vandermonde matrices. IEEE Communications Letters 2004, 8(9):570-572. 10.1109/LCOMM.2004.833807View ArticleGoogle Scholar
  14. Fimes J, Lacan J, et al.: Estimation of the number of singular square submatrices of Vandermonde matrices defined over a finite field. ENSICA; January 2003.Google Scholar
  15. MacWilliams F, Sloane N: The Theory of Error-Correcting Codes. North Holland, Amsterdam, The Netherlands; 1978.Google Scholar
  16. Muir T: Treatise on the Theory of Determinants. Dover Phoenix Editions, New York, NY, USA; 1960.Google Scholar

Copyright

© A. Al-Shaikhi and J. Ilow. 2010

This article is published under license to BioMed Central Ltd. This is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.