-
Die
Erfindung betrifft allgemein ein Verfahren und eine Vorrichtung
zum Übertragen
von Datenpaketen über
einen unzuverlässigen
Kanal und insbesondere zum Übertragen
von Datenpaketen mit komprimierten Headern.
-
Es
bestehen verschiedene Kommunikationstechnologien zum Übertragen
von Daten von einem Endgerät
zu einem anderen Endgerät.
Die am häufigsten
genutzten Techniken sind die Mobilfunk-Telefonie und das Internet.
Weitere Entwicklungen sind Media-on-demand und Gesprächsdienste wie
die Internet-Telefonie. Die meisten dieser Dienste erfordern den
Transport von Echtzeitdaten mit Audio- und Videoinhalten.
-
In
diesem Zusammenhang wird das RTP (Real-time Transport Protocol)
verwendet. RTP ist ein Internet-Protokoll zum Übertragen von Daten in Echtzeit
bzw. beinahe in Echtzeit. Das RTP selbst garantiert keine Echtzeit-Übertragung
von Daten, bietet jedoch die Mechanismen für die sendenden und empfangenden
Anwendungen, um ein Daten-Streaming zu unterstützen. Gewöhnlich wird RTP über dem
UDP-Protokoll ausgeführt.
Das UDP (User Datagram Protocol) ist ein verbindungsloses Protokoll, das ähnlich wie
TCP auf IP-Netzwerken ausgeführt wird.
Im Gegensatz zu TCP/IP, umfasst UDP/IP keine Fehlerkorrekturdienste,
sondern bietet statt dessen eine direkte Möglichkeit zum Senden und Empfangen
von Datagrams über
ein IP-Netzwerk.
-
RTP
wurde für
Festnetze entwickelt, kann aber auch in Mobilnetzen verwendet werden.
Ein Problem bei der Verwendung von RTP über Mobilnetzen besteht jedoch
in der beschränkten
Bandbreite des Mobilkanals. Der Grund dafür besteht darin, dass jedes
der Protokolle RTP, UDP und IP einen eigenen Header aufweist. Ein
Paket weist dann zusätzlich
zu dem Link-Layer-Framing
einen IP-Header von 20 Bytes, einen UDP-Header von 8 Bytes und einen RTP-Header
von 12 Bytes auf, was zusammen mindestens 40 Bytes ergibt.
-
Der
Header ist stark redundant, wobei zur Reduktion der Übertragungslast
verschiedene Komprimierungsmechanismen für den Header entwickelt wurden.
Die Protokolle für
die Header-Komprimierung entfernen die Redundanz des Headers und
codieren die Information auf eine effiziente Weise. Dies kann im
besten Fall zu einer Komprimierung der Original-Headers bis auf ein Byte führen.
-
Ein
System mit einem Header-Komprimierungsprotokoll ist in 1 gezeigt.
Der Sender umfasst einen Komprimierer 100, der zum Komprimieren
des Original-Headers verwendet wird. Der komprimierte Header wird
dann zu dem Empfänger
gesendet und dort durch den Entkomprimierer 110 entkomprimiert.
-
Der
Kontext 120 ist der Zustand, den der Komprimierer verwendet,
um den Header zu komprimieren. Der Kontext ist ein Satz von Variablen
und besteht im Wesentlichen aus einer unkomprimierten Version der
Header-Felder des letzten Headers. Neben den tatsächlichen
Header-Feldern, umfasst der Kontext zusätzliche Variablen wie etwa
Differenzen der ersten Ordnung zwischen Header-Feldem, die für eine Reihe
von aufeinander folgenden Paketen als konstant befunden wurden.
Der Kontext kann auch zusätzliche
Informationen enthalten, die den Paketstrom beschreiben, zum Beispiel
die typische Zunahme zwischen Paketen in Sequenznummern oder Zeitstempeln.
-
Während des
Betriebs müssen
der Komprimierer 100 und der Entkomprimierer 110 einen
gemeinsamen Kontext aufrechterhalten. Wenn der Kontext 130 des
Entkomprimierers 110 nicht mit dem Kontext 120 des
Komprimierers 100 übereinstimmt, schlägt die Entkomprimierung
des Headers fehl. Diese Situation kann auftreten, wenn Datenpakete über unzuverlässige, z.B.
drahtlose, Kanäle übertragen werden,
weil die Pakete dann zwischen dem Komprimierer 100 und
dem Entkomprimierer 110 verloren gehen oder beschädigt werden
können.
-
Es
ist deshalb erforderlich, eine Resynchronisationsprozedur einzuleiten,
sobald der Kontext 130 des Entkomprimierers 110 ungültig wird.
Zu diesem Zweck werden Aktualisierungspakete (UP) zum Übertragen
von Informationen im Kontext 120 des Komprimierers 100 an
den Entkomprimierer 110 vorgesehen. Unter Verwendung der
UP-Pakete wird der Kontext 130 aktualisiert.
-
Die
Leistung eines Header-Komprimierungsschemas kann durch zwei Parameter,
nämlich
die Komprimierungseffizienz und die Robustheit, beschrieben werden.
Ein robustes Schema toleriert Fehler in der Verbindung, über die
eine Header-Komprimierung erfolgt, ohne zusätzliche Pakete zu verlieren,
zusätzliche
Fehler einzuführen
oder eine größere Bandbreite
zu nutzen. Die Verwendung der UP-Pakete erhöht auf der einen Seite die
Robustheit, vermindert aber auf der anderen Seite die Komprimierungseffizienz,
weil die UP-Pakete
groß sind. Deshalb
werden zusätzlich
zu den UP-Paketen auch nicht-Aktualisienangspakete
(NUP) verwendet, die sehr klein sind und nur von dem vorausgehenden UP-Paket
abhängen.
Die NUP-Pakete aktualisieren ihren Kontext nicht, sodass, wenn ein
NUP-Paket verloren geht, der Kontext 130 des Entkomprimierers gültig bleibt
und der Empfänger
die folgenden Pakete weiterhin entkomprimieren kann.
-
Der
zu komprimierende Paketstrom verhält sich gewöhnlich regelmäßig. Die
meisten Header-Felder sind konstant und ändern sich während der
Lebensdauer des Stroms nicht. Einige Felder ändern sich mit jedem Paket
(z.B. die Sequenznummer und der Zeitstempel). Wenn die Werte dieser
Felder mit der Sequenznummer synchronisiert werden und deshalb aus
dieser Nummer errechnet werden können,
ist der Strom regelmäßig. Unregelmäßigkeiten in
diesen Feldern stören
die Synchronisation, weil zum Beispiel ein nichtlinearer Sprung
in dem RTP-Zeitstempelfeld vorliegt. Bei einer Unregelmäßigkeit
können
die Werte der geänderten
Felder nicht aus der Sequenznummer berechnet werden. Diese Unregelmäßigkeiten
können
ziemlich häufig
auftreten, z.B. durchschnittlich jede Sekunde bei einem Gesprächs-Audiostrom.
-
Die
Länge von
NUP-Paketen nimmt aus den folgenden beiden Gründen mit der Zeit zu. Wenn
der Strom Unregelmäßigkeiten
aufweist, sind die gesendeten NUP-Pakete größer, weil die Unregelmäßigkeiten
aufgenommen werden müssen.
Auch wenn keine Unregelmäßigkeiten
im Strom auftreten, kann sich die Länge der NUP-Pakete vergrößern, weil
größere Differenzen
zu den letzten Aktualisierungspaketen vorliegen. Um die Länge der
NUP-Pakete zu reduzieren, muss eine Aktualisierung durchgeführt werden, d.h.
es wird eine Anzahl von UP-Paketen gesendet, wobei bei korrektem
Empfang der Kontext aktualisiert wird.
-
Eine
Schwierigkeit besteht darin, die für eine Aktualisierung zu sendende
Anzahl von UP-Paketen zu
bestimmen. Wenn zu viele gesendet werden, ist der Kontext bereits
aktualisiert und gültig,
während noch
weitere UP-Pakete gesendet werden. Dadurch wird die Anzahl der übertragenen
Bits unnötig
erhöht und
die Effizienz vermindert, weil die UP-Pakete größer als die NUP-Pakete sind.
Wenn dagegen nicht genug UP-Pakete gesendet werden, erhöht sich
das Risiko eines Kontextverlusts, weil die Wahrscheinlichkeit zunimmt,
dass keines der gesendeten UP-Pakete empfangen wird.
-
Wenn
also die Anzahl von UP-Paketen zu hoch ist, wird die Komprimierungseffizienz
herabgesetzt. Und wenn die Anzahl von UP-Paketen zu niedrig ist,
kann der Entkomprimierer den Kontext verlieren, sodass alle Pakete
verworfen werden müssen, bis
das nächste
UP-Paket korrekt empfangen wird.
-
Bei
unzuverlässigen
Kanälen
wie etwa in drahtlosen Netzwerken variiert die Kanalqualität gewöhnlich beträchtlich.
Dies wird im Folgenden ausführlicher
mit Bezug auf 2a bis 2c beschrieben.
-
In
diesen Beispielen wird angenommen, dass ein Burstfehler auftritt.
Burstfehler sind Fehler, durch die mehrere aufeinander folgende
Pakete verloren gehen. In den Beispielen von 2a bis 2c wird
angenommen, dass drei Pakete verloren gehen. Wie in 2a gezeigt,
können
ein UP-Paket und zwei NUP-Pakete nicht durch den Entkomprimierer
empfangen werden. Weil der Entkomprimierer jetzt einen ungültigen Kontext
aufweist, müssen
die folgenden NUP-Pakete verworfen werden, sodass insgesamt ein
Verlust von neun Paketen am Empfänger
auftritt (10).
-
In 2b wurde
die Anzahl der aufeinander folgenden UP-Pakete auf drei erhöht. Während das Senden
einer Anzahl von aufeinander folgenden UP-Paketen gewöhnlich zuverlässiger ist,
ist die Wahrscheinlichkeit hoch, dass wenigstens eines dieser UP-Pakete
korrekt empfangen wird (15), wobei jedoch die Komprimierungseffizienz
vermindert ist. Außerdem
hat sich in 2b die Robustheit tatsächlich nicht
verbessert, weil aufgrund der Natur des Fehlers wiederum neun Pakete
nicht am Empfänger entkomprimiert
werden können.
-
Ein
Ansatz zur Beseitigung der Probleme von Burstfehlern besteht in
der Verwendung eines Sparse-Modus, siehe (20) in 2c.
Bei einem Sparse-Modus werden UP und NUP-Pakete in einer fixen Reihenfolge
gesendet, wodurch das Senden aller UP-Pakete in einer Reihe vermieden
wird. In dem Beispiel von 2c ist
diese Sequenz die folgende: UP-NUP-UP-NUP-UP-NUP-UP-NUP-UP-NUP-UP-...
-
Wie
aus 2c deutlich wird, kann auch das Senden von Paketen
im Sparse-Modus zu einem wesentlichen Verlust von Datenpaketen 25 führen.
-
EP2081910A
wurde nach dem Einreichungsdatum dieser Anmeldung veröffentlicht
und betrifft eine Datenübertragungsvorrichtung
zum sequentiellen Senden von Daten in Einheiten von Paketen, die
jeweils Übertragungsdaten
für ein
Empfangsende enthalten. Das Dokument gibt ein Paket an, dass mittels
eines Paketdatenübertragungsverfahrens
zwischen mehreren Datenverarbeitungsvorrichtungen vorgesehen wird,
in denen Daten in Entsprechung zu vorbestimmten Paketen am Sendeende komprimiert
werden und die komprimierten Daten in Entsprechung zu diesen Paketen
am Empfangsende wiederhergestellt werden.
-
Weiterhin
beschreibt der Artikel von Degemark et al. „Low-loss TCP/IP header compression
for wireless networks" in
Wireless Network, US ACM, Vol. 3, No. 5, October 1997, auf den Seiten
375–387 ein
Header-Komprimierungsschema für
das UDP/IP- und TCP/IP-Protokoll. Das Dokument gibt an, wie die Größe der UDP/IP-Header
auf 4 oder 5 Bit reduziert werden kann. Insbesondere wird eine Verallgemeinerung
des am häufigsten
verwendeten Verfahrens für die
Header-Komprimierung für
TCP/IPv4 von Jacobson zu IPv6 und mehreren IP-Headern angegeben. Das resultierende
Schema sieht zwei einfache Mechanismen vor, um eine potentielle
Verstärkung
aus der Header-Komprimierung über
verlustbehaftete drahtlose Netzwerke und Punkt-to-point-Modemverbindungen
zu erhalten.
-
Die
Techniken aus dem Stand der Technik bieten keine gute Lösung für die Komprimierungseffizienz
und die Robustheit. Es stellt vielmehr ein schwerwiegendes Problem
dar, die optimalen Bedingungen zu bestimmen.
-
Es
ist deshalb eine Aufgabe der Erfindung, ein Verfahren und eine Vorrichtung
zum Übertragen von
Datenpaketen über
einen unzuverlässigen
Kanal anzugeben, wobei sowohl die Effizienz als auch die Robustheit
verbessert werden können.
-
Diese
Aufgabe wird durch die Erfindung gemäß dem Gegenstand der unabhängigen Ansprüche gelöst.
-
Gemäß der Erfindung
wird die Anzahl der aufeinander folgenden UP-Pakete in Übereinstimmung
mit der Kanalqualität
gesetzt. Bei einem Kanal mit hoher Qualität kann also die Anzahl der
UP-Pakete reduziert werden. Wenn eine hohe Fehlerrate auf dem Kanal
vorliegt, wird die Anzahl der UP-Pakete erhöht, sodass eine robuste Verbindung
zwischen dem Sender und dem Empfänger
vorhanden ist.
-
Die
Erfindung ist vorteilhaft, weil sie eine dynamische Anpassung des Übertragungs-
und Komprimierungsmechanismus an die aktuelle Kanalqualität erlaubt.
Insbesondere ermöglicht
die Erfindung eine dynamische Steuerung der Aktualisierung des Kontexts
für den
Entkomprimierer in Übereinstimmung
mit der Kanalqualität.
UP-Pakete werden nur in der Anzahl gesendet, die erforderlich ist,
um einerseits eine große
Robustheit und andererseits eine bessere Komprimierungseffizienz
sicherzustellen. Dadurch wird die mittlere Header-Größe auch
dann reduziert, wenn die Kanalqualität variiert.
-
Bevorzugte
Ausführungsformen
der Erfindung sind in den abhängigen
Ansprüchen
definiert.
-
Indem
die Gesamtanzahl der während
deiner Kontextaktualisierungsphase übertragenen UP- und NUP-Pakete
in Übereinstimmung
mit der Rount-Trip-Time gesetzt wird, kann eine Anpassung dieser
Anzahl auch bei Kanälen
mit guter Qualität häufig durchgeführt werden.
Dies gestattet eine präzisere
Steuerung zum Finden des besten Kompromisses zwischen der Komprimierungseffizienz
und der Übertragungsrobustheit.
-
Wenn
die Anzahl der NUP-Pakete auf der Basis der Codec-Eigenschaften
bestimmt wird, passen sich die Mechanismen der Erfindung nicht nur den
aktuellen Eigenschaften des Kanals, sondern auch dem Typ des Paketstroms
an. In dem die Sequenz der UP- und NUP-Pakete sowohl von der Kanalqualität als auch
von den Eigenschaften des Paketstroms abhängig gemacht wird, kann ein
noch besserer Kompromiss zwischen der Komprimierungseffizienz und
der Übertragungsrobustheit
erreicht werden.
-
Die
Erfindung wird im Folgenden mit Bezug auf die beigefügten Zeichnungen
beschrieben.
-
1 zeigt
ein Komprimierer/Entkomprimierer-System, in dem UP- und NUP-Pakete
verwendet werden.
-
2a–2c zeigen
Zeitdiagramme von UP-NUP-Sequenzen im Fall eines Burstfehlers.
-
3 zeigt
die UP-NUP-Sequenz während einer
Kontextaktualisierungsphase gemäß der Erfindung.
-
4a und 4b zeigen
Komprimierer/Entkomprimierer-Systeme, in denen die Erfindung vorzugsweise
verwendet werden kann.
-
5 zeigt
ein allgemeines Flussdiagramm des Kontextaktualisierungsprozesses
gemäß der Erfindung.
-
6a und 6b sind
Flussdiagramme, die bevorzugte Ausführungsformen des Prozesses zum
Setzen der Anzahl der UP-Pakete in jeder Teilsequenz zeigen.
-
7 ist
ein Flussdiagramm, das den Prozess zum Setzen der Gesamtanzahl von
Paketen in der Sequenz gemäß einer
bevorzugten Ausführungsform
der Erfindung zeigt.
-
Im
Folgenden werden Ausführungsformen der
Erfindung ausführlicher
beschrieben.
-
Wie
in 3 gezeigt, kann die Sequenz der UP- und NUP-Pakete
während
der Kontextaktualisierungsphase in eine Anzahl von Teilsequenzen
unterteilt werden. Jede Teilsequenz enthält eine Anzahl von UP-Paketen,
auf die eine Anzahl von NUP-Paketen folgt. Die folgenden Parameter
werden zur Beschreibung der UP-NUP-Sequenz gemäß der Erfindung verwendet.
-
Der
Parameter p beschreibt die Gesamtanzahl von Paketen in der Kontextaktualisierungsphase.
In diese Phase wird eingetreten, wenn eine Aktualisierung des Kontexts
als erforderlich oder zumindest als nützlich betrachtet wird, d.h.
zum Beispiel im Falle eines Kontextverlusts oder allgemeiner, wenn eine
Unregelmäßigkeit
in dem Datenstrom festgestellt wurde. Die Dauer der Kontextaktualisierungsphase
wird ausreichend lange gewählt,
damit der Entkomprimierer seinen Kontext aktualisieren kann.
-
Der
Parameter k ist die Anzahl der Pakete in jeder Teilsequenz. In der
bevorzugten Ausführungsform
von 3 ist der Parameter in jeder Teilsequenz identisch.
-
Der
Parameter m; beschreibt die Anzahl von UP-Paketen in der i-ten Teilsequenz.
Der Wert dieses Parameters kann sich von Teilsequenz zu Teilsequenz
unterscheiden, wobei in einer bevorzugten Ausführungsform der Erfindung der
Parameter von Teilsequenz zu Teilsequenz um eins dekrementiert wird,
d.h. mi = m–1-1.
-
Schließlich beschreibt
der Parameter n; die Anzahl von NUP-Paketen in der i-ten Teilsequenz.
-
4a und 4b zeigen
Komprimierer/Entkomprimierer-Systeme, in denen die Erfindung vorzugsweise
angewendet werden kann. Wie in 4a gezeigt,
empfängt
der Komprimierer Messwerte zu der Kanalqualität von der Messeinheit 400. Die
Messeinheit 400 kann eine beliebige Einheit wie zum Beispiel
eine physikalische Schicht sein, die für den Komprimierer 100 Messwerte
zu der Kanalqualität
vorsieht. Derartige Werte können
zum Beispiel die Rauscheigenschaften in den Kanal oder Bit- bzw. Blockfehler
angeben. Wenn keine Messungen verfügbar sind, kann die Messeinheit 400 auch
eine Steuereinheit des Senders sein, die Aktionen durchführen kann,
die wenigstens zu geschätzten
Qualitätswerten
führen.
-
In
dem System von 4b kann der Entkomprimierer
NACK (non-acknowledgement)-Meldungen
an den Komprimierer senden, wenn die UP-Pakete einer Teilsequenz
verloren gehen. Die Verwendung der NACKs wird durch die folgenden
Erläuterungen
verdeutlicht.
-
Das
Flussdiagramm von 5 zeigt die Aktualisierung des
Kontexts 130, wobei der Prozess die Schritte 500 bis 530 zum
Setzen jedes der Parameter mi, k, ni und p umfasst. Dem Fachmann sollte deutlich sein,
dass die Reihenfolge der in 5 gezeigten Schritte
geändert
werden kann. Zum Beispiel können die
Parameter p oder k zuerst gesetzt werden. Weiterhin kann der Prozess
zum Aktualisieren des Kontexts gemäß der Erfindung auch das Setzen von
einigen Parametern vorsehen, während
die restlichen Parameter konstant gewählt werden oder auf Standardwerte
gesetzt werden.
-
Das
Setzen der Parameter gemäß der Erfindung
wird im Folgenden ausführlicher
beschrieben. In Schritt 400 wird die Anzahl mi von
UP-Paketen in jeder Teilsequenz gesetzt. Wie zuvor genannt, wird diese
Anzahl vorzugsweise von Teilsequenz zu Teilsequenz um eins vermindert.
Bei diesem Schema wird berücksichtigt,
dass die Wahrscheinlichkeit des korrekten Empfangs von wenigstens
einem UP-Paket mit dem Wert von i steigt. Dann ist es tatsächlich lediglich
erforderlich, einen optimalen Startwert m1 zu finden.
-
Eine
bevorzugte Ausführungsform
zum Setzen von m1 ist in 6a gezeigt.
In Schritt 600 erhält der
Komprimierer 100 den aktuellen Wert des Parameters m1. Dann wird in Schritt 610 ein
Maximum- und ein Minimumwert für
m1 gelesen. Die Minimum- und Maximumwerte
können
zum Beispiel auf jeweils zwei und sechs gesetzt werden.
-
Wenn
der Komprimierer zu Beginn der Sitzung keinen aktuellen Wert des
Parameters m, erhalten kann, verwendet der Komprimierer in Schritt 600 statt
dessen einen Startwert. Der Startwert kann vorzugsweise auf einen
mittleren Wert zwischen dem Minimum und dem Maximum gesetzt werden.
-
Sobald
der aktuelle Wert und die Grenzwerte erhalten wurden, empfängt der
Komprimierer Messwerte von der Messeinheit 400, die oben
mit Bezug auf 4A beschrieben wurde. Die in
Schritt 620 erhaltenen Werte sind vorzugsweise Messwerte
zu dem Signal/Rauschen-Verhältnis SNR
oder der Blockfehlerrate BLER in dem Kanal. Wenn der SNR-Wert niedrig
und damit BLER hoch ist, ist ein höherer Wert für m1 erforderlich, um die Wahrscheinlichkeit
des korrekten Empfangs der Datenpakete am Entkomprimierer zu erhöhen.
-
Es
wird dann in Schritt 630 unter Verwendung des erhaltenen
Messwerts bestimmt, ob sich der Kanalzustand geändert hat. Wenn dies der Fall ist,
wird der Parameter m1 in Schritt 640 aktualisiert. Weil
sich der Kanalzustand sehr schnell und häufig ändern kann, wird der Wert m1 graduell angepasst, d.h. er wird um eine
feste Größe in übereinstimmung damit
geändert,
ob die Kanalqualität
sich verbessert oder verschlechtert hat.
-
Eine
andere bevorzugte Ausführungsform zum
Setzen der Anzahl m1 von UP-Paketen in der ersten
Teilsequenz ist in 6b gezeigt. Dieser Ansatz wird
vorzugsweise dann verwendet, wenn keine Messwerte von der Messeinheit 400 verfügbar sind. Nachdem
der aktuelle Wert und die Minimum- und Maximumwerte erhalten wurden,
bestimmt der Komprimierer in Schritt 650, ob eine NACK-Meldung
empfangen wurde. Wenn wenigstens ein UP-Paket der ersten Teilsequenz
korrekt empfangen wurde, sendet der Entkomprimierer 110 keine
NACK-Meldung. Wenn
also der Komprimierer 100 während der gesamten Prozedur
keine NACK-Meldung
empfängt, wird
der Parameter m1 für die nächste Aktualisierungsprozedur
um eins reduziert (Schritt 660). Wenn jedoch eine NACK-Meldung
empfangen wird, wird der Parameter m1 in
Schritt 670 erhöht.
Dies kann vorzugsweise durchgeführt
werden, indem entweder ein vorbestimmter Wert addiert wird oder
der aktuelle Wert mit einem vorbestimmten Faktor multipliziert wird.
-
In
den oben erläuterten
Ausführungsformen wird
nur der Wert von m1 direkt in Übereinstimmung mit
der Kanalqualität
gesetzt, während
die Anzahl der UP-Pakete in den restlichen Teilsequenzen in Übereinstimmung
mit der Gleichung m1 = mi-1-1
gesetzt wird. Es können
jedoch alternativ hierzu nicht nur m1, sondern
auch ein Teil oder alle Parameter mi unabhängig voneinander
gesetzt werden.
-
Im
Folgenden wird das Setzen des Parameters k, d.h, der Anzahl von
Paketen in jeder Teilsequenz ausführlicher beschrieben (Schritt 510).
Wie zuvor genannt, wird dieser Parameter für alle Blöcke konstant gewählt. Gemäß einer
bevorzugten Ausführungsform
der Erfindung wird dieser konstante Wert in Übereinstimmung mit den Codec-Eigenschaften gesetzt.
-
Der
Grund hierfür
liegt darin, dass einige Medien-Codecs (z.B. Sprach-Codecs) einen
Paketverlust in gewissem Umfang tolerieren. Wenn der Codec zum Beispiel
einen Paketverlust von bis zu x Paketen kompensieren kann, ohne
dass der Hörer
den Paketverlust bemerkt, wird der konstante Parameter k niedriger
als diese Zahl x gesetzt. Zu diesem Zweck kann der Komprimierer
zum Beispiel das Nutzlast-Feld des RTP-Headers lesen, um den verwendeten
Codec festzustellen. Alternativ hierzu kann der Komprimierer eine
verfügbare
Bandabweichungs-Signalisierung verwenden.
-
Wenn
der Komprimierer ausreichende Informationen zu den allgemeinen Eigenschaften
des Codec festgestellt hat, wird der Parameter k entsprechend gesetzt.
Die allgemeinen Eigenschaften von Codcs können zu diesem Zweck z.B. in
einer Nachschlagetabelle des Komprimierers gespeichert werden. Wenn
der Komprimierer keine geeigneten Informationen feststellen kann,
wird der Parameter k auf einen Wert gesetzt, der die empfangende
Anwendung nicht beeinträchtigen
kann. In diesem Fall wird vorzugsweise ein eher pessimistischer
Ansatz verwendet. Wenn weiterhin keine Informationen zu dem verwendeten Codec
verfügbar
sind, können
die Parameter mi etwas erhöht werden,
um trotzdem eine Robustheit sicherzustellen.
-
Schließlich umfasst
der Prozess zum Aktualisieren des Kontexts mit dem Schritt 530 eine
Prozedur zum Setzen der Gesamtanzahl p von Paketen in der Sequenz.
Diese Prozedur ist in 7 ausführlicher dargestellt. Der Parameter
p wird in der bevorzugten Ausführungsform
der Erfindung auf einen Wert gesetzt, der ausreichend groß ist, damit
der Entkomprimierer genügend
Zeit hat, um auf einen Verlust von Datenpaketen mit einer NACK-Meldung
zu reagieren. Der Parameter kann vorzugsweise in Übereinstimung
mit der Round-Trip-Time RTT und vorzugsweise auf ein kleines Vielfaches
derselben gesetzt werden. Aus diesem Grund sieht der Prozess von 7 eine
Schätzung
des aktuellen RTT-Werts vor.
-
Gemäß der Erfindung
leitet der Prozess einen Kontextverlust in einer ruhigen Periode
ein. Eine ruhige Periode ist eine Zeitperiode, während der keine Pakete gesendet
werden. Gewöhnlich
stellt der Komprimierer eine ruhige Periode zum Beispiel dann fest,
wenn er für
eine bestimmte Zeitdauer kein RTP-Paket empfangen kann.
-
Zuerst
wird in Schritt 700 festgestellt, ob Pakete gesendet werden.
Wenn eine ruhige Periode festgestellt wird, wird in Schritt 720 ein
falsches Paket gesendet. Ein falsches Paket ist ein Paket, das keinen
korrekt komprimierten Header enthält, sodass dieses Paket den
Kontext 130 des Entkomprimierers 110 ungültig macht.
Der Entkomprimierer wird dann unmittelbar eine NACK-Meldung zurücksenden,
die durch den Komprimierer in Schritt 730 empfangen wird.
Der Komprimierer schätzt
den RTT-Wert in Schritt 740, indem er die Zeitdifferenz
zwischen der Empfangszeit der NACK-Meldung und der Sendezeit des
falschen Pakets berechnet. Wenn in Schritt 750 bestimmt
wird, dass sich der RTT-Wert geändert
hat, wird der Parameter p in Schritt 760 aktualisiert.
Vorzugsweise wird der Parameter p proportional zu dem RTT-Wert gewählt.
-
Der
beschriebene Prozess zum Setzen der Gesamtanzahl p von Paketen in
der Sequenz ist vorteilhaft, weil dieser Prozess durchgeführt wird,
wenn ohnehin eine Aktualisierungsprozedur nach einer ruhigen Periode
gestartet wird, weil einige unerwartete Lücken in dem Zeitstempel aufgetreten
sind. Es besteht also kein zusätzliches
Risiko für
einen Verlust des Kontexts 130.
-
Außerdem ist
die beschriebene Prozedur zum Schätzen des RTT-Werts durch das
Senden eines falschen Pakets vorteilhaft, weil der Prozess immer
dann durchgeführt
werden kann, wenn eine ruhige Periode festgestellt wird. Das Auftreten
einer ruhigen Periode ist unabhängig
von einem Kontextverlust, sodass eine Anpassung des Parameters p
also auch bei Kanälen
mit guter Qualität
häufig
vorgenommen werden kann.
-
Weiterhin
ist die RTT-Schätzung
gemäß der Erfindung
deshalb vorteilhaft, weil sie eine präzise Steuerung des Parameters
p gestattet. Wenn die Messung zum Beispiel nur unter Verwendung
von NACK-Meldungen durchgeführt
werden würde,
ohne einen Kontextverlust durch das Senden eines falschen Pakets
einzuleiten, würde
die Messung den RTT-Wert plus eine zusätzliche Zeitdauer ergeben, während der
wenigstens ein Paket verloren geht und ein anderes Paket empfangen
wird. Diese zusätzliche
Zeitdauer kann sehr hoch sein und kann nicht berechnet werden.