Thursday, January 24, 2019

Robuste Header-Komprimierung - Wikipedia


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

Operationen in den verschiedenen Kompressorzuständen [ edit ] ] 19659048] Im Initialisierungs- und Aktualisierungsstatus (IR) wurde der Kompressor gerade erstellt oder zurückgesetzt und vollständige Paket-Header werden gesendet. Im First-Order-Status (FO) hat der Kompressor die statischen Felder (z. B. IP-Adressen und Portnummern) auf beiden Seiten der Verbindung erkannt und gespeichert. Der Kompressor sendet auch dynamische Paketfeldunterschiede im FO-Zustand. Somit ist der FO-Zustand im Wesentlichen eine statische und pseudo-dynamische Kompression. Im Second-Order (SO) -Zustand unterdrückt der Kompressor alle dynamischen Felder wie RTP-Sequenznummern und sendet nur eine logische Sequenznummer und eine partielle Prüfsumme, um die andere Seite dazu zu veranlassen, die Header des nächsten erwarteten Pakets vorherzusagen und zu überprüfen. Im Allgemeinen komprimiert der FO-Status alle statischen Felder und die meisten dynamischen Felder. Der SO-Zustand komprimiert alle dynamischen Felder unter Verwendung einer Sequenznummer und einer Prüfsumme vorausschauend.

Übergänge zwischen Verdichterzuständen [ edit ]

Übergänge zwischen den oben genannten Zuständen treten auf, wenn der Verdichter:

  • komprimiert ein Paket, das zu viele Variationen enthält.
  • erhält ein positives / negatives Feedback vom Dekompressor.
  • aktualisiert den Kontext periodisch.

[ edit ]

Eine typische ROHC-Implementierung Ziel ist es, das Terminal in den Zustand zweiter Ordnung zu bringen, in dem der 40-Byte-IPv4 / UDP / RTP- oder der 60-Byte-IPv6 / UDP / RTP-Header (dh VoIP) durch einen 1-Byte-ROHC-Header ersetzt werden kann. In diesem Zustand enthält der 8-Bit-ROHC-Header drei Felder:

  • ein 1-Bit-Pakettyp-Flag (nur für längere ROHC-Header auf '1' gesetzt) ​​
  • eine 4-Bit-Sequenznummer (mit einem Bereich von -1 ... +14 Paketen vom Basisrahmen)
  • ein 3-Bit-CRC

Dekompressionsstaaten [ edit ]

Die Dekompressionszustandsmaschine definiert die folgenden drei Zustände:

  • Kein Kontextzustand
  • Statischer Kontextzustand
  • Vollständiger Kontextzustand

Übergänge zwischen den oben genannten Zuständen treten auf, wenn der Dekompressor:

  • dekomprimiert erfolgreich ein Paket.
  • kann mehrere Pakete nicht dekomprimieren.

Robustness [ edit ]

Die Größe der Sequenznummer (SN) bestimmt die Anzahl der Pakete, die diese Nummer enthält ROHC kann verlieren, bevor der Kompressor zurückgesetzt werden muss, um fortzufahren. Der W-LSB-Algorithmus wird verwendet, um die SN auf robuste Weise zu komprimieren. Die Größe der Sequenznummer in ROHC-Paketen mit 1 und 2 Byte beträgt entweder 4 Bits (-1 / + 14 Frame-Offset) bzw. 6 Bit (-1 / + 62 Frame-Offset), sodass ROHC höchstens 62 Verlust tolerieren kann Frames mit einem 1-2-Byte-Header.

Zusätzliche Kompressionsprofile [ edit ]

Der RFC 3095 definiert einen generischen Kompressionsmechanismus. Es kann erweitert werden, indem neue Komprimierungsprofile für bestimmte Protokollkopfzeilen definiert werden. Es wurden neue RFCs veröffentlicht, um neue Protokolle zu komprimieren:

  • Der RFC 3843 definiert ein Kompressionsprofil für IP-Header oder IP-Tunnel.
  • Der RFC 4019 definiert ein Kompressionsprofil für UDP-Lite / IP- und RTP / UDP-Lite / IP-Header.
  • Der RFC 6846 definiert ein Komprimierungsprofil für TCP / IP-Header.

Neuere ROHC-RFCs [ edit ]

Es wurden zwei neue RFCs veröffentlicht, RFC 4995 und RFC 5225, um die Verwirrung zu beheben, die bei manchen aufgetreten ist Versuch, ROHC zu interpretieren und zu implementieren. Das erste Dokument definiert ein ROHC-Framework, das zweite Dokument definiert neuere Versionen der etablierten ROHC-Profile.

Verweise [ edit ]

Externe Links [ edit ]

No comments:

Post a Comment