Qual è il modo migliore per trasferire un singolo file di grandi dimensioni su un collegamento WAN ad alta velocità e alta latenza?


21

Questo sembra correlato a questo , ma è in qualche modo diverso.

Esiste questo collegamento WAN tra due siti aziendali e dobbiamo trasferire un singolo file molto grande (dump Oracle, ~ 160 GB).

Abbiamo una larghezza di banda completa di 100 Mbps (testata), ma sembra che una singola connessione TCP non riesca a massimizzarla a causa del funzionamento di TCP (ACK, ecc.). Abbiamo testato il collegamento con iperf e i risultati cambiano notevolmente quando si aumentano le dimensioni della finestra TCP: con le impostazioni di base otteniamo un throughput di ~ 5 Mbps, con un WS più grande possiamo ottenere fino a ~ 45 Mbps, ma non oltre. La latenza di rete è di circa 10 ms.

Per curiosità, abbiamo eseguito iperf utilizzando più di una singola connessione e abbiamo scoperto che, eseguendone quattro, avrebbero effettivamente raggiunto una velocità di ~ 25 Mbps ciascuno, riempiendo tutta la larghezza di banda disponibile; quindi la chiave sembra essere nell'esecuzione di più trasferimenti simultanei.

Con FTP, le cose peggiorano: anche con impostazioni TCP ottimizzate (dimensioni della finestra elevate, MTU massimo, ecc.) Non possiamo ottenere più di 20 Mbps su un singolo trasferimento. Abbiamo provato a inviare FTP alcuni file di grandi dimensioni contemporaneamente, e in effetti le cose sono andate molto meglio rispetto al trasferimento di un singolo file; ma poi il colpevole divenne I / O del disco, perché la lettura e la scrittura di quattro file di grandi dimensioni dallo stesso collo di bottiglia del disco molto presto; inoltre, non sembriamo essere in grado di suddividere quel singolo file di grandi dimensioni in file più piccoli e quindi di fonderlo nuovamente, almeno non in tempi accettabili (ovviamente non possiamo passare a ricollegare / unire il file un tempo paragonabile a quello di trasferendolo).

La soluzione ideale qui sarebbe uno strumento multithread in grado di trasferire vari blocchi del file contemporaneamente; una specie di programmi peer-to-peer come eMule o BitTorrent già lo fanno, ma da una singola fonte a una singola destinazione. Idealmente, lo strumento ci consentirebbe di scegliere quante connessioni parallele usare e ovviamente ottimizzare l'I / O del disco per non saltare (troppo) follemente tra le varie sezioni del file.

Qualcuno sa di un tale strumento?

Oppure, qualcuno può suggerire una soluzione migliore e / o qualcosa che non abbiamo già provato?

PS Abbiamo già pensato di eseguire il backup su nastro / disco e inviarlo fisicamente a destinazione; sarebbe la nostra misura estrema se la WAN non la tagliasse, ma, come ha detto Tanenbaum, "Non sottovalutare mai la larghezza di banda di una station wagon piena di nastri che sfrecciano lungo l'autostrada".


1
Per curiosità, il tempo impiegato è davvero così critico? Inoltre, la saturazione del collegamento per la durata di un trasferimento di 160 GB non avrebbe alcun impatto sul resto della rete?
Bryan,

6
Ricordo di aver consegnato alcuni caricatori automatici DLT e un paio di centinaia di cartucce a un cliente nel '99. Abbiamo calcolato la capacità grezza della mia auto con circa 200 cartucce DLT IV caricate al suo interno (35 GB di capacità raw ciascuna) a circa 6,3 TB. Ho guidato dal nostro ufficio al sito del cliente in circa 55 minuti, dando alla Evan in una metropolitana geo che guida come un matto sull'interstatale il meccanismo di trasporto di backup con una velocità effettiva di circa 118 GB / min. Buona resa, ma la latenza è stata un assassino ...> smile <
Evan Anderson,

Bryan: sì, il tempo è fondamentale (ci vogliono circa VENTI ORE con FTP standard e impostazioni di rete standard), e no, non ci saranno problemi a saturare il collegamento, perché il trasferimento sarà programmato in orario non lavorativo.
Massimo,

Evan: è esattamente quello che volevo dire ;-)
Massimo

Ho avuto a che fare con una situazione simile, con ~ 200 GB di SQL .bak, tranne che l'unico modo in cui sono stato in grado di saturare il collegamento WAN è con FTP. Ho finito per usare 7-zip con compressione zero per romperlo in blocchi da 512 MB. I tempi di "compressione" e di "decompressione" erano piacevolmente brevi; tutto sommato molto meglio di spalare media fisici in tutto il paese. (I siti si trovano sulle coste opposte degli Stati Uniti)
Adrien,

Risposte:


15

La ricerca di "trasferimento di file ad alta latenza" genera molti risultati interessanti. Chiaramente, questo è un problema che sia la comunità CompSci che la comunità commerciale hanno messo in discussione.

Alcune offerte commerciali che sembrano adattarsi al conto:

  • FileCatalyst ha prodotti in grado di trasmettere i dati su reti ad alta latenza utilizzando UDP o più flussi TCP. Hanno anche molte altre funzionalità (compressione al volo, trasferimenti delta, ecc.).

  • La "tecnologia" di trasferimento file veloce di Aspera sembra adattarsi al conto anche per quello che stai cercando.

