Cuando uso nc
, scp
, wget
para transferir archivos entre 2 máquinas en un enlace dedicado de 2 Mbps, obtengo velocidades entre 0,5 y 1 Mbps. Sin embargo, cuando uso iperf -c 10.0.1.4 -t 20 -P 12
(por ejemplo) puedo maximizar la velocidad del enlace (obteniendo 2Mbps estables).
¿Existe alguna forma de realizar transferencias de flujo único (como las realizadas por scp
) para utilizar todo o la mayor parte del enlace? ¿Algún tipo de configuración tcp o iptables...?
Respuesta1
Primero admitamos que estás comparando manzanas y naranjas.
nc
y normalmente scp
se wget
transfiere con un único socket TCP. Sin embargo, cuando usas iperf -P 12
, estás usandodocesockets TCP paralelos. Esta es una distinción no trivial. Cuantas más conexiones paralelas tengas, mayor será tu consumo de ancho de banda. De hecho,speedtest.net
utiliza múltiples flujos TCP paralelos para medir de manera confiable la capacidad de ancho de banda, incluso si su enlace tiene una pérdida significativa de paquetes que afectaría un solo socket TCP; Los he visto saturar enlaces con una pérdida del 1,5% (lo que diezmaría el rendimiento en un socket TCP normal).
Las principales razones de las transferencias TCP de un solo socket que no son óptimas son la pérdida de paquetes y el retraso o la fluctuación. Debe identificar y corregir si tiene alguna pérdida de paquetes continua a través de su enlace... Normalmente usomtr
owinmtr
para esto...
mpenning@mpenning-T61:~$ mtr -n <destination_ip>
HOST: mpenning-T61 Loss% Snt Last Avg Best Wrst StDev
1. 10.239.84.1 0.0% 407 8.8 9.1 7.7 11.0 1.0
2. 66.68.3.223 0.0% 407 11.5 9.2 7.1 11.5 1.3
3. 66.68.0.8 0.0% 407 19.9 16.7 11.2 21.4 3.5
4. 72.179.205.58 0.0% 407 18.5 23.7 18.5 28.9 4.0
5. 66.109.6.108 5.2% 407 16.6 17.3 15.5 20.7 1.5 <----
6. 66.109.6.181 4.8% 407 18.2 19.1 16.8 23.6 2.3
7. 4.59.32.21 6.3% 407 20.5 26.1 19.5 68.2 14.9
8. 4.69.145.195 6.4% 406 21.4 27.6 19.8 79.1 18.1
9. <destination_ip> 6.8% 406 22.3 23.3 19.4 32.1 3.7
Si ve un salto en el que pierde paquetes constantemente con el tiempo,ylos saltos detrás de él están perdiendo paquetes, entonces necesita arreglar lo que sea que esté causando la pérdida de paquetes. Normalmente mido durante al menos cinco o diez minutos... a menudo durante horas, si no veo el problema de inmediato.
La otra situación es la demora... necesitará cuantificar más el problema con detalles sobre la demora de un extremo a otro, así como información del sistema operativo src/dest antes de que alguien pueda responder a esto.
Entonces tienes algunas opciones... ya sea:
- Descubra qué está causando que su rendimiento baje
- Divida sus transferencias en varios archivos y transfiéralas en paralelo (para superar cualquier factor que esté reduciendo su rendimiento ahora)