-
Die Erfindung betrifft ein Verfahren zum Wiederherstellen von verloren gegangenen und/oder beschädigten Daten.
-
Es ist bekannt, dass Daten während der Übertragung beispielsweise über einen rauschbehafteten Kanal durch verschiedene Fehlerkorrekturverfahren geschützt werden können. Zu diesem Zweck werden m Parity Pakete durch einen Encoder erzeugt, die k Informationspaketen hinzugefügt werden, so dass n = k + m Codeword Pakete über den Kanal übertragen werden. Durch Verwenden der übertragenen Parity Informationen können verloren gegangene oder beschädigte Daten wiederhergestellt werden.
-
Ein Codierschema, das aus dem Stand der Technik bekannt ist, ist Fountain Coding. Fountain Coding kann beispielsweise auf Packet Level angewandt werden und ist eine einfache und effiziente Technik, um in einem Kommunikationssystem eine verlässliche Übertragung sicherzustellen. Die Grundprinzipien von Packet Level Fountain Coding sind in 1 dargestellt.
-
Zuerst wird die zu übertragende Nachricht, z. B. eine Datei, aufgeteilt in k Infopakete von L Bits oder Bytes (Eingangssymbole für den Fountain Encoder) und codiert in k + Δ Fountain Code (FC) Symbole (Pakete von L Bits oder Bytes). Somit werden die k + Δ Pakete erzeugt durch den Paket Level Encoder und sind die Ausgangssymbole des Fountain Encoders. Δ ist der Overhead auf der Transmitterseite, d. h. die Anzahl an Paketen, zusätzlich zu den k die durch den Encoder erzeugt werden.
-
Zweitens, werden die k + Δ Fountain Encoder Symbole im Physical Layer (innerhalb des PHY Layer Frames) durch Fehlerkorrekturcodes (z. B. Turbo, LDPC ...), Fehlererkennungscodes (z. B. Cyclic Redundancy Check (CRC)) geschützt und sie werden übertragen.
-
Drittens wird auf jedes Paket auf der Empfängerseite Physical Layer Fehlerkorrektur angewandt und verbleibende Fehler werden durch einen Fehlererkennungscode detektiert. Wenn Fehler detektiert werden, wird das Paket als verloren angesehen und als Auslöschung gekennzeichnet. Somit sehen die Layer über dem Physical Layer das Kommunikationsmedium als einen Packet Erasure Channel (PEC), wo Pakete entweder korrekt empfangen werden oder verloren gehen.
-
Zuletzt stellt der Packet-Level Decoder die Original Nachricht wieder her, sofern eine ausreichende Menge an Paketen empfangen wurde.
-
Fountain Codes sind ratenlose Codes, d. h. Δ = 0, 1, 2, ... was bedeutet, dass keine Grenze für die Anzahl von erzeugten Fountain Encoder Paketen existiert. Fountain Encoder Pakete werden erzeugt, bis der Packet-Level Decoder in der Lage ist, die ursprüngliche Nachricht wieder herzustellen.
-
Informationen zum Stand der Technik können den folgenden Veröffentlichungen entnommen werden:
- [1] J. Byers, M. Luby, M. Mitzenmacher, and A. Rege, "A digital fountain approach to reliable distribution of bulk data," SIGCOMM Comput. Commun. Rev., vol. 28, no. 4, pp. 56–67, Oct. 1998.
- [2] M. Luby, "LT Codes," in IEEE Symposium on Foundations of Computer Science (FOCS), 2002, pp. 271–280.
- [3] A. Shokrollahi, "Raptor Codes," IEEE Transactions on Information Theory, vol. 52, no. 6, pp. 2551–2567, 2006.
- [4] G. Liva, E. Paolini, and M. Chiani, "Performance versus Overhead for Fountain Codes over Fq", IEEE Communications Letters, vol. 14, no. 2, pp. 178–180, February 2010.
- [5] B. Schotsch, R. Lupoaie, and P. Vary, "The performance of low-density random linear fountain codes over higher Order Galois fields under maximum likelihood decoding," in Proc. 49th Annual Allerton Conf. on Commun., Control, and Computing, Monticello, IL, USA, Sep. 2011, pp. 1004–1011.
- [6] M. Luby, A. Shokrollahi, M. Watson, T. Stockhammer, "Raptor Forward Error Correction Scheme for Object Delivery", RFC 5053, Internet Engineering Task Force, Network Working Group
- [7] http://www.hs.uni-hamburg.de/DE/Ins/Per/Abhranil/summer report.pdf
-
Ursprünglich wurden binäre Fountain Codes eingeführt (siehe Veröffentlichungen 2 und 3). Diese werden üblicherweise unter Verwendung von iterativen Decodier-Algorithmen decodiert. Diese sind schnell, jedoch suboptimal hinsichtlich ihrer Leistungsfähigkeit.
-
Fountain Codes, die aus Galois Feldern höherer Ordnung erzeugt wurden, sind aus den Veröffentlichungen 4 und 5 bekannt. Diese werden unter Verwendung von Maximum Likelihood Decoding decodiert, das eine optimale Leistungsfähigkeit aufweist. Sie sind binären Codes im Hinblick auf den benötigten Overhead überlegen.
-
Softwareimplementierungen von Packet-Level Encodern und Decodern sind besonders attraktiv, da sie keine hohen Anstrengungen für Design/Implementation erfordern und sie eine höhere Flexibilität gegenüber Hardware Implementierungen ermöglichen. Software Module können einfach in eine Hardware Architektur integriert werden, die nicht speziell designt wurde, um Packet-Level Coding zu unterstützen.
-
Da Software Packet-Level Encoder und Decoder auch bestimmt sind, um auf energiebeschränkten Plattformen zu funktionieren (z. B. on-Board Einheiten von Raumschiffen, Landeschiffen, Rover, Orbiter in erdnahen Missionen und in Missionen im fernen Weltraum, Satelliten), sind effiziente Verfahren notwendig.
-
Ein Packet-Level Coding Schema mit Fountain Codes funktioniert wie folgt: Aufteilen der zu übertragenden Daten in b Sets von k Paketen
die die b Gruppen an Eingangssymbolen für den Fountain Code darstellen,
Anwenden von Fountain Encoding auf jedes Set, so dass b Sets an Paketen der Größe
erzeugt werden, die die b Gruppen an Ausgangssymbolen des Fountain Codes darstellen, so dass das Codieren durchgeführt wird für
z = 1, ..., b, gemäß
wobei die Koeffizienten der Matrix g
ji mit i = 1, 2, ..., k und j = 1, 2, ..., k + Δ zu einem Galois Feld der Ordnung q ≧ 2 gehören, wobei die Koeffizienten, die für das Kodieren der b Sets der Eingangssymbole verwendet werden, dieselben sind,
wobei das j-te Ausgangspaket der Größe L Bits, das über den Übertragungskanal gesendet wird, zusammengesetzt ist aus
C z / j,for z = 1, ..., b, das heißt, es enthält das j-te Ausgangssymbol der Größe L/b Bit von jeder der b Gruppen,
wobei der Empfänger diejenigen Ausgangspakete, die nicht auf dem Übertragungskanal verloren gegangen sind, sammelt und die b Gleichungssysteme löst, wenn m ≧ k Ausgangspakete empfangen wurden,
der Empfänger als ein Set von b Fountain Decodern angesehen werden kann,
wobei jeder Fountain Decoder das folgende lineare System zu lösen hat:
wobei mit
Jz = {j z / 1, j z / 2, ..., j z / m} das Set der Indizes des empfangenen Ausgangssymbols für den z-ten Decoder bezeichnet wird.
-
Die b Gleichungssysteme auf der Decoder-Seite können in kompakter Form auch dargestellt werden als Ap(z) = c(z), (1) Hierbei stellt A eine quadratische, nicht singuläre Matrix der Größe k×k dar, die aus der im Folgenden abgebildeten Matrix erlangt wurde (wenn das System lösbar ist). P(2) bezeichnet den Spaltenvektor in der unten dargestellten Matrix, der die k Eingangssymbole für das z-te Set enthält, und c(z) bezeichnet den Spaltenvektor in der unten dargestellten Matrix, der die k gesammelten Ausgangssymbole des z-ten Sets enthält, die den Teilen von A zugeordnet sind.
-
-
Das Dekodieren wird durchgeführt wird durch Lösen der b Gleichungssysteme, die durch dieselbe Matrix A im Verfahrensschritt a beschrieben sind, jedoch mit unterschiedlichen bekannten Term-Vektoren, wobei der bekannte Termvektor jedes Systems in Verfahrensschritt a zusammengesetzt ist aus m Paketen mit L/b Bits.
-
Der Ansatz gemäß dem Stand der Technik besteht darin zunächst eines der b Geleichungssysteme aus (1) zu lösen, wobei der Decodierungsablauf gespeichert wird (siehe Veröffentlichung (6)). Dies bedeutet, dass die Liste der Zeilenoperationen und der Umsortierungen der Zeilen und Spalten, die während des Dekodierens vorgenommen wurden, gespeichert werden. Dieser Decodierungsablauf hängt lediglich von der Matrix A ab und nicht von dem bekannten Term. Dieser Decodierungsablauf wird dann auf die verbleibenden b–1 Gleichungssysteme angewendet. Ein beispielhafter Decodierablauf kann die Liste von Operationen/Schritten sein, die notwendig sind, um die Matrix A in eine obere Dreiecksform zu bringen und zusätzlich die Liste von Operationen/Verfahrensschritten, die notwendig ist, um das Gleichungssystem mit Rücksubstitution zu lösen.
-
Nachteilig an dem Ansatz aus dem Stand der Technik ist, dass der Decodierablauf (Decoding Schedule) eine sequentielle Liste von Operationen/Verfahrensschritten ist, die nicht parallelisiert werden kann. Heutzutage weisen beispielsweise viele Empfängerarchitekturen mehrere Prozessorkerne auf und können damit Parallelberechnungen durchführen.
-
Es ist Aufgabe der Erfindung ein Verfahren zum Übertragen von Daten unter Verwendung eines Fountain Codes über einen verlustbehafteten Kanal bereitzustellen, das einen höheren Durchsatz beim Decodieren ermöglicht.
-
Die Lösung der Aufgabe erfolgt erfindungsgemäß durch die Merkmale des Anspruchs 1.
-
Gemäß dem erfindungsgemäßen Verfahren werden Daten von einer Sendevorrichtung zu einer Empfängervorrichtung übertragen, wobei Daten durch einen Encoder, der mit der Sendevorrichtung verbunden ist, codiert werden. Daten werden über einen Übertragungskanal übertragen, der bspw. ein Broadcasting-Netzwerk in einem Satellitenszenario sein kann. Jeder andere geeignete Übertragungskanal kann verwendet werden. Die übertragenen Daten werden durch einen Decoder, der mit der Empfängervorrichtung verbunden ist, decodiert, wobei verlorengegangene oder beschädigte Daten während des Decodierens wiederhergestellt werden. Codieren und Decodieren wird durchgeführt unter Verwendung eines Fountain Codes unter Ausführung der folgenden Verfahrensschritte:
Aufteilen der zu übertragenden Daten in b Sets von k Paketen
die die b Gruppen an Eingangssymbolen für den Fountain Code darstellen, Anwenden von Fountain Encoding auf jedes Set, so dass b Sets an Paketen der Größe
erzeugt werden, die die b Gruppen an Ausgangssymbolen des Fountain Codes darstellen, so dass das Codieren durchgeführt wird für
z = 1, ..., b, gemäß
wobei das j-te Ausgangspaket der Größe L Bit, das über den Übertragungskanal gesendet wird, zusammengesetzt ist aus
das heißt es enthält das j-te Ausgangssymbol der Größe L/b Bits von jeder der b Gruppen,
wobei der Empfänger diejenigen Ausgangspakete, die nicht auf dem Übertragungskanal verloren gegangen sind sammelt und die b Gleichungssysteme löst, wenn m ≧ k Ausgangspakete empfangen wurden,
wobei das Dekodieren durchgeführt wird durch Lösen der b Gleichungssysteme, die durch dieselbe Matrix A im Verfahrensschritt a beschrieben sind, jedoch mit unterschiedlichen bekannten Term-Vektoren, wobei der bekannte Term-Vektor jedes Systems in Verfahrensschritt a zusammengesetzt ist aus m Paketen mit L/b Bits.
-
Das Decodieren wird durchgeführt durch die folgenden Verfahrensschritte: Berechnen der Inversen der Matrix A, die als A–1 bezeichnet wird,
Speichern der Matrix A–1
Multiplizieren der in Verfahrensschritt g berechneten Matrix mit dem bekannten Term c(1), so dass p(1) berechnet wird,
Wiederholen des Verfahrensschritts h für z = 2, ... b, d. h. Multiplizieren der in Verfahrensschritt g berechneten Matrix mit den bekannten Termen
c(2), c(3), ..., c(b,
so dass
p(2), p(3)‚ ..., p(b
berechnet werden.
-
Der Empfänger kann betrachtet werden als ein Set von b Fountain Decodern, wobei jeder Fountain Decoder das folgende lineare System zu lösen hat:
wobei mit
Jz = {j z / 1, j z / 2, ..., j z / m} das Set der Indizes des empfangenen Ausgangssymbols für den z-ten Decoder bezeichnet wird,
wobei, sofern das Codieren mit derselben Erzeugermatrix für jedes Set an Eingangssymbolen durchgeführt wird, die Indizes der empfangenen Ausgangsymbole für jedes z identisch sind, so dass die empfangenen Ausgangssymbole für das z-te Set bezeichnet werden durch
-
Es ist bevorzugt, dass A–1 eine k×k Matrix ist und die bekannten Term-Vektoren k×s Matrizen sind, wobei s von dem Galois-Feld abhängt, aus dem der Fountain Code erzeugt wurde.
-
Weiterhin ist es bevorzugt dass, sofern der Code aus einem Galois Feld der Ordnung q = 2t erzeugt wurde, s = L/t ist.
-
In Empfängerarchitekturen, in denen es möglich ist, Berechnungen parallel durchzuführen, z. B. in Grafikkarten mit mehreren Rechnungseinheiten, können die Verfahrensschritte h und i, nämlich die hier beschriebenen Matrixmultiplikationen parallel durchgeführt werden. Diese Matrixmultiplikationen können in solchen Hardwarearchitekturen sehr viel schneller durchgeführt werden (siehe Veröffentlichung 7). Kommerziell erhältliche Grafikkarten, auch solche, die in Smartphones verwendet werden, weisen mehrere Dutzend Computerkerne für parallele Berechnungen auf.
-
Der vorliegende Decodieralgorithmus für Foutain Coding eignet sich somit in besonderer Weise für Parallelberechnungen. Dies ist bei dem aus dem Stand der Technik bekannten Decodieralgorithmus nicht der Fall. Die Decodierperformance bei Verwendung der beschriebenen Hardwarearchitektur in dem Empfänger kann somit durch das erfindungsgemäße Verfahren gesteigert werden.
-
Im Folgenden wird eine bevorzugte Ausführungsform des erfindungsgemäßen Verfahrens anhand einer Figur näher erläutert.
-
Die Figur zeigt schematisch ein Szenario, in dem Paket Level Fountain Coding durchgeführt werden kann.
-
Die grundsätzliche Funktionsweise von Paket Level Fountain Coding wurde bereits bei der Einleitung der vorliegenden Anmeldung beschrieben.
-
Im Folgenden wird anhand eines konkreten Beispiels die Leistungsfähigkeit des erfindungsgemäßen Verfahrens erläutert. Es wird ein Paket Level Fountain Code mit L = 4096 Bits k = 100 betrachtet. Der Fountain Code wurde erzeugt aus einem Galoisfeld der Ordnung 256 (d. h. GF (256), b = 8). Es wurde eine Empfängerarchitektur mit 100 parallelen Berechnungseinheiten verwendet. Jedes Ausgangspaket enthält 512 Symbole aus dem GF (256).
-
Es wird angenommen, dass ein Dekodieren möglich ist mit m = k (was realistisch ist, da der Code erzeugt wurde aus GF (256), was bedeutet, dass die Wahrscheinlichkeit eines Dekodierversagens mit m = k unter 10–2 liegt). Die Matrix A–1 ist eine 100×100 Matrix. c(z) für z =1, 2, ..., 8 sind Matritzen der Größe 100×64, d. h. s = 64.
-
Die Eingangssymbole p(1), p(2), p(3), ..., p(8), die Vektoren mit 100 Paketen sind, die 64 GF (256) Symbole pro Paket enthalten, können unter Verwendung von 8 Matrixmultiplikationen wieder hergestellt werden. Jede Matrixmultiplikation schließt 100×64 Zeilen – mal – Spaltenoperationen ein. Diese können in 64 Zeiteinheiten durchgeführt werden (sofern einer der 100 Parallelkerne in der Lage ist eine Zeilen- mal Spaltenoperation in einer Zeiteinheit durchzuführen. Im Allgemeinen wird das Verwenden von Algorithmen, die parallel abgearbeitet werden können, auf einer geeigneten Hardwarearchitektur wesentlich schneller durchführbar sein als das Abarbeiten von sequentiellen Algorithmen.
-
Vorliegende Verfahren können in allen Arten von drahtlosen oder drahtgebundenen Übertragungssystemen verwendet werden.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- J. Byers, M. Luby, M. Mitzenmacher, and A. Rege, ”A digital fountain approach to reliable distribution of bulk data,” SIGCOMM Comput. Commun. Rev., vol. 28, no. 4, pp. 56–67, Oct. 1998 [0009]
- M. Luby, ”LT Codes,” in IEEE Symposium on Foundations of Computer Science (FOCS), 2002, pp. 271–280 [0009]
- A. Shokrollahi, ”Raptor Codes,” IEEE Transactions on Information Theory, vol. 52, no. 6, pp. 2551–2567, 2006 [0009]
- G. Liva, E. Paolini, and M. Chiani, ”Performance versus Overhead for Fountain Codes over Fq”, IEEE Communications Letters, vol. 14, no. 2, pp. 178–180, February 2010 [0009]
- B. Schotsch, R. Lupoaie, and P. Vary, ”The performance of low-density random linear fountain codes over higher Order Galois fields under maximum likelihood decoding,” in Proc. 49th Annual Allerton Conf. on Commun., Control, and Computing, Monticello, IL, USA, Sep. 2011, pp. 1004–1011 [0009]
- M. Luby, A. Shokrollahi, M. Watson, T. Stockhammer, ”Raptor Forward Error Correction Scheme for Object Delivery”, RFC 5053, Internet Engineering Task Force, Network Working Group [0009]
- http://www.hs.uni-hamburg.de/DE/Ins/Per/Abhranil/summer report.pdf [0009]