Nel mondo open source, il progetto uftp sembra promettente. Non hai particolarmente bisogno delle sue capacità multicast, ma l'idea di base di inviare un file ai ricevitori, ricevere NAK per i blocchi persi alla fine del trasferimento e quindi eliminare i blocchi NAK (schiuma, risciacquo, ripetizione) sembra che farebbe ciò di cui hai bisogno, dal momento che non c'è ACK (o NAK) dal ricevitore fino a quando il trasferimento del file non è stato completato una volta. Supponendo che la rete sia solo latente e non in perdita, anche questo potrebbe fare ciò di cui hai bisogno.


uftp sembra davvero promettente, sono stato in grado di raggiungere 30 Mbps tra due computer desktop (che non sono così eccezionali per le prestazioni del disco); Lo proverò presto sui server "reali". Non sono stato in grado di ottenere una licenza demo di FileCatalyst a causa di alcuni bug nel modulo di registrazione (continua a dire che il numero di richiesta è già stato utilizzato) e fasp non li offre.
Massimo

60 Mbps tra due computer con dischi adeguati e un grande buffer di ricezione. Grande!
Massimo

Adoro il software gratuito / open source! > smile <Proverò sicuramente uftp con alcune cose che sto facendo. Mi chiedo come farebbe in una soluzione di imaging del disco multicast basata su Linux che ho messo insieme un paio di anni fa usando "udpcast".
Evan Anderson,

qualche tempo fa ho chiesto a serverfault.com/questions/173358/multicast-file-transfers Alla fine sono giunto alla conclusione che uftp e mrsync erano gli strumenti preferiti. Si prega di pubblicare i commenti laggiù se si fa qualcosa di utile con uftp, poiché quest'anno userò l'uno o l'altro (prepari a una conferenza).
Jed Daniels,

2
Quando lavoravo con UFTP, UDT e Tsunami UDP, UFTP ha avuto le peggiori prestazioni di tutte e tre. Certo, è probabilmente il protocollo più maturo. UDT fornisce solo un semplice protocollo di trasferimento ed è stato progettato per fungere da libreria per lo sviluppo di software personalizzato e l'autore di Tsunami ci ha effettivamente indicato UDT poiché Tsunami non è stato sviluppato attivamente di recente per mancanza di tempo.
Thomas Owens,

9

Suggerimento davvero strano questo ... Imposta un semplice server Web per ospitare il file sulla tua rete (suggerisco per inciso nginx), quindi imposta un PC con Firefox sull'altra estremità e installa l' estensione DownThemAll .

È un acceleratore di download che supporta il chunking e il riassemblaggio.
È possibile suddividere ogni download in 10 blocchi per il riassemblaggio, e in realtà rende le cose più veloci!

(avvertenza: non l'ho mai provato su qualcosa di grande come 160 GB, ma funziona bene con i file ISO da 20 GB)


40 Mbps tra gli stessi computer. Anche molto bello.
Massimo

1
sostituisci firefox con axel.alioth.debian.org e non è un cattivo suggerimento.
Giustino,

7

Il trasporto UDT è probabilmente il trasporto più popolare per le comunicazioni ad alta latenza. Questo porta sul loro altro software chiamato Settore / Sfera un "Sistema di file distribuito ad alte prestazioni e Motore di elaborazione dati parallelo" che potrebbe essere utile dare un'occhiata.


1
Ho lavorato un po 'con UDT per i trasferimenti su reti con latenza elevata e perdita di pacchetti elevata. UDT è molto più resistente alla latenza e alla perdita di pacchetti rispetto ai protocolli basati su TCP, soprattutto quando si inizia a modificare l'algoritmo di controllo della congestione per adattarlo alla topografia della rete.
Thomas Owens,

Esiste anche una versione di rsync con UDT integrato, si chiama "UDR". github.com/LabAdvComp/UDR
Max

5

La mia risposta è un po 'in ritardo, ma ho appena trovato questa domanda, mentre cercavo fasp. Durante quella ricerca ho anche trovato questo: http://tsunami-udp.sourceforge.net/ , il "Protocollo UDP Tsunami".

Dal loro sito Web:

Un protocollo di trasferimento file rapido per lo spazio utente che utilizza il controllo TCP e i dati UDP per il trasferimento su reti a lunga distanza ad altissima velocità (≥ 1 Gbps e persino 10 GE), progettato per fornire un throughput maggiore del possibile con TCP sulle stesse reti. reti.

Per quanto riguarda la velocità, la pagina menziona questo risultato (utilizzando un collegamento tra Helsinki, Finlandia a Bonn, Germania su un collegamento da 1 GB:

Figura 1 - trasferimento internazionale su Internet, con una media di 800 Mbit / secondo

Se vuoi usare un acceleratore di download, dai un'occhiata a lftp, questo è l'unico acceleratore di download che può fare un mirror ricorsivo, per quanto ne so.


1
Nel progetto che ho commentato in precedenza nella risposta di Steve-o, abbiamo confrontato UDT, Tsunami UDP e UFTP. Abbiamo scoperto che la latenza ha avuto un impatto enorme sulle prestazioni, mentre la perdita di pacchetti no (contrariamente alla documentazione sullo Tsunami). L'aggiunta di 100 ms di latenza alla rete di test ha ridotto le prestazioni dello Tsunami da circa 250 Mbit / secondo a circa 50 Mbit / secondo (credo di avere i miei numeri e le mie unità giuste - è stato un po 'di tempo, ma è stato un enorme calo). L'aggiunta della perdita di pacchetti del 10% senza una rete di latenza minima, d'altra parte, ha solo ridotto le prestazioni da 250 Mb / secondo a circa 90 Mb / secondo.
Thomas Owens,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.