DE60127695T2 - Verfahren zur komprimierung von datenpaketen - Google Patents

Verfahren zur komprimierung von datenpaketen Download PDF

Info

Publication number
DE60127695T2
DE60127695T2 DE60127695T DE60127695T DE60127695T2 DE 60127695 T2 DE60127695 T2 DE 60127695T2 DE 60127695 T DE60127695 T DE 60127695T DE 60127695 T DE60127695 T DE 60127695T DE 60127695 T2 DE60127695 T2 DE 60127695T2
Authority
DE
Germany
Prior art keywords
group
compressed
subunits
groups
code
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
DE60127695T
Other languages
English (en)
Other versions
DE60127695D1 (de
Inventor
Richard Romsey PRICE
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.)
Roke Manor Research Ltd
Original Assignee
Roke Manor Research Ltd
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 GB0023766A external-priority patent/GB0023766D0/en
Application filed by Roke Manor Research Ltd filed Critical Roke Manor Research Ltd
Publication of DE60127695D1 publication Critical patent/DE60127695D1/de
Application granted granted Critical
Publication of DE60127695T2 publication Critical patent/DE60127695T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5603Access techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Time-Division Multiplex Systems (AREA)
  • Communication Control (AREA)

Description

  • In vielen digitalen Kommunikationssystemen werden Daten in Paketform übertragen. Diese Datenpakete enthalten vor Beginn der eigentlichen Daten einen Kopfteil („Header"). Dieser Header beinhaltet Informationen beispielsweise zu der Zieladresse des betreffenden Datenpakets, der Länge des Datenpakets und der Art der in dem Datenpaket enthaltenen Nutzdaten („Payload").
  • Der Header kann als ein einziges langes Zeichen betrachtet werden, welches aus einer Kette von Bits besteht.
  • Mobilfunkgestützte Telekommunikationsnetze und das Internet konvergieren im Hinblick auf ihre Funktionalitäten. Es ist wünschenswert, dass Mobiltelefone der dritten Generation Datenpakete aus dem Internet (IP oder ATM) direkt „verstehen", um nahtlose E-Mail-, Web-Browser- und Multimedia-Dienste für den mobilen Teilnehmer zu ermöglichen. Protokolle wie das IP (Internet-Protokoll) sind dafür ausgelegt, in Festnetzen zu laufen, in denen Bandbreite im Überfluss zur Verfügung steht, daher sind sie in der Mobiltelefonieumgebung relativ teuer. Bei Verwendung für den Transport von Sprache können die vermittlungstechnischen Daten („Overhead"), die aus der Verwendung des IP resultieren, bis zu 75 % der gesamten Netzkapazität beanspruchen, was für Mobilfunknetze nicht akzeptabel ist.
  • Eine Lösung für dieses Problem besteht darin, den IP-Header, unmittelbar bevor er die Luftschnittstelle passiert, zu komprimieren. Für diesen Zweck existiert eine Reihe von Komprimierungsschemata (Van Jacobson, CRTP etc.), die in unterschiedlicher Weise Kompromisse im Hinblick auf Effizienz, Flexibilität und Unkompliziertheit eingehen.
  • Das IBM Technical Disclosure Bulletin „JPEG Huffman Decoder", Bd. 36, Nr. 5, vom 1. Mai 1993, Seiten 455-458 – XP000409057, ISSN: 0018-8689, beschreibt ein Verfahren zur Beschleunigung der Decodierung von komprimierten Bildern, die mittels der von JPEG unabhängigen Funktion der verlustfreien Huffman-Codierung codiert wurden.
  • Es ist eine Aufgabe der Erfindung, ein verbessertes Verfahren zur Komprimierung und anschließenden Dekomprimierung von Headern und Zeichen binärer (oder anderer) Dateneinheiten bereitzustellen.
  • Der Erfinder hat ein verbessertes Verfahren der Komprimierung von digitalen Daten gefunden, welches das Erkennen von Verhaltensmustern in aufeinander folgenden Datenblöcken nutzt, was eine effiziente Datenkomprimierung erlaubt. Verhaltensmuster sind definiert als eine beliebige Form von Nicht-Zufälligkeit und können jede beliebige geeignete Form annehmen, beispielsweise Wiederholungen, Zähler, bei denen der Zähler jeweils um einen (1) Schritt erhöht wird, oder Datenblöcke, die zwischen einer kleinen Anzahl verschiedener Werte wechseln.
  • Bekannte Datenkomprimierungssysteme beinhalten den Huffman-Algorithmus, der ausführlich in einer ebenfalls anhängigen Patentanmeldung beschrieben wird. Dieser öffentlich zugängliche Standard wird verbreitet in zahlreichen Komprimierungsschemata verwendet, darunter etwa „Winzig". Bei der Huffman-Codierung wird ein Datenstrom zeichenweise komprimiert, wobei ein Zeichen in der Regel einem Byte entspricht. Die Basiskomprimierung ist nicht sehr effizient, jedoch ist es möglich, bessere Ergebnisse zu erzielen, indem das Verfahren wiederholt angewendet oder die Größe eines Zeichens vergrößert wird. Allerdings werden hierdurch auch die Verarbeitungs- und/oder Speicheranforderungen des Algorithmus erhöht.
  • Der Erfinder hat eine verbesserte Version des Huffman-Verfahrens entwickelt, welche erheblich geringere Speicheranforderungen stellt als der herkömmliche Huffman-Algorithmus und es erlaubt, die Größe eines Zeichens zu vergrößern und somit ein besseres Komprimierungsverhältnis zu erzielen.
  • Für ein besseres Verständnis der Erfindung wird nun zunächst der Stand der Technik erläutert.
  • Herkömmliche Huffman-Codierung
  • Die Huffman-Codierung ist ein öffentlich zugänglicher Komprimierungsstandard, der in zahlreichen gängigen Komprimierungsschemata zum Einsatz kommt, beispielsweise bei „WinZip". Alle Huffman-Komprimierer bearbeiten einen Strom von Zeichen (beispielsweise ASCII-Zeichen). Der Grundgedanke hierbei ist, einen neuen Satz komprimierter Zeichen oder Codes zu erzeugen, in dem jedes normale Zeichen auf ein komprimiertes Zeichen abgebildet ist und umgekehrt. Häufig auftretende, d.h. gängige Zeichen, erhalten dabei kürzere komprimierte Codes als selten verwendete Zeichen, sodass die durchschnittliche Größe des Datenstroms reduziert wird. Das Komprimierungsverhältnis kann verbessert werden, indem die Größe eines Zeichens vergrößert wird, jedoch um den Preis eines höheren Speicherbedarfs. Tatsächlich nimmt der belegte Speicher bei der Verwendung eines Huffman-Komprimierers mit der Zeichengröße exponentiell zu, sodass 16-Bit-Zeichen 256 mal so viel Speicher beanspruchen wie 8-Bit-Zeichen.
  • 1 veranschaulicht, wie die herkömmliche Huffman-Codierung funktioniert. In dem Beispiel betrifft sie zehn (10) verschiedene mögliche Zeichen (einen Satz von 10 ASCII-Zeichen), wie in Hochkommata dargestellt (allgemein kann ein Zeichen ein beliebiges Zeichen sein, beispielsweise ein Byte, ein Header, ein ASCII-Zeichen etc.). Eine Voraussetzung ist, dass für die Zeichen die ungefähre Wahrscheinlichkeit bekannt ist, mit der ein bestimmtes Zeichen in der Datensequenz vorkommt, wobei für den Fachmann offensichtlich ist, dass diese Voraussetzung in jeder beliebigen geeigneten Weise erfüllt werden kann (beispielsweise indem ein umfangreicher Strom von Zeichen herangezogen wird und ermittelt wird, wie häufig jedes Zeichen darin enthalten ist).
  • In dem hier dargestellten Beispiel erfordert der herkömmliche Huffman-Baum 10 Ausgangsknotenpunkte, jeweils einen pro möglichem Zeichen. Diese Knotenpunkte sind am oberen Ende des Huffman-Baums dargestellt, zusammen mit einer Prozentangabe zur Wahrscheinlichkeit, mit der das jeweilige Zeichen in einem nicht komprimierten Datenstrom auftritt. Die Zeichen sind allgemein in der Reihenfolge ihrer Wahrscheinlichkeit aufsteigend geordnet. Das Leerzeichen ist ein besonders häufig verwendetes Zeichen und steht somit an letzter Stelle. Wie in der Abbildung gezeigt, gibt das Kästchen unter jedem Zeichen die Wahrscheinlichkeit des Auftretens an. Um nun den Baum zu erstellen, werden die beiden Knotenpunkte mit den geringsten Wahrscheinlichkeitswerten zusammengefasst, um einen neuen Knotenpunkt zu bilden. Der linke Zweig wird mit einer „1" bezeichnet, der rechte mit einer „0". Für den neuen Knotenpunkt gilt die Wahrscheinlichkeit der kombinierten Ausgangsknotenpunkte (im ersten Fall beträgt diese 6 %). Dieser Prozess wird solange wiederholt, bis nur noch ein Knoten übrig ist, an welchem Punkt der Baum fertig gestellt ist. Im Allgemeinen wird der Zweig mit der niedrigsten Wahrscheinlichkeit mit einer „1" bezeichnet und der Zweig mit der zweitniedrigsten Wahrscheinlichkeit mit einer „0". Die Summe dieser beiden Wahrscheinlichkeitswerte wird dem neuen Knotenpunkt zugewiesen. Der fertige Huffman-Baum für das hier gezeigte Beispiel ist nachstehend dargestellt:
    Zum Komprimieren eines Zeichens geht man von dem betreffenden Knotenpunkt aus und folgt dem Baum abwärts, wobei man die Einsen („1") und Nullen („0") der Reihe nach abliest. Die so erzeugte Kette von Bits stellt das komprimierte Zeichen dar. Nehmen wir beispielsweise das Zeichen „$" und folgen dem Baum abwärts, so erhalten wir „0001". Demnach wird „$" durch „0001" repräsentiert.
  • Das komprimierte Zeichen wird manchmal von hinten nach vorn ausgeschrieben, sodass „$" als „1000" dargestellt ist. Auf diese Weise lässt es sich einfacher dekomprimieren (da wir dem Baum aufwärts folgen können, indem wir das komprimierte Zeichen von links nach rechts lesen).
  • In derselben Weise muss zum Dekomprimieren eines Zeichens der Baum einfach nur aufwärts verfolgt werden, wobei die komprimierte Kette von Bits dazu verwendet wird, an jedem Knotenpunkt zu entscheiden, ob nach links oder nach rechts abgezweigt werden muss. Schließlich ist einer der zehn ursprünglichen Knotenpunkte erreicht und das korrekte dekomprimierte Zeichen erkannt.
  • Wie zu sehen ist, werden häufig vorkommende Zeichen durch eine geringere Anzahl von Bits dargestellt; ein Leerzeichen („Space") wird hier durch eine „0" repräsentiert.
  • Verbesserte Huffman-Codierung.
  • Bei einem ausreichend bekannten, verbesserten Verfahren zur Komprimierung eines Stroms von Zeichen auf der Grundlage des Huffman-Algorithmus wird jedes Zeichen einer Gruppe zugewiesen und sind es die Gruppen, die als Zeichen des herkömmlichen Huffman-Algorithmus behandelt werden. Dieses Verfahren stellt erheblich geringere Anforderungen an den Speicher als das herkömmliche Huffman-Verfahren, da es die Vergrößerung der Größe eines Zeichens erlaubt und damit ein besseres Komprimierungsverhältnis ergibt. Das verbesserte Huffman-Verfahren verwendet darüber hinaus eine „Zeichengruppe" anstelle der Zeichen selbst für die Erstellung eines Baumes; die Gruppen werden somit effektiv zu den Zeichen der herkömmlichen Huffman-Codierung.
  • Der verbesserte Huffman-Baum wird in zwei Stufen erstellt. In der ersten Stufe werden die Zeichen entsprechend einem gemeinsamen Verhaltensmuster in Gruppen eingeteilt. Ein Verhaltensmuster kann beispielsweise dieselbe Wahrscheinlichkeit sein, sodass die Zeichen je nach ihrer relativen Häufigkeit in Gruppen geordnet werden.
  • Das Problem ist jedoch, dass sich in einem komprimierten Zeichen an den Huffman-Code für die Gruppe ein Bitmuster anschließen muss, das angibt, welches Zeichen innerhalb der Gruppe komprimiert wurde. Wenn die Gruppe keine Zweierpotenz Zeichen enthält, dann werden Bitmuster verschwendet, was zu einer geringeren Effizienz der Komprimierung führt. Die Erfinder haben ein Verfahren entdeckt, das diese Probleme überwindet.
  • Die Erfindung umfasst ein Verfahren zur Komprimierung von Daten, bei dem die besagten Daten in Form von diskreten Einheiten vorliegen, indem ein globaler, für die Einheiten spezifischer Code ermittelt wird, wobei das Verfahren die folgenden Schritte umfasst:
    • a) Einteilen der Einheiten in Gruppen gemäß gemeinsamer Verhaltensmuster;
    • b) Zuweisen eines gruppenspezifischen Codes für jede der besagten Gruppen von Einheiten, wobei die Größen der besagten gruppenspezifischen Codes entsprechend der Wahrscheinlichkeit des Auftretens der Einheit geordnet werden; und
    • c) Zuweisen eines spezifischen Einheitenkenncodes zum Identifizieren eines bestimmten Zeichens innerhalb der Gruppe, wobei der Gesamtcode die verketteten gruppenspezifischen und Kenncodes umfasst, wobei der Kenncode die minimale Größe hat, damit jede Einheit, die in der Gruppe möglicherweise vorkommt, spezifisch zugewiesen werden kann; dadurch gekennzeichnet, dass die diskreten Einheiten in eine Anzahl von Untereinheiten untergliedert sind und dass mindestens eine Untereinheit bearbeitet und komprimiert wird; der gesamte komprimierte Code eine Verkettung aller Codes von komprimierten Untereinheiten sowie eventuelle nicht komprimierte Untereinheiten selbst beinhaltet; und wobei mindestens einer Untereinheit eine Mehrzahl von Verhaltensmustern zugewiesen ist und die besagten Gruppen von Einheiten danach so in Gruppen eingeteilt werden, dass sie eine jeweilige Kombination von Untereinheiten-Verhaltensmustern aufweisen.
  • Die Erfindung wird nun anhand von Beispielen ausführlicher beschrieben.
  • Beispiel 1
  • Im Folgenden wird ein einfaches, grundlegendes Beispiel für die Erfindung unter Bezugnahme auf 2 beschrieben. In dem ausgearbeiteten Beispiel sind vier (4) Gruppen oder Verhaltensmuster vorhanden. Die Gruppe A enthält alle Zeichen, die mit einer Wahrscheinlichkeit von 3 % auftreten, nämlich 'B', 'C', '1' und '2', die übrigen Gruppen sind entsprechend der Wahrscheinlichkeit des Auftretens der jeweiligen Zeichen zusammengestellt: Gruppe B enthält die Zeichen 'A', 'E' und '?'.
  • Gruppe C enthält die Zeichen 'D' und '$', und Gruppe D schließlich enthält nur das Leerzeichen (SPACE).
  • Figure 00080001
  • Der Baum beginnt zunächst mit einem Knotenpunkt pro Gruppe (insgesamt vier). Die Knotenpunkte sind beschriftet mit der Anzahl der in der Gruppe enthaltenen Zeichen sowie der Wahrscheinlichkeit, mit der ein Zeichen dieser Gruppe in einem zufälligen Strom von Zeichen enthalten ist.
  • Für die Erstellung des Baums gibt es drei mögliche Operationen. Wo die Gruppe eine gerade Anzahl von Zeichen enthält, wird ein Knotenpunkt platziert; diesem Knotenpunkt wird der zweifache Wahrscheinlichkeitswert zugewiesen, der Zähler für den neuen Knotenpunkt weist jedoch nur die halbe Anzahl Zeichen auf. Dem Knotenpunkt wird eine Variable „X" von Zeichen zugewiesen, die zu einem späteren Zeitpunkt ausgefüllt wird, je nachdem, welches Zeichen in der Gruppe für die Komprimierung ausgewählt wird. Bei jedem weiteren Schritt in Richtung der Wurzel des Baums wird ein neuer Knotenpunkt erstellt; dabei verdoppelt sich die Wahrscheinlichkeit und halbiert sich die Anzahl der Elemente im Zähler. Wenn der Baum zum Komprimieren von Daten verwendet wird, werden die Variablen „X" entsprechend dem auftretenden Zeichen ausgefüllt. Statt am oberen Ende des Baums eine Vielzahl von Verzweigungen zu haben, hat man so einen einzigen Zweig und einen nur kleinen Bereich für einen Kennzeichner.
  • Beispielsweise lautet der Zeichencode zum Dekomprimieren dieser Daten 101011: 1 gehe nach links, 0 gehe nach links, 1 gehe nach links. Danach ist bekannt, dass das Zeichen B, C, 1 oder 2 ist – die letzten beiden Bits geben Aufschluss darüber, welches Zeichen genau gemeint ist.
  • Effektiv besteht der komprimierte Code aus zwei Teilen: ein Teil enthält den Code, der die Gruppe identifiziert, den Gruppencode. Wie auch bei Huffman haben Gruppen, die beispielsweise Zeichen enthalten, welche nur sehr selten vorkommen, längere Gruppencodes als diejenigen Gruppen, die häufig verwendete Zeichen enthalten. Der andere Teil des komprimierten Codes enthält den Kenncode, das heißt den Code, der es von anderen Zeichen in der Gruppe unterscheidet. Gruppen mit einer ungeraden Anzahl von Zeichen werden in zwei Gruppen untergliedert; ein Zeichen wird herausgenommen, um eine neue Gruppe zu bilden, die eine gerade Anzahl von Zeichen enthält, und eine neue Gruppe, die nur ein einziges, nämlich das herausgenommene Zeichen enthält.
  • Wenn in einer Gruppe eine ungerade Anzahl von Zeichen enthalten ist, wird die Gruppe auf zwei Knotenpunkte verteilt. Ein Zweig steht dann für nur ein einziges der Zeichen; der andere repräsentiert alle anderen Zeichen und steht nun für eine Gruppe, die eine gerade Anzahl von Zeichen enthält. Die verbesserten Huffman-Bäume weisen an Knotenpunkten, an denen keine Verzweigung erfolgt, effektiv ein zusätzliches Symbol „X" auf, das als Kennzeichner dient. Wo von einer Gruppe mit ungerader Anzahl von Elementen eine Verzweigung erfolgt, steht ein Kennzeichner „D", der entweder den Wert „1" oder den Wert „0" hat, um anzuzeigen, welcher Zweig nach der vorstehend erwähnten Aufteilung welcher ist, das heißt, wenn „D" den Wert „1" hat, kann es den Zweig repräsentieren, der für das Zeichen steht, welches aus der Gruppe herausgenommen wurde, um eine Gruppe mit einer geraden Anzahl von Elementen zu erhalten, und kann der Wert „0" die neue Gruppe mit einer geraden Anzahl von Elementen bezeichnen.
  • Das Symbol „D" dient dazu, die Gruppe in zwei neue Gruppen zu untergliedern. Da jede neue Gruppe einen eigenen Gruppenkennzeichner besitzt, müssen dem Symbol „D" keine Nullen („0") und Einsen („1") zugewiesen werden.
  • Die Kennzeichner „X" in den ursprünglichen und in den neuen Gruppen mit gerader Anzahl von Zeichen identifizieren das Zeichen in der betreffenden Gruppe mit gerader Anzahl von Zeichen.
  • Wie schon erwähnt, hat der Erfinder festgestellt, dass es zur Optimierung der Effizienz möglich ist, einen Knotenpunkt in zwei Knotenpunkte zu unterteilen, was durch einen einstelligen Kennzeichner angezeigt wird. In der vorliegenden Patentschrift bezeichnen wir diesen als „D".
  • „X" und „D" sind tatsächlich Stellen des Kenncodes und dienen dazu, zwischen zwei beliebigen Zeichen mit gleichem Verhaltensmuster zu unterscheiden. Der erste Schritt der Komprimierung besteht darin, jedes Zeichen mit einer eindeutigen Kennnummer zu versehen, die es von anderen Zeichen mit demselben Verhaltensmuster unterscheidet.
  • Das allgemeine Verfahren zum Erstellen eines Baums für den verbesserten Huffman-Algorithmus ist wie folgt:
    • – Suchen nach dem Knotenpunkt mit der geringsten Wahrscheinlichkeit. Nehmen wir an, dieser Knotenpunkt enthielte n Zeichen. Der nächste Schritt ist abhängig von dem Wert von n: 1) Wenn n eine gerade Zahl ist, einen neuen Knotenpunkt mit der doppelten Wahrscheinlichkeit, jedoch nur der halben Anzahl von Zeichen n erstellen. Diesen neuen Knotenpunkt mit dem alten verbinden und den Zweig mit einem „X" beschriften. 2) Wenn n eine ungerade Zahl ist und n>1 ist, zwei neue Knotenpunkte mit derselben Wahrscheinlichkeit erstellen, wobei derjenige auf der linken Seite n – 1 Zeichen enthält und derjenige auf der rechten Seite ein (1) Zeichen enthält. Diese beiden neuen Knotenpunkte mit dem alten verbinden und die Zweige mit einem „D" beschriften. 3) Wenn n = 1 ist, den Knotenpunkt mit der zweitgeringsten Wahrscheinlichkeit suchen. Nehmen wir an, dieser Knotenpunkt enthielte m Zeichen. a) Wenn m>1 ist, zwei neue Knotenpunkte mit derselben Wahrscheinlichkeit erstellen, wobei einer m – 1 Zeichen enthält und der andere ein (1) Zeichen enthält. Diese beiden neuen Knotenpunkte mit dem alten verbinden und die Zweige mit einem „D" beschriften. b) Es ist nun ein Knotenpunkt mit der geringsten Wahrscheinlichkeit und ein Knotenpunkt mit der zweitgeringsten Wahrscheinlichkeit vorhanden, die beide jeweils ein Zeichen enthalten. Diese beiden Knotenpunkte zu einem neuen Knotenpunkt zusammenfassen, der ein einzelnes Zeichen enthält. Den Zweig mit der geringsten Wahrscheinlichkeit mit einer „1" und den Zweig mit der zweitgeringsten Wahrscheinlichkeit mit einer „0" beschriften. Die Summe der beiden Wahrscheinlichkeitswerte in den neuen Knotenpunkt eintragen.
  • Für die Komprimierung und Dekomprimierung sollte jedes Zeichen in einer Gruppe mit einer eindeutigen Kennummer aus der Reihe {0, 1, 2, ...} bezeichnet sein. Dies dient zum Unterscheiden zwischen zwei Zeichen innerhalb derselben Gruppe.
  • Angenommen, das Zeichen, das komprimiert werden soll, hat den eindeutigen Kennzeichner i. Suchen Sie in dem Baum das richtige Verhaltensmuster und folgen Sie dem Baum abwärts, wobei Sie bei jedem der Knotenpunkte die folgenden Schritte ausführen:
    • 1) Wenn der Knotenpunkt einen Zweig „0" oder „1" hat, das Bit in die Kette der komprimierten Bits einfügen.
    • 2) Wenn das Etikett „X" lautet, das niedrigstwertige Bit von i in die Kette der komprimierten Bits einfügen. Danach i durch 2 dividieren (abgerundet).
    • 3) Dann für ein Etikett „D", wenn i den Wert „0" hat, dem Zweig nach rechts folgen. Andernfalls i um 1 vermindern und dem Zweig nach links folgen.
  • Die daraus resultierende Kette von Bits ist das komprimierte Zeichen. Für die Dekomprimierung wird dieser Ablauf einfach umgekehrt, indem anhand der komprimierten Bits der Baum nach oben bis zu dem richtigen Verhaltensmuster verfolgt wird. Der eindeutige Kennzeichner i sollte anfänglich auf „0" gesetzt werden und wird rekonstruiert, indem an jedem der Knotenpunkte die folgenden Schritte ausgeführt werden:
    • 1) Wenn sich der Knotenpunkt verzweigt, anhand des entsprechenden Bits in der komprimierten Bitkette entscheiden, welchem Zweig zu folgen ist.
    • 2) Bei Erreichen eines „X", i mit 2 multiplizieren und anschließend i um 1 erhöhen, wenn das entsprechende komprimierte Bit ebenfalls „1" ist.
    • 3) Bei Erreichen eines linken „D"-Zweigs, i um 1 erhöhen.
  • Wie zu sehen ist, besteht der Unterschied zwischen den beiden Verfahren darin, dass bei der herkömmlichen Huffman-Codierung für jedes Zeichen ein eigener Knotenpunkt erforderlich ist.
  • Anwendung auf Header
  • In einer spezifischen Ausführungsform der Erfindung wird ein vollständiger Header als ein einzelnes Zeichen behandelt.
  • Bei Headern mit 320 Bit bedeutet dies, dass es 2^320 verschiedene mögliche Header gibt. Es wäre nicht möglich, in diesem Fall einen herkömmlichen Huffman-Baum zu realisieren. Mit dem verbesserten Huffman-Verfahren gemäß der Erfindung jedoch können alle möglichen Header in eine beträchtlich geringere Anzahl von Gruppen eingeordnet werden, wobei jede Gruppe Header enthält, die ein gemeinsames Verhaltensmuster aufweisen. Beispielsweise können sie in, sagen wir, 1000 Gruppen unterteilt werden, wobei jede Gruppe Header enthält, die mit derselben Wahrscheinlichkeit auftreten; auf diese Weise sind 1000 verschiedene Wahrscheinlichkeitswerte vorhanden, dass einer der Header vorkommt. Es können unter Umständen (insbesondere bei weniger häufigen Headern) viele Millionen Header in jeder Wahrscheinlichkeitsgruppe enthalten sein. Bei der Implementierung des verbesserten Huffman-Verfahrens für Header werden die Header nach ihrer Wahrscheinlichkeit in Gruppen eingeteilt und werden diese Gruppen als Huffman-Zeichen behandelt.
  • Beispiel 2
  • 3 zeigt ein Beispiel eines Codierungsverfahrens nach Huffman.
  • Ein Header enthält 320 Bits und kann unregelmäßig („irregular") sein, das heißt, es gibt 2 hoch 320 mögliche Header. Diese sind in, sagen wir, vier (4) Verhaltensmuster gruppiert: Solche, die mit der Wahrscheinlichkeit A % auftreten (beispielsweise 4 Header enthaltend), solche mit der Wahrscheinlichkeit B % (4 Header enthaltend), solche mit der Wahrscheinlichkeit C % (beispielsweise 10 Header) und solche mit der Wahrscheinlichkeit D % (diese Gruppe soll beispielsweise unregelmäßig sein und enthält die übrigen Header, also 2 hoch 320-18). Die Wahrscheinlichkeitswerte A bis D sind der Reihe nach absteigend. Der verbesserte Huffman-Baum ist wie in 3 aufgebaut. Die Gruppe A wird durch eine „1" dargestellt, die Gruppe B durch „01", die Gruppe C durch „001" und die Gruppe D durch „000". Diese sind der erste Teil der komprimierten Header und bilden effektiv die Huffman-Codes für die Gruppen. Der zweite Teil ist der Kennzeichner, der den Header von andern Headern in derselben Gruppe unterscheidet. In der ersten Gruppe A sind vier Header enthalten, daher wird hier nur ein Kennzeichnerregister mit zwei Bits benötigt, das vier Kombinationsmöglichkeiten bietet. Damit umfasst der komprimierte Header für ein Element der Gruppe A insgesamt drei Bits: „0" gefolgt von dem Kennzeichner. Für die Gruppe D gibt es noch immer sehr viele verschiedene Header-Kombinationen: 2^320-18. In diesem Fall ist es unmöglich, eine Nachschlagetabelle mit Kennzeichnern für jeden Header zu haben, daher wird der Header selbst zum Kennzeichner. So wird der gesamte Header gebildet, indem „000" zu dem Header selbst hinzugefügt wird. Obwohl der komprimierte Header in diesem Fall eigentlich um drei (3) Bits länger wird, werden durch Verwendung dieses Systems Einsparungen erzielt, da die meisten Header, die vorkommen, nicht unregelmäßig sein werden und somit mit kürzeren Gruppencodes wie bei Huffman, jedoch mit wesentlich kürzeren Kennzeichnern, komprimiert werden.
  • Damit muss der Baum nicht mit einem Knotenpunkt für die Unterscheidung jedes einzelnen möglichen Headers ausgestattet werden; er wäre dann aufgrund der Größe nicht realisierbar.
  • Das Beispiel beschreibt ein einfaches Beispiel, in dem Header in vier Gruppen eingeteilt sind. Dies ist ein Extremfall, um die Erfindung zu veranschaulichen, und die Anzahl der Gruppen würde in einer geeigneten Weise gewählt, um optimale Effizienz zu gewährleisten. Typischerweise können 1000 Gruppen vorhanden sein, doch wäre dies immer noch besser zu bewältigen als 2^320, ein Wert, mit dem ein Computer überfordert ist. Im Allgemeinen ist bei Huffman die Anzahl der Zeichen ein Maß der Verarbeitungszeit.
  • In noch einer weiteren bevorzugten Ausführungsform macht man sich die Tatsache zunutze, dass der Header in eine Reihe von Feldern unterteilt ist. Diese Felder tendieren dazu, sich unabhängig voneinander zu verhalten.
  • Beispiel 3
  • In einem einfachen Beispiel einer bevorzugten Ausführungsform können eine oder mehrere der Untereinheiten gemäß dem vorstehend beschriebenen verbesserten Huffman-Verfahren komprimiert werden. Der komprimierte Code für den gesamten Header würde die verketteten komprimierten Codes für die Untereinheiten sowie die Untereinheiten selbst für jede Untereinheit, die nicht komprimiert wird, enthalten.
  • Wenn beispielsweise ein Header zwei Untereinheiten umfasst, wobei die erste Untereinheit eine Adresse beinhaltet und die zweite Untereinheit eine zufällige Datenkette, umfasst der gesamte komprimierte Header das komprimierte Adressfeld, das mit der zufälligen Datenkette verkettet ist.
  • Zu beachten ist, dass die Felder in dem komprimierten Header nicht in derselben Reihenfolge erscheinen müssen wie die Felder in dem unkomprimierten Header.
  • Die nachstehende Tabelle zeigt einen typischen Header; dieser kann Felder enthalten wie beispielsweise IP-Header, Versionsnummer, Header-Länge, Reserviert-Flag, Quelladresse, Zieladresse, Art des Dienstes. Jedes Feld hat eine Anzahl unterschiedlicher möglicher Verhaltensmuster: beispielsweise ist das Adressfeld ein 32-Bit-Feld, welches das Ziel des Datenpakets angibt; sehr häufig ist dies identisch mit demjenigen des vorherigen Headers, beispielsweise sind die Datenpakete für das Mobiltelefon bestimmt, und nur bei seltenen Gelegenheiten ist es unter Umständen auf ein anderes Telefon umgeschaltet worden, beispielsweise „static" (statisch; identisch mit dem Feldwert im vorherigen Header), „alternating" (alternierend; wechselt zwischen einer kleinen Anzahl von Werten), „irregular" (unregelmäßig; völlig zufällig – kann nicht komprimiert werden), „inferred" (abgeleitet; Wert kann von einem anderen Feld abgeleitet werden, beispielsweise das Längenfeld – wie lang der Header ist, kann anhand aller anderen Felder festgestellt werden). Dies ist in dem nachstehenden ausgearbeiteten Beispiel dargestellt, das eine Tabelle eines Headers enthält, welcher sich aus drei Feldern zusammensetzt:
    Figure 00170001
  • Jedes Feld kann ein oder mehrere Verhaltensmuster aufweisen; in dem Beispiel kann das erste Feld zwei Verhaltensmuster aufweisen, STATIC (statisch) und INFERRED (abgeleitet), das zweite Feld hat drei verschiedene Arten von Verhaltensmustern, STATIC, INFERRED und ALTERNATING (alternierend), und das dritte Feld lediglich eines, STATIC. Dies ist in der Spalte 2 der nachstehenden Tabelle angegeben.
  • Beispiel 4
  • Es wird nun eine bevorzugte, komplexere Ausführungsform beschrieben. Sie ist auf Header anwendbar, welche Felder enthalten, wobei eines oder mehrere der Felder unterschiedliche Verhaltensmuster aufweisen kann/können. Der erste Schritt für jedes Feld ist, einen oder mehrere verschiedene Verhaltenstyp(en) zuzuweisen. Der nächste Schritt besteht darin, für jedes Feld die Wahrscheinlichkeit zu bestimmen, dass es einen bestimmten Verhaltenstyp aufweist, beispielsweise für jedes Feld die Wahrscheinlichkeit festzustellen, dass es STATIC oder INFERRED etc. ist. Dies wird in der letzten Spalte der nachstehenden Tabelle angegeben.
  • Um die Anzahl der verschiedenen Gruppen zu ermitteln, die für das verbesserte Huffman-Verfahren angewendet werden, das heißt, die Anzahl verschiedener globaler Headerverhaltensmuster, wird die Anzahl der verschiedenen Feldverhaltensmuster für jedes Feld herausmultipliziert. Im Beispiel wird ein Verhaltensmuster von Feld 1 ausgewählt, ein Verhaltensmuster von Feld 2 und ein Verhaltensmuster von Feld 3. Dies wird anschließend für jede Kombination von Feldverhaltensmustern wiederholt. Dies ist in der zweiten Tabelle unten dargestellt. Zusätzlich wird die Wahrscheinlichkeit jeder Kombination ermittelt wie in der letzten Spalte der zweiten Tabelle angegeben. Danach wird der Huffman-Baum so aufgebaut, dass die Gruppen am oberen Ende des Huffman-Baums, die der jeweiligen Kombination von Header-Typen entsprechen, derart angeordnet sind, dass diejenigen mit der geringsten Wahrscheinlichkeit die meisten Verzeigungen und damit den längsten Gruppencode aufweisen und diejenigen mit der größten Wahrscheinlichkeit des Auftretens die kürzesten Verzweigungen und Gruppencodes haben.
  • In einer weiteren Ausführungsform der vorliegenden Erfindung ist es vorteilhaft, für jedes Verhaltensmuster ein Register darüber zu führen, wie viele Varianten es annehmen kann. So gibt es beispielsweise nur eine Möglichkeit, dass ein Feld „static" sein kann, das heißt, sich nicht verändert, für ein 8-Bit-Feld jedoch 256 Möglichkeiten, „irregular" zu sein, und vielleicht 4 Möglichkeiten zu alternieren („alternating"). Das Wissen hierüber ermöglicht es, die Größe des Kennzeichners zu bestimmen. Wenn das Feld „irregular" ist und es 256 Möglichkeiten hierfür gibt, dann muss das Kennzeichnercoderegister eine Größe von 8 Bit haben und würde der Kennzeichnercode das Feld selbst beinhalten. Alterniert das Feld zwischen 4 Werten, muss das Kennzeichnerregister nur zwei Bits groß sein, was vier verschiedene Kombinationen erlaubt.
  • Figure 00190001
  • Figure 00200001
  • Verschiedene Verfahren können angewandt werden, um dafür zu sorgen, dass die Komprimierung erfolgt. In einem statischen Modus wird das Schema manuell programmiert, um einen Protokollstack mit optimaler Effizienz zu komprimieren. Eingabe ist eine Liste der Felder innerhalb des Protokollstacks sowie für jedes Feld ein Satz möglicher Varianten, wie sich das Feld verhalten kann. Diese Eingabeliste wird in eine Form umgewandelt, die sich für das verbesserte Huffman-Verfahren eignet, wie vorstehend beschrieben. Das Verfahren berechnet das beste Format für die komprimierten Header und speichert die Ergebnisse in Form eines Huffman-Baums. Alternativ werden der Komprimierer und der Dekomprimierer programmiert, indem eine spezielle Profilierungsnachricht gesendet wird, welche die Liste der Feldverhaltensmuster enthält. Diese Nachricht wird üblicherweise immer dann vom Netzadministrator gesendet, wenn ein neuer Protokollstack in das System eingefügt werden muss. Eine weitere Alternative ist ein „Lern-Modus", der einen beliebigen Datenpaketstrom abtastet und dynamisch lernt, wie die Header der Datenpakete am besten zu komprimieren sind. Wie effizient dieses Verfahren ist abhängig von der Anzahl der Verhaltensmustertypen, die erkannt werden können. Eine weitere bevorzugte Ausführungsform ist ein „Hybrid-Modus", bei dem das System vorab programmiert wird, einen Protokollstack wie im „Static"-Modus zu komprimieren, jedoch auch der Lern-Modus aktiviert ist für den Fall, dass der Protokollstack noch effizienter komprimiert werden könnte. Dieser Modus ist besonders nützlich für die Bewältigung unerwarteter Veränderungen in der Art und Weise, wie sich der Protokollstack verhält.
  • Erzeugen eines Byte-aligned Headers
  • Bestimmte Protokolle der Sicherungsschicht („Link Layer") machen es erforderlich, dass alle Pakete eine auf ganze Bytes aufgestockte Länge haben (= Byte-aligned sind). Da die Nutzlast („Payload") bereits diese Form hat, bedeutet das, dass die komprimierten Header ebenfalls Byte-aligned sein müssen. Byte-aligned Header können auf zweifache Weise erzeugt werden. Die einfachste weise ist, jeden Header mit ausreichend vielen Bits so weit aufzufüllen, dass er nur ganze Bytes enthält. Diese zusätzlichen Bits können dann für die Prüfsumme der zyklischen Redundanzprüfung (CRC, Cyclic Redundancy Check) oder die Folgenummer zum Schutz vor dem Verlust von Datenpaketen genutzt werden. Allerdings ist dieses Verfahren ineffizient und neigt dazu, den Umfang der Fehlerprüfung von einem Header zum nächsten willkürlich zu wählen. Eine bessere Alternative ist, immer an erster Stelle Byte-aligned Header zu erzeugen. Im herkömmlichen Huffman-Verfahren ist dies zu realisieren, indem rekursiv die 256 Knotenpunkte mit den niedrigsten Wahrscheinlichkeitswerten zusammengefasst werden (anstatt die beiden Knoten mit den niedrigsten Wahrscheinlichkeitswerten). Jeder der 256 Zweige wird mit einem anderen 8-Bit-Muster bezeichnet. Der verbesserte Huffman-Algorithmus kann außerdem so modifiziert werden, dass er in ähnlicher Weise Byte-aligned Header erzeugt.
  • Das System kann auch problemlos Felder mit variabler Länge verarbeiten. Tatsächlich ist es einfach nur eine Frage des Hinzufügens eines Verhaltensmusters für jede mögliche Länge des Feldes mit variabler Länge. Zu beachten ist, dass diese Codierung implizit die Länge des Feldes beinhaltet, sodass es, wenn ein separates Feld mit dem Längenwert vorhanden ist, als INFERRED klassifiziert werden sollte, um eine doppelte Übertragung dieser Information zu vermeiden.

Claims (6)

  1. Verfahren zur Komprimierung von Daten, bei dem die besagten Daten in Form von diskreten Einheiten vorliegen, indem ein globaler, für die Einheiten spezifischer Code ermittelt wird, wobei das Verfahren die folgenden Schritte umfasst: a) Einteilen der Einheiten in Gruppen gemäß gemeinsamer Verhaltensmuster; b) Zuweisen eines gruppenspezifischen Codes für jede der besagten Gruppen von Einheiten, wobei die Größen der besagten gruppenspezifischen Codes entsprechend der Wahrscheinlichkeit des Auftretens der Einheit geordnet werden; und c) Zuweisen eines spezifischen Einheitenkenncodes zum Identifizieren eines bestimmten Zeichens innerhalb der Gruppe, wobei der Gesamtcode die verketteten gruppenspezifischen und Kenncodes umfasst, wobei der Kenncode die minimale Größe hat, damit jede Einheit, die in der Gruppe möglicherweise vorkommt, spezifisch zugewiesen werden kann; dadurch gekennzeichnet, dass die diskreten Einheiten in eine Anzahl von Untereinheiten untergliedert sind und dass mindestens eine Untereinheit bearbeitet und komprimiert wird; der gesamte komprimierte Code eine Verkettung aller Codes der komprimierten Untereinheiten sowie eventuelle nicht komprimierte Untereinheiten selbst beinhaltet; und wobei mindestens einer Untereinheit eine Mehrzahl von Verhaltensmustern zugewiesen ist und die besagten Gruppen von Einheiten danach in Gruppen eingeteilt werden, dass sie eine jeweilige Kombination von Untereinheiten-Verhaltensmustern aufweisen.
  2. Verfahren gemäß Anspruch 1, wobei die Untereinheiten gemäß bestimmter wertebereiche der Wahrscheinlichkeit, mit der die betreffende Untereinheit vorkommen wird, in Gruppen eingeordnet werden.
  3. Verfahren gemäß Anspruch 1, wobei die Untereinheiten entsprechend mindestens einem der folgenden Verhaltensmuster in Gruppen eingeordnet werden – „static" (statisch), „alternating" (alternierend), „inferred" (abgeleitet) oder „irregular" (unregelmäßig).
  4. Verfahren gemäß einem der vorstehenden Ansprüche, wobei die Anzahl der möglichen Untereinheiten, die in der Untereinheitengruppe vorkommen können, ermittelt wird, um die Größe eines Registers für den Untereinheitencode zu bestimmen.
  5. Verfahren gemäß einem der vorstehenden Ansprüche, wobei die Wahrscheinlichkeit jeder Kombination von Verhaltenstypen der Untereinheiten bestimmt wird, wobei jede Kombination eine separate Gruppe bildet.
  6. Verfahren gemäß einem der vorstehenden Ansprüche, wobei die besagte diskrete Einheit ein Header ist.
