Efficient Forward Error Correction for Reliable ...

4 downloads 1884 Views 234KB Size Report
correction together with packet recovery through ... together with ARQ for error recovery. A similar ... work to send the necessary data to reconstruct the lost or.
Efficient Forward Error Correction for Reliable Transmission in Packet Networks T. M. Elfouly1, M. Saleh2, and Q. M. Malluhi3 Computer Science and Engineering Department Qatar University, Doha, Qatar 1 Tel:4852894 Fax: 4852777 Email: [email protected] 2 Tel:4852201 Fax: 4852777 Email: [email protected] 3 Tel:4852124 Fax: 4852777 Email: [email protected]> Abstract— This paper proposes an approach that utilizes a new forward error correction mechanism for reconstructing lost or corrupted packets sent over a Network. Instead of retransmissions of lost or corrupted packets, the new approach depends on sending extra packets with each group of packets in order to reconstruct lost or corrupted packets. This approach is based on applying a high-performance irregular array code called REA for tolerating up to two lost packets. If the numbers of losses is more than 2, Go-Back-N automatic repeat request (ARQ) mechanism is used. This approach is useful for improving the performance of TCP over less reliable communication links like wireless networks. The paper employs a hybrid approach that takes advantage of and efficient erasure code at the link layer for error correction together with packet recovery through retransmission to enhance the system performance. The paper presents simulation results that evaluate the effectiveness of the proposed approach. Keywords— Forward Error Correction, Error Correcting Codes, Erasure codes, Packet Switched Networks, Automatic Repeat Request.

1

INTRODUCTION

Nowadays, computer networks are becoming a very important component of any computer system. Sharing information on the network implies the need to send data from

a source to a destination. Data transmitted over the network is always subject to errors. Examples of such errors include data corruption and loss. More reliable hardware can reduce the frequency of such errors but can never eliminate them. Sending and receiving data over a packet-switched network is achieved by dividing the data to be sent into several packets, adding headers to these packets, and then sending them over the network. If the packet is not received or a corrupted packet is received, the sender is required to resend the packet. The overhead of resending packets over the network varies depending on the network environment and may greatly affect the network performance. Transmission errors can be handled in several ways. The two most common are data retransmission and forward error correction. Data retransmission implies that is able to discover that an error has occurred and as a result, the sender retransmits the problematic data unit. Retransmission is repeated until all data arrives to the receiver error-free. In Forward Error Correction (FEC), on the other hand, the receiver uses an error-correcting code, which automatically corrects certain errors. Codes which can correct one error are termed single error correcting, and those which detect two are termed double error detecting. Examples of error correcting codes are Hamming code, BCH code, Reed-Solomon code, Reed-Muller code, Binary Golay code, and turbo code. [9]

