TCP-Fensterskalierung für Satellitenverbindungen

7

Eine Satellitenverbindung hat im Allgemeinen eine RTT von etwa 500 ms. Verbindungen leiden im Allgemeinen unter suboptimalen Übertragungsgeschwindigkeiten, trotz großer Bandbreite, da das Eintreffen von TCP-Bestätigungen zu lange dauert.

Meines Wissens nach besteht eine gute Möglichkeit, dieses Problem bei TCP-Verbindungen zu beheben, darin, die Größe des TCP-Fensters auf die Verbindungsgeschwindigkeit (in Bit) multipliziert mit RTT (in Sekunden) einzustellen. Eine 1-Mbit / s-Verbindung über Satellit sollte also eine Fenstergröße von 512 KB haben.

Welche Fallstricke sind damit verbunden? Gibt es andere ähnliche Verbesserungen, die vorgenommen werden sollten, um die Satellitenverbindungen zu optimieren? Ich verstehe, dass viele moderne Betriebssysteme die Fenstergröße automatisch ändern, aber werden sie aggressiv genug sein, um Fenstergrößen groß genug zu machen, um für die Satellitenkommunikation zu funktionieren?

Abgesehen davon gehe ich davon aus, dass eine große Fenstergröße in Netzwerken, in denen häufig Pakete verworfen werden, nicht wünschenswert ist, da die erneute Übertragung die Fenstergröße hat und Sie möglicherweise einen Großteil Ihrer Bandbreite für den Overhead der erneuten Übertragung verwenden.

Vielen Dank, ich lerne immer noch viel über Networking und schätze Ihre Beiträge.

Regie
quelle

Antworten:

4

Sie sollten im Allgemeinen einen TCP-Stapel verwenden, der eine ordnungsgemäße Fensterskalierung implementiert. Aber natürlich haben Sie Recht, dass Ihre Fenstergröße das Bandbreitenverzögerungsprodukt (BDP) bearbeiten muss. Wenn Sie einen variierenden BDP haben, können Sie die Fenstergröße auf etwas einstellen, das Sie als häufigen "schlimmsten" Fall erwarten würden. Interessanterweise leiden die meisten Verbindungen nicht unter zu viel, wenn das Fenster größer als das BDP ist (es sollte natürlich nicht viel zu groß sein), sondern zeigen eine verminderte Leistung, wenn das Fenster viel kleiner als das BDP ist.

Um zu überprüfen, ob Ihr TCP / IP-Stack die Fenstergröße ordnungsgemäß erhöht, sollten Sie Wireshark oder einen anderen Verkehrs-Sniffer verwenden. Sie können entweder direkt auf das Fenstergrößen-Flag in der Kopfzeile schauen (unter Berücksichtigung der Skalierungsfaktoren!). Wireshark kann auch die effektive Fenstergröße anzeigen, indem der Skalierungsfaktor berücksichtigt wird.

In diesem Tutorial erfahren Sie, wie Sie die Größe Ihres TCP-Fensters als Funktion der Zeit hier darstellen .

pfo
quelle
2

Dies ist völlig akademisch, da niemand TCP über Satellitenverbindungen ausführt. Ich kenne keinen einzigen Satellitenanbieter, der dies tut. Sie alle führen satellitenspezifische Protokolle über den Satelliten aus und platzieren den TCP-Endpunkt an der Bodenstation.

Wenn ein Computer im Netzwerk ein TCP-SYN-Paket an das Satellitenterminal sendet, sendet das Satellitenterminal eine TCP-Proxy-Anforderung an den Satelliten. Dadurch wird die Bodenstation angewiesen, eine TCP-Verbindung zu einem Server im Internet herzustellen. Die Bodenstation spricht TCP mit dem Internet-Server. Das Satellitenterminal spricht kein TCP über den Satelliten, sondern ein für die Satellitennutzung optimiertes Protokoll. Die Bodenstation fungiert als Proxy zwischen dem Satellitenterminal und dem Internet-Server.

David Schwartz
quelle
Bedeutet dies, dass jede einzelne Anwendung geändert werden muss, um dieses benutzerdefinierte Protokoll zu verwenden? Ich kenne keinen Webbrowser, der für seine Verbindungen etwas anderes als TCP unterstützt.
Regie
Ich glaube, Sie haben verpasst, was David sagen wollte. Die Bodenstation führt das TCP-to-SatelliteSpecificProtocol für Sie aus und ist vollständig transparent.
Longneck
Nein, Anwendungen müssen nicht geändert werden. Das Terminal und die Bodenstation machen alles. (Es gibt jedoch zusätzliche Vorteile, wenn die Anwendungen geändert werden. Und Webbrowser können problemlos geändert werden, um TCP nicht für ihre Verbindungen zu verwenden. Wenn Sie beispielsweise einen Proxy konfigurieren, verwendet der Webserver TCP nicht mehr Ende-zu-Ende und Lassen Sie den Proxy eine Verbindung herstellen, wie er möchte. Einige Satellitenterminals verfügen über einen integrierten Webproxy, der nicht nur TCP beschleunigt, sondern auch vorab abruft, sodass Sie nicht für jedes Element auf einer Seite ein Hin und Her haben.)
David Schwartz
1

Der Einfachheit halber stehen Produktrechner mit Bandbreitenverzögerung zur Verfügung - ein solcher Rechner ist hier . Bei großen Fenstern, die im Falle eines Paketverlusts Probleme verursachen, ist das TCP-Fenster genau deshalb variabel. Bei Paketverlust nimmt die Fenstergröße ab, was weniger Daten im Flug und folglich eine Verringerung der Übertragungsgeschwindigkeit ermöglicht. Nach einiger Zeit wird die Fenstergröße neu ausgehandelt.

Ihre Latenz ist eigentlich nicht so schlecht für Satelliten - ein 1s RTT @ 1M ist nur ein 125K-Fenster. Eine gute Anzahl moderner Betriebssysteme würde dies sofort unterstützen, sodass möglicherweise keine zusätzlichen Änderungen erforderlich sind.

Nebenbei bemerkt - einige hatten sehr viel Glück mit den verschiedenen auf dem Markt erhältlichen WAN-Optimierern. Diese tendieren dazu, sowohl die TCP-Fenstergrößen zu optimieren als auch Caching und Komprimierung zu verwenden, um mehr durch die Verbindung zu drücken und die scheinbare Reaktionsfähigkeit zu verbessern.

rnxrx
quelle