DE60127695T 2000-09-28 2001-04-24 Verfahren zur komprimierung von datenpaketen Expired - Lifetime DE60127695T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GB0023766A GB0023766D0 (en) 2000-09-28 2000-09-28 EPIC(Efficient protocol-independent compression)
GB0023766 2000-09-28
GB0102158 2001-01-29
GB0102158A GB2367459A (en) 2000-09-28 2001-01-29 Method of compressing data packets
PCT/EP2001/004607 WO2002027663A1 (en) 2000-09-28 2001-04-24 Method of compressing data packets

Publications (2)

Publication Number Publication Date
DE60127695D1 DE60127695D1 (de) 2007-05-16
DE60127695T2 true DE60127695T2 (de) 2007-12-27

Family

ID=26245068

Family Applications (2)

Application Number Title Priority Date Filing Date
DE60127695T Expired - Lifetime DE60127695T2 (de) 2000-09-28 2001-04-24 Verfahren zur komprimierung von datenpaketen
DE60122773T Expired - Lifetime DE60122773T2 (de) 2000-09-28 2001-09-26 Verfahren und vorrichtung zur verarbeitung von datenpaketen

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE60122773T Expired - Lifetime DE60122773T2 (de) 2000-09-28 2001-09-26 Verfahren und vorrichtung zur verarbeitung von datenpaketen

