18-07-2012, 03:45 PM
FORWARD ERROR CORRECTION
Forward Error Correction project (2).doc (Size: 44 KB / Downloads: 52)
Introduction
The Forward Error Correction (FEC) protocol is in essence a CRC protocol over UDP packets. The main idea (as in CRC) is to have the transmitter add redundant information to the network traffic, to be used by the receiver to recover packets that got lost on the way.
This method of communication is extremely efficient for multicast and broadcast scenarios when the clients are not synchronized and the server has trouble sorting out which client lost which packets.
Traditional method for multicast communication are :
1. ACK based protocol: Each client opens a socket to the server, and through that socket the client informs the server as to what packets it needs. The server then completes the missing packets through the UDP multicast link.
2. Carouselle based protocol: The server sends the data in its entiretyover and over until such time it assesses that all clients have obtained all the information.
How does it work:
The server encodes k packets of data into n new packets of data (n > k). The redundant data is encoded to hold information about the real data so that any k different packets can be used to recover the original data. The server then sends the data to its clients. Each client will have received a different set of packets out of the n packets that were sent. If the number of packets is equal to or greater than k, the decoding procedure can begin and all information obtained. If not, a retransmission phase will become necessary, until k packets have been successfully obtained.
Our implementation
Files are commonly too large to be sent in one, or even twenty, packets. With this in mind, we decided to split the file into segments (designated in our code as “chunks”), where each segment is an FEC entity in its own merit. Each segment was then divided into k packets, and then encoded into n packets, each of which also contains redundant information.
Operation instructions
(for use when foregoing the above-mentioned generator):
The system can also be launched manually (that is, without the generator), using the following entries:
To run the server - enter “java Server”
To switch the client’s display on and off (the display is nice, but it may affect performance), open Client.java with any text editor, set the flag “m_isDisplayOn” to True or False in order to toggle the display ON or OFF.