Mejora de la velocidad de transferencia de archivos grandes a través del enlace de alta latencia

8

Entonces, recientemente tuve la necesidad de extraer un archivo grande a través de Internet desde una de nuestras oficinas en el extranjero. Ambas oficinas tienen enlaces de fibra de 50 Mbit en ambas direcciones, pero el tiempo de ida y vuelta es horrible y varía de unos 450 ms en un buen día y 750 ms en uno de mierda.

Originalmente, intenté extraer el archivo a través de una conexión VPN, pero después de algunas transferencias fallidas (smb realmente apesta a enlaces lentos) y la velocidad máxima a aproximadamente 128kBps, un rápido google mostró que estaba corriendo contra problemas de escalado de ventanas TCP de Windows.

Desde entonces, envié el archivo a través de un servicio comercial de tipo de nube privada que consiguió el archivo aquí más rápido, por lo que lo siguiente es más por curiosidad que por cualquier otra cosa.

Sumado a la diversión, es que el acceso a internet en ambos extremos es a través de un proxy http. Sin embargo, tengo derechos de administrador en máquinas en ambos extremos.

¿Cómo harías para obtener una mejor velocidad?

Cosas que he probado:

1) SFTP simple entre dos máquinas virtuales de Linux, utilizando sacacorchos para perforar a través del proxy http y un tercer intermediario para conectar los dos extremos. Velocidad alcanzada: alrededor de 600kBps.

2) SFTP pero usando OpenSSH parcheado con HPN-SSH. Sacacorchos y configuración intermedia igual que 1). Poca o ninguna mejora en la velocidad.

3) Según 2 pero usando LFTP con pget -c -n 10para dividir la transferencia en trozos. Este es el mejor hasta ahora, viendo 3.5MBps ...

Todas las mejoras son bienvenidas.

Ingo
fuente
pregunta relacionada stackoverflow.com/q/38014501/52074
Trevor Boyd Smith

Respuestas:

4

En estos días, estoy abordando las transferencias a través de enlaces de larga distancia y mayor latencia envolviendo rsync a través de UDP, utilizando UDR como transporte. UDR usa UDT , que se describe como:

UDT es un protocolo confiable de transporte de datos a nivel de aplicación basado en UDP para aplicaciones intensivas de datos distribuidos en redes de alta velocidad de área amplia. UDT usa UDP para transferir datos masivos con sus propios mecanismos de control de confiabilidad y control de congestión. El nuevo protocolo puede transferir datos a una velocidad mucho mayor que TCP. UDT también es un marco altamente configurable que puede acomodar varios algoritmos de control de congestión.

Esto deshabilita el cifrado de forma predeterminada, que era una cosa importante que necesitaba cuando parcheaba HPN-SSH , pero el enfoque UDP ha ayudado bastante. El principal beneficio de la solución UDR / UDP es que la funcionalidad del comando no cambia mucho. Terminas anteponiendo el comando rsync con udr.

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

Ver también: Posibilidad de optimización de WAN para tráfico SSH

ewwhite
fuente
3

Tuve el mismo problema en $ lastjob.

Manteniéndome puramente dentro de mi propia infraestructura, nunca encontré una solución mejor que LFTP.

Si puede justificar el gasto, puede obtener dispositivos que aceleran la WAN. Básicamente, convierten de forma transparente sus solicitudes en fragmentos mucho más grandes, lo que reduce en gran medida el chat entre los 2 sitios. Riverbed es probablemente la opción más conocida allí, pero IIRC también tiene un módulo para que los enrutadores Juniper lo hagan. No conozco ninguna opción de FLOSS en este momento.

En realidad, encontré que la mejor opción era Dropbox et al, pero eso puede no ser aceptable para usted.

chriscowley
fuente