DE69805849T2 - Ein vorwärtsfehlerkorrektionssystem für packetbasierte echtzeitmedien - Google Patents

Ein vorwärtsfehlerkorrektionssystem für packetbasierte echtzeitmedien

Info

Publication number
DE69805849T2
DE69805849T2 DE69805849T DE69805849T DE69805849T2 DE 69805849 T2 DE69805849 T2 DE 69805849T2 DE 69805849 T DE69805849 T DE 69805849T DE 69805849 T DE69805849 T DE 69805849T DE 69805849 T2 DE69805849 T2 DE 69805849T2
Authority
DE
Germany
Prior art keywords
payload
blocks
packets
packet
sequence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69805849T
Other languages
English (en)
Other versions
DE69805849D1 (de
Inventor
S. Borella
J. Mahler
M. Schuster
S. Sidhu
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
3Com Corp
Original Assignee
3Com Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US08/989,616 external-priority patent/US6145109A/en
Priority claimed from US08/989,483 external-priority patent/US5870412A/en
Application filed by 3Com Corp filed Critical 3Com Corp
Application granted granted Critical
Publication of DE69805849D1 publication Critical patent/DE69805849D1/de
Publication of DE69805849T2 publication Critical patent/DE69805849T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0078Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
    • H04L1/0079Formats for control data
    • H04L1/008Formats for control data where the control data relates to payload of a different packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Description

    URHEBERRECHT
  • Ein Teil der Offenbarung dieses Patentdokuments enthält Material, das einem Urheberrechtschutz unterliegt. Der Inhaber des Urheberschutzrechts hat keine Einwände gegen die Faksimile-Wiedergabe der Patentoffenbarung, wie sie in der Patentrolle und den Aufzeichnungen des Patent and Trademark Office (Patent- und Markenamts) erscheint, behält sich jedoch anderweitig alle Urheberschutzrechte vor.
  • HINTERGRUND DER ERFINDUNG 1. Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft paketvermittelte Telekommunikationsnetzwerke und insbesondere ein System zum Korrigieren des Verlusts von Datenpaketen in einem solchen Netzwerk.
  • 2. Beschreibung des Stands der Technik
  • In einem paketvermittelten Netzwerk wird eine zu sendende Nachricht in Blöcke oder Datenpakete mit fester oder veränderlicher Länge unterteilt. Die Pakete werden dann über mehrere Orte einzeln über das Netzwerk gesendet und dann an einem Endort wieder zusammengesetzt, bevor diese an einem empfangenden Ende an einen Benutzer übergeben werden. Um eine richtige Übertragung und Wiederzusammensetzung der Datenblöcke an dem empfangenden Ende zu gewährleisten, werden typischerweise verschiedene Steuerdaten, wie Sequenz- und Gültigkeitsprüfinformationen, in Form eines Paketkopfs an jedes Paket angehängt. An dem empfangenden Ende werden die Pakete dann wieder zusammengesetzt und in einem mit der Ausrüstung eines Benutzers kompatiblen Format zu dem Endbenutzer übertragen.
  • Es sind verschiedene Paketvermittlungsprotokolle erhältlich. Diese Protokolle unterscheiden sich hinsichtlich der Effizienz und der Zuverlässigkeit. Fachleute sind beispielsweise mit der TCP/IP-Protokollfamilie vertraut, die zum Ausführen der Übertragung von Paketen über das Internet verwendet wird. Zwei der Protokolle innerhalb der TCP/IP- Familie sind beispielsweise TCP und UDP.
  • TCP ist ein zuverlässiges verbindungsorientiertes Protokoll, das die erforderliche Intelligenz aufweist, um eine erfolgreiche Übertragung zwischen sendenden und empfangenden Enden in dem Netzwerk zu bestätigen. Nach dem TCP- Protokoll wird jedes Paket in dessen Kopfteil mit einer Sequenznummer markiert, um es dem empfangenden Ende zu ermöglichen, die Pakete in der ursprünglichen Nachricht richtig wieder zusammenzusetzen. Das empfangende Ende wird dann typischerweise so konfiguriert, daß dieses den Empfang von Paketen bestätigt und das sendende Ende ausdrücklich auffordert, jegliche verlorengegangenen Pakete neu zu übertragen. UDP ist dagegen ein unzuverlässiges verbindungsfreies Protokoll, das ein Senden und Empfangen von Paketen erleichtert, jedoch keinerlei Intelligenz aufweist, um zu bestätigen, daß ein Paket dessen Ziel erfolgreich erreicht hat.
  • Es wurde herausgefunden, daß im Internet der Verlust ganzer Pakete mit einer Rate von über 20% auftritt, wenn das Netzwerk sehr überfüllt bzw. verstopft ist. Typischerweise geschieht dieser Paketverlust so, daß ein Paket zu einem Zeitpunkt verlorengeht. Gelegentlich können jedoch mehrere sequentielle Pakete in einer Reihe verlorengehen. In beiden Fällen erzeugt ein verbindungsorientiertes Protokoll, wie TCP, wie Fachleuten zustimmen werden, eine Verzögerung bei der Paketübertragung, weil dieses die erfolgreiche Übertragung bestätigen muß und die Neuübertragung dieser verlorengegangenen Pakete anfordern muß. Während diese Verzögerung bei der Übertragung reiner Datensignale (in der Art einer E-Mail-Nachricht) kein erhebliches Problem sein mag, kann diese die Übertragung von Echtzeit-Mediensignalen (wie digitalisierter Sprach-, Video- oder Audiosignale) in unannehmbarer Weise unterbrechen.
  • Carle u. a. beschreiben in der internationalen Veröffentlichung WO97/38549 ein Verfahren und eine Vorrichtung zur Fehlerkontrolle in einem im asynchronen Übertragungsmodus (ATM) arbeitenden Netzwerk, wobei es sich um ein schnelles paketvermitteltes Netzwerk handelt, bei dem als Zellen bezeichnete kurze Pakete fester Größe verwendet werden. Für jeden Rahmen von Datenzellen D&sub1; ... Dm wird unter Verwendung eines Doppelmatrix-Verschachtelungs-XOR-Schemas ein aus Redundanzzellen R&sub1; ... Rh bestehender Vorwärtsfehlercode erzeugt. Die Zellen jedes CPCS-PDU (Protokolldateneinheit der Common-Part-Convergence-Sublayer der ATM- Anpassungsschicht 5) werden so angeordnet, daß diese Zellen aufweisen, die Benutzerdaten für einen Rahmen i darstellen, und daß diese Zellen aufweisen, die den Vorwärtsfehlerkorrekturcode für einen Rahmen i - 1 darstellen.
  • Matsushita beschreibt in der Patentschrift US 5 608 738 ein Verfahren zum Bilden von m Vorwärtsfehlerkorrekturcode- Paketen aus n Datenpaketen unter Verwendung von einem oder mehreren Fehlerkorrekturrahmen als Zwischendatenstrukturen. Nachdem die m Vorwärtsfehlerkorrekturcode-Pakete erzeugt wurden, werden sie sequentiell mit den n Datenpaketen übertragen.
  • Daher besteht ein Bedarf an einem verbesserten System zum Reagieren auf Paketverlustfehler und zum Korrigieren von diesen, ohne erhebliche Übertragungsverzögerungen zu erzeugen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung sieht ein rechnerisch einfaches, jedoch leistungsfähiges System zum Behandeln eines Paketverlusts vor, der bei der Kommunikation von Echtzeit- Mediensignalen, wie digitalisierten Sprach-, Video- oder Audiosignalen, in einem paketvermittelten Netzwerk auftreten kann. Gemäß einem Aspekt leitet ein Codierer an dem sendenden Ende p Redundanzblöcke von jeder Gruppe von k Nutzblöcken ab und verkettet jeweils die Redundanzblöcke mit Nutzblöcken in der nächsten Gruppe von k Nutzblöcken. Gemäß einem weiteren Aspekt erzeugt die Erfindung für jedes von einer Reihe von Nutzpaketen einen Vorwärtsfehlerkorrekturcode, der durch Bilden der XOR-Summe einer vorgegebenen Anzahl vorhergehender Nutzpakete definiert wird, und hängt ihn an jedes von der Reihe von Nutzpaketen an. Auf diese Weise kann ein empfangendes Ende eine verlorengegangene Nutzlast aus den redundanten Fehlerkorrekturcodes extrahieren, die von nachfolgenden Paketen übertragen werden, und den Verlust mehrerer Pakete in einer Reihe korrigieren.
  • Vorteilhafterweise liegt die Größe des gemäß der vorliegenden Erfindung verwendeten Vorwärtsfehlerkorrekturcodes unabhängig von der Anzahl der durch dieses Korrekturschema wiederzugewinnenden Pakete in einer Reihe in der gleichen Größenordnung wie die Nutzlast selbst. Die vorliegende Erfindung erhöht nicht die Paketrate und kann deren Funktion ausführen, ohne daß in dem Übertragungsprozeß eine erhebliche Verzögerung herbeigeführt wird.
  • Diese und andere Vorteile der vorliegenden Erfindung werden Durchschnittsfachleuten beim Lesen der folgenden detaillierten Beschreibung unter Bezugnahme auf die beiliegende Zeichnung verständlich werden.
  • KURZBESCHREIBUNG DER ZEICHNUNG
  • Eine bevorzugte Ausführungsform der vorliegenden Erfindung wird hierin mit Bezug auf die Zeichnung beschrieben.
  • Fig. 1 zeigt einen in Nutzpakete PL[k] eingeteilten Nutzdatenstrom.
  • Fig. 2 zeigt einen gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung arbeitenden Codierer.
  • Fig. 3 zeigt ein gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung codiertes Paket.
  • Fig. 4 zeigt einen gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung arbeitenden Decodierer.
  • Fig. 5 zeigt einen gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung codierten Ausgangsdatenstrom, der Pakete der Form P[k] = {PL[k], FEC[k]} aufweist.
  • Fig. 6 zeigt mehrere Stufen eines gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung arbeitenden Codierers.
  • Fig. 7 zeigt ein gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung codiertes Paket.
  • Fig. 8 zeigt eine durch einen gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung arbeitenden Decodierer zusammengestellte bzw. kompilierte Verknüpfungsliste.
  • Fig. 9 zeigt die von einem gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung arbeitenden Decodierer ausgeführten Analyseschritte.
  • Fig. 10 listet die in Fig. 9 gezeigten Schritte auf.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
  • Die vorliegende Erfindung stellt ein verbessertes System zum Übertragen von im wesentlichen Echtzeit-Mediensignalen über einen unzuverlässigen digitalen Übertragungskanal bereit. Die Erfindung kann insbesondere zur Übertragung digitalisierter Video- oder Audiosignale (einschließlich beispielsweise Sprache) über das Internet verwendet werden. Bei der bevorzugten Ausführungsform verwendet die Erfindung ein rechnerisch einfaches Fehlerkorrekturschema, das das Wiedergewinnen bzw. Wiederherstellen verlorener Datenpakete innerhalb spezifizierter Grenzen ermöglicht, während der Vorteil erzielt wird, daß die Übertragungszeit nur um eine sehr geringe Verzögerung verlängert wird.
  • Zu Erläuterungszwecken wird in der folgenden Beschreibung angenommen, daß ein Audio- oder Videosignal in einen digitalen Datenstrom umgewandelt worden ist und in einem Netzwerk von einem ersten Knoten zu einem zweiten Knoten zu übertragen ist. Es sei bemerkt, daß die Erfindung natürlich nicht auf die Verwendung in einer traditionellen Netzwerkkonfiguration beschränkt ist, sondern daß diese sich auf jeden beliebigen Kommunikationsweg erstrecken kann, über den eine Sequenz von Paketen übertragen wird, wobei dies beispielsweise einen direkten Weg einschließt. Bei der bevorzugten Ausführungsform muß das fragliche Signal jedoch zwischen Knoten eines Netzwerks, wie bspw. das Internet, übertragen werden.
  • In der Beschreibung wird weiterhin beispielhaft angenommen, daß der digitale Datenstrom oder die Nutzlast in eine Sequenz von Rahmen oder Nutzpaketen PL[1], PL[2], PL[3], PL[4], PL[5], PL[6], ..., PL[k] eingeteilt worden ist. Ein in diese Pakete eingeteilter Quellendatenstrom ist bspw. in Fig. 1 dargestellt. Bei diesem Beispiel besteht jedes dieser Nutzpakete aus einer festgelegten Anzahl von Bytes oder Bits und stellt vorzugsweise einen Abschnitt eines über ein Netzwerk zu übertragenden Signals dar.
  • In dieser Beschreibung wird zusätzlich angenommen, daß die Pakete in einem Netzwerk nach einem Paketvermittlungsprotokoll übertragen werden, bei dem ein bitweises oder anderes hochauflösendes Prüfschema, wie eine Prüfsumme oder ein Paritätsbit, eingesetzt wird. Es wird daher angenommen, daß eine Technik vorhanden ist, um auf den Verlust eines gewissen Teils eines erfolgreich übertragenen Pakets zu reagieren. Es bleibt jedoch das Problem, wie der Verlust von einem oder mehreren ganzen Paketen zu korrigieren ist.
  • Wie vorstehend in dem Abschnitt zum Hintergrund erörtert wurde, bietet das TCP-Protokoll ein Verfahren zum Reagieren auf einen Verlust von Paketen in einem digitalen Übertragungsnetzwerk. Nach dem TCP kann der Empfangsknoten so konfiguriert werden, daß dieser den Empfang von Paketen bestätigt und den Sendeknoten ausdrücklich auffordert, alle verlorengegangenen Pakete erneut zu übertragen. Dieses Anforderungs- und Neuübertragungssystem ist im allgemeinen genau. Wie jedoch vorstehend erwähnt wurde, ist das System für Anwendungen in Zusammenhang mit Echtzeit-Medienübertragungen nicht gut geeignet, weil die Übertragung solcher Signale sehr empfindlich für die durch Neuübertragungsanforderungen erzeugte Verzögerung ist.
  • Eher als bei einer Verwendung eines Anforderungs- und Neuübertragungssystems kann eine höhere Effizienz der Paketverlustkorrektur durch Übertragen eines Korrekturcodes einer bestimmten Art gleichzeitig mit den Nutzdaten erreicht werden, wodurch dem Empfangsende ausreichend Informationen zum Wiedergewinnen verlorengegangener Pakete gegeben werden. Zu diesem Zweck sind mehrere Fehlerkorrekturcodemechanismen verfügbar. Diese Mechanismen schließen bspw. eine Verschachtelung und eine Blockcodierung ein.
  • Eine Verschachtelung wird üblicherweise bei drahtlosen Kommunikationen verwendet. Diese stellt ein wirksames Verfahren zum Bekämpfen von Fehler-Bursts bzw. Fehlerbündel dar, die auf einem Überblendungskanal auftreten. Eine Verschachtelung erfordert gewöhnlich ein Ausbreiten der Bits jedes Codeworts (oder jedes Nutzpakets) weg voneinander, so daß bei diesen eine unabhängige Überblendung auftritt und die ursprünglichen Daten leichter wiedergewonnen werden können.
  • Eine Blockcodierung erfordert wiederum ein Abbilden eines Rahmens binärer Quellendaten in einen codierten Datenblock, der einen Satz redundanter Paritätssymbole aufweist. Nach der herkömmlichen Terminologie wandelt ein Blockcodierer eine Gruppe von k Nutzeinheiten (in der Art von Bytes oder Bits) typischerweise in eine größere Gruppe von n Einheiten um, indem dieser der Gruppe p = n - k Paritätseinheiten oder Vorwärtsfehlerkorrekturcodes (FEC-Codes) hinzufügt oder an diese anhängt. Jedes Paritätspaket wird auf der Grundlage aller oder einiger Untersätze bzw. Untermengen der k Nutzeinheiten durch eine vorgegebene Codierungstechnik erzeugt. Eine der einfachsten Formen eines Blockcodes ist ein Wiederholungscode, bei dem die binären Quellendaten als ein Satz von Paritätsbits wiederholt werden. Einer der beliebteren, jedoch komplexen Blockcodes ist durch die Reed-Solomon-(RS)-Codeklasse über dem 2&sup8;-Galoisschen Feld gegeben. Diese Codes weisen eine optimale Fähigkeit zum Korrigieren gelöschter Bytes auf. Falls 8 Bytes beispielsweise mit 3 Paritätsbytes (insgesamt 11 Bytes) geschützt werden, können beliebige drei Bytes verlorengehen, und die ursprünglichen 8 Bytes können dennoch wiedergewonnen werden.
  • Leider führt das Hinzufügen redundanter Paritätspakete jedoch zu einer erhöhten Komplexität und verzögert die Übertragung. In einem paketvermittelten Netzwerk leiten Router bzw. Leitrechner Pakete auf der Grundlage in den Paketköpfen enthaltener Informationen. Daher steht der von einem Paket-Router ausgeführte Arbeitsaufwand im allgemeinen in direkter Beziehung zu der Anzahl der geleiteten Pakete. Weil jedes Paket, unabhängig davon, ob es ein Nutzpaket oder ein Paritätspaket ist, seinen eigenen Kopf aufweist, erhöht eine Erhöhung der Paketrate folglich die Belastung von Netzwerk-Routern und könnte die Verzögerungszeit verlängern oder theoretisch den Ausfall eines Netzwerks hervorrufen.
  • Ein Hinzufügen getrennter Paritätspakete zu der Übertragungssequenz ist eine besondere Betriebsmittelverschwendung, wenn dieses in Zusammenhang mit einigen der üblicheren Echtzeit-Medienübertragungsprotokollen erfolgt, weil viele der bestehenden Protokolle jedem Paket einen erheblichen Zusatz bzw. Overhead hinzufügt. Beispielsweise liefert der G.723.1-Sprachcodierer alle 30 Millisekunden 24 Nutzbytes, RTP/UDP/IP fügt jedem Nutzpaket jedoch einen 50- Byte-Kopf hinzu. Ein Paritätsblock, der für das gleiche Empfangsende bestimmt ist wie ein benachbarter Nutzblock, weist einen Kopf auf, der mit dem Kopf des Nutzblocks fast identisch ist. Das Paritätspaket benötigt jedoch weiterhin die vollen 44 Bytes an Overhead, was zu einer Bandbreitenverschwendung führt. Wie dieses Beispiel zeigt, sind herkömmliche Blockcodiertechniken daher nicht gut zum Korrigieren eines Paketverlusts bei Echtzeit-Medienübertragungen geeignet.
  • Zum Vermeiden einer Erhöhung der Paketrate besteht eine andere Technik zum Bereitstellen von Paritätsinformationen darin, redundante Paritätsinformationen an existierende Nutzpakete anzuhängen. Als ein Abkömmling bzw. Ableger herkömmlicher Wiederholungscodes kann der Übertragungsknoten beispielsweise jedem Nutzpaket redundante Kopien der vorhergehenden n Anzahl von Nutzpaketen hinzufügen. Auf diese Weise kann das Empfangsende leicht ein verlorengegangenes Paket PL[k] von einem der n folgenden Pakete PL[k + 1] ... PL[k + n] wiedergewinnen. Wenn beispielsweise n = 2 ist, werden die Nutzpakete PL[k - 1] und PL[k - 2] redundant an das Nutzpaket PL[k] angehängt und zusammen mit diesem übertragen, wodurch beispielsweise die folgenden Übertragungspakete P[k] bereitgestellt werden:
  • Falls bei diesem Schema ein Nutzpaket bei der Übertragung verlorengeht, kann das Empfangsende einfach eine redundante Kopie der Nutzlast aus einem der n folgenden Datenpakete herausziehen.
  • Durch Anhängen von n vorhergehenden Nutzpaketen an jedes aktuelle Datenpaket P[k] wird es möglich, n verlorengegangene Pakete in einer Reihe wiederzugewinnen, ohne eine Neuübertragung anfordern zu müssen. Weil weiter vorhergehende Pakete mit jedem aktuellen Paket verkettet werden, kann das Netzwerk eine höhere Paketverlustrate tolerieren. Weiterhin beeinflußt dieses Verfahren nicht die Paketrate oder die Leitrate, weil, wie vorstehend erwähnt wurde, die Leitrate in erster Linie die Kopfinformationen in einem gegebenen Paket statt die Größe jedes Pakets betrifft. Dieses Verfahren erhöht jedoch leider durch Verketten mehrerer Nutzpakete die Datenrate notwendigerweise und erheblich. Um beispielsweise zwei verlorengegangene Pakete in einer Reihe (n = 2) korrigieren zu können, verdreifacht dieses Verfahren nahezu die Größe jedes Pakets. Dieses Verfahren ist daher auch nicht wünschenswert.
  • Stattdessen sieht die vorliegende Erfindung vorteilhafterweise ein geeignetes und weniger kostspieliges Schema zum Korrigieren eines Paketverlusts vor, wobei die Übertragungszeit nur um eine sehr geringe Verzögerung erhöht wird. Das Verfahren verwendet vorzugsweise eine Codierungstechnik, bei der aktuellen Paketen zugeordnete Paritätsbits von künftigen Paketen getragen werden. Statt mehrere vorhergehende Nutzpakete mit jedem aktuellen Nutzpaket zu verketten (und die Datenrate damit stark zu vergrößern), erfordert die bevorzugte Ausführungsform der vorliegenden Erfindung das Verketten eines einzigen Vorwärtsfehlerkorrekturcodes (FEC-Codes) (Blockcodes oder Redundanzblocks) mit spezifischen Nutzpaketen oder mit jedem Nutzpaket in einer Art, die das Wiedergewinnen mehrerer verlorengegangener Pakete in einer Reihe ermöglicht.
  • 1. Verkettete Paritätsblöcke
  • Wenn gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung eine Sequenz von Nutzblöcken übertragen wird, werden jeweils k Nutzblöcke in der Sequenz durch einen Blockcodierer geführt, um p = n - k Vorwärtsfehlerkorrekturcodes (FEC-Codes) oder Redundanzblöcke zu erzeugen, wobei p ≤ k ist. (Wie das nachstehende Beispiel zeigt, könnte p = 1 sein, diese Beschreibung bezieht sich zu Erläuterungszwecken jedoch auf einen größeren Wert von p.) Diese p Redundanzblöcke werden dann jeweils mit den nächsten p übertragenen Nutzblöcken verkettet. Falls wiederum am Empfangsende ein Paket verlorengeht, kann die zugeordnete Nutzlast aus den von den geeigneten Paketen übertragenen Redundanzblöcken extrahiert bzw. gewonnen werden.
  • Die vorliegende Erfindung kann im wesentlichen jeden derzeit bekannten oder später entwickelten Blockcodierer verwenden, um die erforderlichen p Redundanzblöcke zu erzeugen. Natürlich kann die Auswahl eines Blockcodierers einschließlich der Auswahl der vom Codierer verwendeten (n, k)-Werte von einer Anzahl von Faktoren einschließlich der für die spezifizierte Anwendung erforderlichen Effizienz abhängen. Bei der bevorzugten Ausführungsform verwendet die Erfindung zur Übertragung von Echtzeit-Mediensignalen über das Internet die wohlbekannte Reed-Solomon-(RS)-Codeklasse über dem 2&sup8;-Galoisschen Feld. Diese auch als RS-Löschcodes bezeichneten Codes sind hinsichtlich ihrer Fähigkeit, gelöschte Bytes zu korrigieren, optimal. Beispielsweise können unter der Voraussetzung, daß 8 Bytes mit drei Paritätsbytes (insgesamt 11 Bytes) geschützt werden, beliebige drei Bytes verlorengehen und die ursprünglichen 8 Bytes noch wiedergewonnen werden.
  • In Fig. 2 ist als Beispiel ein erfindungsgemäß arbeitender Codierer 10 dargestellt. In dem gezeigten Beispiel kommt ein Strom von Paketen oder Nutzblöcken mit fester Länge an. Es sind die ersten sechs dieser Nutzblöcke, PL[1] bis PL[6], dargestellt. Für die Zwecke dieses Beispiels ist der erfindungsgemäß verwendete Codierer ein RS-Blockcodierer mit (n, k) Werten von (5, 3). Demgemäß leitet der Codierer für jeweils drei Nutzblöcke in der eingehenden Sequenz zwei FEC-Codes oder Redundanzblöcke FEC0 und FEC1 ab. Erfindungsgemäß hängt der Codierer diese Redundanzblöcke dann jeweils an die nächsten zwei Nutzblöcke an, die die ersten zwei Nutzblöcke in der nächsten Dreiergruppe sind.
  • Mit Bezug auf Fig. 2 sei bemerkt, daß der Codierer 10, wenn jeder der ersten drei Nutzblöcke PL[1], PL[2] und PL[3] ankommt, Kopien dieser Nutzblöcke in den Speicher schreibt, um diese beim Erzeugen der erforderlichen Redundanzblöcke zu verwenden. Der Codierer leitet dann jeden dieser drei Nutzblöcke zu einem Paketierer 12, der Kopfinformationen hinzufügt und die sich ergebenden Pakete P[1], P[2] und P[3] zur Übertragung zu dem Netzwerk 14 weiterleitet. (Zu Beispielszwecken sind die Kopfinformationen oder andere Overhead-Informationen, die in diesen ausgegebenen Paketen enthalten sind, in Fig. 2 nicht dargestellt.) Weil diese die ersten drei. Nutzblöcke sind, werden diese ohne hinzugefügte Redundanzblöcke übertragen.
  • Unter Verwendung der Kopien der Nutzblöcke PL[1], PL[2] und PL[3], die im Speicher gespeichert sind, leitet der Codierer zwei Redundanzblöcke, nämlich FEC0 und FEC1, ab, wie in Abschnitt 14 in Fig. 2 angegeben ist. Insbesondere bearbeitet der RS-Blockcodierer die Nutzsymbole symbolweise (beispielsweise byteweise), um entsprechende Bits der FEC- Symbole zu erzeugen. Das am weitesten links liegende Symbol von jedem der Nutzblöcke PL[1], PL[2] und PL[3] wird verwendet, um die am weitesten links liegenden Symbole der Redundanzblöcke abzuleiten, das nächste Symbol von jedem der Nutzblöcke PL[1], PL[2] und PL[3] wird verwendet, um die nächstgelegenen Symbole der Redundanzblöcke abzuleiten, usw. Dadurch ist die Größe der erfindungsgemäß verwendeten Redundanzblöcke in der gleichen Ordnung bzw. Größenordnung wie diejenige der Nutzblöcke, mit denen diese verkettet werden.
  • Nach Erzeugen der Redundanzblöcke FEC0 und FEC1 löscht der Codierer vorzugsweise die Nutzblöcke PL[1], PL[2] und PL[3], schreibt Kopien der nächsten drei Nutzblöcke PL[4], PL[5] und PL[6] in einen Speicher und verkettet die zwei Redundanzblöcke, die von den Nutzblöcken PL[1], PL[2] und PL[3] abgeleitet wurden, mit jeweiligen Nutzblöcken PL[4] und PL[5]. Zum Fortsetzen einer stetigen Übertragung übergibt der Codierer dann die verketteten Symbole {PL[4], FEC0} und {PL[5], FEC1} sowie Nutzblock PL[6] an den Paketierer 12, um die Pakete P[4], P[5] und P[6] zur Übertragung an das Netzwerk zu erzeugen.
  • Wenngleich in Fig. 1 nur die ersten sechs Nutzblöcke und die sich ergebenden Pakete dargestellt sind, wird verständlich sein, daß dieser Prozeß fortgesetzt wird, solange ein Nutzstrom weiterhin an dem Codierer ankommt. Demgemäß weisen die ersten zwei Pakete in jeder Gruppe von drei zu dem Netzwerk übertragenen Paketen bei Verwendung eines Blockcodierers mit (n, k) Werten von (5, 3) jeweils vorzugsweise einen von den Nutzblöcken in den vorhergehenden drei Paketen abgeleiteten Redundanzblock auf.
  • Es wird natürlich auch verständlich sein, daß die vorliegende Erfindung nicht darauf beschränkt ist, die Redundanzblöcke spezifisch an die nächsten Nutzpakete anzuhängen, die der Gruppe folgen, von der die Redundanzblöcke abgeleitet worden sind, sondern daß auch andere Anordnungen verwendet werden können. Beispielsweise könnten bei Verwendung eines (5, 3)-Blockcodierers, wie vorstehend erörtert wurde, die zwei von den Nutzblöcken PL[i], PL[i + 1] und PL[i + 2] abgeleiteten Redundanzblöcke FEC0 und FEC1 jeweils regelmäßig mit PL[i + 4] und PL[i + 5] statt mit PL[i + 3] und PL[i + 4] verkettet werden.
  • Da ein gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung arbeitender Codierer ein RS-Blockcodierer ist, wird gemäß der Erfindung angenommen, daß die kombinierten Nutzblöcke alle die gleiche Länge (beispielsweise die gleiche Anzahl von Bits) aufweisen. Bei einer geringfügigen Anpassung funktioniert die Erfindung jedoch genauso gut in einem Netzwerk von Paketen mit variabler Länge (und/oder von Paketen mit fester Länge). Bei Nutzblöcken verschiedener Längen wird gemäß der Erfindung erwogen, die kürzeren Nutzblöcke in jeder Gruppe von k Nutzblöcken (im vorstehenden Beispiel jeweils drei Nutzblöcke) mit Nullen aufzufüllen, so daß alle k Blöcke die gleiche Länge aufweisen. Falls bei einem (5, 3)-Blockcodierer beispielsweise die ersten zwei von drei eingehenden Nutzblöcken 16 Bits lang sind, der dritte jedoch 24 Bits lang ist, füllt der Codierer die ersten zwei Blöcke mit 8 Nullbits auf, so daß alle drei Blöcke 24 Bits lang sind. Der Codierer leitet dann die erforderlichen Redundanzblöcke FEC0 und FEC1 ab, von denen jeder in diesem Beispiel auch 24 Bits lang ist.
  • Um Bandbreite zu sparen, entfernt der erfindungsgemäße Codierer dann vorzugsweise jegliche eingefüllten Nullen aus den Nutzblöcken, bevor die Blöcke zum Paketieren und zur Übertragung zu dem Paketierer weitergeleitet werden. Um das Wiedergewinnen verlorengegangener Pakete (also das Decodieren) an dem Empfangsende zu erleichtern, verkettet der Codierer jedoch gleichzeitig vorzugsweise mit jedem Nutzblock einen Hinweis dazu, wie lang der Nutzblock für das Decodieren sein muß. Falls zusätzlich ein Redundanzblock in ein Paket aufzunehmen ist, nimmt der erfindungsgemäße Codierer vorzugsweise in dem verketteten Symbol einen Hinweis auf, wie lang der Redundanzblock ist, um anzugeben bzw. anzuzeigen, wo der Redundanzblock endet. Demgemäß fügt der Codierer im vorstehenden Beispiel dem Symbol bevorzugt beispielsweise Zusatzbits hinzu, die angeben, daß der Nutzblock zum Decodieren 24 Bits lang sein muß, und der Codierer fügt dem Symbol Zusatzbits hinzu, die angeben, daß der Redundanzblock 24 Bits lang ist.
  • Folglich weist ein Paket, das erfindungsgemäß übertragen wird, zum Erleichtern des Decodierens gemäß der bevorzugten Ausführungsform vorzugsweise Angaben der Sequenznummer oder der Paketnummer, der (n, k)-Werte, der Nutzlast/Daten- Länge, des Nutzlast/Daten-Blocks, der Redundanzblocklänge (falls vorhanden) und eines Redundanzblocks (falls vorhanden) auf. In Fig. 3 ist ein Beispiel eines diese Informationen enthaltenden Pakets dargestellt, wobei der Codierer einen Blockcodierer unter Verwendung von (n, k)-Werten (6, 5) (d. h. p = 1) verwendet und wobei ein Redundanzblock (FEC) mit einem Nutzblock verkettet worden ist. Es wird verständlich sein, daß die (n, k)-Werte alternativ vorab vereinbart werden könnten, so daß die Werte von n und k nicht in jeden Paketkopf aufgenommen werden müssen.
  • In den meisten Fällen werden die gemäß der vorliegenden Erfindung codierten Informationspakete von einem sendenden Ende zu einem empfangenden Ende erfolgreich über ein Netzwerk übertragen. Wie vorstehend erörtert wurde, kann unterwegs jedoch eine Anzahl dieser Pakete verlorengehen und nie zu dem empfangenden Ende gelangen. Im Internet ist es beispielsweise normal, daß 3% bis 5% und sogar bis zu 20% der Pakete verlorengehen. Daher sollte an dem empfangenden Ende ein Decodierer vorhanden sein, um fehlende Pakete wiederzugewinnen.
  • In Fig. 4 ist ein Decodierer 20 dargestellt, der gemäß einer bevorzugten Ausführungsform der Erfindung arbeitet. Wie in Fig. 4 dargestellt ist, kommt ein Strom von Paketen an dem empfangenden Ende an. Diese Pakete kommen wie dargestellt in sequentieller Reihenfolge an. Es wird jedoch verständlich sein, daß die vorliegende Erfindung nicht auf eine sequentielle Paketübertragung beschränkt ist. Vielmehr können diese Pakete abhängig vom verwendeten Paketvermittlungsprotokoll in sequentieller Reihenfolge oder außerhalb der Reihenfolge ankommen. Ein Paketvermittlungsprotokoll, wie beispielsweise ATM, überträgt Pakete sequentiell. Bei anderen Übertragungssystemen könnten jedoch sequentiell numerierte Pakete auf andere Weise durch ein Netzwerk geleitet werden und daher nicht in deren ursprünglicher Sequenz an dem empfangenden Ende ankommen.
  • Wie in dem Beispiel aus Fig. 4 dargestellt ist, sind alle Pakete P[1] bis P[6] mit Ausnahme des Pakets P[3] erfolgreich an dem empfangenden Ende angekommen. Gemäß der vorliegenden Erfindung wird jedes dieser Pakete durch einen Entpaketierer 22 analysiert bzw. untergliedert, um Nutz- oder Redundanzblöcke von Paketkopfinformationen zu entfernen. Jene Nutzblöcke, die erfolgreich angekommen sind, werden vorzugsweise direkt zu einem dynamischen Puffer 24 weitergeleitet, der dazu dient, die Nutzblöcke in die richtige Sequenz zum Empfang durch einen Endbenutzer zu bringen.
  • Zusätzlich werden die analysierten Nutzblöcke und Redundanzblöcke nach Bedarf in dem Speicher gespeichert, wobei der Speicherplatz vorzugsweise entsprechend der Nutzlänge und der Redundanzlänge zugewiesen wird, die im Paket angegeben waren. Zum Erleichtern des Decodierens und der Wiedergewinnung verlorengegangener Pakete kann die Anzahl der in dem Speicher gespeicherten Blöcke von den (n, k)-Werten des ursprünglich für das Codieren verwendeten Blockcodierers abhängen. In dem dargestellten Beispiel fehlt das Paket P[3] (und daher der Nutzblock PL[3]). Weiterhin sei angenommen, daß die (n, k)-Werte des Codierers (5, 3) sind. Dementsprechend speichert der Decodierer 20 in einem Speicher mindestens Nutzblöcke PL[1] und PL[2] und Redundanzblöcke FEC0 und FEC1. Ein Decodierer 20 braucht in diesem Beispiel nicht Nutzblöcke PL[4], PL[5] und PL[6] in einem Speicher speichern, weil in dieser Dreiergruppe (k) keine Nutzlast fehlt. Dennoch sind zum Darstellen des Zusammenhangs Pakete P[4], P[5] und P[6] in dem Decodierer dargestellt.
  • Bei der bevorzugten Ausführungsform empfängt jeder Zeitdecodierer 20 neue Daten und bestimmt, ob die neuen Daten dabei helfen können, fehlende Informationen wiederzugewinnen. Demgemäß erkennt der Decodierer 20 in dem in Fig. 4 dargestellten Beispiel, nachdem dieser Nutzblöcke PL[1], PL[2] und PL[4] und einen Redundanzblock FEC0 (der mit Nutzblock PL[4] übertragen wurde) empfangen hat, daß Nutzblock PL[3] fehlt. Wenn der in diesem Beispiel verwendete (5, 3)-RS-Blockcodierer gegeben ist, kann der Decodierer 20 den fehlenden Nutzblock PL[3] wiedergewinnen. Insbesondere kann der Decodierer 20 einen (5, 3)-RS-Decodierer verwenden, um bei gegebenem PL[1], PL[2] und FEC0 PL[3] abzuleiten.
  • Sobald der Decodierer 20 den fehlenden Nutzblock PL[3] wiedergewonnen hat, übergibt dieser PL[3] an den dynamischen Puffer 24. Der dynamische Puffer 24 ordnet PL[3] wiederum in sequentieller Reihenfolge zwischen Nutzblöcke PL[2] und PL[4] an und leitet die geordnete Nutzlast zu dem Endbenutzer weiter.
  • Wie Fachleute in dem gezeigten Beispiel anhand des vorstehend Erwähnten verstehen werden, ist der RS- Blockdecodierer, wenn beliebige zwei von drei sequentiellen Nutzblöcken verlorengehen, in der Lage, die verlorengegangenen Daten wiederzugewinnen, solange der erforderliche Redundanzblock ankommt (die erforderlichen Redundanzblöcke ankommen). Falls in dem Beispiel insbesondere bis zu zwei der Pakete P[1], P[2] und P[3] verlorengehen, kann der Decodierer 20 die verlorengegangene Nutzlast wiedergewinnen, solange die Pakete P[4] und P[5] und daher die Redundanzblöcke FEC0 und FEC1 erfolgreich ankommen. Es sei bemerkt, daß, wenn nur ein Paket P[1], P[2] oder P[3] verlorengeht, nur ein Paket P[4] oder P[5] ankommen muß, da ein FEC-Block ausreicht, um einen verlorengegangenen Datenblock wiederherzustellen.
  • Die vorliegende Erfindung ermöglicht demgemäß günstigerweise die Korrektur von Burstfehlern (dem Verlust mehrerer sequentieller Pakete in einer Reihe), solange die erforderlichen Redundanzblöcke erfolgreich ankommen. Es wird in dieser Hinsicht weiterhin daran gedacht, daß eine sogar noch robustere Lösung des Paketverlusts erreicht werden kann, indem die Redundanzblöcke oder Teile bzw. Abschnitte der Redundanzblöcke innerhalb der k Pakete, die diesen von dem Ort aus folgen, wo die Redundanzblöcke abgeleitet wurden, weit verteilt werden, statt daß die Redundanzblöcke in benachbarten Paketen angeordnet werden. Hierdurch kann es eine geringere Wahrscheinlichkeit geben, daß die Redundanzblöcke selbst infolge eines Burstfehlers verlorengehen.
  • Es ist, wie vorstehend erwähnt wurde, durch Auswählen der gewünschten (n, k)-Werte möglich, die Effizienz des von der vorliegenden Erfindung bereitgestellten Korrekturmechanismus zu ändern. Es wird in dieser Hinsicht verständlich sein, daß die Auswahl dieser Werte auf dem Gleichgewicht zwischen der Verzögerung und der Burst-Wiedergewinnung beruht. Wenn höhere p-Werte verwendet werden, ist der Decodierer in der Lage, mehr auf einmal verlorengegangene Pakete wiederherzustellen. Wenn höhere k-Werte verwendet werden, muß der Decodierer gleichzeitig länger warten, um verlorengegangene Pakete wiederherzustellen, was, wie vorstehend erklärt wurde, für die Übertragung von Echtzeit-Mediensignalen, wie Sprachsignalen, Videosignalen oder Audiosignalen, unerwünscht ist.
  • Beispielsweise leitet ein Codierer unter Verwendung der (n, k)-Werte (10, 9) einen Redundanzblock von jeweils neun Nutzblöcken ab und nimmt diesen Redundanzblock in eines der nächsten neun Pakete auf. Falls dann bei der Übertragung genau eines von neun sequentiellen Paketen verlorengeht, kann die verlorengegangene Nutzlast, wie vorstehend beschrieben, wiederhergestellt werden. Falls jedoch mehr als eines von neun Paketen bei der Übertragung verlorengeht, ermöglicht der eine redundante Block nicht die Wiedergewinnung aller verlorengegangenen Pakete.
  • Bei Verwendung der (n, k)-Werte (10, 8) erzeugt der Codierer gemäß der bevorzugten Ausführungsform stattdessen zwei RS-codierte Redundanzblöcke von jeweils acht Nutzblöcken und nimmt diese Redundanzblöcke in zwei der nächsten acht Nutzblöcke auf. Es ist mit dieser Einstellung erfindungsgemäß möglich, bis zu zwei beliebige von acht sequentiellen Paketen zu verlieren und diese verlorengegangenen Pakete unter Verwendung der zwei RS-codierten Redundanzblöcke wiederzugewinnen.
  • Für Übertragungen codierter Sprachsignale über das Internet ist ein RS-Codierer unter Verwendung der (n, k)-Werte (4, 3) bevorzugt. Mit diesen Werten kann das Übertragungssystem einen Verlust von einem von jeweils vier Paketen überstehen, was einer Verlustrate von 25% entspricht.
  • Dagegen ist für Übertragungen codierter Videosignale über das Internet ein RS-Codierer unter Verwendung der (n, k)- Werte (18, 9) bevorzugt. Diese Werte stellen neun Redundanzblöcke bereit und ermöglichen daher die Wiedergewinnung bzw. Wiederherstellung bei einem Verlust von neun von jeweils achtzehn Paketen. Diese (n, k)-Werte funktionieren besonders gut in Zusammenhang mit dem H.263- Videocodierungsstandard mit niedriger Bitrate, der gegenwärtig von der International Telecommunications Union empfohlen wird, weil der H.263-Standard ein Einteilen eines einzigen Videorahmens in 9 Stücke oder Pakete fordert. Daher könnte jeder Videorahmen erfindungsgemäß getrennt korrigiert werden, solange der nächste Videorahmen vollständig ankommt.
  • Wenngleich ein gemäß der vorliegenden Erfindung arbeitender Codierer oder Decodierer eine von einer Vielzahl von Formen (wie bspw. Hardware, Software oder Firmware) annehmen kann, werden sowohl die Codierungs- als auch die Decodierungsfunktionen vorzugsweise von einem Computerprozessor ausgeführt, der mit einem Satz von Maschinensprachebefehlen arbeitet, die in einem Speicher gespeichert sind.
  • Wie vorstehend erläutert, bietet die vorliegende Erfindung einen rechnerisch einfachen Mechanismus zum Codieren und Decodieren einer Folge bzw. Sequenz von Paketen zum Wiedergewinnen bzw. Wiederherstellen verlorengegangener Pakete. Die Erfindung erreicht diese Funktion vorteilhafterweise ohne ein Erhöhen der Paketrate und ohne ein erhebliches Erhöhen der Datenrate der Übertragung über den zu spezifizierten Paketen hinzugefügten einzigen FEC-Block (und einen trivialen Betrag eines anderen Overheads) hinaus. Wenn der Wert von p erhöht wird, ermöglicht die vorliegende Erfindung günstigerweise die Wiedergewinnung nach größeren Burstfehlern. Die vorliegende Erfindung bietet demgemäß einen leistungsfähigen Mechanismus zum Verringern der Wirkung von Paketverlusten.
  • 2. Verkettete XOR-Paritätsblöcke
  • Gemäß einer anderen bevorzugten Ausführungsform der vorliegenden Erfindung wird ein einziger FEC-Block an jedes Nutzpaket angehängt. Dieser einzige FEC-Block weist in etwa die gleiche Größe auf wie das Nutzpaket und wird berechnet, indem das XOR-(Exklusiv-Oder bzw. )-Produkt einer vorgegebenen Anzahl w vorhergehender Nutzpakete gebildet wird, wobei w vorzugsweise größer als 1 ist. Falls ein Paket verlorengeht, kann die zugeordnete Nutzlast wiederum an dem empfangenden Ende aus der XOR-Summe extrahiert werden, die von einem oder mehreren nachfolgenden Datenpaketen getragen wird.
  • Im allgemeinen erfordert die vorliegende Erfindung daher das Einrichten eines Vorwärtsfehlerkorrekturcodes FEC[k] für jedes Nutzpaket P[k], wobei FEC[k] = PL[k - 1] PL[k - 2] , ..., PL[k - w] ist und wobei w eine positive ganze Zahl ist, die im allgemeinen größer als 1 ist. Dieses FEC[k] wird dann auf die Nutzlast PL[j] gegeben, wobei j > k ist. Das sich ergebende Paket P [k] ist daher die Verkettung der Nutzlast und des FEC. P[k] = {PL[k], FEC[k]}. In Fig. 5 ist ein Datenstrom dargestellt, der eine Sequenz von Paketen enthält, die auf diese Weise mit ihren zugeordneten Vorwärtsfehlerkorrekturcodes verkettet sind.
  • Die vorgegebene Zahl w definiert ein Gleitfenster, über das der XOR-Vorgang ausgeführt wird, und diese definiert daher die Länge eines Burstfehlers oder eine Anzahl von verlorengegangenen Paketen in einer Reihe, von denen sich das System erholen kann. Als ein Blockcodierer, der jedem Datenpaket auf Grundlage der vorhergehenden w Datenpakete einen einzigen Redundanzblock hinzufügt, ist verständlich, daß die vorliegende Erfindung (n, k)-Werte von
  • k = w
  • und
  • n = k + 1
  • verwendet.
  • Falls bspw. demgemäß das Gleitfenster w = 5 ist, sind die (n, k)-Werte des XOR-Blockcodierers erfindungsgemäß (6, 5).
  • Durch wiederholtes Erzeugen von Blockcodes gemäß einem Gleitfenster über einer Sequenz von Paketen werden die Paketdaten in mehreren Blockcodes statt in nur einem einzigen Blockcode verwendet. Folglich sieht die vorliegende Erfindung eine Redundanz hoher Ordnung vor und ermöglicht die Wiedergewinnung mehrerer verlorengegangener Pakete in einer Reihe, wobei nur ein einziger Redundanzblock je Paket erforderlich ist.
  • Zum besseren Verständnis der Funktionsweise dieses Gleitfensters zeigt Fig. 6 mehrere Stufen eines gemäß einer bevorzugten Ausführungsform der Erfindung arbeitenden Codierers. In Fig. 6 ist angenommen, daß 10 Pakete (mit 1-10 numeriert) in einem Netzwerk zu übertragen sind und daß die Fenstergröße w = 3 ist. In der ersten dargestellten Stufe überdeckt das Fenster w Nutzpakete PL[1] - PL[3], so daß der Codierer FEC[4] = PL[1] PL[2] PL[3] berechnet. Der Codierer hängt dann diesen FEC[4]-Redundanzblock an ein Nutzpaket PL[4] an und gibt das sich ergebende Paket P[4] = {PL[4], FEC[4]} zur Übertragung an das empfangende Ende aus. Das Fenster w überdeckt in der nächsten dargestellten Stufe wiederum Nutzpakete P[2] - P[4], so daß der Codierer FEC[5] = PL[2] PL[3] PL[4] berechnet. Der Codierer hängt dann diesen FEC[5]-Redundanzblock an das Nutzpaket PL[5] an und gibt das sich ergebende Paket P[5] = {PL[5], FEC[5]} zur Übertragung an das empfangende Ende aus. Wie teilweise in der Figur dargestellt ist, wird dieser Prozeß fortgesetzt, solange die Folge von Nutzpaketen fortgesetzt wird.
  • Die Verwendung des XOR-Vorgangs nimmt an, daß die kombinierten Pakete die gleiche Länge (beispielsweise die gleiche Anzahl von Bits) aufweisen. Die vorliegende Erfindung funktioniert jedoch ebenso gut in einem Netzwerk von Paketen mit veränderlicher Länge. Wenn Pakete verschiedener Längen bereitgestellt werden, wird gemäß der Erfindung daran gedacht, die kürzeren Pakete mit Nullen aufzufüllen, so daß alle in einem einzigen XOR-Vorgang kombinierten Pakete sowie die sich ergebende XOR-Summe die Länge der längsten Einheit von diesen annehmen. Sobald der XOR-Codiervorgang abgeschlossen ist, werden die zusätzlichen Nullen von jedem aufgefüllten Paket fallengelassen, und das von seiner Füllung befreite Paket wird zur Übertragung auf das Netzwerk gegeben (zusammen mit einem Redundanzblock, der auf den vorhergehenden w Paketen beruht). Bei dieser Variation können zusätzliche Codes dem Kopf hinzugefügt werden, um die Längen der Datenblöcke und des Redundanzblocks anzugeben und dadurch das erfindungsgemäße Decodieren zu erleichtern.
  • Es sei weiterhin bemerkt, daß der gemäß der vorliegenden Erfindung betrachtete FEC natürlich nicht darauf beschränkt ist, daß dieser gleich der vorstehend beschriebenen XOR- Summe ist, sondern daß dieser nach Bedarf auch andere Modifikationen aufweisen kann. Die vorliegende Erfindung erstreckt sich beispielsweise auf die Verwendung eines FECs, der unter Verwendung einer XOR-Summe der vorhergehenden w Nutzpakete und durch dann erfolgendes Invertieren von einer oder mehreren vorgegebenen Ziffern oder durch zyklisches Verschieben des Codes oder des sich ergebenden Pakets berechnet wird. Weiterhin ist es verständlich, daß die vorstehende Gleichung nur zu Erläuterungszwecken dargelegt ist und daß die vorliegende Erfindung nicht notwendigerweise auf die Verwendung der XOR-Summe von 3 oder mehr (k - 1, k - 2, ..., k - w) vorhergehenden Nutzpaketen beschränkt ist, und daß sich die Erfindung beispielsweise auch auf die XOR- Summe nur der vorhergehenden zwei Nutzpakete erstrecken kann. Es sei weiterhin bemerkt, daß die in Fig. 1 dargestellte Sequenz nur als Beispiel dargestellt ist und daß sich die vorliegende Erfindung genauso auf die getrennte und unabhängige Übertragung von Paketen P[k] {PL[k], FEC[k]} durch ein paketvermitteltes Netzwerk erstrecken kann.
  • Als ein allgemeines Beispiel des gemäß der vorliegenden Erfindung vorgesehenen Codier- und Decodierprozesses wird nachfolgend die Struktur einer Reihe von einem Codierer erzeugter Nutzpakete P[k] bei einem gegebenen Nutzrahmen PF[k] und einem Fenster w = 3 erläutert:
  • Es sei angenommen, daß das Paket P[5] bei der Übertragung verlorengegangen ist. Gemäß der vorliegenden Erfindung kann ein Decodierer das Paket P[5] unter Verwendung des FEC der Pakete, in denen das Paket P[5] enthalten war, wieder erzeugen. Weil w = 3 ist, beruhen in diesem Fall die drei Pakete, die dem Paket P[5] folgen, jeweils teilweise auf dem Wert des Nutzpakets PL[5]. Folglich kann ein Nutzpaket PL[5] wiedergewonnen werden, indem beliebige der Gleichungen gelöst werden, die diese drei Pakete definieren. Beispielsweise ergibt sich unter Verwendung des Pakets P[8]
  • FEC[8] = PL[7] PL[6] PL[5]
  • und PL[5] = FEC[8] PL[7] PL[6].
  • Dieses Beispiel kann erweitert werden, um zu zeigen, daß die vorliegende Erfindung bei einem Fenster w = 3 das Wiedergewinnen von drei in einer Reihe verlorengegangenen Paketen ermöglicht. Es sei beispielsweise angenommen, daß die Pakete P[4], P[5] und P[6] verlorengegangen sind. Um die von diesen verlorengegangenen Paketen übertragene Nutzlast wiederzugewinnen, müssen die nachfolgenden drei Pakete P[7], P[8] und P[9] erfolgreich angekommen sein. Wenn dem empfangenden Ende diese drei Pakete bereitgestellt sind, kann dieses zuerst ein Nutzpaket PL[6] folgendermaßen aus FEC[9] extrahieren:
  • FEC[9] = PL[8] PL[8] PL[6]
  • und PL[6] = FEC[9] PL[8] PL[7].
  • Als nächstes kann das empfangende Ende ein Nutzpaket PL[5] folgendermaßen aus FEC[8] herausziehen:
  • FEC[8] = PL[7] PL[6] PL[5]
  • und PL[5] = FEC[8] PL [7] PL [6].
  • Schließlich kann das empfangende Ende ein Nutzpaket PL[4] folgendermaßen aus FEC[7] gewinnen:
  • FEC[7] = PL[6] PL[5] PL[4]
  • und PL[4] = FEC[7] PL[6] PL[5].
  • Vorstehend wurde ein einfacher Mechanismus zum Wiedergewinnen verlorengegangener Daten gemäß der vorliegenden Erfindung erläutert. Dieser Mechanismus funktioniert gut, wenn die übertragenen Pakete sequentiell ankommen, wie es bei der Übertragung von ATM-Zellen geschehen würde. Wenn Pakete sequentiell ankommen, kann ein verlorengegangenes Paket wiedergewonnen werden, sobald die nächsten w Pakete erfolgreich ankommen. Bei vielen Übertragungssystemen kommen die sequentiell numerierten Pakete, die in Reihenfolge über ein Netzwerk gesendet werden, jedoch nicht in ihrer ursprünglichen Sequenz an dem empfangenden Ende an.
  • Um eine robustere Wiedergewinnung verlorengegangener Pakete zu ermöglichen, arbeitet eine bevorzugte Ausführungsform der Erfindung vorzugsweise folgendermaßen. An dem sendenden Ende übersetzt ein Codierer eingehende Daten unter Verwendung des erfindungsgemäßen XOR-Codiermechanismus in Pakete. Wie vorstehend beschrieben wurde, verwendet dieser XOR-Codierer ein Gleitfenster w, so daß die n- und k-Werte des Blockcodierers (n = k + 1, k = w) sind. Jedes Paket weist vorzugsweise eine Angabe der Sequenznummer (Paketnummer), der (n, k)-Werte, eines Nutz/Daten-Blocks und eines Redundanzblocks auf. Um weiterhin möglichen Variationen der Paketlänge Rechnung zu tragen, weist jedes Paket vorzugsweise auch eine Angabe der Datenlänge und eine Angabe der Redundanzlänge auf. In Fig. 7 ist ein Beispiel eines diese Informationen enthaltenden Pakets dargestellt, wobei der Codierer ein Gleitfenster w von 4 (d. h. k = 4) verwendet.
  • An dem empfangenden Ende befindet sich ein Decodierer, um diese Pakete zu empfangen und jegliche verlorengegangenen Pakete wiederzugewinnen, die wiedergewonnen werden können. Gemäß der bevorzugten Ausführungsform der Erfindung speichert der Decodierer, wenn dieser ein Paket empfängt, das Paket in einem Speicher, zerlegt bzw. analysiert das Paket in dessen Komponenten und erzeugt eine "Blase" von Informationen (beispielsweise eine "c"-Struktur), die die Sequenznummer und Zeiger auf den Datenblock und den Redundanzblock in dem Paket enthält. Der Decodierer gibt die Blase dann durch Speichern eines Zeigers für die Blase in eine doppelt verknüpfte Liste. Weiterhin überträgt der Decodierer den Datenblock vorzugsweise zur Verwendung durch andere Elemente in dem Übertragungssystem stromabwärts.
  • Bei der bevorzugten Ausführungsform bestimmt der Decodierer jedesmal dann, wenn dieser neue Informationen empfängt und der Verknüpfungsliste eine Blase hinzufügt, ob die Informationen in der Blase bei der Wiedergewinnung fehlender Informationen helfen können. Als Beispiel ist in Fig. 8 eine Reihe von einem Sampledecodierer zusammengestellter bzw. kompilierter Blasen 2-17 dargestellt. Wie in Fig. 8 dargestellt ist, wird angenommen, daß Blasen 9 und 12 fehlen, daß der Decodierer jedoch bisher ausreichend Pakete empfangen hat, um die für Blasen 2-8, 10-11 und 13-17 erforderlichen Informationen bereitzustellen. Es wird nun angenommen, daß ein Paket 9 ankommt. Der Decodierer empfängt das Paket 9 und fügt eine Blase 9 in die Verknüpfungsliste ein, um eine in Fig. 9 dargestellte revidierte Verknüpfungsliste zu erhalten.
  • Da das Gleitfenster w in diesem Beispiel 4 ist (durch den in jedem empfangenen Paket enthaltenen Wert von k festgelegt), weiß der Decodierer, daß in einer geordneten Sequenz von Paketen jedes Paket durch eine XOR-Operation in Beziehung zu den vorhergehenden 4 Paketen sowie den folgenden 4 Paketen steht. Im vorliegenden Beispiel weiß der Decodierer daher, daß die von der Paketnummer 9 neu empfangenen Informationen dabei helfen können, verlorengegangene Daten in den Blasen 5-8 und 10-13 wiederzugewinnen, falls solche vorhanden sein sollten. Dieser Bereich kann als der relevante Bereich bezüglich der neu empfangenen Paketnummer 9 bezeichnet werden. Wenn dieser relevante Bereich bekannt ist, wird die Arbeit, die der Decodierer beim Empfangen eines neuen Pakets ausführen muß, um zu entscheiden, ob die Informationen in irgendeiner Weise helfen können, zweckmäßigerweise begrenzt.
  • Bei der bevorzugten Ausführungsform analysiert der Decodierer den relevanten Bereich (5-13 in diesem Beispiel) folgendermaßen. Der Decodierer beginnt an dem Ende des Bereichs unter Berücksichtigung der Blasen 9-13, die als ein Analysefenster bezeichnet werden können. In diesem Analysefenster bestimmt der Decodierer zuerst, ob in dem Bereich 9-12 genau ein Datenblock fehlt, den der Redundanzblock 13, der in der Verknüpfungsliste liegen muß, wiederzugewinnen helfen kann (durch die XOR-Operation). Falls in dem Bereich 9-12 mehr als ein Datenblock fehlt, weiß der Decodierer, daß er mit der XOR-Operation keine Daten in dem Analysefenster wiedergewinnen kann. In diesem Fall oder falls der Decodierer in dem Analysefenster keine fehlenden Daten findet, bewegt der Decodierer das Analysefenster um einen Schlitz bzw. Spalt und wiederholt diese Analyse, nun für das durch die Blasen 8-12 definierte Analysefenster. Der Decodierer setzt diesen Prozeß fort, bis dieser seine Analyse mit dem Oberteil des Analysefensters an dem Oberteil des relevanten Bereichs, der in diesem Beispiel die Blase 5 ist, abschließt.
  • Falls der Decodierer bestimmt, daß in einem gegebenen Analysefenster genau ein Datenblock fehlt, und wenn die letzte Blase in dem Analysefenster einen Redundanzblock enthält, dann kann der Decodierer die vorstehend erörterte XOR- Operation verwenden, um den fehlenden Datenblock wiederzugewinnen. Sobald er dies tut, empfängt er einen neuen Informationsbestandteil, nämlich den wiedergewonnenen Datenblock, was zu einem neuen relevanten Bereich führen sollte. Dadurch kann der Decodierer zu einer Blase mit einer höheren Nummer zurückspringen (also in der Verknüpfungsliste nach unten), wobei das Analysefenster zu einem Anfangspunkt mit einer höheren Nummer bewegt wird. Der Decodierer kann dann ein Bewegen des Analysefensters die Verknüpfungsliste hinauf fortsetzen, bis der Oberteil des Analysefensters den Oberteil des ursprünglichen relevanten Bereichs erreicht hat.
  • Sobald in diesem Beispiel das Analysefenster beispielsweise über den Blasen 9-13 liegt, kann der fehlende Datenblock 12 wiedergewonnen werden, indem die XOR-Summe von Datenblöcken 9, 10 und 11 und eines Redundanzblocks 13 gebildet wird. Der Decodierer weist daher die neu empfangenen Informationen des Datenblocks 12 auf, was zu einem neuen relevanten Bereich von 8-16 (d. h. 8-12 und 12-16) führt.
  • Folglich positioniert der Decodierer ein neues Analysefenster, um mit den Blasen 12-16 wieder zu beginnen und sich Blase für Blase nach oben zu bewegen, wie vorstehend erörtert wurde. Falls das Paket 15 beispielsweise noch nicht angekommen ist, Datenblöcke 12, 13 und 14 und ein Redundanzblock 16 jedoch angekommen sind, könnte der Decodierer den Datenblock 15 unter Verwendung der XOR-Operation berechnen.
  • Es wird verständlich sein, daß demgemäß zwei Fenster von Analyseschleifen an der Operation teilnehmen. Ein erstes Fenster der Analyseschleife oder einer "äußeren Schleife" arbeitet infolge des Empfangs des Datenblocks 9. Ein zweites Fenster der Analyseschleife oder einer "inneren Schleife" arbeitet infolge der Wiedergewinnung des Datenblocks 12. Die äußere Schleife ist dafür ausgelegt, ein Analysefenster die Verknüpfungsliste hinauf zu bewegen, bis der Decodierer seine Analyse der Blasen 5-9 abgeschlossen hat. Die innere Schleife ist verglichen damit dafür ausgelegt, ein Analysefenster die Verknüpfungsliste hinauf zu bewegen, bis der Decodierer seine Analyse der Blasen 8-12 abgeschlossen hat.
  • Um eine unnötige Wiederholung zu vermeiden, schließt ein gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung arbeitender Decodierer die innere Schleife ab und bewegt sich dann weiter die Verknüpfungsliste hinauf, um die äußere Schleife abzuschließen, ohne dorthin zurückzuspringen, wo dieser angefangen hat, bevor dieser die innere Schleife begonnen hat. Demgemäß sind in dem vorstehenden Beispiel die von dem Decodierer ausgeführten Schritte durch die Klammern in Fig. 9 und durch die Reihen in Fig. 10 dargestellt. Wie in diesen Figuren dargestellt ist, analysiert der Decodierer in Schritt 1 zuerst Blasen 9-13 und gewinnt den verlorengegangenen Datenblock 12 wieder. In Schritt 2 springt der Decodierer daher zu einem Analysefenster über Blasen 12-16, wo der Decodierer keine neuen Daten wiedergewinnt. In den Schritten 3 bis 6 bewegt der Decodierer das Analysefenster Blase für Blase die Verknüpfungsliste hinauf, bis dieser die innere Schleife bei Blasen 8-12 abgeschlossen hat, wobei dieser an jedem Schritt keine neuen Daten wiedergewinnt.
  • Als nächstes setzt der Decodierer statt des rekursiven Zurückkehrens zu der äußeren Schleife und des Wiederholens einer Analyse der Blasen 8-12 das Hinaufbewegen der Verknüpfungsliste von dort aus fort, wo dieser mit der inneren Schleife angefangen hat, wobei dieser die Blasen 7-11 in Schritt 7, Blasen 6-10 in Schritt 8 und Blasen 5-9 in Schritt 9 analysiert. In diesem Beispiel gewinnt der Decodierer auf dem Weg keine zusätzlichen Daten wieder. Nach Abschließen seiner Analyse der Blasen 5-9 ist die Analyse des Decodierers abgeschlossen, und der Decodierer wartet auf die Ankunft eines neuen Pakets, um mit einer weiteren Analyse zu beginnen.
  • Wenngleich ein gemäß der vorliegenden Erfindung arbeitender Codierer oder Decodierer irgendeine einer Vielzahl von Formen annehmen kann (wie bspw. Hardware, Software oder Firmware), werden sowohl die Codier- als auch die Decodierfunktionen vorzugsweise durch einen Computerprozessor oder Mikroprozessor ausgeführt, der mit einem Satz in einem Speicher gespeicherter Maschinensprachebefehlen arbeitet.
  • Der Computerprozessor und/oder die Maschinensprachebefehle, die die Codierfunktion erfindungsgemäß ausführen, können als ein erstes Segment einer Kommunikationsvorrichtung bezeichnet werden, und eine Vorrichtung, die die sich ergebenden codierten Pakete erfindungsgemäß überträgt, kann als ein zweites Segment der Kommunikationsvorrichtung bezeichnet werden. Der Computerprozessor und/oder die Maschinensprachebefehle, die ein verlorengegangenes Nutzpaket durch Extrahieren von Informationen aus anderen Paketen wieder erzeugen, können wiederum als ein drittes Segment der Kommunikationsvorrichtung bezeichnet werden. Es wird alternativ verständlich sein, daß die verschiedenen zum Verwirklichen der vorliegenden Erfindung erforderlichen Komponenten in andere Segmente einer Kommunikationsvorrichtung unterteilt werden können.
  • Wie vorhergehend erläutert wurde, sieht die vorliegende Erfindung einen rechnerisch einfachen Mechanismus zum Codieren und Decodieren einer Sequenz von Paketen zum Wiedergewinnen bzw. Widerherstellen verlorengegangener Pakete vor. Die Erfindung erreicht diese Funktion vorteilhafterweise ohne eine Erhöhung der Paketrate und ohne eine erhebliche Erhöhung der Datenrate der Übertragung über den zu jedem Nutzpaket hinzugefügten einzigen FEC-Block (und einen trivialen Betrag anderen Overheads) hinaus. Wenn die Fenstergröße w erhöht wird, ermöglicht die vorliegende Erfindung günstigerweise unter Voraussetzung einer erfolgreichen Übertragung und eines erfolgreichen Empfangs ausreichend benachbarter Datenblöcke die Wiedergewinnung nach größeren Burstfehlern. Die vorliegende Erfindung bietet folglich einen leistungsfähigen Mechanismus zum Verringern der Wirkung von Paketverlusten durch Erzeugen einer Redundanz hoher Ordnung durch die Verwendung eines Gleitfensters und eines wirksamen Vorwärtsfehlerkorrekturcodes, wie vorstehend beschrieben wurde.

Claims (34)

1. Verfahren zum Codieren von Paketen aus einer Sequenz bzw. Folge von Nutzblöcken, um eine Rückgewinnung bzw. Wiederherstellung von verlorenen Paketen in einem paketvermittelten Telekommunikationsnetzwerk zu ermöglichen, in dem Leitrechner bzw. Router Pakete basierend auf Informationen, die in den Paketköpfen enthalten sind, leiten, wobei die Sequenz von Nutzblöcken eine sequentielle Gruppe von k Nutzblöcken und eine nachfolgende sequentielle Gruppe von Nutzblöcken umfaßt, wobei das Verfahren gekennzeichnet ist durch:
Ableiten von p Redundanzblöcken von der sequentiellen Gruppe von k Nutzblöcken, und
Erzeugen von p Paketen durch einen Prozeß, der ein Kombinieren jedes der p Redundanzblöcke jeweils mit einem Nutzblock in der nachfolgenden sequentiellen Gruppe der Nutzblöcke umfaßt, wobei jedes der p Pakete einen Nutzblock und einen der p Redundanzblöcke enthält.
2. Verfahren nach Anspruch 1, bei dem der Schritt des Ableitens von p Redunzanblöcken die Anwendung eines Reed- Solomon-Blockcodierers umfaßt.
3. Verfahren nach Anspruch 1 oder 2, bei dem die nachfolgende sequentielle Gruppe von Nutzblöcken die k Nutzblöcke sind, die als nächste in der Reihe nach der sequentiellen Gruppe von k Nutzblöcken folgen.
4. Verfahren nach einem der vorstehenden Ansprüche, bei dem die Nutzblöcke kooperativ ein Echtzeit-Mediensignal repräsentieren, das aus einer Gruppe ausgewählt ist, die aus Ton- und Bildsignalen besteht.
5. Verfahren nach einem der vorstehenden Ansprüche, bei dem p = 1 ist.
6. Verfahren nach Anspruch 5, bei dem der Schritt des Ableitens eines Redundanzblockes von einer sequentiellen Gruppe von k Nutzblöcken den Schritt des Berechnens einer XOR-Summe von den k Nutzblöcken umfaßt.
7. Verfahren nach Anspruch 6, bei dem die nachfolgende sequentielle Gruppe von Nutzblöcken die p Nutzblöcke sind, die als nächstes in der Reihe nach der sequentiellen Gruppe von k Nutzblöcke folgen.
8. Verfahren nach einem der Ansprüche 1 bis 4, das weiterhin gekennzeichnet ist durch den Schritt des Übertragens der p Pakete in das Netzwerk, wobei die p Pakete der Reihe nach der Sequenz bzw. Reihenfolge der Nutzblöcke entsprechen.
9. Vorrichtung zum Codieren von Paketen aus einer Sequenz von Nutzblöcken, um eine Wiederherstellung bzw. Rückgewinnung von verlorenen Paketen in einem paketvermittelten Telekommunikationsnetzwerk zu ermöglichen, in dem Leitrechner bzw. Router Pakete basierend auf Informationen leiten, die in den Paketköpfen enthalten sind, wobei die Sequenz von Nutzblöcken eine sequentielle Gruppe von k Nutzblöcken und eine nachfolgende sequentielle Gruppe von Nutzblöcken enthält, und wobei die Vorrichtung einen Computerprozessor und einen Speicher aufweist, und die Vorrichtung gekennzeichnet ist durch:
einen ersten Satz von Maschinensprachenbefehlen, der in dem Speicher gespeichert ißt und durch den Prozessor zur Ableitung von p Redundanzblöcken von der sequentiellen Gruppe von k Nutzblöcken ausgeführt wird, und
einen zweiten Satz von Maschinensprachenbefehlen, der in dem Speicher gespeichert ist und durch den Prozessor zur Erzeugung von p Paketen durch einen Prozeß ausgeführt wird, der ein Kombinieren jedes der p Redundanzblöcke jeweils mit einem Nutzblock in der nachfolgenden sequentiellen Gruppe von Nutzblöcken umfaßt, wobei jedes der p Pakete einen Nutzblock und einen der p Redundanzblöcke enthält.
10. Vorrichtung nach Anspruch 9, bei der der erste Satz von Maschinensprachenbefehlen einen Reed-Solomon-Blockcodierer umfaßt.
11. Vorrichtung nach Anspruch 9 oder 10, bei der die nachfolgende sequentielle Gruppe von Nutzblöcken die k Nutzblöcke sind, die als nächste in der Reihe nach der sequentiellen Gruppe von k Nutzblöcken folgen.
12. Vorrichtung nach einem der Ansprüche 9 bis 11, bei der die Nutzblöcke kooperativ ein Echtzeitmediensignal repräsentieren, das aus einer Gruppe ausgewählt ist, die aus Ton- und Bildsignalen besteht.
13. Vorrichtung nach einem der Ansprüche 9 bis 12, bei der p = 1 ist.
14. Vorrichtung nach Anspruch 13, bei der der erste Satz von Maschinensprachenbefehlen einen Redundanzblock von einer sequentiellen Gruppe von k Nutzblöcken durch Berechnen einer XOR-Summe aus den k Nutzblöcken ableitet.
15. Vorrichtung nach Anspruch 14, bei der die nachfolgende sequentielle Gruppe von Nutzblöcken die p Nutzblöcke sind, die als nächste in der Reihe nach der sequentiellen Gruppe von k Nutzblöcken folgen.
16. Vorrichtung nach einem der Ansprüche 9 bis 12, die weiterhin gekennzeichnet ist durch einen dritten Satz von Maschinensprachenbefehlen, die in dem Speicher gespeichert sind und durch den Prozessor zum Übertragen der p Pakete in das Netzwerk ausgeführt werden, wobei die p Pakete der Reihe nach der Sequenz der Nutzblöcke entsprechen.
17. Verfahren zum Berechnen einer Nutzlast in einem paketvermittelten Telekommunikationsnetzwerk, in dem Leitrechner Pakete basierend auf Informationen leiten, die in den Paketköpfen enthalten sind, wobei die Nutzlast in eine Sequenz von Nutzblöcken, PL[k - w], ..., PL[k - 2], PL[k - 1], PL [k], PL[k + 1], ..., PL[k + u], unterteilt wird, wobei das Verfahren dadurch gekennzeichnet ist, daß:
für jeden Nutzblock PL[i] in der Sequenz von Nutzblöcken ein Vorwärtsfehlerkorrekturcode FEC[i] erzeugt wird, der die XOR-Summe einer vorbestimmten Anzahl von vorangegangenen Nutzblöcken umfaßt, und daß der Vorwärtsfehlerkorrekturcode FEC [i] dem Nut zblock PL [i] angehängt wird, wobei die vorbestimmte Anzahl größer als eins ist,
eine Sequenz von Paketen P[k], P [k + 1], ..., P [k + u] von einer ersten Vorrichtung in dem Netzwerk zum Empfang durch eine zweite Vorrichtung in dem Netzwerk übertragen wird, wobei jedes Paket P[i] in der Sequenz von Paketen einen Nutzblock PL[i] und einen Vorwärtsfehlercode FEC[i] enthält.
18. Verfahren nach Anspruch 17, bei dem, wenn ein Paket P[j] bei einer Übertragung verloren geht, die zweite Vorrichtung einen Nutzblock PL[j] durch einen Prozeß wiedererzeugt, der ein Extrahieren von Informationen aus einem oder mehr Paketen, die dem Paket P[j] folgen, umfaßt.
19. Verfahren nach Anspruch 18, bei dem die vorbestimmte bzw. vorgegebene Anzahl eine Länge eines Büschel- bzw. Burstfehlers definiert, von dem die zweite Vorrichtung die Nutzlast wiedergewinnen kann.
20. Verfahren nach Anspruch 19, bei dem die vorbestimmte Anzahl 2 ist.
21. Verfahren nach Anspruch 19, bei dem die vorbestimmte Anzahl 3 ist.
22. Verfahren nach einem der Ansprüche 17 bis 21, bei dem die Nutzlast ein Echtzeit-Mediensignal repräsentiert.
23. Verfahren nach Anspruch 22, bei dem die Nutzlast ein Sprachsignal repräsentiert.
24. Verfahren nach einem der Ansprüche 17 bis 23, das weiterhin gekennzeichnet ist durch die Verfahrensschritt in folgender Reihenfolge:
Auffüllen einer Vielzahl der Nutzblöcke, um eine Vielzahl von aufgefüllten Nutzblöcken zu erzeugen, die untereinander die gleiche Länge haben, und Erzeugen der Vorwärtsfehlerkorrekturcodes für die aufgefüllten Nutzblöcke.
25. Verfahren nach einem der Ansprüche 17 bis 24 das weiterhin gekennzeichnet ist durch den Schritt des Anwendens eines Gleitfensters entlang der Sequenz von Nutzblöcken und durch Erzeugen und Anhängen der Vorwärtsfehlerkorrekturcodes innerhalb des Gleitfensters.
26. Verfahren zum Wiederherstellen eines verlorenen Paketes in einer Sequenz von Paketen, die in einem paketvermittelten Telekommunikationsnetzwerk übertragen werden, in dem Leitrechner Pakete basierend auf Informationen leiten, die in den Paketköpfen enthalten sind, wobei jedes Paket in der Sequenz eine Sequenzzahl definiert und einen Nutzblock und einen Redundanzblock trägt, wobei das Verfahren gekennzeichnet ist durch:
(a) Empfangen eines eingehenden Paketes von der Sequenz aus Paketen,
(b) Einrichten eines Fensters zur Analyse beginnend mit dem eingehenden Paket und Verlängern bzw. Weitersenden der Sequenz, die dem eingehenden Paket folgt, für eine vorbestimmte Anzahl von Paketen, und
(c) wenn lediglich ein Nutzblock in dem Fenster zur Analyse nicht bis dahin empfangen wurde, Wiederherstellen des einen Nutzblockes durch Nehmen einer XOR-Summe von einer Vielzahl von Nutzblöcken innerhalb des Analysefensters.
27. Verfahren nach Anspruch 26, das weiterhin gekennzeichnet ist durch:
wenn alle der Nutzblöcke in dem Analysefenster empfangen wurden, oder wenn mehr als einer der Nutzblöcke in dem Analysefenster nicht empfangen wurde, Bewegen des Analysefensters zurück durch ein Paket, so daß das Analysefenster mit einem Paket der Sequenz vor dem eingehenden Paket ist und sich für die vorbestimmte Anzahl von Paketen des Paketes erstreckt, das dem einen Paket folgt, und Wiederholen des Schrittes (c) aus Anspruch 26.
28. Vorrichtung zum Übertragen einer Nutzlast in einem paketvermittelten Telekommunikationsnetzwerk, in dem Leitrechner Pakete basierend auf Informationen leiten, die in den Paketköpfen enthalten sind, wobei die Nutzlast in eine Sequenz von Nutzblöcken, PL[k - w], ..., PL[k - 2], PL[k - 1], PL[k], PL [k + 1], ..., PL [k + u], unterteilt ist, wobei die Vorrichtung einen Computerprozessor und einen Speicher aufweist, und wobei die Vorrichtung gekennzeichnet ist durch:
ein erstes Segment zum Erzeugen eines Vorwärtsfehlerkorrekturcodes FEC [i] für jeden Nutzblock PL [i] in der Sequenz mit der XOR-Summe aus einer vorbestimmten Anzahl von vorstehenden Nutzblöcken und zum Anhängen des Vorwärtsfehlerkorrekturcodes FEC[i] an den Nutzblock PL[i], wobei die vorbestimmte Anzahl größer als eins ist, und
ein zweites Segment zum Übertragen einer Sequenz von Paketen P[k], P [k + 1], ..., P [k + u] von einer ersten Vorrichtung in dem Netzwerk zum Empfangen durch eine zweite Vorrichtung in dem Netzwerk, wobei jedes Paket P[i] in der Sequenz von Paketen einen Nutzblock PL[i] und einen Vorwärtsfehlercode FEC[i] enthält.
29. Vorrichtung nach Anspruch 28, bei der das erste Segment einen Satz von Maschinensprachenbefehlen umfaßt, der in dem Speicher gespeichert ist und durch den Computerprozessor ausführbar ist.
30. Vorrichtung nach Anspruch 28 oder 29, die weiterhin gekennzeichnet ist durch ein drittes Segment, das durch die zweite Vorrichtung betätigt wird, zum Wiedererzeugen eines verlorenen Nutzblockes PL[j] durch einen Prozeß, der den Schritt des Extrahierens von Informationen aus einem oder mehr anderen Paketen in der Sequenz der Pakete umfaßt.
31. Vorrichtung nach Anspruch 30, bei der das dritte Segment einen Satz von Maschinensprachenbefehlen umfaßt, der in dem Speicher gespeichert ist und durch den Computerprozessor ausführbar ist.
32. Vorrichtung nach einem der Ansprüche 28 bis 31, bei der die vorbestimmte Anzahl eine maximale Anzahl von verlorenen Nutzblöcken in einer Reihe definiert, die wiederhergestellt werden können.
33. Vorrichtung nach einem der Ansprüche 28 bis 32, bei der die Nutzlast ein Echtzeit-Mediensignal repräsentiert.
34. Vorrichtung nach Anspruch 33, bei der die Nutzlast ein Sprachsignal repräsentiert.
DE69805849T 1997-12-12 1998-12-11 Ein vorwärtsfehlerkorrektionssystem für packetbasierte echtzeitmedien Expired - Lifetime DE69805849T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/989,616 US6145109A (en) 1997-12-12 1997-12-12 Forward error correction system for packet based real time media
US08/989,483 US5870412A (en) 1997-12-12 1997-12-12 Forward error correction system for packet based real time media
PCT/US1998/026421 WO1999030462A2 (en) 1997-12-12 1998-12-11 A forward error correction system for packet based real-time media

Publications (2)

Publication Number Publication Date
DE69805849D1 DE69805849D1 (de) 2002-07-11
DE69805849T2 true DE69805849T2 (de) 2003-01-23

Family

ID=27130645

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69805849T Expired - Lifetime DE69805849T2 (de) 1997-12-12 1998-12-11 Ein vorwärtsfehlerkorrektionssystem für packetbasierte echtzeitmedien

Country Status (7)

Country Link
US (1) US6487690B1 (de)
EP (1) EP1040611B1 (de)
AT (1) ATE218778T1 (de)
AU (1) AU3062899A (de)
CA (1) CA2313330C (de)
DE (1) DE69805849T2 (de)
WO (1) WO1999030462A2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10345438A1 (de) * 2003-09-30 2005-05-12 Siemens Ag Verfahren und Vorrichtung zum Dekodieren von mittels paketorientierten Datenübertragungsnetzen übertragenen kodierten Datenpaketen und Verfahren und Vorrichtung zum Kodieren und Dekodieren von über paketorientierte Datenübertragungsnetze zu übertragende Datenpaketen

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6581177B1 (en) * 1998-05-01 2003-06-17 Texas Instruments Incorporated Multi-access, collision-based communications
US6600750B1 (en) * 1999-03-19 2003-07-29 Cisco Technology, Inc. Email to fax processing when no secondary storage is available
KR100677070B1 (ko) * 1999-10-02 2007-02-01 삼성전자주식회사 무선 멀티미디어 통신에서의 비디오 비트스트림 데이터의 오류 제어방법 및 이를 위한 기록 매체
SG97934A1 (en) * 2000-09-13 2003-08-20 Mediaring Ltd Quality of transmission across packet-based networks
US7031308B2 (en) * 2000-10-30 2006-04-18 The Regents Of The University Of California Tree-based ordered multicasting method
US20050198379A1 (en) 2001-06-13 2005-09-08 Citrix Systems, Inc. Automatically reconnecting a client across reliable and persistent communication sessions
US20020199153A1 (en) * 2001-06-22 2002-12-26 Fall Thomas G. Sampling method for use with bursty communication channels
US7631242B2 (en) * 2001-06-22 2009-12-08 Broadcom Corporation System, method and computer program product for mitigating burst noise in a communications system
US6745364B2 (en) * 2001-06-28 2004-06-01 Microsoft Corporation Negotiated/dynamic error correction for streamed media
US20030023915A1 (en) * 2001-07-30 2003-01-30 Koninklijke Philips Electronics N.V. Forward error correction system and method for packet based communication systems
CA2417581C (en) * 2002-01-28 2008-04-01 Research In Motion Limited Multiple-processor wireless mobile communication device
US7661129B2 (en) 2002-02-26 2010-02-09 Citrix Systems, Inc. Secure traversal of network components
US7984157B2 (en) 2002-02-26 2011-07-19 Citrix Systems, Inc. Persistent and reliable session securely traversing network components using an encapsulating protocol
KR100458878B1 (ko) * 2002-05-03 2004-12-03 학교법인 경희대학교 Fec 코딩 방식에 기초한 가변길이 패킷 송수신 방법
DE10240669A1 (de) * 2002-09-04 2004-03-18 Wabco Gmbh & Co. Ohg Verfahren und Einrichtung zur Übertragung von Botschaften
US7047480B2 (en) * 2002-11-12 2006-05-16 Microsoft Corporation Matrix multiplication in a Galois field for forward error correction
US8705613B2 (en) * 2003-06-26 2014-04-22 Sony Corporation Adaptive joint source channel coding
KR20070007769A (ko) * 2003-10-29 2007-01-16 인터랙틱 홀딩스 엘엘시 에러 정정을 이용하는 높은 병렬 스위칭 시스템
DE10353974A1 (de) * 2003-11-19 2005-06-30 Siemens Ag Verfahren zur Übertragung von digitalen Informationspaketen in einem Datennetz
US8582640B2 (en) * 2003-12-16 2013-11-12 Sony Corporation Adaptive joint source channel coding
US7346129B2 (en) * 2004-02-25 2008-03-18 Broadcom Corporation Payload based channel estimation of a wireless channel
US7539187B2 (en) * 2004-07-07 2009-05-26 Qvidium Technologies, Inc. System and method for low-latency content-sensitive forward error correction
US7751324B2 (en) * 2004-11-19 2010-07-06 Nokia Corporation Packet stream arrangement in multimedia transmission
US20060262860A1 (en) * 2005-02-23 2006-11-23 Chou Jim C Macroblock adaptive frame/field coding architecture for scalable coding
US7397400B2 (en) * 2005-12-02 2008-07-08 Viasat, Inc. Variable length data encapsulation and encoding
WO2008013528A1 (en) * 2006-07-25 2008-01-31 Thomson Licensing Recovery from burst packet loss in internet protocol based wireless networks using staggercasting and cross-packet forward error correction
CN1937631B (zh) 2006-10-24 2010-12-08 杭州华三通信技术有限公司 用户数据报协议报文的处理方法及装置
US7706266B2 (en) 2007-03-12 2010-04-27 Citrix Systems, Inc. Systems and methods of providing proxy-based quality of service
CN101296055B (zh) * 2007-04-29 2013-01-09 华为技术有限公司 数据包收发方法及装置
AU2008303800A1 (en) * 2007-09-28 2009-04-02 Nec Europe Ltd. Method and system for transmitting data packets to multiple receivers
US8442070B1 (en) * 2008-02-01 2013-05-14 Hobnob, Inc. Fractional threshold encoding and aggregation
US8201056B2 (en) * 2008-02-19 2012-06-12 Nec Laboratories America, Inc. Anti-jamming piecewise coding method for parallel inference channels
US20100142522A1 (en) * 2008-12-04 2010-06-10 James Gardner Methods and apparatus for adaptive error correction in networks
US8228800B2 (en) 2009-02-03 2012-07-24 Microsoft Corporation Optimized transport protocol for delay-sensitive data
WO2010114526A1 (en) 2009-03-31 2010-10-07 Hewlett-Packard Development Company, L.P. System for recovering data from an unreadable tag
WO2010125266A2 (fr) * 2009-04-30 2010-11-04 Alcatel Lucent Procédé de transmission de données depuis une infrastructure d'un réseau de radiocommunication vers des équipements utilisateur, et équipements pour la mise en oeuvre du procédé
CN101902315B (zh) * 2009-06-01 2013-04-17 华为技术有限公司 基于前向纠错的重传方法、设备和通信系统
US9247454B2 (en) * 2010-12-23 2016-01-26 Intel Corporation Grouping small burst transmissions for downlink machine-to-machine communications
KR101922559B1 (ko) * 2011-10-13 2018-12-05 삼성전자주식회사 통신 시스템에서 순방향 에러 정정 패킷을 송수신하는 방법 및 장치
US20130275837A1 (en) * 2012-04-13 2013-10-17 Real Time Logic, Inc. Packet forward error correction
EP2720398B1 (de) * 2012-10-12 2016-09-21 Alcatel Lucent Mechanismus für Paket-FEC-Bandbreitenoptimierung
US9609086B2 (en) 2013-03-15 2017-03-28 International Business Machines Corporation Virtual machine mobility using OpenFlow
US9104643B2 (en) 2013-03-15 2015-08-11 International Business Machines Corporation OpenFlow controller master-slave initialization protocol
US9444748B2 (en) 2013-03-15 2016-09-13 International Business Machines Corporation Scalable flow and congestion control with OpenFlow
US9407560B2 (en) 2013-03-15 2016-08-02 International Business Machines Corporation Software defined network-based load balancing for physical and virtual networks
US9769074B2 (en) 2013-03-15 2017-09-19 International Business Machines Corporation Network per-flow rate limiting
US9118984B2 (en) 2013-03-15 2015-08-25 International Business Machines Corporation Control plane for integrated switch wavelength division multiplexing
US9596192B2 (en) 2013-03-15 2017-03-14 International Business Machines Corporation Reliable link layer for control links between network controllers and switches
US9455750B2 (en) 2014-07-28 2016-09-27 Qualcomm Incorporated Source block size selection
GB201503828D0 (en) * 2015-03-06 2015-04-22 Microsoft Technology Licensing Llc Redundancy scheme
US20170207905A1 (en) * 2016-01-14 2017-07-20 Qualcomm Incorporated Fly feedback
US20190279058A1 (en) * 2018-03-12 2019-09-12 Microsoft Technology Licensing, Llc Facilitating efficient reading of radio frequency identification tags
US10361715B1 (en) * 2018-06-04 2019-07-23 Amazon Technologies, Inc. Decompression circuit
CN113839736A (zh) * 2020-06-08 2021-12-24 华为技术有限公司 编码方法及装置
US11368251B1 (en) * 2020-12-28 2022-06-21 Aira Technologies, Inc. Convergent multi-bit feedback system
US20240333421A1 (en) * 2023-03-27 2024-10-03 Six Impossible Things Before Breakfast Limited Systems and Methods for Improving Asset Download Time Using Forward Error Correction

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5003535A (en) 1989-06-23 1991-03-26 At&T Bell Laboratories Packet synchronization utilizing a multi-length packet format including check sequences
US5115436A (en) 1990-05-04 1992-05-19 Bell Communications Research Forward error correction code system
US5428629A (en) 1990-11-01 1995-06-27 Motorola, Inc. Error check code recomputation method time independent of message length
US5389922A (en) 1993-04-13 1995-02-14 Hewlett-Packard Company Compression using small dictionaries with applications to network packets
JP2699824B2 (ja) 1993-09-28 1998-01-19 日本電気株式会社 可変レート伝送における伝送誤り訂正符号付加装置
JP2576776B2 (ja) * 1993-11-10 1997-01-29 日本電気株式会社 パケット伝送方法・パケット伝送装置
US5583562A (en) 1993-12-03 1996-12-10 Scientific-Atlanta, Inc. System and method for transmitting a plurality of digital services including imaging services
US5600663A (en) 1994-11-16 1997-02-04 Lucent Technologies Inc. Adaptive forward error correction system
US5617541A (en) 1994-12-21 1997-04-01 International Computer Science Institute System for packetizing data encoded corresponding to priority levels where reconstructed data corresponds to fractionalized priority level and received fractionalized packets
US5703887A (en) 1994-12-23 1997-12-30 General Instrument Corporation Of Delaware Synchronization and error detection in a packetized data stream
JP3614907B2 (ja) 1994-12-28 2005-01-26 株式会社東芝 データ再送制御方法及びデータ再送制御システム
US5699369A (en) 1995-03-29 1997-12-16 Network Systems Corporation Adaptive forward error correction system and method
EP0823153A4 (de) 1995-04-27 1999-10-20 Stevens Inst Technology Transportverfahren mit hoher integrität für zeitkritische multimedia-netzwerkanwendungen
US5828788A (en) 1995-06-29 1998-10-27 Thomson Multimedia, S.A. System for processing data in variable segments and with variable data resolution
WO1997038549A1 (en) * 1996-04-05 1997-10-16 Universität Karlsruhe (Th) Method and apparatus for forward error correction of transmitted digital signals in networks
US5831690A (en) 1996-12-06 1998-11-03 Rca Thomson Licensing Corporation Apparatus for formatting a packetized digital datastream suitable for conveying television information
US5983388A (en) 1997-08-25 1999-11-09 Analog Devices Forward error correction arrangement (FEC) for multipoint to single point communication systems
US5870412A (en) * 1997-12-12 1999-02-09 3Com Corporation Forward error correction system for packet based real time media
US6145109A (en) * 1997-12-12 2000-11-07 3Com Corporation Forward error correction system for packet based real time media

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10345438A1 (de) * 2003-09-30 2005-05-12 Siemens Ag Verfahren und Vorrichtung zum Dekodieren von mittels paketorientierten Datenübertragungsnetzen übertragenen kodierten Datenpaketen und Verfahren und Vorrichtung zum Kodieren und Dekodieren von über paketorientierte Datenübertragungsnetze zu übertragende Datenpaketen
DE10345438B4 (de) * 2003-09-30 2005-09-15 Siemens Ag Verfahren und Vorrichtung zum Dekodieren von mittels paketorientierten Datenübertragungsnetzen übertragenen kodierten Datenpaketen und Verfahren und Vorrichtung zum Kodieren und Dekodieren von über paketorientierte Datenübertragungsnetze zu übertragende Datenpaketen

Also Published As

Publication number Publication date
US6487690B1 (en) 2002-11-26
EP1040611B1 (de) 2002-06-05
ATE218778T1 (de) 2002-06-15
EP1040611A2 (de) 2000-10-04
WO1999030462A2 (en) 1999-06-17
CA2313330C (en) 2005-02-15
DE69805849D1 (de) 2002-07-11
AU3062899A (en) 1999-06-28
WO1999030462A3 (en) 1999-09-02
CA2313330A1 (en) 1999-06-17

Similar Documents

Publication Publication Date Title
DE69805849T2 (de) Ein vorwärtsfehlerkorrektionssystem für packetbasierte echtzeitmedien
DE10393682B4 (de) Verfahren zur Fehlerschutzcodierung und -decodierung von Nachrichten in einem Datenübertragungssystem mit Paketvermittlung
DE60123280T2 (de) Verfahren für multimediakommunikation über paketkanäle
DE69534833T2 (de) Schema für Fehlerkontrolle an der ATM-Adaptierungsschicht in ATM Netzwerken
DE60001210T2 (de) Verfahren und Vorrichtung zur Datenkomprimierung von Netzwerkdatenpaketen
DE60110303T2 (de) Verfahren und Vorrichtung zur Paketübertragung mit Paketenkopfkompression
DE60033184T2 (de) Verfahren und Vorrichtung zur Datenkomprimierung von Netzwerkdatenpaketen unter Verwendung von paketweisen Hash Tabellen
DE60022391T2 (de) System und verfahren zur erzielung einer robusten ip/udp/rtp-paketkopf-komprimierung in der gegenwart unzuverlässiger netze
DE60028399T2 (de) Robuste header-komprimierung bei paketbasierter kommunikation
DE69032581T2 (de) Übertragung von kodierten daten über nichtfunktionssichere netze
AT407686B (de) Digitales mobilkommunikationssystem sowie verfahren zur datenübertragung und sende/empfangs-vorrichtung in einem mobiltelefonnetz
DE19630343A1 (de) Verfahren, Vorrichtung und Paket-Übertragungssystem unter Verwendung einer Fehlerkorrektur von Datenpaketen
EP1258085B1 (de) Verfahren zum anpassen der einem turbo-codierer zuzuführenden datenblöcke und entsprechende kommunikationsvorrichtung
EP1303966B1 (de) Header-kompressionsverfahren für netzwerkprotokolle
CH694114A5 (de) Verfahren, Datenübertragungsvorrichtung und mobile Station zum Verringern der Rahmenfehlerrate bei Datenübertragung in Form von Datenrahmen.
DE60002884T2 (de) Verfahren und system zur datenempfangsquittierung
DE69434727T2 (de) Verfahren und Vorrichtung zur Transformation einer Serie von Datenpaketten mit Hilfe von Datenkompression
DE69329098T2 (de) Vorrichtung und verfahren zur überprüfung von nachrichten in paketform mit kopfende bestehend aus wegleitinformation und crc prüfsequenz
EP1175047B1 (de) Verfahren und Anordnung zum Schutz gegen Paketverlusten bei einer paketorientierten Datenübertragung
DE60037046T2 (de) Verfahren und Einrichtungen zur digitalen Datenübertragung
WO2006010689A1 (de) Codier- und decodierverfahren, sowie codier- und decodiervorrichtungen mit einem zweistufigen fehlerschutzverfahren
DE60014367T2 (de) Zeitschlitz aufteilung in einem tdma system
WO2001039522A2 (de) Verfahren zum betreiben eines mobilfunknetzes
DE10226394B4 (de) Verfahren zur Datenübertragung
DE60033910T2 (de) Drahtlose Übertragung von Paketen und von Datenbursts mittels Produkt-Kodes mit iterativer Dekodierung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: KUDLEK & GRUNERT PATENTANWAELTE PARTNERSCHAFT, 803

R082 Change of representative

Ref document number: 1040611

Country of ref document: EP

Representative=s name: BOEHMERT & BOEHMERT, 80336 MUENCHEN, DE