Wie man den TCP-Durchsatz zwischen Servern schätzt
Sie haben gerade einen Server mit einem dedizierten Kanal gekauft, der garantiert 1 Gbit/s (oder mehr) liefert, und sind enttäuscht, dass die Dateiübertragung nicht so schnell ist, wie Sie erwartet hatten. Bevor Sie sich an den technischen Support wenden und nach Netzwerkproblemen suchen, sollten Sie versuchen, den tatsächlichen TCP-Durchsatz von einem Host zum anderen zu ermitteln.
Es gibt zwei wichtige Faktoren für die erfolgreiche Übertragung von Daten über TCP:
- Die Größe des TCP-Fensters - das ist die Anzahl der Bytes, die eine Seite ohne Bestätigung akzeptieren kann;
- Verzögerung zwischen Übertragung und Empfang (Latenz) - die Zeit, die benötigt wird, um ein Paket zu senden und seine Zustellung zu bestätigen.
- Wenn Sie diese beiden Dinge kennen, können Sie die maximal mögliche Bandbreite berechnen, die zwischen zwei Hosts geteilt werden kann, unabhängig von der Bandbreite.
Die Formel zur Berechnung der TCP-Bandbreite
TCP-Durchsatz (Bits/s) = TCP-Fenstergröße (Bits) / Roundtrip-Latenzzeit (s)
Lassen Sie uns das anhand eines einfachen Beispiels erläutern. Wir haben eine Gigabit-Ethernet-Verbindung zwischen Servern mit einer Umlauflatenz von 30 ms. Wir müssen eine große Datei von einem Server zu einem anderen Server über FTP senden. Welche Bandbreite können wir tatsächlich erwarten?
Zunächst müssen Sie die TCP-Fenstergröße von Bytes in Bits umrechnen. In diesem Fall verwenden wir die Standard-TCP-Fenstergröße eines Windows-Rechners von 64 KB = 65 536 B = 65 536 * 8 = 524 288 Bits.
Dann müssen Sie die TCP-Fenstergröße in Bits durch die zirkuläre Latenz des Kanals, ausgedrückt in Sekunden, dividieren. Für die Zwecke dieser Berechnungen werden 30 ms zu 0,030 s.
Maximaler TCP-Durchsatz = 524.288 Bits / 0,030 s = 17.476.266 bps = 17,4 Mbps
Obwohl eine Gigabit-Ethernet-Verbindung zwischen den beiden Servern besteht, können Sie bei der Übertragung von Dateien nicht mehr als 17 Mbit/s erwarten.
Wie können wir das Netzwerk schneller machen? Die Antwort liegt auf der Hand: die Größe des TCP-Fensters erhöhen und/oder die Signalverzögerung verringern.
Das Aushandeln einer größeren TCP-Fenstergröße erfordert eine individuelle manuelle Konfiguration jedes Servers, was wiederum zu folgender Frage führt: Was ist die optimale TCP-Fenstergröße? Um dies herauszufinden, muss man eine umgekehrte Berechnung auf der Grundlage der Bandbreite durchführen.
Die Formel zur Berechnung der optimalen TCP-Fenstergröße lautet
TCP-Fenstergröße (Bytes) = TCP-Fenstergröße (Bits) / 8 = Bandbreite (Bits/s) * Round-trip-Latenz (s) / 8
Im obigen Beispiel für eine Gigabit-Ethernet-Strecke zwischen Servern mit einer Umlauflatenz von 30 ms ergibt sich der folgende Wert:
1.000.000.000 Bits/s * 0,030 s = 30.000.000 Bits / 8 = 3.750.000 Bytes.
Mit anderen Worten: Wenn Sie beide Server für ein TCP-Fenster von 3.750 KB konfigurieren, wird die FTP-Verbindung die Bandbreite vollständig ausfüllen und eine Bandbreite von 1 Gbit/s erreichen.
Sie sollten sich darüber im Klaren sein, dass eine Vergrößerung des TCP-Fensters auch Nachteile mit sich bringt.
Erstens wird mehr Speicher für die Pufferung der Server benötigt, um unbestätigte Daten zu speichern, falls sie vorhanden sind.
Zweitens kann eine größere TCP-Fenstergröße dazu führen, dass mehr Pakete verloren gehen, wodurch wiederum ein ganzes Fenster erneut gesendet werden muss. Dies kann sich negativ auf die Leistung auswirken. Um dieses Problem zu lösen, kann der TCP/IP-Stack des Servers die Option "selektive Quittierung" aktivieren, die standardmäßig deaktiviert ist.
Um das Problem zu lösen, können WAN-Beschleuniger - globale Netzwerk-Gaspedale - an beiden Enden der Leitung angebracht werden. Sie können Folgendes tun:
- Sie öffnen ein vergrößertes TCP-Fenster;
- die Möglichkeit bieten, das TCP-Protokoll fein zu optimieren (z. B. selektive Quittierung nur zwischen den Gaspedalen);
- erfordern keine spezielle Serverkonfiguration oder zusätzlichen Pufferspeicher;
- können spezielle Funktionen der Anwendungsschicht des OSI-Modells (Schicht 7 - Zugang zu Netzdiensten) nutzen, um die Umlaufverzögerung zu verringern.
Latenz
Möchten Sie die Signalverzögerung verringern? Ist das prinzipiell machbar? Da wir die Lichtgeschwindigkeit nicht überwinden können, können wir nicht beeinflussen, wie lange ein Signal braucht, um eine bestimmte Strecke zurückzulegen. Die beste Möglichkeit, ein ganzes System zu optimieren, besteht darin, an jedem Ende der Leitung einen WAN-Beschleuniger zu installieren, der empfangene TCP-Pakete an den lokalen Server weiterleitet und ihm so die tatsächliche Datenübertragungsrate "vorgaukelt": Statt auf eine verzögerte Antwort des entfernten Servers zu warten, erhält der lokale Server sofortige Bestätigungen vom Gaspedal. Dies erspart uns die Anpassung der TCP-Fenstergröße auf den Servern selbst. Ein Paar von WAAS-Geräten verwendet eine größere TCP-Fenstergröße und selektive Bestätigungen über das gesamte Leitungssegment.
Darüber hinaus bereinigt WAAS einen TCP-Stream effektiv von redundanten Daten und sorgt so für eine extrem hohe Komprimierung (Kompression). Jedes Gaspedal merkt sich zuvor gesehene Daten. Wenn ein doppeltes Fragment wieder auftaucht, wird es entfernt und durch eine winzige 2-Byte-Marke ersetzt. Diese winzige Markierung wird von dem entfernten Gaspedal erkannt, das an ihrer Stelle das ursprüngliche Datenfragment einfügt, bevor es den Datenverkehr an den lokalen Server sendet.
Das bewährte Ergebnis der Optimierung ist ein höherer Durchsatz zwischen den Servern, ohne dass die lokalen Server eine spezielle TCP-Einstellung vornehmen müssen.
Formel zur Berechnung der maximal zulässigen Verzögerung bei einem bestimmten Durchsatz
Beispiel. An einem Standort zwischen zwei entfernten Servern müssen Sie einen FTP-Durchsatz von 10 Gbit/s bei einer Standard-TCP-Fenstergröße (64 KB) garantieren. Wie hoch ist die maximal zulässige Signalverzögerung?
Roundtrip-Latenzzeit (ms) = TCP-Fenstergröße (Bits) / erforderliche Bandbreite (bps)
524.288 Bits / 10.000.000 bps = 52,4 Mikrosekunden
Was ist zu tun?
Im Grunde müssen Sie das TCP-Fenster nicht vergrößern oder WAN-Booster installieren. Verwenden Sie einfach Multithreading und Sie können den Kanal mit 100 % seiner Bandbreite nutzen!