Forward Error Correction (FEC) ist eine Technik, die darin besteht, digitale Daten in einer Form zu übertragen, die Redundanz hinzufügt, sodaß der Empfänger Fehler erkennen und korrigieren kann. Gewöhnlich ist Fehlerkorrektur eine Eigenschaft der Kanalcodierung. Die deutsche Bezeichnung für FEC, Vorwärtsfehlerkorrektur, wird relativ selten verwendet.
Eine einfache Form der Vorwärtsfehlerkorrektur ist es, ungefragt den gleichen Datenblock mehrfach zu senden, meist leicht zeitversetzt. Spezielle FEC-Algorithmen erlauben es, die zusätzliche Redundanz zu komprimieren, und dennoch die gleiche Korrekturwahrscheinlichkeit zu erhalten wie beim mehrfachen Senden eines identischen Datenblocks. Diese einfache Form der Fehlerkorrektur mittels Übertragungswiederholungen ist verwandt mit den ARQ-Protokollen mit nachgefragter Korrekturübertragung.
Die FEC tritt häufig verkettet auf (Codierschichten), und schon codierte Abschnitte können mit zusätzlichen Algorithmen robuster gegen Störungen gemacht werden. Bei DVB treten Blockcode (Reed-Solomon), Faltungscode und Byte-Interleaving auf Ebene des Transportstroms mit 188 Byte Blöcken auf. Ähnliches gilt für die GSM Codierungen, die die 260 Bit Blöcke des Sprachcodecs mit Blockcode und Faltungscode auf 456 Bit erweitern, und mit zweifachem Interleaving gegen Burstfehler sichern.
Neben den FEC zur Kanalcodierung treten FEC zur Blocksicherung auf weiteren Ebenen auf. Der übertragene MPEG Datenstrom eines DVB Kanals enthält selbst längere Pakete, die mit FEC Bytes eigenständig gesichert sein können, unabhängig vom Übertragungsmedium. Ähnliches tritt für komprimierende Sprachcodecs auf, die neben Fehlererkennung auch Fehlerkorrektur enthalten können. Auf dieser Ebene treten fast nur noch FEC Blockcodes auf, die zusätzlich berechneten FEC Bytes werden hier in die Paketstruktur eingefügt.
Die Fehlerkorrektur kann in der Kanalcodierung auf störungsreichen Übertragungstrecken wie Funk eingesetzt werden, um entstandene Fehler direkt nach der Übertragung auszugleichen. Je häufiger Fehler bei der Übertragung auftreten können, umso höhere Redundanz wird bei der Auswahl des FEC-Verfahrens gewählt. Entsprechend werden die angefügten FEC-Daten grösser, was die Bandbreite einer Übertragungsstrecke für die eigentlichen Nutzdaten entsprechend senkt.
Bei DVB ist die Viterbi FEC für jeden übertragenen Sender wählbar, die möglichen Werte sind FEC 1/2, 2/3, 3/4, 5/6, 7/8. Dieses n/m Schema bedeutet, dass für n Netto-Bits jeweils m Brutto-Bits aufgewendet werden müssen. Die beiden letzten treten bei der terrestrischen Ausstrahlung (DVB-T) nicht auf, da Funk sehr störanfällig ist.
- siehe auch Kanalcodierung und deren fehlerkorrigierende Verfahren.