
Eine Satellitenverbindung hat im Allgemeinen eine RTT von etwa 500 ms. Verbindungen weisen trotz großer Bandbreite im Allgemeinen nicht optimale Übertragungsgeschwindigkeiten auf, da TCP-Bestätigungen zu lange brauchen, um anzukommen.
Meines Wissens nach besteht eine gute Möglichkeit, dieses Problem bei TCP-Verbindungen zu lösen, darin, die TCP-Fenstergröße auf die Verbindungsgeschwindigkeit (in Bits) 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 noch andere ähnliche Optimierungen, die zur Optimierung für Satellitenverbindungen vorgenommen werden sollten? Mir ist bewusst, dass viele moderne Betriebssysteme die Fenstergröße automatisch ändern, aber werden sie aggressiv genug sein, um die Fenstergrößen groß genug für die Satellitenkommunikation zu machen?
Abgesehen davon gehe ich davon aus, dass eine große Fenstergröße in Netzwerken, in denen häufig Pakete verloren gehen, nicht wünschenswert ist, da die erneute Übertragung innerhalb der Fenstergröße erfolgt und Sie möglicherweise einen Großteil Ihrer Bandbreite für den Overhead der erneuten Übertragung aufwenden.
Vielen Dank, ich lerne immer noch sehr viel über das Netzwerken und schätze Ihren Beitrag.
Antwort1
Sie sollten im Allgemeinen einen TCP-Stack verwenden, der eine ordnungsgemäße Fensterskalierung implementiert. Aber natürlich haben Sie Recht, dass Ihre Fenstergröße diesem Bandbreiten-Verzögerungs-Produkt (BDP) entsprechen muss. Falls Sie ein variierendes BDP haben, können Sie die Fenstergröße auf einen Wert einstellen, den Sie als üblichen „Worst-Case“ erwarten würden. Interessanterweise leiden die meisten Verbindungen nicht allzu sehr darunter, wenn die Fenstergröße größer als das BDP ist (es sollte nichtWegzu groß natürlich), zeigen aber eine verschlechterte Leistung, wenn die Fenstergröße viel kleiner als der BDP ist.
Um zu überprüfen, ob Ihr TCP/IP-Stack die Fenstergröße richtig vergrößert, sollten Sie Wireshark oder einen anderen Traffic-Sniffer verwenden. Sie können entweder direkt auf das Fenstergrößenflag im Header schauen (unter Berücksichtigung der Skalierungsfaktoren!). Wireshark kann auch die effektive Fenstergröße anzeigen, indem es den Skalierungsfaktor berücksichtigt.
In diesem Tutorial erfahren Sie, wie Sie Ihre TCP-Fenstergröße als Funktion der Zeit darstellen können.Hier.
Antwort2
Dies ist rein theoretisch, da niemand TCP über Satellitenverbindungen betreibt. Ich kenne keinen einzigen Satellitenanbieter, der dies tut. Sie alle betreiben satellitenspezifische Protokolle über den Satelliten 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 kommuniziert TCP mit dem Internetserver. Das Satellitenterminal kommuniziert nicht TCP über den Satelliten, sondern ein für die Satellitennutzung optimiertes Protokoll. Die Bodenstation fungiert als Proxy zwischen dem Satellitenterminal und dem Internetserver.
Antwort3
Der Einfachheit halber gibt es Bandbreiten-Verzögerungsprodukt-Rechner - einer dieser Rechner istHier. Große Fenster können bei Paketverlusten Probleme verursachen – das ist im Grunde der Grund, warum TCP-Fenster variabel sind. Bei Paketverlusten verringert sich die Fenstergröße, sodass weniger Daten übertragen werden können und die Übertragungsgeschwindigkeit entsprechend sinkt. Nach einer gewissen Zeit wird die Fenstergröße neu ausgehandelt.
Ihre Latenz ist für Satelliten eigentlich gar nicht so schlecht – eine 1s RTT @ 1M ist nur ein 125K-Fenster. Viele moderne Betriebssysteme unterstützen dies problemlos von Anfang an, sodass möglicherweise keine zusätzlichen Änderungen erforderlich sind.
Nebenbei bemerkt: Manche hatten sehr viel Erfolg mit den verschiedenen auf dem Markt erhältlichen WAN-Optimierern. Diese neigen dazu, sowohl die TCP-Fenstergrößen zu optimieren als auch Caching und Komprimierung zu nutzen, um mehr über die Verbindung zu übertragen und die scheinbare Reaktionsfähigkeit zu verbessern.