Miglioramento della velocità di trasferimento di file di grandi dimensioni tramite collegamento ad alta latenza


8

Quindi, recentemente ho avuto la necessità di estrarre un file di grandi dimensioni su Internet da uno dei nostri uffici all'estero. Entrambi gli uffici hanno collegamenti in fibra a 50 Mbit in entrambe le direzioni, ma il tempo di andata e ritorno è orrendo e varia da forse 450 ms in una buona giornata e 750 ms in una schifezza.

Inizialmente, ho provato a trasferire il file su una connessione VPN ma dopo alcuni trasferimenti non riusciti (smb fa schifo su collegamenti lenti) e una velocità massima di circa 128kBps, un veloce google ha mostrato che stavo correndo contro i problemi di ridimensionamento delle finestre TCP di Windows.

Da allora ho trasferito il file attraverso un servizio commerciale di tipo cloud privato che ha portato il file qui più velocemente, quindi quanto segue è più per curiosità che altro.

Aggiunto al divertimento, è che l'accesso a Internet ad entrambe le estremità avviene tramite un proxy http. Tuttavia, ho i diritti di amministratore sui computer su entrambi i lati.

Come faresti per ottenere una migliore velocità?

Cose che ho provato:

1) Semplice SFTP tra due macchine virtuali Linux, usando il cavatappi per eseguire il punch-out attraverso il proxy http e un terzo intermediario per connettere le due estremità. Velocità raggiunta: circa 600kBps.

2) SFTP ma usando OpenSSH patchato con HPN-SSH. Cavatappi e intermediario configurati come 1). Poco o nessun miglioramento della velocità.

3) Come da 2 ma usando LFTP con pget -c -n 10per spezzare il trasferimento in blocchi. Questo è il migliore finora, vedendo 3,5 Mbps ...

Tutti i miglioramenti sono benvenuti.


Risposte:


4

In questi giorni, sto affrontando i trasferimenti su collegamenti a lunga e lunga latenza avvolgendo rsync su UDP, usando UDR come trasporto. UDR utilizza UDT , che è descritto come:

UDT è un protocollo di trasporto dati a livello di applicazione basato su UDP affidabile per applicazioni distribuite ad alta intensità di dati su reti ad alta velocità ad ampia area. UDT utilizza UDP per trasferire dati in blocco con i propri meccanismi di controllo dell'affidabilità e controllo della congestione. Il nuovo protocollo può trasferire i dati a una velocità molto più elevata rispetto a TCP. UDT è anche un framework altamente configurabile che può ospitare vari algoritmi di controllo della congestione.

Questo disabilita la crittografia per impostazione predefinita, che era una cosa importante di cui avevo bisogno quando stavo correggendo HPN-SSH , ma l'approccio UDP ha aiutato parecchio. Il principale vantaggio della soluzione UDR / UDP è che la funzionalità dei comandi non cambia molto. Si finisce per anteporre il comando rsync con udr.

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

Vedi anche: Possibilità di ottimizzazione WAN per il traffico SSH


3

Ho avuto lo stesso problema con $ lastjob.

Rimanendo puramente all'interno della mia infrastruttura non ho mai trovato una soluzione migliore di LFTP.

Se è possibile giustificare la spesa, è possibile ottenere dispositivi che eseguono l'accelerazione WAN. Fondamentalmente trasformano in modo trasparente le tue richieste in blocchi molto più grandi, riducendo notevolmente la chattiness tra i 2 siti. Riverbed è probabilmente l'opzione più conosciuta lì, ma IIRC ha anche un modulo per i router Juniper per farlo. Non conosco nessuna opzione FLOSS al momento.

In realtà ho scoperto che l'opzione migliore era Dropbox et al, ma potrebbe non essere accettabile per te.

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.