Country Status (11)

Country Link
US (2) US7071853B2 (de)
EP (2) EP1320832B1 (de)
JP (1) JP2004510371A (de)
KR (1) KR100820630B1 (de)
CN (2) CN1251151C (de)
AU (3) AU2001250430A1 (de)
CA (1) CA2423741A1 (de)
DE (2) DE60127695T2 (de)
ES (1) ES2267821T3 (de)
GB (2) GB2367459A (de)
WO (2) WO2002027663A1 (de)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2367459A (en) * 2000-09-28 2002-04-03 Roke Manor Research Method of compressing data packets
EP1365548A1 (de) * 2002-05-21 2003-11-26 Alcatel Einkapselungsverfahren für Pakete variables Länge und entsprechende Geräte zur Einkapselung und Entkapselung
GB0217604D0 (en) * 2002-07-30 2002-09-11 Vodafone Ltd Data processing systems and methods
FR2857538B1 (fr) 2003-07-08 2006-10-06 At & T Corp Systeme et methode de compression d'en-tete de paquets bases sur la creation dynamique d'un gabarit
FI20041446A0 (fi) * 2004-11-09 2004-11-09 Jaakko Astola Menetelmä nopeaksi rekursiiviseksi koodaamiseksi elektronisissa laitteissa
WO2007001204A1 (en) * 2005-06-29 2007-01-04 Intel Corporation Wireless data transmission methods, devices, and systems
KR101136130B1 (ko) * 2008-10-14 2012-04-17 한국전자통신연구원 가정용 기지국 장치와 그의 제어 방법
US7796059B2 (en) * 2009-01-16 2010-09-14 Tatu Ylonen Oy Fast approximate dynamic Huffman coding with periodic regeneration and precomputing
WO2011107964A1 (en) * 2010-03-03 2011-09-09 Cellguide Ltd. Method of generating an elevation database
US10530574B2 (en) 2010-03-25 2020-01-07 Massachusetts Institute Of Technology Secure network coding for multi-description wireless transmission
US8593347B2 (en) * 2010-03-25 2013-11-26 Cellguide Ltd. GNSS navigation aided by static data
ES2742286T3 (es) 2010-03-25 2020-02-13 Massachusetts Inst Technology Codificación de red segura para transmisión por secuencias de vídeo, inalámbrica de multirresolución
KR101725223B1 (ko) * 2011-03-25 2017-04-11 삼성전자 주식회사 저장 장치에서의 데이터 압축 방법
US8482441B2 (en) * 2011-06-03 2013-07-09 Massachusetts Institute Of Technology Method and apparatus to perform functional compression
US9294113B2 (en) 2011-07-05 2016-03-22 Massachusetts Institute Of Technology Energy-efficient time-stampless adaptive nonuniform sampling
US9544126B2 (en) 2011-10-31 2017-01-10 Massachusetts Institute Of Technology Joint use of multi-packet reception and network coding for performance improvement
EP2774304B1 (de) 2011-11-05 2021-06-16 Massachusetts Institute of Technology Verfahren und vorrichtung zur effizienten übertragung von informationen an mehrere knoten
US8780693B2 (en) 2011-11-08 2014-07-15 Massachusetts Institute Of Technology Coding approach for a robust and flexible communication protocol
US9537759B2 (en) 2012-01-31 2017-01-03 Massachusetts Institute Of Technology Multi-path data transfer using network coding
US9160687B2 (en) 2012-02-15 2015-10-13 Massachusetts Institute Of Technology Method and apparatus for performing finite memory network coding in an arbitrary network
WO2013137823A1 (en) * 2012-03-12 2013-09-19 Agency For Science, Technology And Research Compression devices, decompression devices, compression methods, and decompression methods
US9369255B2 (en) 2012-10-18 2016-06-14 Massachusetts Institute Of Technology Method and apparatus for reducing feedback and enhancing message dissemination efficiency in a multicast network
DE112012007039T5 (de) 2012-10-23 2015-08-06 Mitsubishi Electric Corporation Kommunikationsgerät, Kommunikationsverfahren und Programm
GB2510198B (en) * 2013-01-29 2015-04-08 Canon Kk Method and device for encoding a header in a message using an indexing table
US9887911B2 (en) 2013-02-28 2018-02-06 Xaptum, Inc. Systems, methods, and devices for adaptive communication in a data communication network
US9369541B2 (en) 2013-03-14 2016-06-14 Massachusetts Institute Of Technology Method and apparatus for implementing distributed content caching in a content delivery network
US9607003B2 (en) 2013-03-14 2017-03-28 Massachusetts Institute Of Technology Network coded storage with multi-resolution codes
EP2974096A4 (de) 2013-03-14 2016-11-09 Massachusetts Inst Technology Verfahren und vorrichtung für sichere kommunikation
US9019643B2 (en) 2013-03-15 2015-04-28 Massachusetts Institute Of Technology Method and apparatus to reduce access time in a data storage device using coded seeking
US9185529B2 (en) 2013-03-15 2015-11-10 Massachusetts Institute Of Technology Wireless reliability architecture and methods using network coding
GB2539027B (en) 2015-06-04 2019-04-17 Thales Holdings Uk Plc Video compression with increased fidelity near horizon
US9953058B1 (en) 2015-07-29 2018-04-24 Levyx, Inc. Systems and methods for searching large data sets
EP3602871B1 (de) 2017-03-29 2022-07-06 Massachusetts Institute Of Technology System und verfahren für auf schiebefensternetzwerkcodierung basierende paketerzeugung
US11057352B2 (en) 2018-02-28 2021-07-06 Xaptum, Inc. Communication system and method for machine data routing
US10965653B2 (en) 2018-03-28 2021-03-30 Xaptum, Inc. Scalable and secure message brokering approach in a communication system
US10805439B2 (en) 2018-04-30 2020-10-13 Xaptum, Inc. Communicating data messages utilizing a proprietary network
WO2019222472A1 (en) 2018-05-16 2019-11-21 Code On Network Coding, Llc Multipath coding apparatus and related techniques
US10924593B2 (en) 2018-08-31 2021-02-16 Xaptum, Inc. Virtualization with distributed adaptive message brokering
US10938877B2 (en) 2018-11-30 2021-03-02 Xaptum, Inc. Optimizing data transmission parameters of a proprietary network
US10912053B2 (en) 2019-01-31 2021-02-02 Xaptum, Inc. Enforcing geographic restrictions for multitenant overlay networks

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3701111A (en) * 1971-02-08 1972-10-24 Ibm Method of and apparatus for decoding variable-length codes having length-indicating prefixes
US3717851A (en) * 1971-03-03 1973-02-20 Ibm Processing of compacted data
US3957699A (en) * 1973-06-12 1976-05-18 Ici Australia Limited Process for polymerizing allylamines employing a redox initiator consisting of Fe++ or Ti+++ with H2 O2, hydroxyl amine, or hydroperoxides to form insoluble crosslinked polymers
JPS5439595B2 (de) * 1974-04-19 1979-11-28
JPH0821863B2 (ja) * 1985-04-13 1996-03-04 キヤノン株式会社 データ処理方法
AU579550B2 (en) * 1985-06-10 1988-11-24 Nec Corporation Movement compensation predictive encoder for a moving picture signal with a reduced amount of information
JPS62257481A (ja) * 1986-04-30 1987-11-10 三洋化成工業株式会社 染料固着剤
US4759923A (en) * 1987-06-25 1988-07-26 Hercules Incorporated Process for lowering serum cholesterol using poly(diallylmethylamine) derivatives
JPH03145223A (ja) * 1989-10-30 1991-06-20 Toshiba Corp 可変長符号復調装置
GB9012037D0 (en) * 1990-05-30 1990-07-18 Fenning Kenneth J Reducing television bandwidth by data compression
US5134478A (en) * 1991-02-19 1992-07-28 Intel Corporation Method and apparatus for compressing and decompressing a digital video signal using predicted and error images
CA2065578C (en) * 1991-04-22 1999-02-23 David W. Carr Packet-based data compression method
JPH05136697A (ja) * 1991-11-14 1993-06-01 Kokusai Electric Co Ltd 音声符号化方式
US5646983A (en) * 1993-03-25 1997-07-08 U.S. Robotics Access Corp. Host computer digital signal processing system for communicating over voice-grade telephone channels
NL9301841A (nl) * 1993-10-25 1995-05-16 Nederland Ptt Inrichting voor het bewerken van datapakketten.
JPH07221652A (ja) * 1994-01-31 1995-08-18 Fujitsu Ltd データ圧縮方法
FI98027C (fi) * 1995-01-10 1997-03-25 Nokia Telecommunications Oy Pakettiradiojärjestelmä ja päätelaitteisto pakettiradiojärjestelmää varten
US5696563A (en) * 1995-03-08 1997-12-09 Lucent Technologies Inc. Apparatus and methods for performing huffman coding
US5790554A (en) * 1995-10-04 1998-08-04 Bay Networks, Inc. Method and apparatus for processing data packets in a network
JP3720094B2 (ja) * 1995-10-18 2005-11-24 シャープ株式会社 データ駆動型情報処理装置
US6088039A (en) * 1996-01-04 2000-07-11 Compaq Computer Corporation Compression of grey scale images of text
US5787253A (en) * 1996-05-28 1998-07-28 The Ag Group Apparatus and method of analyzing internet activity
US6370477B1 (en) * 1996-11-22 2002-04-09 Schlumberger Technology Corporation Compression method and apparatus for seismic data
US6134245A (en) * 1997-08-08 2000-10-17 Paradyne Corporation System and method for the compression and transportation of non frame relay data over a frame relay network
US6618506B1 (en) * 1997-09-23 2003-09-09 International Business Machines Corporation Method and apparatus for improved compression and decompression
US6121903A (en) * 1998-01-27 2000-09-19 Infit Communications Ltd. On-the-fly data re-compression
US6252905B1 (en) * 1998-02-05 2001-06-26 International Business Machines Corporation Real-time evaluation of compressed picture quality within a digital video encoder
US6040790A (en) * 1998-05-29 2000-03-21 Xerox Corporation Method of building an adaptive huffman codeword tree
US6408001B1 (en) * 1998-10-21 2002-06-18 Lucent Technologies Inc. Method for determining label assignments for a router
US7155493B1 (en) * 1998-10-29 2006-12-26 International Business Machines Corporation Method and apparatus for improved internet navigation
US6425021B1 (en) * 1998-11-16 2002-07-23 Lsi Logic Corporation System for transferring data packets of different context utilizing single interface and concurrently processing data packets of different contexts
US6557001B1 (en) * 1998-11-23 2003-04-29 Moonlight Cordless Ltd. Method for enhancing video compression through automatic data analysis and profile selection
US6404931B1 (en) * 1998-12-14 2002-06-11 Microsoft Corporation Code book construction for variable to variable length entropy encoding
FI107000B (fi) * 1999-02-17 2001-05-15 Nokia Mobile Phones Ltd Otsikon pakkaaminen reaaliaikaisissa palveluissa
EP1157519A1 (de) 1999-02-26 2001-11-28 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Adaptive headerkompression zur paketübertragung
WO2000057284A1 (en) * 1999-03-25 2000-09-28 Motorola Inc. Point to point protocol multiplexing/demultiplexing method and apparatus
DE69939401D1 (de) * 1999-04-12 2008-10-02 Nokia Corp Paketlängenklassifizierung
US6542504B1 (en) * 1999-05-28 2003-04-01 3Com Corporation Profile based method for packet header compression in a point to point link
EP1059782A3 (de) * 1999-06-10 2004-02-04 Lucent Technologies Inc. Verfahren und Vorrichtung zur dynamische benutzung der bandbreite in einem Packetfernsprechernetz
US6754231B1 (en) * 1999-06-18 2004-06-22 Telefonaktiebolaget Lm Ericsson (Publ) Robust header compression in packet communications
EP1069736B1 (de) * 1999-07-15 2012-09-05 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Ablaufplanung und Zulassungskontrolle von Paketdatenverkehr
US6711164B1 (en) * 1999-11-05 2004-03-23 Nokia Corporation Method and apparatus for performing IP-ID regeneration to improve header compression efficiency
US6614789B1 (en) * 1999-12-29 2003-09-02 Nasser Yazdani Method of and apparatus for matching strings of different lengths
US6608841B1 (en) * 1999-12-30 2003-08-19 Nokia Networks Oy System and method for achieving robust IP/UDP/RTP header compression in the presence of unreliable networks
US6999429B1 (en) * 2000-03-03 2006-02-14 Telefonaktiebolaget Lm Ericsson Access technology integrated header compression
US7539130B2 (en) * 2000-03-28 2009-05-26 Nokia Corporation Method and system for transmitting and receiving packets
US7788211B2 (en) * 2000-06-16 2010-08-31 Nokia Networks Oy Robust and efficient compression of list of items
US6820233B2 (en) * 2000-07-14 2004-11-16 Telefonaktiebolaget Lm Ericsson Re-use of static checksum information in header compression/decompression applications
GB2367459A (en) * 2000-09-28 2002-04-03 Roke Manor Research Method of compressing data packets