• This work was supported by a grant from Qatar University (Grant # 06022SC)

An example for the use of FEC techniques in computer communication is the work of Luigi Rizzo who develops a Reliable Multicast data Distribution Protocol [10][11][12] based on software FEC techniques (RMDP). The method utilizes an erasure code based on Vandermonde matrices computed over GF(pn). This code proved to be efficient for a wide range of applications including multicasting and wireless communication. Others like McAuley [8], developed a burst erasure correcting code for reliable broadband communication. Shacham, and McKenney [10] used coding and buffer management for packet recovery in high-speed networks. Benyuan Liu I, Dennis L. Goeckel and Don Towsley [3] proposed to couple TCP with an adaptive forward error correction protocol (AFEC) in order to improve TCP's performance in a base station oriented wireless network. The approach integrates the TCP performance characterization and the link layer forward error correction (FEC) performance by employing a well-established TCP throughput formula to compute the forward error correction (FEC) code that maximizes TCP goodput. Hari Balakrishnan, Venkata N. Padmanabhan, and H. Katz [3] discovered that having a reliable link-layer protocol with some knowledge of TCP provides very good performance. They also demonstrated that selective acknowledgments and explicit loss notifications result in significant performance improvements. Luca Baldantoni et. al. [4] presented a dynamical adaptive algorithm which finds the optimal amount of redundancy according to the status of the channel. Estimates of the current loss probability, the round trip time and the available capacity for the connection are used by the coder to set the FEC parameters. They concluded their work by the fact that when FEC is added to TCP both the error control and the congestion control is affected and the performance can be improved over a large range of loss probability and propagation delay compared with the TCP versions used today. In this work we use erasure codes at the link layer. Several techniques are used for error correcting at the link layer. These include forward error correction (FEC) and automatic repeat request (ARQ). This paper combines error codes together with ARQ for error recovery. A similar hybrid technique has been applied in AIRMAIL [2]. The main advantage using error correction at the link layer combined with the link layer protocol is that it fits well in the layered structure of network protocols and that it operates independently from the higher level protocol which is also at the same Since the choice of the error correcting code could affect the overall performance of the system, a highly efficient erasure code “REA code [7]” is used. The used code minimizes the size of the redundant data to be sent and optimizes the time needed for encoding and decoding the sent and the received data. The REA code can be used for tolerating up to two losses in packet networks. The technique offers fast encoding and decoding procedures. Furthermore,

the method does not impose limitations on the layout of parity packets. Therefore, changing the transmission window size is simple and efficient. This paper is organized as follows. In section 2 a brief overview of HDLC is presented. Section 3 introduces the REA code and presents the encoding and decoding algorithms. Forward Error Correction using the REA code is presented in Sections 4. Section 5 introduces the performance analysis for using the proposed method of error correction over an unreliable channel. Comparison results with and without applying the proposed method are also presented in this section. Concluding remarks are provided in Section 6.

2

High-Level Data Link Control (HDLC)

High-Level Data Link Control (HDLC) is a protocol designed to support both half-duplex and full-duplex communication over point-to-point and multipoint links. HDLC provides two common modes of transmission: NRM (Normal response mode) and ABM (Asynchronous Balanced Mode). HDLC implements the automatic repeat request or simply the ARQ mechanisms. There are 3 ARQ mechanisms: Stop-and-Wait ARQ, Go-Back-N ARQ and Selective-Repeat ARQ [1][5]. In Stop-and-wait ARQ, the communication is done one frame at a time. After sending a frame the sender must wait for an ACK (acknowledgement) signal and doesn't send any further frames until the ACK is received. If the sent frame is lost or damaged during transmission, the receiver discards it and does not send an ACK. If a certain time, known as the timeout, passes without ACK, the sender sends the frame again. In the Go-Back-N ARQ, the sending process continues to send a number of frames specified by a window size without receiving an ACK packet from the receiver. The receiver process keeps track of the sequence number of the next frame it expects to receive, and sends that number with every ACK it sends. The sending window size must be the number of sequence numbers (if they are numbered from zero to n-1) to verify transmission in cases of any packet (data or ACK packet) being dropped [5]. In Selective Repeat ARQ, the sending process continues to send a number of frames specified by a window size even after a frame loss. Unlike GoBack-N ARQ, the receiving process will continue to accept and acknowledge frames sent after an initial error. The receiver process keeps track of the sequence number of the earliest frame it has not received, and sends that number with every ACK it sends. If a frame from the sender does not reach the receiver, the sender continues to send subsequent frames until it has emptied its window. The receiver continues to fill its receiving window with the subsequent frames, replying each time with an ACK containing the sequence number of the earliest missing frame. Once the sender has sent all the frames in its window, it re-sends the frame number given by the

ACKs, and then continues where it left off. The size of the sending and receiving windows must be equal to half the maximum sequence number (assuming that sequence numbers are numbered from 0 to n-1) to avoid miscommunication in all cases of packets being dropped. The sender moves its window for every packet that is acknowledged [5]. HDLC defines three types of frames (Fig.1): information frames (I-frames), supervisory frames (S-frames), and unnumbered frames (U-frames). Each type of frame works as an envelope for the transmission of a different type of message. The I-frames are used to the transfer user data and control information (piggy backing). The S- frames are used only to transfer control information. The U-frames are reserved for system management and they will be used in this work to send the necessary data to reconstruct the lost or corrupted frame.

Fig. 1 HDLC frame types (from [2])

The control field of the I-frame contains the sequence number bits that are used for the acknowledgment of receiving the frame correctly. This sequence number is used in this paper to know the position of the lost or the corrupted packet.

3 REA code Consider distributing data over d data packets. Data is divided into packets that are continuously sent through the network. Each packet has a sequence number, the sequence number range from 0 to 2m-1. Where m represents the number of bits used for identifying the sequence number in the control field of the frame. There are two types of packets; data packets and the parity packets (see Fig. 2). The packets are sent and acknowledged through the network using the sliding window concept.

Window

Data Packets

Parity Packets

Fig. 2. Contents of a Window

Considering d data packets in a window, where each packet has a size of b-1 bits, where b is a prime number and d ≤ b. In practice a packet size is far greater than the size of the window. The set of data packets constitute a two-dimensional array of elements W. The columns of array W represent the data packets. Therefore, the size of the array W is b-1×d. In practice, b is a large number. For example, a typical value for b is > 1000 (e.g., 1 Kb) and can reach grater values depending on the type of the network. Since a packet is represented by an array column, this paper uses the terms packet and column interchangeably. We employ then the REA encoding algorithm that adds 2 redundant parity packets to the data packets being protected. The parity packets are added in such a way that if any d out of the d+2 data and parity packets are available, the original d packets can quickly be decoded from the available d packets. Therefore, the system can tolerate up to 2 losses. The encoding and decoding procedures only use the bit-wise XOR operation among packet bits. The following summarizes the terminology used in this document (see Fig. 3): b - 1 = number of bits in a data packet, where, b is a prime number d

= number of data packets in the array, d ≤ b

W

= a two-dimensional array representing data packets. Columns of this array represent packets

P0 and P1 = array representing the parity packets S0 and S1 = array representing the syndrome computed by the decoding algorithm W[i] = ith column of the corresponding array. Therefore, W[i] is the ith data packet W[i][j] = jth bit (row) in ith packet (column) of the data array

(2)

d Data packets

d −1

[

P1 [ j ] = ∑ W j − i

Imaginary bits for notational convenience.

i =0

Parity packet P1 has b bits Parity packet P0 has b-1 bits and one imaginary first bit

Data packets have b-1 data bits and one imaginary first bit.

Where

r

b

b

][i] for

0 ≤ j < b and j − i

b

≠0

= (r + b ) mod b

The encoding procedure is illustrated in (Fig. 4).

P0

is the

P

horizontal parity of the rows of W. 1 is computed by taking the summation (XOR) along the diagonals of W while assuming wrap around edges for W. Therefore, when bit

W [0][i ], 0 ≤ i < d − 1 is encountered along the diagonal, the computation wraps around the array to the element

b x d Data Array W

W [b − 1][i + 1] in the bottom row.

Fig. 3. Illustration of the data array W and the redundant parity-check arrays P0 and P1

XOR



In addition, this document we will be using the notation 〈r〉b to represent the value (r + b) mod b. In the encoding and decoding procedures, we will be applying the plus (+) operator among array elements to compute the parity packets and to reconstruct the lost packets. In this paper, the plus operation among two array elements represents the bit-wise XOR operation.

3.1 Encoding Algorithm The REA encoding procedure generates the parity packets

P0 and P1 such that P1 has one additional bit (i.e., P0 has P b-1 bits and 1 has b bits). To simplify the notation and the presentation of the algorithm, we assume that there is an extra imaginary top (zeroth) row for the array W (see Fig. 2). Therefore, we imagine an extra element at the beginning of each data packet and we assume that the value of this bit is zero. Therefore, the dimension of the new array W with the extra augmented row is b × d . Similarly, we assume that

P0 [0]

P0

parity packet has an imaginary bit whose value is equal to zero attached at the top of the parity packet. Therefore, we have(1)

W [0][i ] = 0 for 0 ≤ i < d And

(1)

P0 [0] = 0 The encoding algorithm is represented by the following equations for computing the parity blocks: d −1

P0 [ j ] = ∑ W [ j ][i ] i =0

for

1≤ j < b

Computing P0 (Horizontal Parity)

(a)

considered 7. Up to five data packets will be included in the window while two parity packets will be calculated and sent along with the five data packets. The size of the packet is chosen to be 1499 byte since it is the largest prime number less than or equal to 1500. The encoding algorithm of the REA code is used, considering d = 5 and b = 1499. For the decoding algorithm, several cases could occur depending on the position of the lost or corrupted packet (Fig. 5).

+

Start

Calculate the number of losses

Calculate the position of the error

=1

#losses

>2

Apply the GoBack-N to retransmit the lost backets

No

One is parity?

=2

Is it in either P0 or P1

Yes

Calculate the position of the error

No

Computing P1 (Diagonal Parity with wrap around array edges)

Ignore loss and continue

Calculate the Syndrome bits S0 and S1

Both are Parity packets? Yes

Yes

Use S0 or S1 to calculate the lost packet

Ignore loss and continue

Is it P0?

(b)

No

Use both S0 and S1 to reconstruct the lost 2 packets

No

Yes

Use S1 to calculate the lost packet.

Fig. 4. Encoding procedure illustrated

Use S0 to calculate the lost packet.

3.2 Decoding Algorithm Stop

REA is a distance 3 code, therefore, this code allows for the recovery from up to two losses. In other words, there exists a decoding algorithm that can compute up to two missing packets from any d available packets. This section presents the REA decoding procedure. Any loss can affect either one of the two parity packets

P0

and

P1 , or any of the

W [u ],0 ≤ u < d

data packets . Depending on whether the lost packets are data packets, parity packets, or both, the decoding algorithm handles all cases. The decoding algorithm utilizes the syndrome arrays S0 and S1. The syndrome arrays are computed by replacing unavailable packets with zero packets and then utilizing the following equations: d −1

S 0 [ j ] = P0 [ j ] + ∑ W [ j ][i ]

S 0 [0] = 0

and d −1 S1 [ j ] = P1 [ j ] + ∑W [ i =0

i=0

j −i

b

][i]

for 1 ≤ j < b

j −i for 0 ≤ j < b and

b

≠0

4 Forward Error Correction Using REA The REA error correction code as was illustrated is an efficient code for correcting up to two errors, it will be used to reconstruct up to two packet losses. The window size will be

Fig. 5. Flowchart of the Decoding procedure

If one of the lost packets is a parity packet, then only the lost data packet will be reconstructed while the parity packet will be ignored, if both of the losses are parity packets then nothing will be done and the receiver consider no packet loss. In case of more than 2 data packets are lost, the receiver will use the Go-Back-N mechanism to resend the lost packets.

5

Performance Evaluation

In this section we compare the performance of the proposed error correction method to the the standard method that only employs retransmissions. A network simulation for both cases (with and without using the forward error correction method) is performed using the following data: Number of bits to be sent: 11987 which is the largest prime number smaller than the size of a 1499 byte packet. Window size: 7 (2 of them will be considered parity packets in case of FEC and using the REA code) BER: Bit Error Rate (The error rate per bit) PER: Packet Error Rate (The rate of error in packets, this will vary from 0.01 to 0.2)

PN: Packet Number (This is varying from 210 to 2100 packets)

PER = 0.1, Packet size = 11987 bits Retransmitted + Overhead

1400

The comparison in both cases is based on the number of retransmitted packets + the overhead packets (which is in our case the parity packets). Fig. 6 illustrates the actual number of transmitted packets for different number of data packets at 4 different error rates. In Fig. 6.a, 6.b, 6.c and 6.d the error rate is fixed to 0.01, 0.07, 0.1 and 0.14, respectively, and the number of retransmitted packets for PP0 (0 parity packets) and PP2 (2 parity packets). In Fig. 6 the number of data packets is fixed and the packet error rate is changed. This simulation shows the situation where the proposed system is performing better than the existing system. One can remark that a wide variation in the error rate was used for sake of comparison.

PP 0 PP 2

1200 1000 800 600 400 200 0

210 420 630 840 1050 1260 1470 1680 1890 2100

No of Packets

PER = 0.01, Packet size = 11987

(c)Packet Error Rate = 0.1

900 700

PER = 0.14, Packet size = 11987 bits

PP0

2000

PP2

600 500 400

Retransmitted + Overhead

Retransmitted + Overhead

800

1800

PP0

1600

PP2

1400

300

1200

200

1000

100 0 210 420 630 840 1050 1260 1470 1680 1890 2100

No. of Packets

800 600 400 200 0 210

(a)Packet Error Rate = 0.01

420

630

840 1050 1260 1470 1680 1890 2100

No of Packets

Retransmitted + Overhead

PER = 0.07, Packet size = 11987 900 800 700 600 500 400 300 200 100 0

(d)Packet Error Rate = 0.14 Fig. 6. Total actual number of transmitted packets versus the number of data packets.

PP0 PP2

210 420 630 840 1050 1260 1470 1680 1890 2100

No of Packets (b)Packet Error Rate = 0.07

From Fig. 6 we can conclude that at low error rates the proposed system performance is worse than the existing system, and this is expected since the overhead of parity packets is much more than the number of retransmitted packets. However, if the error rate increases, the performance of the proposed method gets better and better and at higher error rates it becomes a lot better than the existing one. This is clearer in the simulation results presented in Fig. 7. where the number of retransmitted packets + overhead is plotted against the packet error rate. It could be noticed from the results that the PP0 system is better at low error rates but up to a certain extent. When the error rate reaches about 0.07, the proposed appraoch starts to perform better.

No. of Packets 1470, Packet size 11987

Retransmitted + Overhead

2000 1800 1600 1400 1200 1000 800 600 400 200 0

0PP 2PP

The use of this code in FEC has proven to be an excellent choice in case of networks with high noise. Therefore, the approach will be useful for less reliable networks like wireless networks, satellite communication, and ad hoc sensor networks. These results call for an adaptive protocol that tunes its transmission policy based on the current channel condition.

7 Acknowledgement 0.01 0.03 0.05 0.07 0.09 0.1 0.12 0.14 0.16 0.18 0.2

Packet Error Rate (PER) (a)No of Packets = 1470

This publication was made possible by support from the Qatar University. Its contents are solely the responsibility of the authors and do not necessarily represent the official views of the Qatar University'.

8 References

No. of Packets = 2100, Packet size 11987 bits

Retransmitted + Overhead

3000 2500

PP0 PP2

2000 1500 1000 500 0 0.01 0.03 0.05 0.07 0.09 0.1 0.12 0.14 0.16 0.18 0.2

Packet Error Rate (PER) (b)No of Packets = 2100

No. of Packets 8400, Packet size 11987 12000

Retransmitted + Overhead

10000 8000

PP0 PP2

6000 4000 2000 0 0.01 0.03 0.05 0.07 0.09

0.1

0.12 0.14 0.16 0.18

Packet Error Rate (PER) (c)No of Packets = 8400 Fig. 7. Total number of transmitted packets versus packet error rates

6 CONCLUSION The paper has described a new method that utilizes REA coding to provide reliable transmission in packet-switched networks. The REA code has proven to be an efficient code in terms of transmission overhead and speed of data recovery. This code could be used for correcting up to 2 errors. Future work will extend the idea of this paper to cover up to n errors.

[1] Tannenbuam, Andrew S., Computer Networks, 4th ed. Prentice Hall, '02. [2] E. Ayanoglu, S. Paul, T. F. LaPorta, K. K. Sabnani, and R. D.Gitlin, “AIRMAIL: A link-layer protocol for wireless networks,” ACM ACM/Baltzer Wireless Networks J., vol. 1, pp. 47–60, Feb. 1995. [3] H. Balakrishnan, V. N. Padmanabhan “A Comparison of mechanisms for improving TCP Performance over Wireless Link” , IEEE/ACM Trans. On Networking, vol. 5, no.6 Dec 1997. [4] Luca Baldantoni, “End-to-End Adaptive FEC for Improving TCP Performance over Wireless Links” Master Thesis in Telecommunication Engineering, March 24, 2003 [5] Behrouz A. Forouzan, Data Communication and Networks 3rd Edition, McGraw Hill 2004 [6] Benyuan Liu I, Dennis L. Goeckel ', “Don Towsley “TCPCognizant Adaptive Forward Error Correction in Wireless Networks” IEEE Globecom 2002 (Global Internet Symposium) [7] Q. M. Malluhi and M. F. Malouhi, “Ragged-Edge Array Coding for Reliable and Efficient Storage Management,” Proceedings of the IEEE International Conference on Computer Systems and Applications, Sharjah, UAE, March 2006. [8] A. McAuley, "Reliable Broadband Communication Using A Burst Erasure Correcting Code," Proceedings of the ACM symposium on Communications architectures & protocols, p.297306, September 26-28, 1990, Philadelphia, Pennsylvania, United States [9] I. S. Reed and G. Solomon, “Polynomial codes over certain finite fields,” SIAM Journal on Applied Mathematics, 8, pp. 300-304, 1960. [10] Luigi Rizzo, "Effective erasure codes for reliable computer communication protocols," ACM Computer Communication, vol 27 n.2 pp. 24-36, Apr 1997. [11] L. Rizzo, L.Vicisano "A Reliable Multicast data Distribution Protocol based on software techniques," Fourth IEEE HPCS'97 Workshop, Chalkidiki, Grece, June 1997. [12] L. Rizzo, L.Vicisano " RMDP: an FEC-based Reliable Multicast Protocol for Wireless Environments," ACM Mobile Computer and Communication Review v.2 n.2 April 1998. [13] N. Shacham, P. McKenney, “Packet recovery in high-speed networks using coding and buffer management”, IEEE Infocom’90 CA, PP.124-131, May '90. [14] William Stallings, Data and Computer Communications, 7th Edition, Prentice Hall, 2004.

Suggest Documents