-
Die Erfindung betrifft ein Verfahren zum Wiederherstellen verloren gegangener und-/oder beschädigter Daten.
-
Es ist bekannt, dass Daten während der Übertragung, z. B. über einen rauschbehafteten Kanal durch verschiedene Fehlerkorrekturschemata geschützt werden können. Zu diesem Zweck werden m Paritätspakete durch einen Kodierer generiert, die k Informationspaketen hinzugefügt werden, sodass n = k + m Codewortpakete über den Kanal übertragen werden. Unter Verwendung der übertragenen Paritätsinformationen können verloren gegangene und/oder beschädigte Daten wiederhergestellt werden.
-
Ein Kodierschema, das aus dem Stand der Technik bekannt ist, ist Fountain Coding. Fountain Coding kann z. B. im Packet Level angewendet werden und ist eine einfache und effiziente Technik, um eine zuverlässige Übertragung in einem Kommunikationssystem zu gewährleisten. Die wesentlichen Prinzipien von Packet Level Fountain Coding sind in 1 dargestellt.
-
Zunächst wird die zu übertragende Nachricht, z. B. eine DATEI, aufgeteilt in k Informationspakete von L Bits oder Bytes (Eingangssymbole für den Fountain Encoder) und in k + m Fountain Code (FC) Symbole kodiert (Pakete von L Bits oder Bytes). Bei Fountain Codes wird die Anzahl der Pakete, die durch den Encoder zusätzlich zu den k Informationspaketen generiert werden, auch als Δ bezeichnet. Somit werden die k + Δ Pakete durch den Packet Level Encoder generiert und sind die Ausgangssymbole des Fountain Encoders. Δ ist der Overhead auf der Senderseite, d. h. die Anzahl an Paketen, die durch den Encoder zusätzlich zu k generiert werden.
-
Zweitens, werden die k + Δ Fountain Encoder Symbole im Physical Layer (innerhalb des PHY Layer Frames) durch Fehlerkorrekturcodes geschützt (z. B. Turbo, LDPC...), Fehlererkennungscodes (z. B. Cyclic Redundancy Check (CRC)) und sie werden übertragen.
-
Drittens, wird auf jedes Paket auf der Empfängerseite eine Fehlerkorrektur im Physical Layer angewandt und verbleibende Fehler werden durch den Fehlererkennungscode erkannt. Wenn Fehler erkannt werden, wird das Paket als verloren angesehen und als Auslöschung markiert. Somit sehen die Layer über dem Physical Layer das Kommunikationsmedium als einen Packet Erasure Channel (PEC) an, auf dem Pakete entweder korrekt empfangen werden oder verloren gehen.
-
Schließlich stellt der Packet Level Decoder die originale Nachricht her, sofern eine ausreichende Anzahl an Paketen empfangen wird.
-
Fountain Codes sind ratenlose Codes, d. h. Δ = 0, 1, 2, ..., was bedeutet, dass keine Grenze für die Anzahl der generierten Fountain Encoder Pakete besteht. Fountain Encoder Pakete werden generiert, bis der Paket Level Decoder im Stande ist, die originale Nachricht wiederherzustellen.
-
Fountain Codes wurden eingeführt in
”Systematic encoding and decoding of chain reaction codes”, M. Amin Shokrollahi et al, Patent number: 6909383. Anmeldedatum: 1. Oktober 2003. Erteilungsdatum: 21. Juni 2005 U.S. Klassifikation 341/50; 714/15 und
J. Byers, M. Luby, M. Mitzenmacher, and A. Rege, ”A digital fountain approach to reliable distribution of bulk data,” in Proc. of ACM SIGCOMM, 1998.”
-
Dieses ”Fountain” Konzept ist von großem Interesse in Broadcasting Netzwerken, da es verwendet werden kann, um jede Art von ARQ (Automatic Repeat Request) zu ersetzen. Tatsächlich kann im Gegenteil angenommen werden, dass jeder User einen Retransmission Request für jedes fehlende Paket an den Server übermittelt. Es ist tatsächlich klar, dass, wenn viele User versuchen die Datei vom Server zu erlangen, der Sender auf der Serverseite durch die Retransmission Requests bedrängt würde, was zu einer sehr niedrigen Gesamteffizienz der Verbindung führen würde.
-
Ein effizienter „Fountain” Code ist daher ein Fountain Code, der eine erfolgreiche Wiederherstellung einer Nachricht durch die Nutzer mit einer minimalen Anzahl von Paketübertragungen, die durch k gegeben ist, erlaubt. Der effizienteste Typ von Fountain Codes sind Raptor Codes. Die Performance im Hinblick auf die Wahrscheinlichkeit für ein Dekodierversagen (oder Codewort-Fehlerraten) im Vergleich zum Overhead, ist in 2 dargestellt. Der Overhead ist definiert als die Anzahl der empfangenen Pakete, über das Minimum hinaus, das ein idealer Fountain Code für eine erfolgreiche Wiederherstellung der originalen Nachricht benötigen würde (k). Raptor Codes wurden standardisiert für den MBMS Service von UMTS (3GPP TS 26.346 V6.1.0, ”Technical specification group services and system aspects; multimedia broadcast/multicast service; protocols and codecs,” Juni 2005). Die Performance von Raptor Codes, die entnommen sind aus Michael Luby, Tiago Gasiba, Thomas Stockhammer, and Mark Watson, ”Reliable Multimedia Download Delivery in Cellular Broadcast Networks”, IEEE TRANSACTIONS ON BROADCASTING, VOL. 53, NO. 1, MÄRZ 2007, ist in 2 dargestellt. Es ist zu beachten, dass ein idealer Fountain Code, eine Versagensrate von 0 mit einem Overhead von 0 erreichen würde.
-
Fountain Codes aus Galois-Feldern höherer Ordnung wurden beschrieben in:
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.
-
Der Vorteil von nicht binären Fountain Codes liegt in der verbesserten Leistungsfähigkeit mit Hinblick auf den Code Overhead. 3 zeigt die Performance eines nicht binären Fountain Codes über einem Galois-Feld GF(4) verglichen mit einem binären Fountain Code.
-
Das Codieren findet wie folgt statt: Auf der Senderseite wird eine Datei in k Pakete mit jeweils L Bits aufgeteilt. Die Pakete werden angeordnet in einer Matrix der Größe L/m × k (das heißt einer Matrix mit L/m Zeilen und k Spalten), wobei m = log2(q). Hierbei ist m die Anzahl der Bits, die durch jedes Galois-Feldsymbol dargestellt werden. Jede Zeile wird durch den Fountain Encoder über dem Galois-Feld GF(q) codiert. Der Prozess endet durch Erzeugung eines Sets von redundanten Paketen mit jeweils L/m GF-Symbolen durch das oben beschriebene Verfahren. Auf der Empfängerseite wird das Gauss'sche Eliminationsverfahren angewendet, um das ursprüngliche Set von k Paketen wieder herzstellen. Die Operationen werden in GF(q) ausgeführt.
-
Weitere Informationen zum genannten Stand der Technik können den folgenden Veröffentlichungen entnommen werden:
D. Burshtein and G. Miller, ”An efficient maximum likelihood decoding of LDPC codes over the binary erasure channel,” IEEE Transactions an Information Theory, volume 50, no 11, pp. 2837–2844, November 2004.
E. Paolini, G. Liva, M. Balazs and M. Chiani: ”Generalized IRA Erasure Correcting Codes for Hybrid Iterative/Maximum Likelihood Decoding”. In: IEEE Communications Letters, Vol. 12, 2008, Iss. 6, S. 450–452. – ISSN 1089-7798
J. Byers, M. Luby, M. Mitzenmacher and A. Rege, ”A digital fountain approach to reliable distribution of bulk data,” in Proc. of ACM SIGCOMM, 1998.
M. Shokrollahi, ”Raptor codes,” IEEE Transactions an Information Theory, vol. 52, no. 6, pp. 2551–2567, June 2006.
-
Nachteilig an Fountain Codes über einem Galois-Feld GF(q) ist ihre höhere Komplexität verglichen zu binären Fountain Codes (die lediglich einfache binäre Additionen/Multiplikationen beinhalten und somit eine geringere Komplexität aufweisen).
-
EP 2 332 303 B1 beschreibt ein System und ein Verfahren zur Datenkommunikation, wobei konkrete Schritte zur Generierung von Paritätsdaten dargestellt sind, aus denen redundanten Datenpakete erstellt werden.
-
Aufgabe der Erfindung ist es ein Verfahren zum Wiederherstellen verloren gegangener Daten unter Verwendung eines Fountain Codes bereitzustellen, das eine verringerte Komplexität aufweist.
-
Die Lösung der Aufgabe erfolgt erfindungsgemäß durch die Merkmale des Anspruchs 1.
-
Im erfindungsgemäßen Verfahren werden Daten von einer Sendevorrichtung über ein Übertragungssystem an eine Empfangsvorrichtung übertragen. Vor dem Übertragen werden die Daten durch einen mit der Sendevorrichtung verbundenen Encoder codiert. Nach dem Übertragen über das Übertagungssystem werden die Daten durch einen mit der Empfangsvorrichtung verbundenen Decoder decodiert. Hierbei werden verloren gegangene und-/oder beschädigte Daten wiederhergestellt. Das Codieren wird durchgeführt unter Verwendung eines Fountain Codes. Das Decodieren wird durchgeführt durch Lösen des Gleichungssystems, das durch die Decodier-Matrix des Codes definiert wird.
-
Erfindungsgemäß werden Datenpakete mit redundanten Daten durch die folgenden Verfahrensschritte generiert:
- a) ein Paritätsdatenbit wird durch die folgenden Verfahrensschritte generiert:
- a1) Es wird entschieden, ob ein Bit eines Nutzdatenpakets zur Berechnung des Werts eines Nutzdatenbits verwendet werden soll, basierend auf einem Zufallsalgorithmus. Alle Bits aller Nutzdatenpakete gehen jeweils mit einer definierten Wahrscheinlichkeit in die Berechnung des Paritätsdatenbits ein.
- a2) Es wird eine Summe aus allen Nutzdatenbits gebildet, bei denen Zufallsalgorithmus ergeben hat, dass sie zur Generierung des aktuellen Paritätsdatenbits verwendet werden sollen. Aus dieser Summe ergibt sich das Paritätsdatenbit.
- b) Die Schritte a1 und a2) werden zu Bildung weiterer Paritätsdatenbits wiederholt.
- c) Ein redundantes Datenpaket, insbesondere ein Vektor der Länge k × m, wird aus den erzeugten Paritätsdatenbits gebildet.
-
Das erfindungsgemäße Verfahren weist die folgenden Schritte auf:
Anordnen von k Quellpaketen, die sich aus den Nutzdatenbist zusammensetzen, in einer Matrix der Größe L × k, deren Elemente-Bits, das heißt Symbole aus einem Galois-Feld GF(2) sind, wobei L die Anzahl der Zeilen dieser Matrix und k die Anzahl ihrer Spalten ist,
Partitionieren der Zeilen L der Matrix in L/M Zeilenblöcke mit jeweils m Zeilen, wobei m = log2(q)
Bilden des redundanten Datenpakets, nämlich eines Vektors der Länge k × m aus jeweils einem Zeilenblock durch reihenweises Verarbeiten der Nutzdatenbist in dem Zeilenblock gemäß den Verfahrensschritten a)–c),
Codieren des gebildeten Vektors durch einen Fountain Code, so dass n × m Paritätsdatenbits erzeugt werden
Erzeugen von n codierten Datenpaketen aus denen n × m codierten Paritätsdatenbits. Der Wert L ist ein Designparameter und kann frei gewählt werden.
-
q ist hierbei ein Design Parameter und wird bei der Erstellung des Codes definiert. q kann beispielsweise einen Wert von 256 aufweisen. Grundsätzlich kann q jede beliebige Potenz von 2 sein.
-
Es bevorzugt, dass die Wahrscheinlichkeit, dass ein Nutzdatenbit für die Berechnung des Paritätsdatenbits verwendet wird, 0,5 ist.
-
Im Folgenden werden bevorzugte Ausführungsformen der Erfindung anhand von Figuren erläuter.
-
Es zeigen:
-
1 eine schematische Darstellung des Prinzips von Packet Level Fountain Coding,
-
2 die Performance eines Raptor Codes als eine Funktion des Overheads für verschiedene Anzahlen von Input-Paketen k,
-
3 einen Vergleich der Performance eines nicht binären Raptor Codes mit einem binären Raptor Code,
-
4 eine vereinfachte Darstellung der Ausführungsform des erfindungsgemäßen Verfahren,
-
5 eine Darstellung der Performance des erfindungsgemäßen Verfahrens gegenüber dem Stand der Technik
-
1–3 wurden bereits im Zusammenhang mit dem Stand der Technik erläutert.
-
In 4 ist eine Matrix der Größe L × k dargestellt. Im oberen Bereich der Matrix ist ein Block mit m Zeilen dargestellt. Im dargestellten Ausführungsbeispiel ist m = 8, so dass q = 256 ist.
-
Das erste Nutzdatenbit a besteht aus den Nutzdatenbits α0 bis α7. Selbiges gilt entsprechend für die weiteren Nutzdatenbits, β, γ und μ.
-
Die einzelnen Nutzdatenbits werden vertikal in der dargestellten Matrix angeordnet, so dass sich ihre Nutzdatenbits in einer Spalte jeweils untereinander befinden. Die 8 Nutzdatenbits nehmen somit entlang jeweils einer Spalte die ersten 8 Zeilen der Matrix ein. Im Rahmen des erfindungsgemäßen Verfahrens wird ein Paritätsdatenbit gebildet, basierend auf einer Zickzack-weisen Betrachtung eines Blocks, bestehend aus m Zeilen. Beginnend mit dem Nutzdatenbit α0 wird somit entscheiden, ob dieses Nutzdatenbit in die Berechnung des Paritätsdatenbits eingehen soll. Beispielsweise kann jedes Nutzdatenbit mit einer Wahrscheinlichkeit von 0,5 in die Berechnung des Paritätsdatenbits eingehen. Wird zum Beispiel entscheiden, dass α0 in die Berechnung des Paritätsdatenbits eingehen soll, so wird es bei der Bildung der Summe aller für das Paritätsdatenbit zu verwendenden Nutzdatenbits berücksichtigt. Entsprechend wird weiter mit β0, γ0, μ0, α1, β1 etc. verfahren. Diese Betrachtung für das erste Paritätsdatenbit setzt sich im dargestellten Beispiel fort, bis zum letzten Bit μ7 des Nutzdatenbits μ. Aus diesen Bits, von denen im dargestellten Beispiel 32 vorhanden sind, wird gemäß dem beschriebenen Verfahren ein Paritätsdatenbit erzeugt.
-
Aus diesen Paritätsdatenbits wird ein Vektor von k × m gebildet. Im dargestellten Beispiel wird dieser Vektor eine Länge von 32 Bits aufweisen. Jeder Vektor wird gebildet durch eine Aneinanderreihung der durch das oben beschrieben Verfahren gebildeten Paritätsdatenbits φ0, φ1, φ2 ... φ7.
-
In 5 ist die Leistungsfähigkeit des erfindungsgemäßen Verfahrens verglichen zum Stand der Technik dargestellt. Es wird die Wahrscheinlichkeit für ein Decodier-Versagen in Abhängigkeit vom Overhead dargestellt. Es ist erkennbar, dass das erfindungsgemäße Verfahren, das in 5 als Zickzack Fountain Code bezeichnet ist, eine wesentlich geringere Wahrscheinlichkeit für ein Decodier-Versagen als aus dem Stand der Technik bekannte binäre Fountain Codes aufweist. Die Leistungsfähigkeit des erfindungsgemäßen Verfahrens nähert sich dem eines nicht binären Fountain Codes. Dennoch muss für das erfindungsgemäße Verfahren lediglich binäre Algebra verwendet werde, so dass es wesentlich weniger komplex als das aus dem Stand der Technik bekante nicht binäre Verfahren ist.