Robust Header Compression ( ROHC ) ist eine standardisierte Methode zum Komprimieren der IP-, UDP-, UDP-Lite-, RTP- und TCP-Header von Internet-Paketen.
In Streaming-Anwendungen beträgt der Overhead von IP, UDP und RTP 40 Byte für IPv4 oder 60 Byte für IPv6. Bei VoIP entspricht dies etwa 60% der gesamten gesendeten Datenmenge. Solch große Overheads können in lokalen drahtgebundenen Verbindungen toleriert werden, bei denen die Kapazität häufig kein Problem darstellt, aber bei Weitverkehrsnetzen und drahtlosen Systemen, in denen nur eine geringe Bandbreite zur Verfügung steht, zu groß ist. [1]
ROHC komprimiert diese 40 Bytes oder 60 Bytes Overhead typischerweise in nur einem oder drei Bytes, indem ein Kompressor vor der Verbindung mit begrenzter Kapazität und ein Dekompressor nach dieser Verbindung platziert wird. Der Kompressor konvertiert den großen Overhead in nur wenige Bytes, während der Dekompressor das Gegenteil tut.
Das ROHC-Kompressionsschema unterscheidet sich von anderen Kompressionsschemata, wie zum Beispiel IETF RFC 1144 und RFC 2508, dadurch, dass es über Verbindungen, bei denen die Paketverlustrate hoch ist, wie etwa drahtlosen Verbindungen, eine gute Leistung erbringt.
Hauptprinzipien der ROHC-Komprimierung [ edit ]
Das ROHC-Protokoll nutzt die Informationsredundanz in den Kopfzeilen der folgenden Elemente:
- ein einzelnes Netzwerkpaket (z. B. die Nutzlastlängen in IP- und UDP-Headern)
- mehrere Netzwerkpakete, die zu einem einzelnen Strom gehören (z. B. die IP-Adressen)
Redundante Informationen werden nur in den ersten Paketen übertragen. Die nächsten Pakete enthalten variable Informationen, z. Bezeichner oder Sequenznummern. Diese Felder werden in komprimierter Form übertragen, um mehr Bits zu speichern.
Für eine bessere Leistung werden die Pakete vor der Komprimierung in Streams klassifiziert. Diese Klassifizierung nutzt die Redundanz zwischen Paketen. Der Klassifizierungsalgorithmus wird nicht durch das ROHC-Protokoll selbst definiert, sondern der Implementierung des Geräteherstellers überlassen. Sobald ein Paketstrom klassifiziert ist, wird er entsprechend dem am besten passenden Komprimierungsprofil komprimiert. Ein Komprimierungsprofil definiert, wie die verschiedenen Felder in den Netzwerkheatern komprimiert werden. Es stehen verschiedene Komprimierungsprofile zur Verfügung, darunter folgende:
- Unkomprimiert
- Nur IP
- UDP / IP
- UDP-Lite / IP
- ESP / IP
- RTP / UDP / IP
- RTP / UDP-Lite / IP
- ] TCP / IP
Betriebsarten [ edit ]
Gemäß RFC 3095 hat das ROHC-Schema drei Betriebsmodi:
- Unidirektionaler Modus (U-Modus)
- Bidirektionaler optimistischer Modus (O-Modus)
- Bidirektionaler zuverlässiger Modus (R-Modus)
Sowohl der Kompressor als auch der Dekompressor starten im U-Modus. Sie können dann in den O-Modus übergehen, wenn eine verwendbare Rückkehrverbindung verfügbar ist, und der Dekompressor sendet eine positive Bestätigung mit angegebenem O-Modus an den Kompressor. Der Übergang zum R-Modus wird auf dieselbe Weise erreicht.
Unidirektionaler Modus (U-Modus) [ edit ]
Im unidirektionalen Betriebsmodus werden Pakete nur in eine Richtung gesendet: vom Kompressor zum Dekompressor. Dieser Modus macht ROHC daher für Verbindungen nutzbar, bei denen ein Rückweg vom Dekompressor zum Kompressor nicht verfügbar oder unerwünscht ist. Um mögliche Dekompressionsfehler zu behandeln, sendet der Kompressor periodische Aktualisierungen des Stream-Kontexts an den Dekompressor.
Bidirektionaler optimistischer Modus (O-Modus) [ edit ]
Der bidirektionale optimistische Modus ähnelt dem unidirektionalen Modus, mit der Ausnahme, dass ein Feedback-Kanal zum Senden von Fehlerwiederherstellungsanforderungen und verwendet wird (optional) Bestätigungen wesentlicher Kontextaktualisierungen vom Dekompressor bis zum Kompressor. Der O-Modus zielt auf die Maximierung der Komprimierungseffizienz ab und zielt auf eine spärliche Nutzung des Rückkopplungskanals ab.
Bidirektionaler zuverlässiger Modus (R-Modus) [ edit ]
Der bidirektionale zuverlässige Modus unterscheidet sich in vielerlei Hinsicht von den vorherigen zwei Modi. Die wichtigsten Unterschiede sind eine intensivere Nutzung des Rückkopplungskanals und eine strengere Logik sowohl am Kompressor als auch am Dekompressor, die den Verlust der Kontext-Synchronisierung zwischen Kompressor und Dekompressor mit Ausnahme der sehr hohen Restbitfehlerraten verhindert.
Kompressor- / Dekompressorzustände [ edit ]
Der Begriff der Kompressor- / Dekompressorzustände ist orthogonal zu den Betriebsmodi. Was auch immer der Modus ist, sowohl der Kompressor als auch der Dekompressor arbeiten in einem ihrer drei Zustände. Sie sind im Grunde endliche Zustandsmaschinen. Jedes ankommende Paket kann dazu führen, dass der Kompressor / Dekompressor seinen internen Zustand ändert. Jeder Zustand bezieht sich auf ein definiertes Verhalten und einen bestimmten Komprimierungsgrad.
Der ROHC-Algorithmus ähnelt der Videokomprimierung dahingehend, dass ein Basisrahmen und dann mehrere Differenzrahmen gesendet werden, um einen IP-Paketfluss darzustellen. Dies hat den Vorteil, dass ROHC viele Paketverluste in seinem höchsten Kompressionszustand überstehen kann, solange die Basis-Frames nicht verloren gehen.
Kompressorstaaten [ edit ]
Die Zustandsmaschine des Kompressors definiert die folgenden drei Zustände:
- Initialisierung und Aktualisierung (IR) -Zustand
- Erster Ordnung (FO) -Zustand
- Zweiter Ordnung (SO) -Zustand
No comments:
Post a Comment