Also Published As

Publication number Publication date
WO2002026860A1 (en) 2002-04-04
ES2267821T3 (es) 2007-03-16
EP1348002B1 (de) 2006-08-30
CN1251151C (zh) 2006-04-12
EP1320832B1 (de) 2007-04-04
KR20030040499A (ko) 2003-05-22
GB0102158D0 (en) 2001-03-14
CN1214562C (zh) 2005-08-10
AU2001250430A1 (en) 2002-04-08
US20040051653A1 (en) 2004-03-18
US20040133702A1 (en) 2004-07-08
US8073973B2 (en) 2011-12-06
GB2367459A (en) 2002-04-03
DE60122773T2 (de) 2007-08-30
GB0123133D0 (en) 2001-11-14
AU9396301A (en) 2002-04-08
DE60127695D1 (de) 2007-05-16
JP2004510371A (ja) 2004-04-02
WO2002027663A1 (en) 2002-04-04
US7071853B2 (en) 2006-07-04
EP1348002A1 (de) 2003-10-01
DE60122773D1 (de) 2006-10-12
WO2002026860A9 (en) 2002-12-27
CN1478256A (zh) 2004-02-25
AU2001293963B2 (en) 2006-11-30
EP1320832A1 (de) 2003-06-25
CA2423741A1 (en) 2002-04-04
GB2370479B (en) 2004-07-21
KR100820630B1 (ko) 2008-04-10
CN1478113A (zh) 2004-02-25
GB2370479A (en) 2002-06-26

