Verbesserung der Geschwindigkeit der Übertragung großer Dateien über eine Verbindung mit hoher Latenz

8

Vor kurzem musste ich eine große Datei über das Internet aus einem unserer Büros in Übersee ziehen. Beide Büros haben 50-Mbit-Glasfaserverbindungen in beide Richtungen, aber die Umlaufzeit ist horrend und variiert zwischen 450 ms an einem guten Tag und 750 ms an einem Misttag.

Ursprünglich habe ich versucht, die Datei über eine VPN-Verbindung abzurufen, aber nach ein paar fehlgeschlagenen Übertragungen (smb saugt wirklich über langsame Verbindungen) und einer Geschwindigkeit von maximal 128 KBit / s zeigte ein schnelles Google, dass ich auf Windows TCP-Fenster-Skalierungsprobleme stieß.

Seitdem habe ich die Datei über einen kommerziellen Private-Cloud-Dienst geschoben, der die Datei hier schneller abgerufen hat. Das Folgende ist also eher aus Neugier als aus anderen Gründen.

Zum Spaß kommt hinzu, dass der Internetzugang an beiden Enden über einen http-Proxy erfolgt. Ich habe jedoch Administratorrechte auf Computern an beiden Enden.

Wie würden Sie eine bessere Geschwindigkeit erreichen?

Dinge, die ich versucht habe:

1) Einfaches SFTP zwischen zwei virtuellen Linux-Maschinen, mit einem Korkenzieher durch den http-Proxy und einem dritten Vermittler, um die beiden Enden miteinander zu verbinden. Geschwindigkeit erreicht: rund 600kBps.

2) SFTP, jedoch mit OpenSSH, gepatcht mit HPN-SSH. Korkenzieher und Zwischenkonfiguration wie 1). Wenig oder gar keine Geschwindigkeitsverbesserung.

3) Wie unter 2, jedoch unter Verwendung von LFTP mit pget -c -n 10, um die Übertragung in Blöcke aufzuteilen . Dies ist das bisher beste mit 3,5 MBit / s ...

Alle Verbesserungen sind willkommen.

Ingo
quelle
verwandte Frage stackoverflow.com/q/38014501/52074
Trevor Boyd Smith

Antworten:

4

Heutzutage adressiere ich Übertragungen über Fernverbindungen und Verbindungen mit höherer Latenz, indem ich rsync über UDP einbinde und UDR als Transport verwende. UDR verwendet UDT , das wie folgt beschrieben wird:

UDT ist ein zuverlässiges UDP-basiertes Datentransportprotokoll auf Anwendungsebene für verteilte datenintensive Anwendungen über großflächige Hochgeschwindigkeitsnetzwerke. UDT verwendet UDP, um Massendaten mit eigenen Mechanismen zur Zuverlässigkeitskontrolle und Überlastungskontrolle zu übertragen. Das neue Protokoll kann Daten mit einer viel höheren Geschwindigkeit übertragen als TCP. UDT ist auch ein hoch konfigurierbares Framework, das verschiedene Überlastungssteuerungsalgorithmen unterstützen kann.

Dies deaktiviert standardmäßig die Verschlüsselung, was eine wichtige Sache war, die ich beim Patchen von HPN-SSH benötigte , aber der UDP-Ansatz hat einiges geholfen. Der Hauptvorteil der UDR / UDP-Lösung besteht darin, dass sich die Befehlsfunktionalität nicht wesentlich ändert. Am Ende stellen Sie den Befehl rsync mit voran udr.

udr rsync -avP --stats --delete --inplace /data/ mir1:/data/

Siehe auch: Möglichkeit der WAN-Optimierung für SSH-Verkehr

ewwhite
quelle
3

Ich hatte das gleiche Problem bei $ lastjob.

Da ich nur in meiner eigenen Infrastruktur blieb, fand ich nie eine bessere Lösung als LFTP.

Wenn Sie die Kosten rechtfertigen können, erhalten Sie Appliances mit WAN-Beschleunigung. Grundsätzlich verwandeln sie Ihre Anfragen transparent in viel größere Teile, wodurch die Chattiness zwischen den beiden Sites erheblich reduziert wird. Riverbed ist dort wahrscheinlich die bekannteste Option, aber IIRC gibt es auch ein Modul für Juniper-Router, um dies zu tun. Ich kenne derzeit keine FLOSS-Optionen.

Ich fand tatsächlich, dass Dropbox et al. Die beste Option war, aber das ist für Sie möglicherweise nicht akzeptabel.

Chriscowley
quelle