-
Die
Erfindung bezieht sich allgemein auf ein Verfahren und eine Vorrichtung
zum Übertragen
von Datenpaketen in einem Paketstrom über einen unzuverlässigen Kanal,
und insbesondere auf ein Übertragen
von Datenpaketen, die komprimierte Header haben.
-
Verschiedene
Kommunikationstechnologien existieren zum Übertragen von Daten von einem
Terminal zu einem anderen Terminal. Die meisten, herkömmlich verwendeten
Techniken sind zellulare Telefonie und das Internet. Weitere Entwicklungen
sind Medien auf Anforderung und konversationsmäßige Dienste, wie beispielsweise
Internet-Telefonie. Die meisten dieser Dienste erfordern den Transport
von Daten in einer Realzeit, einschließlich von Audio- und Videoinhalten.
-
Das
Real-Time Transport Protocol (RTP) liefert eine Einrichtung für solche
Zwecke. RTP ist ein Internet-Protokoll zum Übertragen von Daten in einer Realzeit
oder in nahezu einer Realzeit. RTP selbst garantiert keine Lieferung
von Daten in einer Realzeit, sondern liefert Mechanismen zum Versenden und
Empfangen von Anwendungen, um Daten in einer Datenfolge zu unterstützen. Typischerweise
läuft ein
RTP on top des UDP-Protokolls. UDP (User Datagram Protocol) ist
ein verbindungsloses Protokoll, das, ähnlich TCP, on top von IP-Netzwerken
läuft.
Im Gegensatz von TCP/IP liefert UDP/IP keine Fehlerwiederherstellungsdienste,
sondern bietet anstelle davon eine direkte Art und Weise, um Datengramme über ein
IP-Netzwerk zu verschicken und zu empfangen.
-
Während das
RTP für
feste Netzwerke entwickelt worden ist, kann es allerdings auch in
mobilen Netzwerken verwendet werden. Allerdings ist ein Problem
beim Verwenden von RTP über
mobile Netzwerke die begrenzte Bandbreite in dem mobilen Kanal.
Dies kommt daher, dass jedes der Protokolle RTP, UDP und IP seinen
eigenen Header besitzt. Ein Datenpaket wird dann, zusätzlich dazu,
ein Schicht- Framing
zu verknüpfen,
einen IP-Header mit 20 Bytes, einen UDP-Header mit 8 Bytes und einen RTP-Header
mit 12 Bytes haben, so dass bis zu mindestens 40 Bytes aufsummiert
werden.
-
Dieser
Header ist hoch redundant, und Header-Kompressions-Mechanismen sind,
um den Umfang eines Overhead zu verringern, entwickelt worden. Header-Kompressions-Protokolle
entfernen die Redundanz des Header und codieren die Informationen
in einer effizienten Art und Weise. Dies kann zu einer Kompression
des originalen Header herunter bis zu einem Byte in dem besten Fall
führen.
-
Der
IETF Internet Draft „Compressing IP/UDP/RTP
Headers for Low-Speed Serial Links", Juli 1998, schafft ein Verfahren zum
Komprimieren der Header eines IP/UDP/RTP Datendiagramms, um den
Overhead bei Verbindungen mit niedriger Geschwindigkeit zu verringern.
Die Grundidee dieses Dokuments ist diejenige, dass nicht-komprimierte Header
einmal für
eine RTP-Übertragung übertragen werden,
um den Kontext dieses Kompressors der Empfangsseite zu initialisieren,
und um eine darauffolgende Aktualisierung des Kompressor-Kontextes zu
schaffen.
-
Ein
System, das ein Header-Kompressions-Protokoll verwendet, ist in 1 dargestellt.
Der Sender weist einen Kompressor 100 auf, der zum Komprimieren
des originalen Headers verwendet wird. Der komprimierte Header wird
dann zu dem Empfänger übertragen
und wird dort durch den Dekompressor 110 dekomprimiert.
-
Der
Kontext 120 ist der Zustand, den der Kompressor verwendet,
um den Header zu komprimieren. Der Kontext ist ein Satz von Variablen
und besteht grundsätzlich
aus einer nicht-komprimierten Version der Header-Felder des letzten
Header. Neben den tatsächlichen
Header-Feldern weist der Kontext zusätzliche Variable auf, wie beispielsweise Differenzen
erster Ordnung von Header-Feldern, die dahingehend erfasst worden
sind, dass sie für
eine Reihe von aufeinanderfolgenden Datenpaketen konstant sind.
Der Kontext kann auch zusätzliche
Informationen enthalten, die die Datenpaketfolge beschreiben, zum
Beispiel die typische Inter-Datenpaket-Erhöhung in Sequenzzahlen oder
Zeitmarken.
-
Im
Betrieb ist es erforderlich, dass der Kompressor 100 und
der Dekompressor 110 einen gemeinsamen Kontext beibehalten.
Wenn der Kontext 130 des Kompressors 110 nicht
mit dem Kontext 120 des Kompressors 100 übereinstimmt,
wird die Header-Dekompression fehlschlagen. Diese Situation kann
dann auftreten, wenn Datenpakete über unzuverlässige, z.
B. drahtlose, Kanäle übertragen
werden, da Datenpakete zwischen dem Kompressor 100 und
dem Dekompressor 110 verloren oder beschädigt werden
können.
-
Es
ist deshalb notwendig, einen Resynchronisationsvorgang zu initiieren,
wenn einmal der Kontext 130 des Dekompressors 110 ungültig geworden ist.
Für diesen
Zweck werden Aktualisierungs-(UP)-Pakete zum Übertragen von Informationen,
enthalten in dem Kontext 120 des Kompressors 100,
zu dem Dekompressor 110 hin, vorgesehen. Demzufolge wird,
unter Verwendung von UP-Datenpaketen, der Kontext 130 aktualisiert.
-
Die
Funktionsweise eines Header-Kompressions-Schemas kann mit zwei Parametern,
Kompressionseffektivität
und Robustheit, beschrieben werden. Ein robustes Schema toleriert
Fehler in der Verbindung, über
die die Header-Kompression stattfindet, ohne zusätzliche Datenpakete zu verlieren,
zusätzliche
Fehler einzuführen
oder eine größere Bandbreite
zu verwenden. Die Verwendung von UP-Datenpaketen erhöht einerseits
die Robustheit, verringert allerdings andererseits die Kompressionseffektivität, da UP-Datenpakete
in der Größe groß sind.
Deshalb werden, zusätzlich
zu einem UP-Datenpaket, Nicht-Aktualisierungs-(NUP)-Datenpakete verwendet,
die sehr klein sind und die nur von dem vorherigen UP-Datenpaket
abhängen.
Demzufolge aktualisieren NUP-Datenpakete nicht den Kontext so, dass
dann, wenn ein NUP-Datenpaket
verlorengeht, der Kontext 130 des Dekompressors 110 fortfährt, gültig zu
sein, so dass der Empfänger
noch in der Lage ist, die folgenden Datenpakete zu dekomprimieren.
-
Die
Datenpaketfolge, die komprimiert werden soll, verhält sich
gewöhnlich
sehr regelmäßig. Die
meisten der Header-Felder sind konstant und verändern sich nicht während der
Lebensdauer der Datenfolge. Einige Felder ändern sich nicht mit jedem Datenpaket
(z. B. Sequenzzahl und Zeitmarke). Falls die Werte dieser Felder
zu der Sequenzzahl synchronisiert sind und demzufolge aus dieser
Zahl berechnet werden können,
ist die Folge regulär.
Unregelmäßigkeiten
in diesen Feldern stören
diese Synchronisation, z. B. aufgrund eines nicht-linearen Sprungs
in dem RTP-Zeitmarken-Feld.
Mit einer Unregelmäßigkeit
ist es nicht möglich,
die Werte der geänderten Felder
von der Sequenzzahl zu berechnen. Diese Unregelmäßigkeiten könnten sehr häufig auftreten,
z. B. im Durchschnitt jede Sekunde für eine herkömmliche Audiofolge.
-
In
dem Fall, dass eine unregelmäßige Änderung
aufgetreten ist, müssen
Informationen darüber zu
dem Dekompressor übertragen
werden. Deshalb müssen
entweder UP- oder NUP-Datenpakete mit diesen Informationen erweitert
werden. Dies kann zum Beispiel durch ein Erweiterungs-Bit in dem
Header und durch Platzieren der Unregelmäßigkeitsinformationen in einem
vordefinierten Erweiterungsfeld des Header vorgenommen werden. Allerdings
verringert die Verwendung von Erweiterungs-UP-(extUP)-Datenpaketen
die Robustheit, während
die Verwendung von erweiterten NUP-(extNUP)-Datenpaketen die Kompressionseffektivität verringert.
-
Es
ist deshalb die Aufgabe der Erfindung, ein Verfahren und eine Vorrichtung
zum Übertragen
von Datenpaketen in einem Paketstrom zu schaffen, die dazu geeignet
sind, sowohl die Effektivität
als auch die Robustheit zu verbessern.
-
Diese
Aufgabe wird durch die Erfindung, wie sie in den unabhängigen Ansprüchen definiert
ist, gelöst.
-
Gemäß der Erfindung
wird eine Entscheidung vorgenommen, ob extUP- oder extNUP-Datenpakete
gesendet werden sollen, und zwar basierend auf mindestens einem
Paketstrom-Parameter. Demzufolge ermöglicht die Erfindung die Bestimmung
der optimalen Zustände
für sowohl
eine Kompressionseffektivität
als auch eine Paketfolge-Robustheit, durch dynamisches Anpassen
des Übertragungsschemas an
den Kanal- und die Paketfolge-Eigenschaften. Dies verringert die
durchschnittliche Header-Größe sogar
dann, wenn unregelmäßige Änderungen
der Paketfolge auftreten.
-
Die
Erfindung ist besonders vorteilhaft, da sie ein Senden von extNUP-Datenpaketen in dem Fall
ermöglicht,
dass eine unregelmäßige Änderung nur
für eine
kurze Zahl von Datenpaketen gültig
ist. Dies kommt daher, dass dann, wenn in dem Fall der Verwendung
von kurzen, unregelmäßigen extUP,
Datenpakete verwendet würden,
der Kontext des Dekompressors einfach für ungültig erklärt werden würde und der Dekompressor nicht
in der Lage sein würde,
alle darauffolgenden Datenpakete zu dekomprimieren, bis ein erneutes
UP-Datenpaket korrekt empfangen ist. Das bedeutet, dass die Erfindung
die Robustheit der Paketfolge verglichen mit einem Übertragungsschema,
bei dem Unregelmäßigkeiten in
extUP-Datenpaketen nur übertragen
werden, erhöht.
-
Weiterhin
ist die Erfindung andererseits vorteilhaft, da sie von einem alleinigen
Benutzen von extNUP-Datenpaketen absieht. Da die Zahl von NUP-Paketen
gewöhnlich
größer als
die Zahl von UP-Paketen ist, ermöglicht,
durch Senden von extUP-Datenpaketen, immer wenn dies möglich ist,
die Erfindung eine Erhöhung
der Kompressionseffektivität.
-
Bevorzugte
Ausführungsformen
der Erfindung sind in den abhängigen
Ansprüchen
definiert.
-
Die
Erfindung wird nun unter Bezugnahme auf die beigefügten Zeichnungen
beschrieben, in denen:
-
1 stellt
ein Kompressor/Dekompressor-System dar, in dem UP- und NUP-Datenpakete verwendet
werden;
-
2 zeigt
ein Flussdiagramm, das den Vorgang einer Entscheidung darstellt,
wenn extUP- oder extNUP-Datenpakete gemäß der Erfindung zu übertragen
sind;
-
3 zeigt
ein Flussdiagramm, das den Vorgang eines Abschätzens der maximalen Zahl eines aufeinanderfolgenden
Datenpaketverlusts gemäß einer
bevorzugten Ausführungsform
der Erfindung darstellt; und
-
4a und 4b zeigen
Flussdiagramme, die bevorzugte Ausführungsformen des Vorgangs eines
Abschätzens
der Zahl von Datenpaketen, für
die die unregelmäßige Änderung
gültig
ist, darstellen.
-
Bevorzugte
Ausführungsformen
der Erfindung werden in weiterem Detail nachfolgend beschrieben.
-
Wie
anhand der Diskussion nachfolgend ersichtlich werden wird, macht
die Erfindung von mindestens einem Paketfolge-Parameter Gebrauch.
Ein Paketfolge-Parameter
bedeutet irgendeine Kanal-, Paketfolge- und Kompressor-Zustand-Eigenschaft, die
zumindest indirekt einige Informationen liefern kann, die dazu geeignet
sein kann, zu entscheiden, wann und wie Informationen über eine
unregelmäßige Änderung
zu dem Dekompressor zu senden sind. In den bevorzugten Ausführungsformen
werden die nachfolgenden Parameter verwendet:
N1:
die Zahl von Paketen, die seit der letzten Aktualisierungs-Sequenz
geschickt worden sind;
N2: die maximale
Zahl eines aufeinanderfolgenden Paketverlusts über den Kanal, d. h. die maximale Zahl
von aufeinanderfolgend verlorenen Paketen in der Paketfolge; und
N3: die Zahl von aufeinanderfolgenden Paketen
in der Folge, für
die eine unregelmäßige Änderung
gültig ist,
d. h. die Zeitlänge
einer Unregelmäßigkeit
in Einheiten von Datenpaketen.
-
Wie
nun die 2 zeigt, bestimmt der Kompressor 100 zuerst,
beim Entscheiden, wann extUP- und wann extNUP-Pakete zu verwenden
sind, im Schritt 200, ob eine unregelmäßige Änderung aufgetreten ist. Falls
keine unregelmäßige Änderung
aufgetreten ist, ist kein Erfordernis vorhanden, erweiterte Pakete
insgesamt zu übertragen,
und der Vorgang geht zurück.
Falls allerdings im Schritt 200 bestimmt ist, dass eine
unregelmäßige Änderung
aufgetreten ist, prüft
der Kompressor 100 zwei separate Bedingungen zum Entscheiden,
welche Pakete zu erweitern sind.
-
Beim
Prüfen
der ersten Bedingung erhält
der Kompressor 100 den Parameter N1 im
Schritt 210. Dann wird der Parameter N2 im
Schritt 220 aufgesucht. Der Parameter N2 kann
zum Beispiel zuvor unter Verwendung des Vorgangs abgeschätzt worden sein,
der nachfolgend im Zusammenhang mit 3 beschrieben
ist. Der Kompressor kann dann einfach den Parameter von einer Speichereinheit
oder irgendeiner anderen Art eines Datenpuffers aufsuchen.
-
Wenn
einmal die Parameter N1 und N2 erhalten
worden sind, führt
der Kompressor 100 einen Vergleich zwischen diesen Werten
im Schritt 230 durch. Falls der Parameter N1 nicht
größer als
der Parameter N2 ist, wird entschieden,
extNUP-Pakete zu übertragen,
und zwar im Schritt 270. Ansonsten fährt der Vorgang mit Schritt 240 fort.
-
Beim
Prüfen
des zweiten Zustands sucht der Kompressor im Schritt 240 den
Parameter N3 auf, wiederum durch Zugreifen
auf zuvor abgeschätzte Werte.
Es wird dann im Schritt 250 bestimmt, ob N2 N3 übersteigt,
und, falls dies der Fall ist, wird wiederum entschieden, extNUP-Pakete
zu dem Dekompressor zu übertragen.
Ansonsten wird der Dekompressor im Schritt 260 Informationen über die
unregelmäßige Änderung über extUP-Pakete
aufsuchen.
-
Demzufolge
werden erweiterte UP-Datenpakete nur übertragen, falls beide Bedingungen 230, 250 erfüllt sind.
Falls mindestens eine Bedingung nicht erfüllt ist, wird entschieden,
extNUP-Pakete zu übertragen.
-
Durch
diesen Vorgang wird eine Kompressionseffektivität erhöht, da die unregelmäßige Änderung
nicht in allen Paketen übertragen
wird, d. h. es müssen
keine größeren extNUP-Pakete übertragen werden,
nachdem der neue Kontext eingerichtet ist. Weiterhin wird, durch
Senden von extUP-Datenpaketen immer dann, wenn es notwendig ist,
die Robustheit erhöht.
-
Während in
der Diskussion der 2 beschrieben worden ist, dass
die Bedingung 230 vor der Bedingung 250 geprüft wird,
wird für
Fachleute auf dem betreffenden Fachgebiet ersichtlich werden, dass,
alternativ, die Bedingung 250 zuerst geprüft werden
kann.
-
Vorzugsweise
wird die Zahl von extUP-Paketen in einer Folge im Schritt 260 zu
dem Parameter N2 geprüft, um zuverlässig die
Unregelmäßigkeiten
in dem Kontext des Kompressors einzurichten. In einer bevorzugten
Ausführungsform
wird die Zahl von extUP-Paketen so eingestellt, dass sie gleich
zu N2 ist.
-
Wie
vorstehend erwähnt
ist, werden die Parameter N2 und N3 vorzugsweise in den Schritt 220 und 240 von
irgendeiner Art einer Speichereinheit aufgesucht, und diese Parameter
müssen
zuvor abgeschätzt
worden sein. Während 3 eine
bevorzugte Ausführungsform
eines Einrichtens des Parameters N2 darstellt,
wird die Erzeugung von Abschätzungen
von N3 im Zusammenhang mit den 4a und 4b beschrieben.
-
Wie
nun 3 zeigt, basiert die Abschätzung der maximalen Zahl eines
darauffolgenden Paketverlusts auf Nicht-Bestätigungs-(NACK)-Paketen, die
von dem Dekompressor 110 aus zu dem Kompressor 100 geschickt
sind. NACK-Pakete werden dann geschickt, falls ein ungültiger Kontext
durch den Dekompressor aufgrund eines UP-Paketverlusts erfasst worden
ist. Der ungültige
Kontext wird unter Empfang des ersten NUP-Pakets erfasst, das ein Folge-Anzeige-Bit
ungleich zu demjenigen enthält, das
in dem Kontext des Dekompressors gespeichert ist.
-
Im
Schritt 300 erhält
der Kompressor ein NACK-Paket oder eine Nachricht von dem Dekompressor
und extrahiert die Sequenzzahl des letzten, korrekt dekomprimierten
Pakets, d. h. dort, wo der Kontext noch gültig war, von dieser NACK-Nachricht (Schritt 310).
Dann erhält
der Kompressor die momentane Sequenzzahl im Schritt 320.
Von den extrahierten und momentanen Sequenzzahlen ist der Kompressor
in der Lage, den Umfang von Paketen, geschickt zu dem Dekompressor,
zwischen der Übertragungszeit
des letzten, korrekt empfangenen Pakets und der Empfangszeit der
NACK-Nachricht zu berechnen. Im Schritt 330 erhält der Kompressor
die Round Trip Time (RTT), die in diesem Fall die Zeit ist, die
dazu erforderlich ist, die NACK-Nachricht
zu triggern und zu empfangen. Dann subtrahiert der Kompressor den
RTT-Wert von der
berechneten Menge von Paketen, wodurch demzufolge die Zahl von Paketen
berechnet wird, die aufeinanderfolgend verloren wurde (Schritt 340).
Diese Zahl wird dann dem Kompressor als der Parameter N2 zugänglich gemacht.
-
Die
Abschätzung
von N3 wird vorzugsweise so vorgenommen,
wie dies in den 4a und 4b dargestellt
ist. Während
in dem Vorgang der 4a eine Kenntnis über den
verwendeten Codec und seiner Eigenschaften verwendet wird, umfasst
der Vorgang der 4b ein Beobachten der Paketfolge
und ein Erlangen von Abschätzungen
für die
Zukunft aus den Erfahrungen der Vergangenheit. Es wird für Fachleute
auf dem betreffenden Fachgebiet ersichtlich werden, dass die Vorgänge der 4a und 4b alternativ
ebenso wie in Kombination verwendet werden können.
-
In 4a kennt
der Kompressor die Eigenschaften von unterschiedlichen Folgen, die
von unterschiedlichen Codecs stammen. Diese Informationen können in
einer Durchsichtstabelle des Kompressors gespeichert werden. Im
Schritt 400 prüft
der Kompressor das RTP Payload Type Feld des Header, um zu wissen,
was der Codec ist, der verwendet ist. Dann sucht der Kompressor
die notwendigen Informationen über
den Codec von der Durchsichtstabelle im Schritt 410 auf
und berechnet den Parameter N3 unter Verwendung
der aufgesuchten Informationen (Schritt 420).
-
In
dem Vorgang der 4b sucht der Kompressor im Schritt 440 beobachtete
Paketfolge-Eigenschaften, wie beispielsweise das Maximum, das Minimum,
den Durchschnitt, die Varianz des Durchschnitts, usw., der Zahl
von Paketen auf, für
die eine unregelmäßige Änderung
gültig
ist. Diese Eigenschaften werden vorzugsweise in einem Speicher des
Kompressors gespeichert. Aus diesen Informationen berechnet der
Kompressor im Schritt 450 eine Abschätzung des Parameters N3, die von dem Grad einer Robustheit abhängt, die
man haben möchte. Der
Wunsch nach einer höheren
Robustheit bringt mit sich, dass der ausgewählte Wert nahe zu der minimalen
Zahl von Paketen sein muss.
-
Wie
anhand der 3, 4a und 4b ersichtlich
ist, umfassen die Abschätzungsvorgänge weiterhin
einen Schritt 350, 430 eines Anwendens eines Sicherheitsfaktors.
Dies berücksichtigt,
dass die berechneten Werte der Parameter N2 und
N3 nur Abschätzungen sind. Demzufolge wird,
um die Robustheit des Schemas sicherzustellen, der abgeschätzte Parameter
N3 vorzugsweise durch den Sicherheitsfaktor
dividiert, der größer als
eins ist, während
der abgeschätzte
Parameter N2 vorzugsweise mit diesem Faktor
multipliziert wird.