Es ist naheliegend, Kompression auf gleicher Ebene wie Verschlüsselung einzusetzen. Viele Implementierungen des TLS-Protokolls unterstützen die Kompression mittels zlib (Deflate). Die .NET-Implementierung von TLS unterstützt dies jedoch nicht, so dass eine zusätzliche Kompressionsschicht notwendig wurde. Sowohl Client als auch Server setzen hierzu das Deflate-Verfahren ein. Die Konfiguration muss auf beiden Seiten erfolgen. Bei Verbindung des Clients mit dem Server handeln die Kommunikationspartner aus, ob Kompression erfolgen soll. Nur wenn Client und Server beide für die Kompression konfiguriert sind, wird nach der Verhandlung komprimiert kommuniziert.
Deflate erlaubt die Angabe eines Kompressionsgrades, der auf 0 - 9 eingestellt werden kann:
Bei Client und Server können die Kompressionsgrade unabhängig voneinander angegeben werden. Grad 6 wird auch hier angenommen, wenn in der Konfigurationsdatei kein Kompressionsgrad angegeben ist.
Die folgenden Grafiken verdeutlichen das Einsparungspotential durch Kompression. Nur die Nutzdatengröße wird hier betrachtet; auf TCP-Paket-Ebene kann die bei Nutzung von Kompression geringere benötigte Paketanzahl zu weiterer Verbesserung des Datenvolumens führen.
In allen Testfällen wurde ein Demodatensystem verwendet. Über den Benutzer R41 (Multiprojektmanager) wurde das Projekt 4711 ausgewählt. Alle Module des Projektpanels wurden nun angewählt, um von jedem Modul Daten zu erhalten. Danach wurde ein Statusbericht erstellt. Der Client wurde anschließend geschlossen.
In der ersten und zweiten Abbildung ist auf der x-Achse die Anzahl der insgesamt vom Server versendeten Nachrichten aufgetragen. Diese variiert je nach Lauf, da der oben genannte Ablauf manuell durchgeführt und dabei nicht die gleiche Anzahl an Ereignissen ausgelöst wurde. Dies hat jedoch kaum Auswirkungen auf die Größe der gesendeten Daten, die auf der y-Achse aufgetragen ist.
Die in der ersten Abbildung gezeigten Kurven sind auch in der zweiten Abbildung enthalten, werden in der zweiten Abbildung jedoch weiteren Konfigurationen mit ausgewählten Kompressionsgraden gegenübergestellt.
Gesamtübertragungsvolumen unkomprimiert und komprimiert (Kompressionsgrad 9)
Vergleich bei Verwendung verschiedener Kompressionsgrade
Bei serverbasierten Hyperlinks fällt eine größere Menge an Daten an, da diese Objekte (z.B. Word-Dokumente) aus der Datenbank gelesen und an den Client gesendet werden. Hier ist im Allgemeinen nicht mit großen Einsparungen zu rechnen, da viele Dateitypen bereits intern komprimiert sind. Allerdings werden die Binärdaten über eine Base64-Kodierung in der XML-Nachricht eingebettet, so dass 4/3 der tatsächlichen Datenmenge übertragen werden muss. Daher ergibt sich auch hier ein Einsparungspotential durch Kompression, dass ca 1/4 der Datenmenge bei komprimierten Daten ergibt. Bei unkomprimierten Dateien, wie beispielsweise Log-Dateien, ist ein weit höherer Anteil zu erzielen.
Kompressionsergebnis bei verschiedenen Dateitypen
In den meisten Szenarien bietet sich Kompression an, da sie die übertragene Datenmenge deutlich reduziert. Zusätzliche Kompression kann bei Verwendung eines komprimierenden VPN-Tunnels unterbleiben, da hier die Kompression in der Verschlüsselungsschicht enthalten ist. Allerdings ist der zusätzliche Aufwand auch hier nicht in dem Maße relevant, dass ein Ausschalten der Kompression zwingend notwendig wäre. Ausschalten der Kompression kann auch nur für einzelne Clients durchgeführt werden, so dass beispielsweise ein Client in einer über ein komprimierendes VPN angebundenen Außenstelle keine Kompression verwendet, während einer in einer anderen Außenstelle komprimiert kommuniziert.
Siehe auch: Nachrichtenkompression: Konfiguration |
I | Attachment | History | Size![]() |
Date | Comment |
---|---|---|---|---|---|
![]() |
compression_level_comparison.svg | r1 | 33.8 K | 2013-10-01 - 19:41 | |
![]() |
summed_with_cc.svg | r1 | 23.7 K | 2013-10-01 - 19:41 | |
![]() |
hyperlink_compression.svg | r1 | 22.7 K | 2013-10-01 - 19:41 |