Similar Documents

Publication Publication Date Title
DE60127695T2 (de) Verfahren zur komprimierung von datenpaketen
DE69527679T2 (de) Verfahren zur Datenkomprimierung und -Dekomprimierung
DE4340591C2 (de) Datenkompressionsverfahren unter Verwendung kleiner Wörterbücher zur Anwendung auf Netzwerkpakete
DE69318446T2 (de) Verfahren und Vorrichtung zur Datenkompression und -dekompression für eine Übertragungsanordnung
DE69905343T2 (de) Blockweiser adaptiver statistischer datenkompressor
US7064489B2 (en) Huffman data compression method
DE10301362B4 (de) Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
DE60316696T2 (de) Verfahren zum Routen von Datenpaketen und Routing-Vorrichtung
DE69916661T2 (de) Codebuchkonstruktion für entropiekodierung von variabler zu variabler länge
DE69838074T2 (de) Verfahren und vorrichtung zur gleichzeitigen verschlüsselung und komprimierung von daten
DE10196890B4 (de) Verfahren zum Ausführen einer Huffman-Decodierung
DE60129643T2 (de) Verfahren und Gerät für die Ermittlung vom längsten Prefixzusammenbringen in einem Kommunikationsnetz
DE68925798T2 (de) Datenverdichtung
DE69833094T2 (de) Verfahren und Vorrichtung zur adaptiven Datenkompression mit höherem Kompressionsgrad
DE69725215T2 (de) Verfahren und Vorrichtung zur Komprimierung und Dekomprimierung von Schrifttypen
DE102008016179A1 (de) Automatische Generierung von Kompaktcodetabellen
EP1303966B1 (de) Header-kompressionsverfahren für netzwerkprotokolle
DE60107964T2 (de) Vorrichtung zur kodierung und dekodierung von strukturierten dokumenten
DE69527883T2 (de) Decodierung eines Huffman Codes mit MSB und LSB Tabellen
EP1952540B1 (de) Verfahren zur kompression für einen rechnerarchitektur-unabhängigen datentransfer und/oder zur dekompression eines datensatzes
US7930435B2 (en) Hub and spoke compression
DE60131490T2 (de) Methode zur Konvertierung von UNICODE Text in gemischte Codepages
DE10131801B4 (de) Verfahren zur Datenkompression und Navigationssystem
DE19653133C2 (de) System und Verfahren zur pre-entropischen Codierung
EP1186175B1 (de) Verfahren und vorrichtung zur komprimierung und dekomprimierung von daten

Legal Events

Date Code Title Description
8328 Change in the person/name/address of the agent

Representative=s name: MAIER, D., DIPL.-ING. UNIV., PAT.-ASS., 85221 DACH

8364 No opposition during term of opposition