Forward Error Correction

1 / 21

# Forward Error Correction - PowerPoint PPT Presentation

Forward Error Correction. Steven Marx CSC457 12/04/2001. Outline. What is FEC? Why do we need it? How does it work? Where is it used?. What is FEC?. Send k packets Reconstruct n packets Such that we can tolerate k-n losses Called an (n, k) FEC code. What is FEC? (2). Why FEC?.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'Forward Error Correction' - mayes

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### Forward Error Correction

Steven Marx

CSC457

12/04/2001

Outline
• What is FEC?
• Why do we need it?
• How does it work?
• Where is it used?
What is FEC?
• Send k packets
• Reconstruct n packets
• Such that we can tolerate k-n losses
• Called an (n, k) FEC code
Why FEC?
• Alternatives:
• ARQ (Automatic Repeat reQuest)
• requires feedback
• tolerance
• only suitable for some applications
Why FEC? (2)
• sometimes no feedback channel necessary
• long delay path
• one-way transmission
• avoids multicast problems
• computationally expensive
• requires over-transmission
How is this possible?

An easy example:

(n, k) = (2, 3) FEC code

transmitting two numbers: a and b

Send three packets:

1. a

2. b

3. a + b

How is this possible? (2)

Could be represented as matrix multiplication

To encode:

To decode, use subset of rows.

How is this possible? (3)

More generally:

y = Gx, where G is a “generator matrix”

G is constructed in such a way that any subset of rows is linearly independent.

A “systematic” generator matrix includes the identity matrix.

A Problem
• a and b are 8-bit numbers
• a + b may require more bits
• loss of precision means loss of data
A Solution
• Finite fields:
• field:
• we can add, subtract, multiply, and divide as with integers
• closed over these operations
• finite: finite number of elements
A Solution (2)
• Specific example:
• “prime field” or “Galois Field” - GF(p)
• elements 0 to p-1
• modulo p arithmeticProblem:
• with the exception of p = 2,log(p)> log(p) bits required
• requires modulo operations
Extension Fields
• q = pr elements with p prime, r > 1
• “extension field”, or GF(pr)
• elements can be considered polynomials of degree r - 1
• sum just sum modulo p
• extra simple with p = 2:
• exactly r bits needed
• sums and differences just XORs
Multiplication and Division
• Exists an α whose powers generate all non-zero elements.
• In GF(5), α = 2, whose powers are (1,2,4,3,1,…).
• Powers of α repeat with period q - 1, so αq-1 = α0 = 1
Multiplication and Division (2)
• for all x, x = αl
• l is x’s “logarithm”
Multiplication and Division (3)

An example: GF(5) -> α = 2

3 = 23 mod 5

4 = 22 mod 5

3 * 4 = 23+2 mod 5

= 32 mod 5

= 2 mod 5

3 * 4 = 12 mod 5

= 2 mod 5

Vandermonde Matrices
• gi,j = xij-1
• xi’s are elements of GF(pr)
• called “Vandermonde Matrices”
• invertible if all xi’s different
• y = Gx
• G-1y = G-1Gx = x
• can be extended with the identity matrix for systematic codes
Swarmcast - a real example
• for media distribution
• reduces bandwidth requirements of the server
• server transmits to a small number of clients
• FEC used to maximize chances of getting useful packets
Swarmcast (2)

Star Wars:

Episode Two

Trailer

300Mb/s

100Mb/s

100Mb/s

50Mb/s

100Mb/s

100Mb/s

50Mb/s

50Mb/s

100Mb/s

100Mb/s

Other useful applications
• multicast
• streaming media: less “I” frames in MPEGS
• one-way communication
• high delay pathways
• storage
Conclusion
• FEC:
• allows error correction without retransmission
• requires redundancy in transmission
• useful for multicast
• not extensively used at the packet level
• more important with high bandwidth, high latency, as is the trend