Schneller Dateitransfer als FTP

8

FTP ist ein reines TCP-Connect-Protokoll und somit AFAIK "so schnell wie es geht", wenn es um TCP-Dateiübertragungsoptionen geht.

Allerdings gibt es einige andere Produkte, die nicht über TCP laufen - Beispiele sind die kommerziellen Produkte BI.DAN -GUN , fasp und FileCatalyst . Das letztere Produkt weist auf Probleme mit reinem TCP hin, und man kann mehr auf Wikipedia lesen, z.B. ausgehend von Netzwerk-Engpass .

Welche anderen Alternativen gibt es? .. insbesondere Open Source? Man sollte auch denken, dass dies ein RFC von Arten sein sollte - ein Standard Large-File-Transfer-spezifisches Protokoll, das wahrscheinlich über UDP läuft. Wer kennt ein solches Protokoll oder eine Initiative? (Die Google SPDY ist interessant, aber nicht direkt auf schnelle Dateiübertragung)

    
stolsvik 18.02.2012, 23:23
quelle

4 Antworten

6

Es gibt eine Reihe von Open-Source-Projekten, die versuchen, den Dateitransfer über UDP anzugehen. Schauen Sie sich UFTP , Tsunami oder UDT an, jedes Projekt befindet sich in einer anderen Entwicklungsstufe.

Abhängig von der Bandbreite, der Latenz und dem Taschenverlust, mit denen Sie arbeiten, wird jedes Projekt ein anderes Ergebnis liefern. Es gibt einen Blog-Artikel, der versucht, die 3 Projekte zu vergleichen, hier ist der Link Ссылка

    
John Tkaczewski 20.10.2012, 06:54
quelle
9

Warum glauben Sie, dass die Verwendung von TCP die Übertragung verlangsamt? TCP kann normalerweise die gesamte verfügbare Bandbreite verwenden. Die Verwendung von UDP ist jedoch unwahrscheinlich schneller. In der Tat, wenn Sie versuchen, eine zuverlässige UDP-basierte Dateiübertragung zu machen, würden Sie am Ende eine minderwertige Alternative zu TCP implementieren - da Sie die Zuverlässigkeit selbst implementieren müssen.

Was bei FTP problematisch ist, besteht darin, dass es für jede Datei, die Sie übertragen, mehrere synchrone Anfrage-Antwort-Befehle ausführt und für jede Datei eine neue Datenverbindung öffnet. Dies führt zu extrem ineffizienten Übertragungen, wenn viele kleinere Dateien übertragen werden, da ein Großteil der Zeit damit verbracht wird, auf Anforderungen / Antworten zu warten und Datenverbindungen herzustellen, anstatt Daten tatsächlich zu übertragen.

Eine einfache Möglichkeit, dieses Problem zu umgehen, besteht darin, die Dateien / Ordner in ein Archiv zu packen. Während Sie natürlich das Archiv einfach erstellen, es per FTP oder ähnlichem versenden und es auf der anderen Seite auspacken können, ist der Zeitaufwand für das Packen und Entpacken inakzeptabel. Sie können diese Verzögerung vermeiden, indem Sie das Packen und Entpacken online durchführen. Mir ist keine Software bekannt, die ein solches Online-Packen / Entpacken integriert. Sie können jedoch einfach die Programme nc und tar in einer Pipeline verwenden (Linux, unter Windows verwenden Sie ):

Zuerst auf dem Empfänger laufen:

%Vor%

Dadurch wird der Empfänger auf eine Verbindung an Portnummer 7000 warten. Dann auf dem Sender laufen:

%Vor%

Dadurch wird der Sender mit dem Empfänger verbunden und die Übertragung gestartet. Der Sender erstellt das tar-Archiv und sendet es an den Empfänger, der es extrahieren wird - alles zur gleichen Zeit. Bei Bedarf können Sie die Rollen von Sender und Empfänger umkehren (indem Sie den Empfänger mit dem Sender verbinden).

Dieser Online-Tar-Ansatz hat keine der beiden Leistungsprobleme von FTP; Es führt keine Anfrage-Antwort-Befehle aus und verwendet nur eine einzige TCP-Verbindung.

Beachten Sie jedoch, dass dies nicht sicher ist; Jeder könnte sich mit dem Empfänger verbinden, bevor unser Absender es schickt, und ihm sein eigenes tar-Archiv schicken. Wenn dies ein Problem ist, kann ein VPN in Kombination mit entsprechenden Firewall-Regeln verwendet werden.

BEARBEITEN : Sie haben den Paketverlust als Problem mit der TCP-Leistung bezeichnet, was ein erhebliches Problem darstellt, wenn der FileCatalyst Seite ist zu glauben. Es stimmt, dass TCP mit Verbindungen mit hohem Paketverlust nicht optimal arbeiten kann. Dies liegt daran, dass TCP in der Regel aggressiv auf Paketverlust reagiert, da angenommen wird, dass der Verlust auf Überlastung zurückzuführen ist. siehe Additiv_increase / multiplicative_decrease . Mir sind keine freien / Open-Source-Dateiübertragungsprogramme bekannt, die versuchen würden, dies mit benutzerdefinierten Protokollen zu bewältigen. Sie können jedoch verschiedene TCP-Stauvermeidungsalgorithmen ausprobieren. Versuchen Sie insbesondere Vegas , das nicht Paketverlust als Signal zur Verringerung der Übertragungsrate verwendet .

    
Ambroz Bizjak 18.02.2012 23:47
quelle
2

Nicht Open Source, aber die Übertragungsgeschwindigkeiten von Aspera sind es wert, ausgecheckt zu werden und sind nicht von Paketverlust oder Netzwerkverzögerung betroffen. Sie können hier eine Tabelle sehen . Es verwendet auch ein proprietäres Protokoll namens fasp.

    
Nicola 14.08.2014 14:28
quelle
1

Ziehen Sie die Verwendung von UDP-basierten Dateiübertragungen in Betracht, schauen Sie sich JSCAPE MFT Server implementiert ein proprietäres Protokoll namens AFTP (Accelerated File Transfer Protocol). Bitte überprüfen Sie diesen Link:

Ссылка

Bitte beachten Sie, dass JSCAPEs AFTP optimal über LAN-Verbindungen mit Netzwerk-Latenz funktioniert. Wenn es keine Netzwerklatenz gibt, wird AFTP nicht besser sein als normales normales FTP (über TCP).

Ja, ich arbeite für JSCAPE LLC.

    
user2284545 17.04.2013 00:44
quelle

Tags und Links