-
QUERVERWEISE AUF VERWANDTE
ANMELDUNGEN
-
Diese
Patentanmeldung beansprucht das Vorrecht der Priorität der ebenfalls
anhängigen
vorläufigen
US-Patentanmeldung mit der Serien-Nr. 60/164,355, die am 9. November
1999 eingereicht wurde.
-
GEBIET DER ERFINDUNG
-
Die
Erfindung bezieht sich allgemein auf Paketkommunikationen, und insbesondere
auf eine Headerkompression bei Paketkommunikationen.
-
HINTERGRUND DER ERFINDUNG
-
Der
Ausdruck Headerkompression (englisch: header compression; HC) nimmt
Bezug auf die Technik des Minimierens der notwendigen Bandbreite
für Informationen,
die auf einer Per-Sprung-Basis über Punkt-zu-Punkt-Verbindungen
in Paket-Headern
getragen werden. Eine Headerkompression wird für gewöhnlich dadurch realisiert,
dass lediglich anfänglich statische
Informationen gesendet werden. Semi-statische Informationen werden
dann dadurch übermittelt,
dass lediglich die Änderung
(Delta) gegenüber dem
vorhergehenden Header gesendet wird, und vollständig zufällige Informationen ohne Kompression
gesendet werden. Daher wird eine Headerkompression für gewöhnlich mit
einer Zustandsmaschine realisiert.
-
Herkömmlich Headerkompressionsalgorithmen
sind im Grunde für
schmalbandige verdrahtete Kanäle
mit einer eher geringen Komplexität auf der empfangenden Dekompressionsseite
entworfen. Ferner wird die Komplexität auf der sendenden Kompressionsseite
niedrig gehalten, um effiziente Implementierungen bei Weiterleitungseinrichtungen
(englisch: router), bei denen so viel Rechenkapazität wie möglich für das Weiterleiten
benötigt
wird, zu erlauben. Ferner haben die verdrahteten Kanäle, für die existierende
Headerkompressionsalgorithmen entworfen sind, typischerweise sehr
geringe Wahrscheinlichkeiten für
Bit-Fehler (zum Beispiel eine Bit-Fehlerrate von 10–6).
Drahtlose Kanäle
(allgemein durch verlustbehaftete Verbindungen mit schmaler Bandbreite
gekennzeichnet) haben typischerweise eine viel höhere Wahrscheinlichkeit für einen
Fehler, so dass eine Headerkompression für eine Verwendung bei drahtlosen
Kanälen
unter Berücksichtigung einer
viel größeren Bit-Fehlerwahrscheinlichkeit (zum
Beispiel Bit-Fehlerraten bis zu 10–3)
entworfen sein sollte.
-
Herkömmliche
Kompressionsverfahren für RTP/UDP/IP-Header
sind häufig
auf Weichzustandsmaschinen mit Zuständen, die Kontexte genannt werden,
basiert. Der Dekompressor-Kontext wird häufig durch jedes Paket, das
empfangen wird, aktualisiert, und wenn ein Paket auf der Verbindung
verloren wird, wird der Kontext ungültig. Wenn der Dekompressor-Kontext
ungültig
gemacht wird, müssen alle
nachfolgenden Pakete verworfen werden, bis der Weichzustand durch
einen vollen (unkomprimierten) Header aktualisiert wird. Eine Anfrage
für eine
Aktualisierung wird von dem empfangenden Ende gesendet, wenn der
Dekompressor realisiert, dass das erste Paket verworfen (oder verloren)
ist, und dann erfordert es einen vollen Umlauf (von dem empfangenden
Ende zu dem übertragenden
Ende und zurück), bevor
die Aktualisierung (das Paket mit einem unkomprimierten Header)
eintrifft. Dies resultiert häufig in
vielen verlorenen Paketen. Der Zustand mit einem Verlust des Kontexts
kann ebenfalls auftreten, wenn der empfangende Dekompressor dabei
versagt, einen komprimierten Header erfolgreich zu dekomprimieren.
-
Falls
die Nutzlast für
die Pakete mit den komprimierten Headern einen Echtzeitdienst trägt, kann der
Verlust mehrerer aufeinander folgender Pakete verheerend für die Qualität dieses
Echtzeitdienstes sein. Zum Beispiel wird sich die Qualität eines
Echtzeit-Sprachdienstes mit einer erhöhten Paketverlustrate aufgrund
aufeinander folgender verlorener Sprachrahmen wesentlich verschlechtern.
Falls die Sprachrahmenfehler eine stoßartige Charakteristik haben,
wird die Sprachqualität
schlechter sein als für die
gleiche Sprachrahmenfehlerrate, jedoch mit einer weniger korrelierten
Rahmenfehlercharakteristik.
-
Eine
Weise, die Wahrscheinlichkeit für
ungültige
Kontext-Zustände, und
dadurch einen Paketverlust, zu reduzieren, besteht darin, die Intelligenz bei
dem Empfänger
zu erhöhen,
zum Beispiel durch Erhöhen
der Wahrscheinlichkeit, dass der Dekompressor erfolgreich schätzt (rät), was
der korrekte Kontext-Zustand sein sollte, ohne mehr Bits pro komprimierten
Header zu verwenden. Bei dem Beispiel eines Echtzeit-Sprachdienstes erhöht sich
der Wert eines herkömmlichen
RTP-Zeitstempelfelds
während Sprachzeiträumen typischerweise
auf eine vorhersagbare Weise (und kann so zuverlässig vorhergesagt oder geraten
werden), aber nach stillen oder sprachlosen Zeiträumen hat
der Zeitstempel aus Sicht des Empfängers einen zufälliger verteilten Wert.
-
Auf
den existierenden Standard für
eine Kompression von RTP/UDP/IP-Headern (siehe zum Beispiel Steven
Casner und Van Jacobson, Compressing IP/UDP/RDP Headers for Low-Speech
Serial Links, IETF RFC 2508, IETF Network Working Group, Februar
1999) wird hierin als CRTP Bezug genommen. Bei CRTP wird der Zeitstempel-Deltawert
abhängig
von dem Wert mit einer variierenden Zahl von Bits codiert. Eine
große
Zeitstempeländerung
seit dem letzten Paket verursacht einen großen Deltawert, der auf nachteilige
Weise mehr Bits in dem komprimierten Header erfordert, um den Deltawert, der
die Zeitstempelinformationen angibt, zu tragen.
-
Wenn
DTX (diskontinuierliche Übertragung) oder
Stilleunterdrückung
bei einem Echtzeit-Sprachdienst verwendet wird, wird das Zeitstempelfeld
des RTP-Headers ein stochastisches Verhalten haben, das bei einem
Strom von RTP/UDP/IP-Paketen, die Sprache tragen, schwer vorherzusagen
ist. Daher ist das Zeitstempelfeld eines der am schwierigsten bei dem
Empfänger
mittels Raten zu dekomprimierenden Felder. Bei CRTP wird der Zeitstempel-Deltawert mit
einer Zahl von Bits, die von der Größe der Zeitstempeländerung
seit dem letzten Paket abhängt, codiert.
Daher erfordern lange stille oder sprachlose Zeiträume mehr
Bits, um das Zeitstempelfeld zu Deltamodulieren, so dass der erste
Header nach einem stillen Zeitraum typischerweise größer sein
wird, als bei Sprachpaketen, die einem Sprachzeitraum entsprechen.
-
Es
ist daher wünschenswert,
eine Technik für eine
Headerkompression/-Dekompression ohne die im Vorhergehenden erwähnten Nachteile,
die mit herkömmlichen
Verfahren zusammenhängen,
zu schaffen.
-
Die
internationale Anmeldung
WO00/79762 A1 ,
die nach dem Einreichungsdatum der vorliegenden Anmeldung veröffentlicht
worden ist, jedoch eine frühere
Priorität
beansprucht, beschreibt Techniken zum Komprimieren und Rekonstruieren
des Zeitstempelwerts von Echtzeit-Kommunikationspaketen. Ein erster
Teil des Zeitstempelwerts wird durch einen Headerkompressor ausgewählt und übertragen.
Ein zweiter Teil des Zeitstempelwerts wird durch den Header-Dekompressor
basierend auf der verstrichenen Zeit zwischen dem Empfang aufeinander
folgender Pakete geschätzt.
Der Header-Dekompressor kombiniert
den zweiten Teil mit dem ersten Teil, der von dem Headerkompressor
empfangen wird, um einen rekonstruierten Zeitstempelwert zu erzeugen.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Die
vorliegende Erfindung schafft auf vorteilhafte Weise Techniken zum
effizienten Komprimieren und Rekonstruieren des Zeitstempelwerts
eines Echtzeit-Kommunikationspakets, dessen Zeitstempelwert nicht
in eine normalerweise erwartete Folge von Zeitstempelwerten fällt. Ein
erster Teil des Zeitstempelwerts wird durch den Headerkompressor ausgewählt und übertragen.
Ein zweiter Teil des Zeitstempelwerts wird durch den Header-Dekompressor auf
der Basis einer verstrichenen Zeit zwischen dem Empfang aufeinander
folgender Pakete geschätzt. Der
Header-Dekompressor kombiniert den zweiten Teil mit dem ersten Teil,
der von dem Headerkompressor empfangen wird, um einen rekonstruierten Zeitstempelwert
zu erzeugen.
-
Ferner
ist die vorliegende Erfindung insbesondere auf das Schaffen von
Techniken zum effizienten Komprimieren und Rekonstruieren eines
Headers eines Echtzeit-Kommunikationspakets
gerichtet. Gemäß den unabhängigen Ansprüchen wird
bei einem Headerkompressor ein Headerfeldwert (der skaliert sein
kann) auf einen Modulo-X-Operator, der zum Beispiel den Headerfeldwert
durch einen Wert X dividieren und den Rest ausgeben kann, angewandt. Optional
kann an den Rest eine Prüfsumme
angehängt
werden. Daher umfasst das komprimierte Headerfeld den Rest, wie
er von dem Modulo-X-Operator ausgegeben
wird, mit oder ohne die daran angehängte Prüfsumme. Ein Header-Dekompressor
umfasst einen Feld-Rekonstruierer,
der das empfangene komprimierte Headerfeld in Antwort auf den Restwert
und eine Bereichsinformation rekonstruiert. Die Bereichsinformation
stellt einen Bereich möglicher Feldwerte,
die aus dem empfangenen Restwert rekonstruiert werden können, dar.
-
Eine
vollständigere
Einschätzung
der vorliegenden Erfindung und des Schutzbereichs derselben kann
anhand der beigefügten
Zeichnungen, die im Folgenden kurz zusammengefasst sind, der folgenden
detaillierten Beschreibung der gegenwärtig bevorzugten Ausführungsbeispiele
der Erfindung und der angehängten
Ansprüche
erhalten werden.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Ein
vollständigeres
Verständnis
des Verfahrens und der Vorrichtung der vorliegenden Erfindung können unter
Bezugnahme auf die folgende detaillierte Beschreibung in Verbindung
mit den beigefügten
Zeichnungen erhalten werden, wobei:
-
1 exemplarische
Zeitstempelkompressions- und -Dekompressionstechniken gemäß der Erfindung
konzeptionell darstellt.
-
2 eine
exemplarische Paketdatenübertragungsstation
gemäß der Erfindung
darstellt.
-
3 exemplarische
Ausführungsbeispiele des
Headerkompressors von 2 darstellt.
-
3A ein
Beispiel des Zeitstempelfelds von 3 darstellt.
-
4 exemplarische
Operationen, die durch die Headerkompressorausführungsbeispiele von 2 und 3 durchgeführt werden
können,
darstellt.
-
5 eine
exemplarische Paketdatenempfangsstation gemäß der Erfindung darstellt.
-
6 exemplarische
Ausführungsbeispiele des
Header-Dekompressors
von 5 darstellt.
-
7 ein
exemplarisches Ausführungsbeispiel
des Zeitstempel-Dekompressors von 6 darstellt.
-
7A weitere
exemplarische Ausführungsbeispiele
des Zeitstempel-Dekompressors von 6 und 7 darstellt.
-
8 exemplarische
Operationen, die durch die Zeitstempel-Dekompressorausführungsbeispiele von 6–7A durchgeführt werden
können, darstellt.
-
9 exemplarische
Operationen, die in 8 durchgeführt werden können, um
die skalierte Zeitstempelschätzung
zu berechnen, darstellt.
-
10 einen
Teil eines Headerkompressors, der ein Ausführungsbeispiel der vorliegenden
Erfindung implementiert, schematisch darstellt.
-
11 einen
Teil eines Header-Dekompressors gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung schematisch darstellt.
-
12 ein
exemplarisches Ausführungsbeispiel
eines Feld-Rekonstruierers,
der in dem Header-Dekompressor von 11 verwendet
ist, schematisch darstellt.
-
13 ein
exemplarisches Ausführungsbeispiel
eines Verifizierers, der in dem Feld-Rekonstruierer von 12 verwendet
ist, schematisch darstellt.
-
14 exemplarische
Operationen, die durch die Header-Dekompressorausführungsbeispiele, die in 11–13 dargestellt
sind, durchgeführt
werden können,
darstellt.
-
15 ein
exemplarisches Ausführungsbeispiel
eines Auswählens
eines korrekten Headerfeld-Kandidaten aus einer beliebigen Zahl
von entsprechenden Headerfeld-Kandidaten gemäß der vorliegenden Erfindung
schematisch darstellt.
-
DETAILLIERTE BESCHREIBUNG
DER GEGENWÄRTIG
BEVORZUGTEN EXEMPLARISCHEN AUSFÜHRUNGSBEISPIELE
-
Die
vorliegende Erfindung wird nun im Folgenden unter Bezugnahme auf
die beigefügten Zeichnungen,
in denen bevorzugte Ausführungsbeispiele
der Erfindung gezeigt sind, vollständiger beschrieben. Diese Erfindung
kann jedoch in vielen unterschiedlichen Formen ausgeführt werden
und soll nicht als auf die Ausführungsbeispiele,
die hierin dargelegt sind, begrenzt aufgefasst werden; vielmehr werden
diese Ausführungsbeispiele
geliefert, so dass diese Offenbarung eingehend und vollständig ist
und Fachleuten den Schutzbereich der Erfindung voll vermittelt.
-
1 stellt
exemplarische Zeitstempelkompressions- und -Dekompressionstechniken
für eine Verwendung
bei Echtzeit-Kommunikationsanwendungen,
zum Beispiel Echtzeit-Sprachanwendungen, gemäß der Erfindung
konzeptionell dar. Im Grunde verwendet der Header-Dekompressor bei
dem Empfänger
einen lokalen Zeitgeber, um die verstrichene Zeit zwischen dem letzten
Sprachpaket vor einem Zeitraum einer Sprachinaktivität und dem
ersten Sprachpaket nach einem Zeitraum einer Sprachinaktivität zu schätzen. Basierend
auf diesem Schätzwert einer
verstrichenen Zeit kann der Header-Dekompressor eine Schätzung der
Differenz (oder des Deltas) zwischen den Zeitstempelfeldern dieser
zwei Sprachpakete, die den Zeitraum der Sprachinaktivität begrenzen,
vornehmen. Diese Schätzung
der Differenz zwischen Zeitstempelwerten kann in Kombination mit
dem bekannten Zeitstempelwert des letzten Sprachpakets vor der Sprachinaktivität verwendet werden,
um einen auf eine Kenntnis gestützten
Rateversuch des Zeitstempelwerts des ersten Sprachpakets nach der
Sprachinaktivität
vorzunehmen.
-
Wie
in 1 gezeigt, werden bei 11 bei dem Headerkompressor
des übertragenden
Endes lediglich die niederstwertigen Bits (englisch: least significant
bits; lsbs) L des Zeitstempels TS des ersten Sprachpakets nach der
Sprachinaktivität
für eine Übertragung über den
Kanal 13 ausgewählt.
Der Kanal 13 kann ein drahtloser Kanal sein, zum Beispiel eine
UMTS-Luftschnittstelle
oder eine andere zelluläre
Funkschnittstelle.
-
Bei 15 kann
bei dem empfangenden Ende auf die folgende exemplarische Art und
Weise eine Schätzung
des Zeitstempels des empfangenen Pakets erzeugt werden. Angenommen,
dass das Paket n – 1
das letzte empfangene Paket vor dem Sprachinaktivitätszeitraum
ist, und dass das Paket n das nächste
nachfolgende Sprachpaket, nämlich
das erste Sprachpaket nach dem Zeitraum der Sprachinaktivität, bezeichnet.
Wenn der Header-Dekompressor bei dem empfangenden Ende die Zeit
T(n – 1),
bei der das Paket n – 1
eintrifft, feststellt, und ebenso die Zeit T(n), bei der das Paket
n eintrifft, feststellt, dann kann eine absolute Zeitdifferenz zwischen
dem Eintreffen der zwei Pakete durch Subtrahieren von T(n – 1) von
T(n) geschätzt
werden. Diese Zeitdifferenz stellt die verstrichene Zeit zwischen
dem Eintreffen von dem Paket n – 1
und dem Paket n dar. Die verstrichene Zeit kann durch Multiplizieren
der verstrichenen Zeit mit einer Schätzung, wie viel sich der Zeitstempelwert
pro Zeiteinheit ändert,
in Zeitstempeleinheiten umgewandelt werden.
-
Angenommen,
dass Delta T die verstrichene Zeit, die durch die im Vorhergehenden
erwähnte
Zeitdifferenz T(n) – T(n – 1) dargestellt
wird, ist, und dass TS_Änderung
die Schätzung,
um wie viel sich der Zeitstempelwert pro Zeiteinheit ändert, ist.
Dann kann der Wert TS_Änderung
mit dem Wert Delta T multipliziert werden, um eine Schätzung, wie
viele Zeitstempeleinheiten mit der verstrichenen Zeit Delta T assoziiert
sind, mit anderen Worten, eine Schätzung der Differenz zwischen
den Zeitstempelwerten des Pakets n – 1 und des Pakets n, zu erzeugen.
Daher ist ein geschätzter
Wert des Zeitstempels des Pakets n, TS_Schätzung, durch Addieren der geschätzten Differenz
der Zeitstempelwerte (TS_Änderung multipliziert
mit Delta T) zu dem bekannten Zeitstempelwert des Pakets n – 1 gegeben.
Wenn TS_Schätzung
bei 15 bestimmt ist, werden die höchstwertigen Bits von TS_Schätzung an
die empfangene Version L' der
niederstwertigen Bits L des tatsächlichen
Zeitstempels TS angehängt,
wodurch ein Rateversuch, TS_Rateversuch, des Zeitstempelwerts des
Pakets n erzielt wird. Bei 17 versucht der Header-Dekompressor
zu bestimmen, ob TS_Rateversuch ein korrekter Rateversuch des ursprünglichen
Zeitstempels TS ist. Falls nicht, dann kann bei 15 ein
weiterer Rateversuch vorgenommen werden, und der Prozess kann wiederholt
werden, bis ein korrekter Rateversuch erzeugt wird oder eine Zeitbegrenzungsbedingung
erfüllt
ist.
-
2 stellt
eine exemplarische Paketdatenübertragungsstation
dar, die die exemplarischen Zeitstempelkompressionstechniken, die
in 1 dargestellt sind, durchführen kann. Die Übertragungsstation
kann zum Beispiel eine feste oder mobile Übertragungseinrichtung, die
in einem zellulären
Kommunikationsnetz in Betrieb ist, sein. Bei dem Ausführungsbeispiel
von 2 erzeugt eine Paketdatenkommunikationsanwendung 24 bei 25 Nutzlastinformationen und
bei 26 Headerinformationen. Die Nutzlastinformationen können auf
herkömmliche
Weise durch einen Nutzlastprozessor 20 verwendet werden,
um eine Nutzlast 23 zu erzeugen, und die Headerinformationen 26 werden
auf einen Headerkompressor 28 angewandt. Der Headerkompressor 28 komprimiert die
Headerinformationen, um einen komprimierten Header 22 zu
erzeugen. Der komprimierte Header 22 und die Nutzlast 23 bilden
ein Paket 21. Eine herkömmliche
Funkübertragungseinrichtung 29 kann wohlbekannte
Techniken verwenden, um das Paket 21 über eine Funkverbindung, wie
eine zelluläre Funkverbindung,
zu übertragen.
-
Die
Kommunikationsanwendung 24 liefert ferner ein Wiederaufnahmesignal 27,
das angibt, dass die gegenwärtige
Nutzlast und die Headerinformationen bei 25 und 26 einem
RTP-Sprachpaket
entsprechen, das das erste Sprachpaket ist, das nach einem Zeitraum
einer Sprachinaktivität übertragen werden
soll (entsprechend dem Paket n, das im Vorhergehenden im Hinblick
auf 1 beschrieben worden ist). Der Headerkompressor 28 ist
antwortend auf eine Aktivierung des Signals 27 zum Durchführen erfinderischer
Zeitstempelkompressionstechniken, die zum Beispiel die Zeitstempelkompressionstechniken,
die in 1 dargestellt sind, umfassen.
-
3 stellt
exemplarische Ausführungsbeispiele
des Headerkompressors 28 von 2 dar. Bei den
Headerkompressorausführungsbeispielen
von 3 empfängt
ein Separator 33 die Headerinformationen 26 von
der Kommunikationsanwendung 24. Der Separator 33 trennt
die Zeitstempelfeldinformation von den anderen Headerinformationen,
die bei 26 empfangen werden, so dass die Zeitstempelinformation
getrennt von den restlichen Headerinformationen komprimiert werden
kann. Ein Dividierer 35 skaliert den Zeitstempelwert durch
Dividieren des Zeitstempelwerts durch einen Skalierungswert TS_Inkrement. Unter
Heranziehen des exemplarischen Falls eines Echtzeit-Sprachdienstes, der
Sprachinformationen, die durch einen Sprach-Codec mit einer konstanten Bit-Rate
erzeugt werden, trägt,
kann erwartet werden, dass sich der Zeitstempel mit jedem nachfolgenden
Paket während
eines Zeitraums einer Sprachaktivität um eine konstante Inkrementierungsmenge
erhöht.
Der Wert TS_Inkrement stellt eine Schätzung dieser konstanten Inkrementierungsmenge
dar, und kann zum Beispiel durch empirische Beobachtung bestimmt
werden. Daher ist der Dividierer 35 in Betrieb, um den
Zeitstempelwert herunterzuskalieren, um dadurch die Zahl von Bits,
die notwendig sind, um den Zeitstempelwert darzustellen, zu reduzieren.
Bei anderen Ausführungsbeispielen
kann der Dividierer 35 weggelassen werden oder selektiv
verwendet werden, wie durch eine gestrichelte Linie gezeigt.
-
Ein
Extrahierer 36 für
niederstwertige Bits empfängt
den skalierten Zeitstempelwert von dem Dividierer 35 und
extrahiert die niederstwertigen Bits (LSBs) aus diesem skalierten
Wert. Bei 37 hängt
eine Anhängevorrichtung
einen Wiederaufnahmecode, der durch einen Codierer 39 in
Antwort auf eine Aktivierung des Wiederaufnahmesignals 27 von 2 erzeugt
wird, an die LSBs an. Die Vorrichtung 37 kann ebenfalls
eine Prüfsumme
(zum Beispiel eine CRC-Prüfsumme),
die aus dem Zeitstempel generiert wird, und (optional) weitere Headerinformationen,
falls gewünscht
(siehe die gestrichelte Linie in 3), durch
einen optionalen Prüfsummengenerator 38 anhängen. Die
Ausgabe der Anhängevorrichtung 37 wird
auf einen Eingang 39 eines Selektors 30 angewandt,
dessen anderer Eingang mit dem Ausgang eines herkömmlichen
Zeitstempelkompressors 301 verbunden ist, der ebenfalls
den Zeitstempelwert von dem Separator 33 empfängt.
-
Der
Selektor 30 wird durch das Wiederaufnahmesignal 27 gesteuert,
so dass, falls das Wiederaufnahmesignal 27 aktiv ist, dann
die LSBs, der Wiederaufnahmecode und die Prüfsumme über den Selektor 30 zu
einem Zeitstempelfeld 31 des komprimierten Headers 22 von 2 geliefert
werden. Andererseits, falls das Wiederaufnahmesignal 27 inaktiv
ist, dann wird die Ausgabe des herkömmlichen Zeitstempelkompressionsabschnitts 301 zu
dem Zeitstempelfeld 31 geliefert.
-
Ferner,
wie in 3 gezeigt, können
die anderen Headerinformationen (Nicht-Zeitstempelinformationen),
die aus dem Separator 33 ausgegeben werden, unter Verwendung
herkömmlicher
Headerkompressionstechniken bei 302 komprimiert werden, und
die resultierenden komprimierten Headerinformationen können dann
auf herkömmliche
Weise zu den anderen Feldern 32 des komprimierten Headers 22 geliefert
werden.
-
3A stellt
das Zeitstempelfeld 31, das erzeugt wird, wenn das Wiederaufnahmesignal 27 in 2 und 3 aktiv
ist, dar. Wie in 3A gezeigt, umfasst das Zeitstempelfeld 31 den
Wiederaufnahmecode, die LSBs des skalierten Zeitstempelwerts und,
wie durch die gestrichelte Linie gezeigt, umfasst es optional die
Prüfsumme,
die bei 38 generiert wird.
-
4 stellt
exemplarische Zeitstempelkompressionsoperationen dar, die durch
die exemplarischen Headerkompressorausführungsbeispiele von 3 durchgeführt werden
können.
Zuerst wird bei 41 bestimmt, ob das Wiederaufnahmesignal
aktiv ist. Falls nicht, dann wird bei 42 die Zeitstempelkompression
auf herkömmliche
Weise durchgeführt,
und bei 48 wird auf das nächste Paket gewartet. Wenn
das Wiederaufnahmesignal bei 41 aktiv ist, dann wird der Zeitstempelwert
(siehe TS in 1) verwendet, um bei 46 eine
Prüfsumme
zu generieren. Danach wird bei 43 der Zeitstempelwert unter
Verwendung des Werts TS_Inkrement skaliert. Danach werden bei 44 die
niederstwertigen Bits aus dem skalierten Zeitstempelwert extrahiert,
und bei 45 werden der Wiederaufnahmecode und die Prüfsumme (optional)
an die niederstwertigen Bits angehängt. Die gestrichelten Linien
in 4 geben an, dass die Prüfsummengenerierung und die
Skalierungsoperationen bei 46 und 43 bei anderen
Ausführungsbeispielen
weggelassen oder selektiv angewandt werden können. Nachdem bei 45 die
niederstwertigen Bits und der Wiederaufnahmecode (und optional die
Prüfsumme) zusammen
angehängt
worden sind, ist das Zeitstempelfeld dann bereit für ein Zusammenfügen zu einem komprimierten
Header bei 47, worauf bei 48 das nächste Paket
erwartet wird.
-
5 stellt
ein exemplarisches Ausführungsbeispiel
einer Paketdatenempfangsstation dar, die die exemplarischen Zeitstempel-Dekompressionstechniken,
die in 1 dargestellt sind, durchführen kann. Die Empfangsstation
kann zum Beispiel ein fester oder mobiler Empfänger, der in einem zellulären Kommunikationsnetz
in Betrieb ist, sein. Bei dem Ausführungsbeispiel von 5 kann
ein herkömmlicher
Funkempfänger 54 wohlbekannte
Techniken verwenden, um von einer Funkkommunikationsverbindung,
zum Beispiel einer zellulären
Funkverbindung, eine empfangene Version 21' eines übertragenen Pakets, wie des
Pakets 21, das in 2 dargestellt
ist, zu empfangen. Wie in 5 gezeigt,
würde solch
eine empfangene Version 21' eine
empfangene Version 22' des
komprimierten Headers 22 von 2 und eine
empfangene Version 23' der
Nutzlast 23 von 2 umfassen. Die empfangene Nutzlastversion 23' kann zu einem
Nutzlastprozessor 58 geliefert werden, der auf herkömmliche
Weise empfangene Nutzlastinformationen für eine Eingabe in eine Paketdatenkommunikationsanwendung 52 bei 51 erzeugen
kann. Die empfangene komprimierte Headerversion 22' wird zu einem
Header-Dekompressor 53 geliefert, der die empfangene Version 22' dekomprimiert,
um empfangene Headerinformationen für eine Eingabe in die Kommunikationsanwendung 52 bei 50 zu
erzeugen.
-
6 stellt
ein exemplarisches Ausführungsbeispiel
des Header-Dekompressors von 5 dar. Die
empfangene Version 22' des
komprimierten Headers wird in einen RTP-Detektor 61 eingegeben, der
herkömmliche
Techniken verwenden kann, um zu erfassen, ob das empfangene Paket
ein RTP-Paket ist oder nicht. In Antwort auf ein Erfassen, dass
das Paket kein RTP-Paket
ist, was angibt, dass ein Zeitraum einer Sprachinaktivität auftritt,
aktiviert der Detektor 61 ein Ausgangssignal 66,
das Selektoren 68 und 69 geeignet steuert, um
zu verursachen, dass der komprimierte Header durch einen herkömmlichen
Header-Dekompressor 64 verarbeitet wird. Wenn der Detektor 61 bestimmt,
dass ein RTP-Paket empfangen worden ist, dann steuert das Steuerungssignal 66 Selektoren 68 und 69 derart,
dass der komprimierte Header durch einen Verarbeitungspfad 600 verarbeitet
wird, der eine Zeitstempelfeld-Dekompression gemäß der Erfindung implementiert.
-
Der
Verarbeitungspfad 600 umfasst einen Separator 65,
der das Zeitstempelfeld von den anderen Feldern der empfangenen
Version 22' des
komprimierten Headers trennt. Die empfangenen Versionen von anderen
Feldern als des Zeitstempelfelds (siehe 32 von 3)
können
dann bei 67 auf einen herkömmlichen Header-Dekompressor
angewandt werden. Die empfangene Version des Zeitstempelfelds wird
bei 63 in einen Zeitstempel-Dekompressor 60 eingegeben.
Der Zeitstempel-Dekompressor empfängt ebenfalls das Steuerungssignal 66,
das aus dem RTP-Detektor 61 ausgegeben
wird, als eine Eingabe. In Antwort auf das Steuerungssignal 66 und das
Zeitstempelfeld, das bei 63 empfangen wird, gibt der Zeitstempel-Dekompressor 60 bei 62 einen
Zeitstempel aus. Dieser Zeitstempel wird durch eine Anhängevorrichtung 601 an
die anderen dekomprimierten Headerinformationen, die durch den Dekompressor 67 erzeugt
werden, angehängt,
und bildet dadurch die gewünschten
empfangenen Headerinformationen, die über einen Selektor 69 selektiv
mit der Kommunikationsanwendung 52 von 5 gekoppelt werden
(siehe 50 in 5 und 6).
-
7 stellt
exemplarische Ausführungsbeispiele
des Zeitstempel-Dekompressors 60 von 6 dar.
Bei den Ausführungsbeispielen
von 7 wird das Zeitstempelfeld, das bei 63 empfangen
wird, in einen Code-Detektor 70 zum Erfassen des Wiederaufnahmecodes
von 3 eingegeben. Wenn der Wiederaufnahmecode nicht
erfasst wird, dann ist das empfangene RTP-Paket nicht das erste
Sprachpaket nach einem Zeitraum einer Sprachinaktivität, so dass der
Code-Detektor 70 ein Steuerungssignal 702 ausgibt,
das Selektoren 703 und 700 geeignet steuert, um
zu erlauben, dass ein herkömmlicher
Zeitstempel-Dekompressor 73 das Zeitstempelfeld dekomprimiert
und bei 62 den gewünschten
Zeitstempel erzeugt (siehe ebenfalls 6).
-
Falls
der Code-Detektor 70 den Wiederaufnahmecode erfasst, dann
steuert das Steuerungssignal 702 Selektoren 703 und 700 derart,
dass das Zeitstempelfeld gemäß im Vorhergehenden beschriebenen
exemplarischen Zeitstempelfeld-Dekompressionstechniken
gemäß der Erfindung
dekomprimiert wird. In diesem Fall wird das empfangene Zeitstempelfeld 63 über den
Selektor 703 in einen Extrahierer 72 eingegeben,
der empfangene Versionen der LSBs und der Prüfsumme (siehe 3A) aus
dem Zeitstempelfeld extrahiert. Es sei bemerkt, dass der Wiederaufnahmecode
lediglich ein Beispiel einer Technik zum Auslösen der gewünschten Dekompressionsoperationen
ist.
-
Ein
Zeitstempelschätzer 75 kann
die Zeitstempelschätzung,
TS_Schätzung,
allgemein wie im Vorhergehenden relativ zu 1 beschrieben
erzeugen. Der Zeitstempelschätzer
hat einen Eingang 705 zum Empfangen des Zeitstempels des
Pakets n – 1, nämlich des
Zeitstempels des letzten RTP-Pakets, das vor einem Zeitraum einer
Sprachinaktivität
empfangen wird. Dieser Zeitstempelwert TS(n – 1), der durch den Dekompressor 73 erzeugt
wird, wird in einer Speichereinheit 77 gespeichert, die
wiederum mit dem Eingang 705 des Schätzers gekoppelt ist. Jeder RTP-Zeitstempel,
der von dem Dekompressor 73 ausgegeben wird, kann bei der
Speichereinheit 77 (die ein einziges Register sein kann)
gespeichert werden, wodurch sichergestellt wird, dass der Zeitstempel
TS(n – 1)
des Pakets n – 1
für den
Zeitstempelschätzer 75 verfügbar ist,
wenn das Paket n eintrifft.
-
Der
Zeitstempelschätzer 75 empfängt ferner Informationen,
die die Zeiten T(n) und T(n – 1),
bei denen das Paket n und das Paket n – 1 empfangen wurden, anzeigen.
Diese Zeitinformationen sind aus einer Speichereinheit 76,
die gekoppelt ist, um lokale Zeitinformationen von einem lokalen
Zeitgeber 74 zu empfangen, verfügbar. Für jedes RTP-Paket, das durch
den Detektor 61 in 6 erfasst
wird, speichert die Speichereinheit 76 die Zeit des Eintreffens des
Pakets, wie sie durch den lokalen Zeitgeber 74 gemessen
wird. Die Speichereinheit 76 braucht daher lediglich ein
Stapel mit einer Tiefe von zwei sein, um die Zeiten des Eintreffens
der im Vorhergehenden erwähnten
Pakete n und n – 1
zu erfassen.
-
Der
Zeitstempelschätzer 75 hat
ebenfalls Zugriff auf den Zeitstempeländerungswert TS_Änderung,
wie im Vorhergehenden beschrieben, und den Zeitstempelinkrementierungswert TS_Inkrement,
wie im Vorhergehenden beschrieben. Der Zeitstempelschätzer ist
in Antwort auf die lokalen Zeitinformationen, die von der Speichereinheit 76 empfangen
werden, den Zeitstempelwert TS(n – 1), der von der Speichereinheit 77 empfangen
wird, und die Zeitstempeländerung
und die Zeitstempelinkrementierungswerte betreibbar, um TS_Schätzung allgemein
wie im Vorhergehenden beschrieben zu erzeugen. TS_Schätzung wird
auf einen Extrahierer 78 für höchstwertige Bits angewandt,
der daraus die höchstwertigen
Bits (MSBs) extrahiert, die eine abgeschnittene Schätzung des
Zeitstempelwerts bilden. Eine Anhängevorrichtung 702 hängt die
niederstwertigen Bits (LSBs), die von dem Extrahierer 72 empfangen
werden, an die höchstwertigen
Bits (MSBs), die von dem Extrahierer 78 ausgegeben werden,
an, und das Resultat wird bei einem Multiplizierer 71 mit TS_Inkrement
multipliziert, um dadurch TS_Rateversuch wie im Vorhergehenden beschrieben
zu erzeugen. Der Zeitstempelschätzer 75 verwendet
TS_Inkrement, um seine Zeitstempelschätzung allgemein auf die gleiche
Art und Weise, wie im Vorhergehenden bei 35 in 3 beschrieben,
herunterzuskalieren, um ein genaues Kombinieren der MSBs und LSBs
bei 702 zu erlauben, so dass der Multiplizierer 71 verwendet
wird, um das Resultat zu reskalieren, um TS_Rateversuch zu erzeugen.
-
Ein
Verifizierer 79 empfängt
als Eingabe TS_Rateversuch und die empfangene Version der Prüfsumme von
dem Extrahierer 72. Der Verifizierer 79 ist betreibbar,
um eine Prüfsumme
aus dem empfangenen TS_Rateversuch-Wert und (optional) anderen Informationen,
die in dem komprimierten Header 22' (siehe die gestrichelte Linie)
empfangen werden, zu generieren, und diese generierte Prüfsumme mit
der empfangenen Prüfsumme
zu vergleichen. Falls die Prüfsummen
einander entsprechen, dann aktiviert das Ausgangssignal des Verifizierers 704 eine
Verbindungseinheit 701, die dann den TS_Rateversuch-Wert
mit dem Selektor 700 verbindet.
-
Falls
der Verifizierer 79 bestimmt, dass die empfangene Prüfsumme nicht
der generierten Prüfsumme
entspricht, dann hält
das Steuerungssignal 704 die Verbindungseinheit 701 in
ihrer offenen (dargestellten) Position aufrecht und informiert den
Zeitstempelschätzer 75,
dass eine weitere Zeitstempelschätzung
benötigt
wird. Der Zeitstempelschätzer kann
so fortfahren, Zeitstempelschätzungen
zu erzeugen, bis die Prüfsummen
einander entsprechen oder bis zur Erfüllung einer Zeitbegrenzungsbedingung,
die zum Beispiel entweder in dem Zeitstempelschätzer 75 oder dem Verifizierer 79 implementiert ist.
-
Die
Zahl von Bits in TS_Schätzung
kann, zum Beispiel, gleich der Zahl von Bits in dem Zeitstempelwert,
der durch den LSB-Extrahierer 36 von 3 empfangen
wird, sein, und die Zahl von MSBs, die durch den Extrahierer 78 in 7 extrahiert
wird, kann, zum Beispiel, gleich der Zahl von höchstwertigen Bits, die nach
einer Extraktion der LSBs bei 36 in 3 übrig bleiben
(und verworfen werden), sein. Die Zahl von LSBs, die bei 36 extrahiert
werden, und die Zahl von MSBs, die bei 78 extrahiert werden,
können
zum Beispiel durch empirische Beobachtung bestimmt werden, um zu
bestimmen, welche Kombination von LSB/MSB-Extraktion unter verschiedenen Bedingungen
gewünschte
Resultate erzeugt. Zum Beispiel können unterschiedliche Kombinationen
einer LSB/MSB-Extraktion verwendet werden, abhängig von Faktoren wie Übertragungsverzögerungsvariationen
und einer Zeitgeberpräzision
bei dem Kompressor und dem Dekompressor. Die gewünschte Kombination von LSB/MSB-Extraktionen
kann so durch empirische Beobachtung unter verschiedenen Übertragungsverzögerungsvariationsbedingungen und
verschiedenen Zeitgeberpräzisionsbedingungen bestimmt
werden. Als ein Beispiel könnte
die Zahl von MSBs, die bei 78 extrahiert werden, von der
Präzision
des Zeitgebers 74 abhängen.
Je präziser
der Zeitgeber 74 ist, um so mehr MSBs können bei 78 extrahiert
werden, und umgekehrt. Die Zahl von LSBs, die bei 36 extrahiert
werden, kann dann basierend auf der Zahl von MSBs, die bei 78 extrahiert
werden, bestimmt werden.
-
Der
Kompressor und der Dekompressor können im Voraus programmiert
sein, um eine gewünschte
Kombination einer LSB/MSB-Extraktion zu implementieren, oder die
Kombination kann im Laufe des Paketflusses dynamisch änderbar
sein. Zum Beispiel kann der Kompressor die Zahl von LSBs, die zu extrahieren
sind, basierend auf der tatsächlichen Änderung
des Zeitstempelwerts auswählen,
und kann diese Information dem Dekompressor signalisieren, zum Beispiel
als ein Teil des Wiederaufnahmecodes, der in 3A dargestellt
ist.
-
7A stellt
mit gestrichelten Linien alternative Ausführungsbeispiele des Dekompressors
von 7 dar, bei denen: die Verbindungseinheit 701 (und
der Verifizierer 79) von 7 entweder
weggelassen sind oder selektiv verwendet werden, in Entsprechung
zu der Verwendung oder dem Weglassen der Prüfsumme in 3;
und/oder der Multiplizierer 71 entweder weggelassen ist
oder selektiv verwendet wird, in Entsprechung zu der Verwendung
oder dem Weglassen des Dividierers 35 in 3.
Der Schätzer 75 skaliert
TS_Geschätzt
oder lässt
ein Skalieren derselben weg, in Entsprechung zu der Verwendung oder
dem Weglassen des Dividierers 35 und des Multiplizierers 71.
-
8 stellt
exemplarische Zeitstempel-Dekompressionsoperationen,
die durch die Zeitstempel-Dekompressorausführungsbeispiele
von 6–7A durchgeführt werden
können,
dar. Bei 80 wird zuerst bestimmt, ob das Zeitstempelfeld
den Wiederaufnahmecode umfasst oder nicht. Falls nicht, dann wird
bei 89 das Zeitstempelfeld unter Verwendung herkömmlicher
Dekompressionstechniken dekomprimiert, und dann wird das nächste Paket
bei 89 erwartet. Falls der Wiederaufnahmecode bei 80 erfasst
wird, dann wird die Zeitstempelschätzung (TS_Geschätzt) bei 82 berechnet
(mit einer Skalierung, falls gewünscht),
und die höchstwertigen
Bits werden bei 83 aus derselben extrahiert. Bei 84 werden
die niederstwertigen Bits, die in dem komprimierten Header empfangen
werden, an die höchstwertigen
Bits, die aus der skalierten Schätzung
extrahiert werden, angehängt,
und das Resultat ist (falls notwendig, reskaliert) der Zeitstempelrateversuch TS_Rateversuch.
Danach wird bei 85 der Zeitstempelrateveruch verwendet,
um eine Prüfsumme
zu generieren, und bei 86 wird die generierte Prüfsumme mit
der Prüfsumme,
die in dem Zeitstempelfeld empfangen wird, verglichen. Falls die
generierte Prüfsumme
der empfangenen Prüfsumme
entspricht, dann wird der Zeitstempelrateversuch bei 87 angenommen,
und das nächste
Paket wird dann bei 89 erwartet. Falls die generierte und
die empfangene Prüfsumme
bei 86 nicht einander entsprechen, dann wird bei 88 bestimmt,
ob das Schätzen
des Zeitstempels aufgegeben werden soll oder nicht, zum Beispiel
auf der Basis eines vorbestimmten Werts einer verstrichenen Zeit
oder einer vorbestimmten Zahl von Rateversuchen. Falls bei 88 entschieden
wird, nicht aufzugeben, dann wird bei 82 eine weitere skalierte
Zeitstempelschätzung
berechnet, und die Operationen bei 83–86 werden wiederholt.
Beim Vornehmen einer weiteren Zeitstempelschätzung kann der Schätzer 75 zum
Beispiel eines oder mehrere der niederstwertigen Bits der MSBs ändern, die
aus der Schätzung
extrahiert werden. Bei einem Beispiel kann, falls ein Ändern eines
bestimmten Bits (oder bestimmter Bits) in einer erfolgreichen neuen
Schätzung
des Zeitstempels eines gegebenen Pakets resultiert, diese gleiche Änderung
dann zuerst versucht werden, wenn der Zeitstempel eines nachfolgenden
Pakets neu geschätzt
wird. Falls bei 88 entschieden wird, aufzugeben, dann wird
bei 89 das nächste
Paket erwartet.
-
Die
gestrichelten Linien in 8 entsprechen den Aufführungsbeispielen
von 7A, bei denen eine Prüfsummenverifizierung weggelassen
ist oder selektiv durchgeführt
wird.
-
9 stellt
exemplarische Operationen dar, die bei 82 in 8 durchgeführt werden
können,
um die Schätzung
des Zeitstempels zu berechnen. Bei 91 wird die verstrichene
Zeit seit dem letzten RTP-Paket, (T)n – T(n – 1), bestimmt. Bei 92 wird
die verstrichene Zeit in Zeitstempeleinheiten umgewandelt (unter
Verwendung von TS_Änderung).
Bei 93 wird die Zahl verstrichener Zeitstempeleinheiten,
die bei 92 bestimmt wird, zu dem Zeitstempelwert (TS(n – 1)) des
letzten RTP-Pakets (Paket n – 1)
addiert, um eine Zeitstempelschätzung
zu erzeugen. Bei 94 wird ein Skalierungsfaktor (TS_Inkrement)
auf die Zeitstempelschätzung,
die bei 93 erzeugt wird, angewandt, um dadurch die gewünschte skalierte
Zeitstempelschätzung
zu erzeugen. Die gestrichelten Linien in 9 entsprechen
den Ausführungsbeispielen
von 7A, bei denen ein Skalieren weggelassen ist oder
selektiv durchgeführt
wird.
-
Bei
einem exemplarischen Operationsmodus wird der Wiederaufnahmecode
von 3A nicht benötigt.
In diesem Modus werden stets die Zeitstempelkompressions- und -Dekompressionstechniken von 1 verwendet,
so dass die Selektoren 30, 703 und 700 (siehe 3 und 7)
stets gesteuert werden, um „J" auszuwählen. Dementsprechend
würden die
Operationen bei 41 und 42 in 4 und
die Operationen bei 80 und 81 in 8 in
diesem Modus weggelassen werden.
-
Es
sollte offensichtlich sein, dass die Methodologie, die in der vorhergehenden
Beschreibung und in dem US-Patent
US-A-6,680,921 dargelegt
ist, unter anderem die folgenden exemplarischen Vorteile liefert:
Die Zahl von Bits, die benötigt
werden, um den Zeitstempelwert zu codieren, wird reduziert; die Zahl
von Bits, die benötigt
werden, um den Zeitstempelwert zu codieren, kann konstant gehalten
werden, unabhängig
von der Größe der Zeitstempeländerung;
und, da der absolute Zeitstempelwert bei dem Kompressor codiert
wird, anstatt das Ausmaß der Zeitstempeländerung
zu codieren, wird die Stabilität erhöht.
-
Ferner,
angesichts der Fortschritte, die im Vorhergehenden dargelegt worden
sind, haben die Anmelder weitere Fortschritte bei Headerkompressions-/-Dekompressionstechnologien
entdeckt. Bei erfinderischen Headerkompressor-/-Dekompressorausführungsbeispielen,
die in 10–14 dargestellt
sind, wird eine Headerkompression durch ein Senden, statt des vollen
Headerfeldwerts, lediglich des Headerfeldwerts modulo X erreicht.
Der Headerfeldwert modulo X ist der Rest, der aus dem Dividieren
des Headerfeldwerts durch X resultiert. Falls zum Beispiel X = 16,
dann stellen die vier niederstwertigen Bits des Headerfelds den
im Vorhergehenden erwähnten
Rest dar und bilden so direkt den Headerfeldwert modulo X. Offensichtlich
wird, wenn X eine Potenz von 2 ist, der Rest direkt durch eine Zahl
von niederstwertigen Bits des Headerfelds gebildet.
-
10 stellt
einen Teil eines Headerkompressors, der die Modulo-X-Operation implementiert, schematisch
dar. Jedes gegebene Headerfeld, das zum Beispiel von dem Separator 33 von 3 empfangen
wird, kann durch das Headerkompressorausführungsbeispiel von 10 vorteilhaft
komprimiert werden. Wie in 10 gezeigt,
kann ein Dividierer 35 verwendet werden, um den Headerfeldwert
zu skalieren, oder er kann optional weggelassen werden, wie durch
eine gestrichelte Linie gezeigt. Der Headerfeldwert (skaliert oder
nicht) wird auf einen Modulo-X-Operator 101 angewandt,
der zum Beispiel den Headerfeldwert durch X dividieren und den Rest
ausgeben kann. 10 stellt ebenfalls die Option
eines Anhängens
einer Prüfsumme
(wie bei 38 in 3 im Vorhergehenden generiert)
an den Rest dar. Daher umfasst das komprimierte Headerfeld den Rest,
wie aus dem Modulo-X-Operator 101 ausgegeben, mit oder
ohne dass die Prüfsumme
an denselben angehängt
ist. Anhand der folgenden Beschreibung wird offensichtlich werden,
dass die Kompressions-/Dekompressionstechniken, die im Hinblick
auf 10–14 beschrieben
sind, nicht nur auf die Zeitstempelfelder, die im Vorhergehenden
beschrieben sind, anwendbar sind, sondern allgemein auf eine Mehrzahl
von Headerfeldern anwendbar sind.
-
11 stellt
einen Teil eines Header-Dekompressors gemäß der Erfindung schematisch
dar, der einen Feld-Rekonstruierer 110 umfasst, der das Headerfeld
in Antwort auf den Restwert (komprimierten Headerfeldwert), der
bei 118 empfangen wird, rekonstruiert. Der Feld-Rekonstruierer 110 verwendet eine
Bereichsinformation, die bei 112 geliefert wird, in Kombination
mit dem empfangenen Restwert, um bei 111 das rekonstruierte
Feld zu erzeugen. Die Bereichsinformation bei 112 stellt
einen Bereich möglicher
Feldwerte dar, die aus dem empfangenen Restwert rekonstruiert werden
können.
Die Größe des Bereichs
ist X, entsprechend der Modulo-X-Operation, die bei dem Headerkompressor
von 10 durchgeführt
wird. Die Lage des Bereichs relativ zu dem neuesten rekonstruierten
Feldwert, der durch den Feld-Rekonstruierer 110 erzeugt
wird, kann auf vorteilhafte Weise definiert werden, zum Beispiel
auf der Basis der bekannten oder erwarteten Kenndaten der Paketkommunikationsanwendung
und/oder der bekannten oder erwarteten Kenndaten des Paketkommunikationspfads
zwischen dem Kompressor und dem Dekompressor.
-
Bei
einem Beispiel ist der Bereich durch –M bis X – 1 – M gegeben. Jeder Wert in
dem Bereich –M bis
X – 1 – M stellt
eine mögliche
Differenz zwischen dem neuesten rekonstruierten Feldwert und dem neuen
Feldwert, der durch den Dekompressor rekonstruiert wird, dar. Als
ein Beispiel, falls M = –1
und X = 16, dann reicht der Bereich von 1 bis 16, und dieser Bereich
stellt 16 mögliche
Feldwerte dar, die den neuesten rekonstruierten Feldwert um jeweils
1 bis 16 überschreiten.
-
Als
ein anderes Beispiel, falls X = 16 und M = 1, dann ist der Bereich
durch –1
bis 14 gegeben. Dieser Bereich stellt 16 mögliche Feldwerte dar. Einer
der Werte (entsprechend –1
in dem Bereich) ist 1 weniger als der neueste rekonstruierte Feldwert,
ein anderer der Werte (entsprechend 0 in dem Bereich) ist gleich
dem neuesten rekonstruierten Feldwert, und die restlichen 14 möglichen
Feldwerte überschreiten
jeweils den neuesten rekonstruierten Feldwert um 1 bis 14.
-
Positive
Werte von M können
zum Beispiel effektiv verwendet werden, um Folgenummernfelder (zum
Beispiel RTP-Folgenummernfelder)
von Paketen, die außerhalb
der Reihenfolge eintreffen, unterzubringen. Positive Werte von M
sind ferner vorteilhaft, zum Beispiel, um Zeitstempelfeldwerte mit
negativem Delta für
Pakete, die sogenannte B-Bilder (bidirektional vorhergesagte Bilder
bei einer MPEG-Anwendung) umfassen, unterzubringen. Bei MPEG wird
auf herkömmliche
Weise ein B-Bild nach seinen vorläufigen umgebenden Anker-Bildern
gesendet, was zu sowohl Vorwärts- als auch Rückwärtssprüngen bei
dem Zeitstempelfeldwert verglichen mit der Übertragungsreihenfolge führt. Daher
ist das Zeitstempel-Delta manchmal negativ und manchmal springt
es vorwärts,
was ein Fachleuten wohlbekanntes Phänomen ist. Wie im Vorhergehenden
erwähnt,
können
positive Werte von M negative Deltas unterbringen. Ein Auswählen von
M derart, dass der Bereich 0 umfasst, erlaubt eine Unterbringung
von Bildern, die in viele Pakete mit dem gleichen Zeitstempelfeld
aufgeteilt sind.
-
12 stellt
ein exemplarisches Ausführungsbeispiel
des Feld-Rekonstruierers 110 von 11 schematisch
dar. Die Bereichsinformation und das neueste rekonstruierte Feld
werden jeweils bei 112 und 113 in einen Kandidatenfeld-Generator 125 eingegeben,
der auf diese Eingaben antwortet, um bei 126 eine Zahl
von Feldwertkandidaten zu liefern, die gleich der Größe des Bereichs
ist, zum Beispiel gleich X des Modulo-X-Operators 101.
Die Feldwertkandidaten bei 12 werden, wie in 10 gezeigt, in
einen Modulo-X-Operator 101 eingegeben, und werden ebenfalls
bei 128 gepuffert. Der Modulo-X-Operator 101 gibt
Reste aus, die jeweils mit den gepufferten Feldwertkandidaten assoziiert
sind.
-
Ein
Komparator 123 vergleicht den empfangenen Rest bei 118 mit
den Resten jedes der Feldwertkandidaten. Da X benachbarte Feldwertkandidaten
in dem Bereich liegen, und da der empfangene Rest bei 118 den
Rest einer Division-durch-X-Operation
darstellt, wird der Rest eines der X Feldwertkandidaten dem empfangenen
Rest 118 entsprechen, und der entsprechende Feldwertkandidat
wird bei 122 aus dem Puffer 128 ausgegeben. Wie
in 12 gezeigt, kann der Kandidatenwert, der bei 122 ausgegeben
wird, falls notwendig hochskaliert werden, um ein Herunterskalieren
zu berücksichtigen,
das möglicherweise
bei dem Headerkompressor von 10 durchgeführt worden
ist. Solch ein Hochskalieren kann ein Addieren des Rests, der aus
der herunterskalierenden Divisionsoperation bei dem Headerkompressor
resultiert, umfassen, wobei der Rest allgemein eine Konstante ist,
die lediglich einmal übertragen
werden muss, zum Beispiel beim Übertragen
des vollen Feldwerts beim Start des Paketstroms, wodurch der Header-Dekompressor
implizit über
den herunterskalierenden Rest informiert wird. Bei dem Ausführungsbeispiel
von 12 kann der Kandidatenwert bei 121 (skaliert
oder nicht) als der rekonstruierte Feldwert 111 von 11 ausgegeben werden.
Dieser rekonstruierte Feldwert wird ebenfalls in dem Puffer 115 gespeichert,
für eine
Verwendung als das neueste rekonstruierte Feld bei der nächsten Headerfeld-Rekonstruktionsoperation.
-
Bei
einem Ausführungsbeispiel
mit X = 12 sind vier Bits notwendig, um bei der Ausgabe des Operators 101 (10)
den Feldwert modulo 12 darzustellen, es sind jedoch nicht alle möglichen
Bitmuster der vier Bits notwendig. Insbesondere sind zum Beispiel
lediglich die Kombinationen 0000 bis 1011 notwendig, um die 12 möglichen
Reste darzustellen, wenn ein Headerfeldwert bei dem Operator 101 durch
12 dividiert wird, wodurch auf vorteilhafte Weise vier Bit-Muster
(1100 bis 1111) für
andere Zwecke, wie ein Signalisieren besonderer Ereignisse, gelassen
werden. Beispiele solcher Ereignisse umfassen ein Signalisieren
des Typs des Pakets in dem Fall, dass es kein gewöhnliches
komprimiertes Paket ist, sondern stattdessen eine Kontext-Anfrage,
eine Kontext-Aktualisierung,
oder dass es statische oder vollständige Feldwerte enthält.
-
Volle
Headerfeldwerte, wie RTP-Zeitstempelfeldwerte und RTP-Folgenummernfeldwerte,
sind typischerweise 16- oder 32-Bit vorzeichenlose ganze Zahlen,
die zu 0 umspringen, wenn sich die Feldwerte von 216 – 1 oder
232 – 1
inkrementieren. Daher werden, falls X keine Potenz von 2 ist, dann
die Reste, die durch den Modulo-X-Operator 101 von 10 erzeugt
werden, ihren Zyklus nicht abschließen, wenn die Feldwerte auf
0 umspringen. Zum Beispiel wird für Modulo 12 (X = 12) die folgende
Folge resultieren, wenn sich die Feldwerte hin zu dem Umspringen
auf 0 und durch dasselbe inkrementieren: ... (65531, 11) (65532,
0) (65533, 1) (65534, 2) (65535, 3) (0, 0) (1, 1)... wobei die erste
Zahl jedes Satzes von Klammern der volle 16-Bit-Feldwert ist und die zweite Zahl
der Feldwert modulo 12 ist. Falls der neueste rekonstruierte Feldwert
65531 ist und der empfangene Rest 1 ist, und unter der Annahme,
dass für
dieses Beispiel M = –1,
dann werden zwei der 12 Kandidatenfeldwerte, nämlich 65533 und 1, Reste haben,
die dem empfangenen Rest bei dem Komparator 123 von 12 entsprechen.
-
Eine
exemplarische Lösung
dieses Problems besteht darin, die empfangene Prüfsumme zu verwenden, um zu
verifizieren, welcher der zwei möglichen
Kandidaten korrekt ist. Wie in dem Ausführungsbeispiel von 13 gezeigt,
kann ein Verifizierer 136 mit dem (skalierten oder nicht)
Puffer-Ausgang 121 gekoppelt
sein, um die zwei entsprechenden Kandidatenfeldwerte, die von dem
Puffer 128 ausgegeben werden, zu empfangen. Der Verifizierer 136 kann
für jeden
Kandidatenwert eine Prüfsumme berechnen,
sie mit der empfangenen Prüfsumme vergleichen
und den Kandidaten auswählen,
dessen Prüfsumme
der empfangenen Prüfsumme
entspricht. Dieser Kandidat kann dann als der rekonstruierte Feldwert
bei 111 geliefert werden.
-
Eine
andere Lösung,
um zu vermeiden, dass ein kürzerer
Rest-Zyklus erhalten
wird, besteht darin, den Zyklus der gesendeten Werte zu behalten
und die empfangenen Werte anzupassen, um den Rest zu rekonstruieren:
... (65531, 11) (65532, 0) (65533, 1) (65534, 2) (65535, 3) (0,
4) (1, 5)... Für
diesen Fall bedeutet dies, dass die gesendeten Werte einem Rest
+ N entsprechen, wobei N 0, 4 oder 8 ist und mit jedem Umspringen
einen Zyklus durchläuft.
-
Dies
ist in den exemplarischen Ausführungsbeispielen
von 15 dargestellt, wobei das Headerfeld, das von
dem Separator 33 bei exemplarischen Headerkompressorausführungsbeispielen empfangen
wird, oder von dem Kandidatenfeldgenerator 125 bei exemplarischen
Header-Dekompressorausführungsbeispielen
empfangen wird, in einen Umspring-Detektor 151 eingegeben
wird, ebenso wie in den Modulo-X-Operator 101. Der Umspring-Detektor 151 erfasst,
wenn sich die Headerfeldwerte in der Nähe eines Umspringens befinden.
Wenn ein bevorstehendes Umspringen erfasst wird, schiebt der Umspring-Detektor 151 ein
Ringschieberegister 152, das wie in 15 gezeigt
anfangs geladen ist. Ein Schieberegisterort 154 ist mit
einem Addierer 156 gekoppelt und ebenfalls mit einem Schieberegisterort 155 rückgekoppelt,
wobei letzterer Schieberegisterort mit einem Addierer 157 gekoppelt
ist.
-
Der
Umspring-Detektor 151 ist ebenfalls mit einem Unterscheider 153 gekoppelt,
der einen Eingang hat, der gekoppelt ist, um die Headerfeldwerte zu
empfangen, und der einen Ausgang hat, der mit einem Selektor 158 gekoppelt
ist.
-
Der
Unterscheider 153 unterscheidet zwischen den hohen Headerfeldwerten,
die dem 0-Umspringen vorhergehen, und den niedrigen Headerfeldwerten,
die dem 0-Umspringen folgen. Solange der Umspring-Detektor 151 erfasst,
dass sich die Headerfeldwerte in der Nähe eines Umspringens befinden,
hält der
Detektor 151 den Unterscheider 153 aktiviert.
Während
er aktiviert ist, steuert der Unterscheider 153 den Selektor 158,
um einen Addierer 156 für
niedrige Headerfeldwerte in der Umspringnähe (das heißt 0 und Werte nach 0) auszuwählen und einen
Addierer 157 für
hohe Headerfeldwerte in der Umspringnähe (Werte vor 0) auszuwählen. Der
Umspring-Detektor 151 deaktiviert den Unterscheider 153,
wenn sich die Headerfeldwerte nicht in der Umspringnähe befinden,
wobei in diesem Fall der Unterscheider 153 den Selektor 158 steuert,
um lediglich den Addierer 156 auszuwählen.
-
Daher,
wenn das erste Umspringen auftritt, schiebt der Detektor 151 das
Register 152, so dass der Addierer 156 4 (von
dem Ort 154) zu den Resten, die mit den niedrigen Headerfeldwerten,
die bei 0 beginnen, assoziiert sind, addiert, und der Addierer 157 0
(von dem Ort 155) zu den Resten, die mit den hohen Headerfeldwerten,
die dem Umspringen vorhergehen, assoziiert sind, addiert. Bei dem
nächsten Umspringen
schiebt der Detektor 151 das Register 152 erneut,
so dass der Addierer 156 8 zu den Resten, die mit den niedrigen
Headerfeldwerten, die bei 0 beginnen, assoziiert sind, addiert,
und der Addierer 157 4 zu den Resten, die mit den hohen
Headerfeldwerten, die dem Umspringen vorhergehen, assoziiert sind,
addiert.
-
Für einen
gegebenen Wert von X kann der Bereich möglicher Feldwerte bei dem Dekompressor entsprechend
einer gewünschten
Leistung erhöht werden.
Zum Beispiel kann der Bereich als –M bis 2X – 1 – M definiert sein. Daher wäre, zum
Beispiel mit M = –1
und X = 16, der Bereich möglicher
Feldwerte 1 bis 32. Der empfangene Restwert 118 wird den Resten
von zwei Kandidaten in diesem Bereich entsprechen. Der korrekte Kandidat
kann zum Beispiel durch die Prüfsummenverifizierungsoperation,
die im Vorhergehenden relativ zu 13 beschrieben
worden ist, identifiziert werden. Das Ausführungsbeispiel von 13 kann
natürlich
den korrekten Kandidaten aus einer beliebigen Zahl von entsprechenden
Kandidaten auswählen,
die aus einem Bereich. mit einer beliebigen Größe, –M bis kX – 1 – M, wobei k = 2, 3 ..., resultiert.
-
14 stellt
exemplarische Operationen dar, die durch die Header-Dekompressorausführungsbeispiele,
die in 11–13 dargestellt sind,
durchgeführt
werden können.
Bei 141 wird das komprimierte Headerfeld als ein Modulo-X-Restwert empfangen.
Bei 142 werden die Bereichsinformation und der neueste
rekonstruierte Feldwert verwendet, um die Kandidatenfeldwerte zu
generieren. Bei 148 werden die Modulo-X-Reste der Kandidatenwerte bestimmt.
Bei 143 wird der empfangene Restwert mit den Restwerten
der jeweiligen Kandidatenfeldwerte verglichen, um den (die) entsprechenden
Kandidaten zu bestimmen. Bei 144 wird dann bestimmt, ob
mehrere entsprechende Kandidaten vorliegen oder nicht. Falls ja,
werden die Kandidatenwerte bei 145 dem Prüfsummenverifizierungsprozess
unterzogen, um den korrekten Kandidatenwert zu bestimmen, der dann
bei 149 als der rekonstruierte Feldwert geladen wird. Wenn
bei 144 lediglich ein entsprechender Kandidat vorliegt,
dann kann dieser Kandidatenwert optional durch eine Prüfsummenverifizierung
bei 147 gestützt
werden, oder, wie durch gestrichelte Linien angezeigt ist, der Kandidat
kann bei 149 direkt als der rekonstruierte Feldwert geladen
werden.
-
Für Fachleute
ist offensichtlich, dass die Headerkompressions-/-Dekompressionstechniken, die
im Vorhergehenden im Hinblick auf 10–14 beschrieben
worden sind, allgemein auf eine Vielzahl von Headerfeldern anwendbar
sind, und auf die Kenndaten einer bestimmten Anwendung und/oder
eines Kommunikationspfads zugeschnitten werden können.
-
Für Fachleute
ist offensichtlich, dass die im Vorhergehenden beschriebenen Ausführungsbeispiele
durch geeignete Modifikationen bei Headerkompressoren und -Dekompressoren
herkömmlicher Paketdatenübertragungs-
und -empfangsstationen ohne weiteres in Software, Hardware oder
beidem implementiert werden können.
-
Die
vorhergehende Beschreibung ist die eines bevorzugten Ausführungsbeispiels
zum Implementieren der Erfindung, und der Schutzbereich der Erfindung
soll nicht notwendigerweise durch diese Beschreibung begrenzt werden.
Der Schutzbereich der Erfindung ist stattdessen durch die folgenden
Ansprüche
definiert.